diff --git a/.github/actions/tool-setup/action.yml b/.github/actions/tool-setup/action.yml index 86402e50cfc3b..39f1f2faf1824 100644 --- a/.github/actions/tool-setup/action.yml +++ b/.github/actions/tool-setup/action.yml @@ -89,7 +89,7 @@ runs: - name: Setup pnpm if: steps.versions.outputs.node-version != 'false' - uses: pnpm/action-setup@v3.0.0 + uses: pnpm/action-setup@v4.0.0 with: version: ${{ steps.versions.outputs.pnpm-version }} - name: Setup Node diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 3a4ba63d35b78..9ed172916a650 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -88,7 +88,7 @@ jobs: org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/blob/trunk/tools/docker/README.md - name: Build and push Docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: tools/docker platforms: linux/amd64,linux/arm64 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6879d98e66d1d..7d5b9abffbea8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -273,11 +273,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/js-packages/components: dependencies: @@ -415,11 +415,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/js-packages/config: devDependencies: @@ -594,11 +594,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0 + specifier: 5.94.0 + version: 5.94.0 webpack-dev-middleware: specifier: 5.3.4 - version: 5.3.4(webpack@5.76.0) + version: 5.3.4(webpack@5.94.0) projects/js-packages/eslint-changed: dependencies: @@ -663,11 +663,11 @@ importers: specifier: 29.7.0 version: 29.7.0 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/js-packages/i18n-loader-webpack-plugin: dependencies: @@ -677,7 +677,7 @@ importers: devDependencies: '@wordpress/dependency-extraction-webpack-plugin': specifier: 6.5.0 - version: 6.5.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.5.0(webpack@5.94.0(webpack-cli@4.9.1)) '@wordpress/i18n': specifier: 5.5.0 version: 5.5.0 @@ -685,11 +685,11 @@ importers: specifier: 29.7.0 version: 29.7.0 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/js-packages/idc: dependencies: @@ -818,11 +818,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/js-packages/licensing: dependencies: @@ -1130,11 +1130,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) zod: specifier: 3.22.3 version: 3.22.3 @@ -1149,11 +1149,11 @@ importers: specifier: 29.7.0 version: 29.7.0 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/js-packages/scan: dependencies: @@ -1405,7 +1405,7 @@ importers: version: 8.2.9(storybook@8.2.9) '@storybook/addon-webpack5-compiler-babel': specifier: ^3.0.3 - version: 3.0.3(webpack@5.76.0(webpack-cli@4.9.1)) + version: 3.0.3(webpack@5.94.0(webpack-cli@4.9.1)) '@storybook/blocks': specifier: 8.2.9 version: 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9) @@ -1420,7 +1420,7 @@ importers: version: 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4) '@storybook/react-webpack5': specifier: 8.2.9 - version: 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.76.0)) + version: 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0)) '@storybook/source-loader': specifier: 8.2.9 version: 8.2.9(storybook@8.2.9) @@ -1459,16 +1459,16 @@ importers: version: 2.9.2 babel-loader: specifier: 9.1.2 - version: 9.1.2(@babel/core@7.24.7)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 9.1.2(@babel/core@7.24.7)(webpack@5.94.0(webpack-cli@4.9.1)) babel-plugin-inline-json-import: specifier: 0.3.2 version: 0.3.2 css-loader: specifier: 6.5.1 - version: 6.5.1(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.5.1(webpack@5.94.0(webpack-cli@4.9.1)) esbuild-loader: specifier: 3.0.1 - version: 3.0.1(webpack@5.76.0(webpack-cli@4.9.1)) + version: 3.0.1(webpack@5.94.0(webpack-cli@4.9.1)) jest: specifier: 29.7.0 version: 29.7.0 @@ -1480,7 +1480,7 @@ importers: version: 8.4.31 postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.31)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.31)(webpack@5.94.0(webpack-cli@4.9.1)) react: specifier: 18.3.1 version: 18.3.1 @@ -1498,7 +1498,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) storybook: specifier: 8.2.9 version: 8.2.9 @@ -1507,7 +1507,7 @@ importers: version: 5.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) style-loader: specifier: 2.0.0 - version: 2.0.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 2.0.0(webpack@5.94.0(webpack-cli@4.9.1)) ts-dedent: specifier: 2.2.0 version: 2.2.0 @@ -1515,11 +1515,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/js-packages/svelte-data-sync-client: devDependencies: @@ -1545,11 +1545,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) zod: specifier: 3.22.3 version: 3.22.3 @@ -1578,11 +1578,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/js-packages/webpack-config: dependencies: @@ -1600,7 +1600,7 @@ importers: version: link:../i18n-loader-webpack-plugin '@automattic/webpack-rtl-plugin': specifier: 6.0.0 - version: 6.0.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.0.0(webpack@5.94.0(webpack-cli@4.9.1)) '@babel/compat-data': specifier: 7.24.7 version: 7.24.7 @@ -1621,37 +1621,37 @@ importers: version: 7.24.7(@babel/core@7.24.7) '@cerner/duplicate-package-checker-webpack-plugin': specifier: 2.3.0 - version: 2.3.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 2.3.0(webpack@5.94.0(webpack-cli@4.9.1)) '@wordpress/browserslist-config': specifier: 6.5.0 version: 6.5.0 '@wordpress/dependency-extraction-webpack-plugin': specifier: 6.5.0 - version: 6.5.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.5.0(webpack@5.94.0(webpack-cli@4.9.1)) babel-loader: specifier: 9.1.2 - version: 9.1.2(@babel/core@7.24.7)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 9.1.2(@babel/core@7.24.7)(webpack@5.94.0(webpack-cli@4.9.1)) browserslist: specifier: 4.23.1 version: 4.23.1 css-loader: specifier: 6.5.1 - version: 6.5.1(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.5.1(webpack@5.94.0(webpack-cli@4.9.1)) css-minimizer-webpack-plugin: specifier: 5.0.1 - version: 5.0.1(webpack@5.76.0(webpack-cli@4.9.1)) + version: 5.0.1(webpack@5.94.0(webpack-cli@4.9.1)) fork-ts-checker-webpack-plugin: specifier: 9.0.2 - version: 9.0.2(typescript@5.0.4)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 9.0.2(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1)) mini-css-extract-plugin: specifier: 2.4.5 - version: 2.4.5(webpack@5.76.0(webpack-cli@4.9.1)) + version: 2.4.5(webpack@5.94.0(webpack-cli@4.9.1)) terser-webpack-plugin: specifier: 5.3.3 - version: 5.3.3(webpack@5.76.0(webpack-cli@4.9.1)) + version: 5.3.3(webpack@5.94.0(webpack-cli@4.9.1)) thread-loader: specifier: 3.0.4 - version: 3.0.4(webpack@5.76.0(webpack-cli@4.9.1)) + version: 3.0.4(webpack@5.94.0(webpack-cli@4.9.1)) devDependencies: '@babel/core': specifier: 7.24.7 @@ -1663,11 +1663,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/admin-ui: {} @@ -1693,11 +1693,11 @@ importers: specifier: 1.8.2 version: 1.8.2 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/backup: dependencies: @@ -1785,13 +1785,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/blaze: dependencies: @@ -1855,13 +1855,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/boost-core: {} @@ -1885,13 +1885,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/chatbot: {} @@ -1914,7 +1914,7 @@ importers: version: 6.5.0 '@wordpress/dependency-extraction-webpack-plugin': specifier: 6.5.0 - version: 6.5.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.5.0(webpack@5.94.0(webpack-cli@4.9.1)) autoprefixer: specifier: 10.4.14 version: 10.4.14(postcss@8.4.31) @@ -1929,19 +1929,19 @@ importers: version: 8.4.31 postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.31)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.31)(webpack@5.94.0(webpack-cli@4.9.1)) sass: specifier: 1.64.1 version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/connection: dependencies: @@ -1984,13 +1984,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/explat: dependencies: @@ -2035,11 +2035,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/forms: dependencies: @@ -2084,7 +2084,7 @@ importers: version: 2.1.1 copy-webpack-plugin: specifier: 11.0.0 - version: 11.0.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 11.0.0(webpack@5.94.0(webpack-cli@4.9.1)) email-validator: specifier: 2.0.4 version: 2.0.4 @@ -2116,11 +2116,11 @@ importers: specifier: 7.5.2 version: 7.5.2 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) optionalDependencies: react: specifier: 18.3.1 @@ -2188,10 +2188,10 @@ importers: version: 8.4.31 postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.31)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.31)(webpack@5.94.0(webpack-cli@4.9.1)) sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) typescript: specifier: 5.0.4 version: 5.0.4 @@ -2341,16 +2341,16 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) typescript: specifier: ^5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/jitm: devDependencies: @@ -2365,13 +2365,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/masterbar: dependencies: @@ -2402,7 +2402,7 @@ importers: version: 6.5.0 '@wordpress/dependency-extraction-webpack-plugin': specifier: 6.5.0 - version: 6.5.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.5.0(webpack@5.94.0(webpack-cli@4.9.1)) autoprefixer: specifier: 10.4.14 version: 10.4.14(postcss@8.4.31) @@ -2417,19 +2417,19 @@ importers: version: 8.4.31 postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.31)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.31)(webpack@5.94.0(webpack-cli@4.9.1)) sass: specifier: 1.64.1 version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/my-jetpack: dependencies: @@ -2559,7 +2559,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) storybook: specifier: 8.2.9 version: 8.2.9(@babel/preset-env@7.24.7(@babel/core@7.24.7)) @@ -2567,11 +2567,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/plans: {} @@ -2585,7 +2585,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) tslib: specifier: 2.5.0 version: 2.5.0 @@ -2593,11 +2593,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/protect-models: {} @@ -2619,11 +2619,11 @@ importers: specifier: 7.6.0 version: 7.6.0 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/search: dependencies: @@ -2759,7 +2759,7 @@ importers: version: 6.5.0 '@wordpress/dependency-extraction-webpack-plugin': specifier: 6.5.0 - version: 6.5.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.5.0(webpack@5.94.0(webpack-cli@4.9.1)) autoprefixer: specifier: 10.4.14 version: 10.4.14(postcss@8.4.31) @@ -2786,7 +2786,7 @@ importers: version: 12.1.7(postcss@8.4.31) postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.31)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.31)(webpack@5.94.0(webpack-cli@4.9.1)) prettier: specifier: npm:wp-prettier@3.0.3 version: wp-prettier@3.0.3 @@ -2795,16 +2795,16 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) size-limit: specifier: 11.1.4 version: 11.1.4(@size-limit/preset-app@11.1.4) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/stats-admin: {} @@ -2956,7 +2956,7 @@ importers: version: 10.4.14(postcss@8.4.31) copy-webpack-plugin: specifier: 11.0.0 - version: 11.0.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 11.0.0(webpack@5.94.0(webpack-cli@4.9.1)) jest: specifier: 29.7.0 version: 29.7.0 @@ -2971,7 +2971,7 @@ importers: version: 12.1.7(postcss@8.4.31) postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.31)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.31)(webpack@5.94.0(webpack-cli@4.9.1)) require-from-string: specifier: 2.0.2 version: 2.0.2 @@ -2980,7 +2980,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) storybook: specifier: 8.2.9 version: 8.2.9 @@ -2988,11 +2988,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/wordads: dependencies: @@ -3116,7 +3116,7 @@ importers: version: 6.5.0 '@wordpress/dependency-extraction-webpack-plugin': specifier: 6.5.0 - version: 6.5.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.5.0(webpack@5.94.0(webpack-cli@4.9.1)) babel-jest: specifier: 29.4.3 version: 29.4.3(@babel/core@7.24.7) @@ -3140,13 +3140,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/packages/wp-js-data-sync: {} @@ -3206,13 +3206,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/plugins/automattic-for-agencies-client: dependencies: @@ -3291,13 +3291,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/plugins/automattic-for-agencies-client/tests/e2e: devDependencies: @@ -3348,7 +3348,7 @@ importers: version: 2.1.1 copy-webpack-plugin: specifier: 11.0.0 - version: 11.0.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 11.0.0(webpack@5.94.0(webpack-cli@4.9.1)) history: specifier: 5.3.0 version: 5.3.0 @@ -3436,7 +3436,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) storybook: specifier: 8.2.9 version: 8.2.9(@babel/preset-env@7.24.7(@babel/core@7.24.7)) @@ -3447,11 +3447,11 @@ importers: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/plugins/boost/tests/e2e: devDependencies: @@ -3536,13 +3536,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/plugins/classic-theme-helper-plugin/tests/e2e: devDependencies: @@ -3645,7 +3645,7 @@ importers: version: 29.3.1(@babel/core@7.24.7) css-loader: specifier: 6.5.1 - version: 6.5.1(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.5.1(webpack@5.94.0(webpack-cli@4.9.1)) glob: specifier: 10.4.1 version: 10.4.1 @@ -3660,16 +3660,16 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) typescript: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/plugins/inspect: dependencies: @@ -3856,7 +3856,7 @@ importers: version: 0.4.1 copy-webpack-plugin: specifier: 11.0.0 - version: 11.0.0(webpack@5.76.0(webpack-cli@4.9.1)) + version: 11.0.0(webpack@5.94.0(webpack-cli@4.9.1)) crypto-js: specifier: 4.2.0 version: 4.2.0 @@ -3939,11 +3939,11 @@ importers: specifier: 2.3.0 version: 2.3.0 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) optionalDependencies: react: specifier: 18.3.1 @@ -4074,13 +4074,13 @@ importers: version: 8.4.31 postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.31)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.31)(webpack@5.94.0(webpack-cli@4.9.1)) regenerator-runtime: specifier: 0.13.9 version: 0.13.9 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) typescript: specifier: 5.0.4 version: 5.0.4 @@ -4168,13 +4168,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/plugins/migration/tests/e2e: devDependencies: @@ -4282,16 +4282,16 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) typescript: specifier: 5.0.4 version: 5.0.4 webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/plugins/search: {} @@ -4417,19 +4417,19 @@ importers: version: 12.1.7(postcss@8.4.31) postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.31)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.31)(webpack@5.94.0(webpack-cli@4.9.1)) sass: specifier: 1.64.1 version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/plugins/social/tests/e2e: devDependencies: @@ -4514,13 +4514,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/plugins/starter-plugin/tests/e2e: devDependencies: @@ -4619,13 +4619,13 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) webpack: - specifier: 5.76.0 - version: 5.76.0(webpack-cli@4.9.1) + specifier: 5.94.0 + version: 5.94.0(webpack-cli@4.9.1) webpack-cli: specifier: 4.9.1 - version: 4.9.1(webpack@5.76.0) + version: 4.9.1(webpack@5.94.0) projects/plugins/videopress/tests/e2e: devDependencies: @@ -7324,12 +7324,6 @@ packages: '@types/escodegen@0.0.6': resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.0': - resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} - '@types/estree@0.0.39': resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} @@ -7637,50 +7631,50 @@ packages: resolution: {integrity: sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==} hasBin: true - '@webassemblyjs/ast@1.11.1': - resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} + '@webassemblyjs/ast@1.12.1': + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} - '@webassemblyjs/floating-point-hex-parser@1.11.1': - resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - '@webassemblyjs/helper-api-error@1.11.1': - resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - '@webassemblyjs/helper-buffer@1.11.1': - resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} + '@webassemblyjs/helper-buffer@1.12.1': + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - '@webassemblyjs/helper-numbers@1.11.1': - resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - '@webassemblyjs/helper-wasm-bytecode@1.11.1': - resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - '@webassemblyjs/helper-wasm-section@1.11.1': - resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} + '@webassemblyjs/helper-wasm-section@1.12.1': + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} - '@webassemblyjs/ieee754@1.11.1': - resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - '@webassemblyjs/leb128@1.11.1': - resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - '@webassemblyjs/utf8@1.11.1': - resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - '@webassemblyjs/wasm-edit@1.11.1': - resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} + '@webassemblyjs/wasm-edit@1.12.1': + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} - '@webassemblyjs/wasm-gen@1.11.1': - resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} + '@webassemblyjs/wasm-gen@1.12.1': + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} - '@webassemblyjs/wasm-opt@1.11.1': - resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} + '@webassemblyjs/wasm-opt@1.12.1': + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} - '@webassemblyjs/wasm-parser@1.11.1': - resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} + '@webassemblyjs/wasm-parser@1.12.1': + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} - '@webassemblyjs/wast-printer@1.11.1': - resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} + '@webassemblyjs/wast-printer@1.12.1': + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} '@webpack-cli/configtest@1.2.0': resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} @@ -8115,8 +8109,8 @@ packages: acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - acorn-import-assertions@1.9.0: - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: acorn: ^8 @@ -9473,9 +9467,6 @@ packages: resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} engines: {node: '>= 0.4'} - es-module-lexer@0.9.3: - resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} - es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} @@ -13594,6 +13585,22 @@ packages: resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} engines: {node: '>=14.16'} + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + terser-webpack-plugin@5.3.3: resolution: {integrity: sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==} engines: {node: '>= 10.13.0'} @@ -14124,8 +14131,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.76.0: - resolution: {integrity: sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==} + webpack@5.94.0: + resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -14528,10 +14535,10 @@ snapshots: '@automattic/viewport@1.0.0': {} - '@automattic/webpack-rtl-plugin@6.0.0(webpack@5.76.0(webpack-cli@4.9.1))': + '@automattic/webpack-rtl-plugin@6.0.0(webpack@5.94.0(webpack-cli@4.9.1))': dependencies: rtlcss: 3.5.0 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) '@babel/code-frame@7.24.7': dependencies: @@ -15425,13 +15432,13 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@cerner/duplicate-package-checker-webpack-plugin@2.3.0(webpack@5.76.0(webpack-cli@4.9.1))': + '@cerner/duplicate-package-checker-webpack-plugin@2.3.0(webpack@5.94.0(webpack-cli@4.9.1))': dependencies: chalk: 4.1.2 find-root: 1.1.0 lodash.groupby: 4.6.0 semver: 7.5.2 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) '@colors/colors@1.6.0': {} @@ -16859,10 +16866,10 @@ snapshots: memoizerific: 1.11.3 storybook: 8.2.9 - '@storybook/addon-webpack5-compiler-babel@3.0.3(webpack@5.76.0(webpack-cli@4.9.1))': + '@storybook/addon-webpack5-compiler-babel@3.0.3(webpack@5.94.0(webpack-cli@4.9.1))': dependencies: '@babel/core': 7.24.7 - babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.76.0(webpack-cli@4.9.1)) + babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.94.0(webpack-cli@4.9.1)) transitivePeerDependencies: - supports-color - webpack @@ -16888,7 +16895,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-webpack5@8.2.9(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.76.0))': + '@storybook/builder-webpack5@8.2.9(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0))': dependencies: '@storybook/core-webpack': 8.2.9(storybook@8.2.9) '@types/node': 18.19.44 @@ -16897,25 +16904,25 @@ snapshots: case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.3.1 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.76.0(webpack-cli@4.9.1)) + css-loader: 6.11.0(webpack@5.94.0(webpack-cli@4.9.1)) es-module-lexer: 1.5.4 express: 4.19.2 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.0.4)(webpack@5.76.0(webpack-cli@4.9.1)) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1)) fs-extra: 11.2.0 - html-webpack-plugin: 5.6.0(webpack@5.76.0(webpack-cli@4.9.1)) + html-webpack-plugin: 5.6.0(webpack@5.94.0(webpack-cli@4.9.1)) magic-string: 0.30.11 path-browserify: 1.0.1 process: 0.11.10 semver: 7.5.2 storybook: 8.2.9 - style-loader: 3.3.4(webpack@5.76.0(webpack-cli@4.9.1)) - terser-webpack-plugin: 5.3.3(webpack@5.76.0(webpack-cli@4.9.1)) + style-loader: 3.3.4(webpack@5.94.0(webpack-cli@4.9.1)) + terser-webpack-plugin: 5.3.3(webpack@5.94.0(webpack-cli@4.9.1)) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.76.0(webpack-cli@4.9.1) - webpack-dev-middleware: 6.1.3(webpack@5.76.0(webpack-cli@4.9.1)) + webpack: 5.94.0(webpack-cli@4.9.1) + webpack-dev-middleware: 6.1.3(webpack@5.94.0(webpack-cli@4.9.1)) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -17020,11 +17027,11 @@ snapshots: dependencies: storybook: 8.2.9 - '@storybook/preset-react-webpack@8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.76.0))': + '@storybook/preset-react-webpack@8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0))': dependencies: '@storybook/core-webpack': 8.2.9(storybook@8.2.9) '@storybook/react': 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.0.4)(webpack@5.76.0(webpack-cli@4.9.1)) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1)) '@types/node': 18.19.44 '@types/semver': 7.5.8 find-up: 5.0.0 @@ -17037,7 +17044,7 @@ snapshots: semver: 7.5.2 storybook: 8.2.9 tsconfig-paths: 4.2.0 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) optionalDependencies: typescript: 5.0.4 transitivePeerDependencies: @@ -17055,7 +17062,7 @@ snapshots: dependencies: storybook: 8.2.9 - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.0.4)(webpack@5.76.0(webpack-cli@4.9.1))': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1))': dependencies: debug: 4.3.4 endent: 2.1.0 @@ -17065,7 +17072,7 @@ snapshots: react-docgen-typescript: 2.2.2(typescript@5.0.4) tslib: 2.5.0 typescript: 5.0.4 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) transitivePeerDependencies: - supports-color @@ -17081,10 +17088,10 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 8.2.9 - '@storybook/react-webpack5@8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.76.0))': + '@storybook/react-webpack5@8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0))': dependencies: - '@storybook/builder-webpack5': 8.2.9(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.76.0)) - '@storybook/preset-react-webpack': 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.76.0)) + '@storybook/builder-webpack5': 8.2.9(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0)) + '@storybook/preset-react-webpack': 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0)) '@storybook/react': 8.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.2.9)(typescript@5.0.4) '@types/node': 18.19.44 react: 18.3.1 @@ -17533,16 +17540,6 @@ snapshots: '@types/escodegen@0.0.6': {} - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.0 - '@types/estree': 1.0.5 - - '@types/eslint@9.6.0': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - '@types/estree@0.0.39': {} '@types/estree@0.0.51': {} @@ -17956,95 +17953,95 @@ snapshots: '@vercel/ncc@0.36.1': {} - '@webassemblyjs/ast@1.11.1': + '@webassemblyjs/ast@1.12.1': dependencies: - '@webassemblyjs/helper-numbers': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/floating-point-hex-parser@1.11.1': {} + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} - '@webassemblyjs/helper-api-error@1.11.1': {} + '@webassemblyjs/helper-api-error@1.11.6': {} - '@webassemblyjs/helper-buffer@1.11.1': {} + '@webassemblyjs/helper-buffer@1.12.1': {} - '@webassemblyjs/helper-numbers@1.11.1': + '@webassemblyjs/helper-numbers@1.11.6': dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - '@webassemblyjs/helper-wasm-bytecode@1.11.1': {} + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} - '@webassemblyjs/helper-wasm-section@1.11.1': + '@webassemblyjs/helper-wasm-section@1.12.1': dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/ieee754@1.11.1': + '@webassemblyjs/ieee754@1.11.6': dependencies: '@xtuc/ieee754': 1.2.0 - '@webassemblyjs/leb128@1.11.1': + '@webassemblyjs/leb128@1.11.6': dependencies: '@xtuc/long': 4.2.2 - '@webassemblyjs/utf8@1.11.1': {} + '@webassemblyjs/utf8@1.11.6': {} - '@webassemblyjs/wasm-edit@1.11.1': + '@webassemblyjs/wasm-edit@1.12.1': dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/helper-wasm-section': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-opt': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - '@webassemblyjs/wast-printer': 1.11.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 - '@webassemblyjs/wasm-gen@1.11.1': + '@webassemblyjs/wasm-gen@1.12.1': dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 - '@webassemblyjs/wasm-opt@1.11.1': + '@webassemblyjs/wasm-opt@1.12.1': dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-buffer': 1.11.1 - '@webassemblyjs/wasm-gen': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wasm-parser@1.11.1': + '@webassemblyjs/wasm-parser@1.12.1': dependencies: - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/helper-api-error': 1.11.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - '@webassemblyjs/ieee754': 1.11.1 - '@webassemblyjs/leb128': 1.11.1 - '@webassemblyjs/utf8': 1.11.1 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 - '@webassemblyjs/wast-printer@1.11.1': + '@webassemblyjs/wast-printer@1.12.1': dependencies: - '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@1.2.0(webpack-cli@4.9.1(webpack@5.76.0))(webpack@5.76.0(webpack-cli@4.9.1))': + '@webpack-cli/configtest@1.2.0(webpack-cli@4.9.1(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.9.1))': dependencies: - webpack: 5.76.0(webpack-cli@4.9.1) - webpack-cli: 4.9.1(webpack@5.76.0) + webpack: 5.94.0(webpack-cli@4.9.1) + webpack-cli: 4.9.1(webpack@5.94.0) - '@webpack-cli/info@1.5.0(webpack-cli@4.9.1(webpack@5.76.0))': + '@webpack-cli/info@1.5.0(webpack-cli@4.9.1(webpack@5.94.0))': dependencies: envinfo: 7.13.0 - webpack-cli: 4.9.1(webpack@5.76.0) + webpack-cli: 4.9.1(webpack@5.94.0) - '@webpack-cli/serve@1.7.0(webpack-cli@4.9.1(webpack@5.76.0))': + '@webpack-cli/serve@1.7.0(webpack-cli@4.9.1(webpack@5.94.0))': dependencies: - webpack-cli: 4.9.1(webpack@5.76.0) + webpack-cli: 4.9.1(webpack@5.94.0) '@wordpress/a11y@4.5.0': dependencies: @@ -18916,10 +18913,10 @@ snapshots: moment: 2.29.4 moment-timezone: 0.5.45 - '@wordpress/dependency-extraction-webpack-plugin@6.5.0(webpack@5.76.0(webpack-cli@4.9.1))': + '@wordpress/dependency-extraction-webpack-plugin@6.5.0(webpack@5.94.0(webpack-cli@4.9.1))': dependencies: json2php: 0.0.7 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) '@wordpress/deprecated@4.5.0': dependencies: @@ -19836,7 +19833,7 @@ snapshots: acorn: 8.12.1 acorn-walk: 8.3.3 - acorn-import-assertions@1.9.0(acorn@8.12.1): + acorn-import-attributes@1.9.5(acorn@8.12.1): dependencies: acorn: 8.12.1 @@ -20149,19 +20146,19 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.2(@babel/core@7.24.7)(webpack@5.76.0(webpack-cli@4.9.1)): + babel-loader@9.1.2(@babel/core@7.24.7)(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: '@babel/core': 7.24.7 find-cache-dir: 3.3.2 schema-utils: 4.2.0 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) - babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.76.0(webpack-cli@4.9.1)): + babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: '@babel/core': 7.24.7 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) babel-plugin-inline-json-import@0.3.2: dependencies: @@ -20797,7 +20794,7 @@ snapshots: cookie@0.6.0: {} - copy-webpack-plugin@11.0.0(webpack@5.76.0(webpack-cli@4.9.1)): + copy-webpack-plugin@11.0.0(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -20805,7 +20802,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) core-js-compat@3.38.0: dependencies: @@ -20882,7 +20879,7 @@ snapshots: dependencies: postcss: 8.4.31 - css-loader@6.11.0(webpack@5.76.0(webpack-cli@4.9.1)): + css-loader@6.11.0(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: icss-utils: 5.1.0(postcss@8.4.41) postcss: 8.4.41 @@ -20893,9 +20890,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) - css-loader@6.5.1(webpack@5.76.0(webpack-cli@4.9.1)): + css-loader@6.5.1(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: icss-utils: 5.1.0(postcss@8.4.31) postcss: 8.4.31 @@ -20905,9 +20902,9 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.4.31) postcss-value-parser: 4.2.0 semver: 7.5.2 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) - css-minimizer-webpack-plugin@5.0.1(webpack@5.76.0(webpack-cli@4.9.1)): + css-minimizer-webpack-plugin@5.0.1(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 cssnano: 6.1.2(postcss@8.4.31) @@ -20915,7 +20912,7 @@ snapshots: postcss: 8.4.31 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) css-select@4.3.0: dependencies: @@ -21427,8 +21424,6 @@ snapshots: iterator.prototype: 1.1.2 safe-array-concat: 1.1.2 - es-module-lexer@0.9.3: {} - es-module-lexer@1.5.4: {} es-object-atoms@1.0.0: @@ -21453,12 +21448,12 @@ snapshots: es6-error@4.1.1: {} - esbuild-loader@3.0.1(webpack@5.76.0(webpack-cli@4.9.1)): + esbuild-loader@3.0.1(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: esbuild: 0.17.19 get-tsconfig: 4.7.6 loader-utils: 2.0.4 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) webpack-sources: 1.4.3 esbuild-register@3.6.0(esbuild@0.21.5): @@ -22121,7 +22116,7 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.0.4)(webpack@5.76.0(webpack-cli@4.9.1)): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: '@babel/code-frame': 7.24.7 chalk: 4.1.2 @@ -22136,9 +22131,9 @@ snapshots: semver: 7.5.2 tapable: 2.2.1 typescript: 5.0.4 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) - fork-ts-checker-webpack-plugin@9.0.2(typescript@5.0.4)(webpack@5.76.0(webpack-cli@4.9.1)): + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: '@babel/code-frame': 7.24.7 chalk: 4.1.2 @@ -22153,7 +22148,7 @@ snapshots: semver: 7.5.2 tapable: 2.2.1 typescript: 5.0.4 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) form-data@4.0.0: dependencies: @@ -22503,7 +22498,7 @@ snapshots: html-tags@3.3.1: {} - html-webpack-plugin@5.6.0(webpack@5.76.0(webpack-cli@4.9.1)): + html-webpack-plugin@5.6.0(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -22511,7 +22506,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) htmlparser2@3.10.1: dependencies: @@ -24187,10 +24182,10 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.4.5(webpack@5.76.0(webpack-cli@4.9.1)): + mini-css-extract-plugin@2.4.5(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: schema-utils: 4.2.0 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) minimatch@3.1.2: dependencies: @@ -24757,13 +24752,13 @@ snapshots: optionalDependencies: postcss: 8.4.41 - postcss-loader@6.2.0(postcss@8.4.31)(webpack@5.76.0(webpack-cli@4.9.1)): + postcss-loader@6.2.0(postcss@8.4.31)(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 postcss: 8.4.31 semver: 7.5.2 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) postcss-merge-longhand@6.0.5(postcss@8.4.31): dependencies: @@ -25724,11 +25719,11 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@12.4.0(sass@1.64.1)(webpack@5.76.0(webpack-cli@4.9.1)): + sass-loader@12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) optionalDependencies: sass: 1.64.1 @@ -26248,15 +26243,15 @@ snapshots: style-inject@0.3.0: {} - style-loader@2.0.0(webpack@5.76.0(webpack-cli@4.9.1)): + style-loader@2.0.0(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) - style-loader@3.3.4(webpack@5.76.0(webpack-cli@4.9.1)): + style-loader@3.3.4(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) stylehacks@6.1.1(postcss@8.4.31): dependencies: @@ -26443,23 +26438,32 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - terser-webpack-plugin@5.3.3(webpack@5.76.0(webpack-cli@4.9.1)): + terser-webpack-plugin@5.3.10(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.6 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) - terser-webpack-plugin@5.3.3(webpack@5.76.0): + terser-webpack-plugin@5.3.10(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.6 - webpack: 5.76.0 + webpack: 5.94.0 + + terser-webpack-plugin@5.3.3(webpack@5.94.0(webpack-cli@4.9.1)): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.6 + webpack: 5.94.0(webpack-cli@4.9.1) terser@5.31.6: dependencies: @@ -26482,14 +26486,14 @@ snapshots: text-table@0.2.0: {} - thread-loader@3.0.4(webpack@5.76.0(webpack-cli@4.9.1)): + thread-loader@3.0.4(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: json-parse-better-errors: 1.0.2 loader-runner: 4.3.0 loader-utils: 2.0.4 neo-async: 2.6.2 schema-utils: 3.3.0 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) through@2.3.8: {} @@ -26950,12 +26954,12 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-cli@4.9.1(webpack@5.76.0): + webpack-cli@4.9.1(webpack@5.94.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.9.1(webpack@5.76.0))(webpack@5.76.0(webpack-cli@4.9.1)) - '@webpack-cli/info': 1.5.0(webpack-cli@4.9.1(webpack@5.76.0)) - '@webpack-cli/serve': 1.7.0(webpack-cli@4.9.1(webpack@5.76.0)) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.9.1(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.9.1)) + '@webpack-cli/info': 1.5.0(webpack-cli@4.9.1(webpack@5.94.0)) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.9.1(webpack@5.94.0)) colorette: 2.0.20 commander: 7.2.0 execa: 5.1.1 @@ -26963,19 +26967,19 @@ snapshots: import-local: 3.2.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) webpack-merge: 5.10.0 - webpack-dev-middleware@5.3.4(webpack@5.76.0): + webpack-dev-middleware@5.3.4(webpack@5.94.0): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.76.0 + webpack: 5.94.0 - webpack-dev-middleware@6.1.3(webpack@5.76.0(webpack-cli@4.9.1)): + webpack-dev-middleware@6.1.3(webpack@5.94.0(webpack-cli@4.9.1)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -26983,7 +26987,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.76.0(webpack-cli@4.9.1) + webpack: 5.94.0(webpack-cli@4.9.1) webpack-hot-middleware@2.26.1: dependencies: @@ -27006,19 +27010,18 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.76.0: + webpack@5.94.0: dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 0.0.51 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.12.1 - acorn-import-assertions: 1.9.0(acorn@8.12.1) + acorn-import-attributes: 1.9.5(acorn@8.12.1) browserslist: 4.23.1 chrome-trace-event: 1.0.4 enhanced-resolve: 5.17.1 - es-module-lexer: 0.9.3 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -27029,7 +27032,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.3(webpack@5.76.0) + terser-webpack-plugin: 5.3.10(webpack@5.94.0) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -27037,19 +27040,18 @@ snapshots: - esbuild - uglify-js - webpack@5.76.0(webpack-cli@4.9.1): + webpack@5.94.0(webpack-cli@4.9.1): dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 0.0.51 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.12.1 - acorn-import-assertions: 1.9.0(acorn@8.12.1) + acorn-import-attributes: 1.9.5(acorn@8.12.1) browserslist: 4.23.1 chrome-trace-event: 1.0.4 enhanced-resolve: 5.17.1 - es-module-lexer: 0.9.3 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -27060,11 +27062,11 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.3(webpack@5.76.0(webpack-cli@4.9.1)) + terser-webpack-plugin: 5.3.10(webpack@5.94.0(webpack-cli@4.9.1)) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: - webpack-cli: 4.9.1(webpack@5.76.0) + webpack-cli: 4.9.1(webpack@5.94.0) transitivePeerDependencies: - '@swc/core' - esbuild diff --git a/projects/js-packages/babel-plugin-replace-textdomain/CHANGELOG.md b/projects/js-packages/babel-plugin-replace-textdomain/CHANGELOG.md index d578cc5b2b5cc..4505c316a8040 100644 --- a/projects/js-packages/babel-plugin-replace-textdomain/CHANGELOG.md +++ b/projects/js-packages/babel-plugin-replace-textdomain/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.0.36] - 2024-08-29 +### Changed +- Internal updates. + ## [1.0.35] - 2024-06-12 ### Changed - Updated package dependencies. [#37796] @@ -161,6 +165,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release. - Replace missing domains too. +[1.0.36]: https://github.com/Automattic/babel-plugin-replace-textdomain/compare/v1.0.35...v1.0.36 [1.0.35]: https://github.com/Automattic/babel-plugin-replace-textdomain/compare/v1.0.34...v1.0.35 [1.0.34]: https://github.com/Automattic/babel-plugin-replace-textdomain/compare/v1.0.33...v1.0.34 [1.0.33]: https://github.com/Automattic/babel-plugin-replace-textdomain/compare/v1.0.32...v1.0.33 diff --git a/projects/js-packages/babel-plugin-replace-textdomain/changelog/add-more-eslint-rules b/projects/js-packages/babel-plugin-replace-textdomain/changelog/add-more-eslint-rules deleted file mode 100644 index 2b32cb03e644c..0000000000000 --- a/projects/js-packages/babel-plugin-replace-textdomain/changelog/add-more-eslint-rules +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fixed -Comment: Fix new eslint sniffs. Should be no change in functionality. - - diff --git a/projects/js-packages/babel-plugin-replace-textdomain/package.json b/projects/js-packages/babel-plugin-replace-textdomain/package.json index d4bf9ca63bcf9..13ceb793c3fa9 100644 --- a/projects/js-packages/babel-plugin-replace-textdomain/package.json +++ b/projects/js-packages/babel-plugin-replace-textdomain/package.json @@ -1,6 +1,6 @@ { "name": "@automattic/babel-plugin-replace-textdomain", - "version": "1.0.35", + "version": "1.0.36", "description": "A Babel plugin to replace the textdomain in gettext-style function calls.", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/babel-plugin-replace-textdomain/#readme", "bugs": { diff --git a/projects/js-packages/boost-score-api/CHANGELOG.md b/projects/js-packages/boost-score-api/CHANGELOG.md index 147b05cd016e7..eec17d7c86020 100644 --- a/projects/js-packages/boost-score-api/CHANGELOG.md +++ b/projects/js-packages/boost-score-api/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.1.37] - 2024-08-29 +### Changed +- Updated package dependencies. [#39111] + ## [0.1.36] - 2024-08-23 ### Changed - Updated package dependencies. [#39004] @@ -159,6 +163,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Create package for the boost score bar API [#30781] +[0.1.37]: https://github.com/Automattic/jetpack-boost-score-api/compare/v0.1.36...v0.1.37 [0.1.36]: https://github.com/Automattic/jetpack-boost-score-api/compare/v0.1.35...v0.1.36 [0.1.35]: https://github.com/Automattic/jetpack-boost-score-api/compare/v0.1.34...v0.1.35 [0.1.34]: https://github.com/Automattic/jetpack-boost-score-api/compare/v0.1.33...v0.1.34 diff --git a/projects/js-packages/boost-score-api/changelog/add-more-eslint-rules b/projects/js-packages/boost-score-api/changelog/add-more-eslint-rules deleted file mode 100644 index 2b32cb03e644c..0000000000000 --- a/projects/js-packages/boost-score-api/changelog/add-more-eslint-rules +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fixed -Comment: Fix new eslint sniffs. Should be no change in functionality. - - diff --git a/projects/js-packages/boost-score-api/package.json b/projects/js-packages/boost-score-api/package.json index 24d737578eb40..a918d7ada1852 100644 --- a/projects/js-packages/boost-score-api/package.json +++ b/projects/js-packages/boost-score-api/package.json @@ -1,6 +1,6 @@ { "name": "@automattic/jetpack-boost-score-api", - "version": "0.1.36", + "version": "0.1.37", "description": "A package to get the Jetpack Boost score of a site", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/boost-score-api/#readme", "bugs": { @@ -30,7 +30,7 @@ "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "exports": { diff --git a/projects/js-packages/components/CHANGELOG.md b/projects/js-packages/components/CHANGELOG.md index 54b054e211266..826ff78f6e3c5 100644 --- a/projects/js-packages/components/CHANGELOG.md +++ b/projects/js-packages/components/CHANGELOG.md @@ -2,6 +2,10 @@ ### This is a list detailing changes for the Jetpack RNA Components package releases. +## [0.55.11] - 2024-08-29 +### Changed +- Updated package dependencies. [#39111] + ## [0.55.10] - 2024-08-23 ### Changed - Internal updates. @@ -1137,6 +1141,7 @@ ### Changed - Update node version requirement to 14.16.1 +[0.55.11]: https://github.com/Automattic/jetpack-components/compare/0.55.10...0.55.11 [0.55.10]: https://github.com/Automattic/jetpack-components/compare/0.55.9...0.55.10 [0.55.9]: https://github.com/Automattic/jetpack-components/compare/0.55.8...0.55.9 [0.55.8]: https://github.com/Automattic/jetpack-components/compare/0.55.7...0.55.8 diff --git a/projects/js-packages/components/changelog/add-more-eslint-rules b/projects/js-packages/components/changelog/add-more-eslint-rules deleted file mode 100644 index 2b32cb03e644c..0000000000000 --- a/projects/js-packages/components/changelog/add-more-eslint-rules +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fixed -Comment: Fix new eslint sniffs. Should be no change in functionality. - - diff --git a/projects/js-packages/components/package.json b/projects/js-packages/components/package.json index 668fd321e12f5..c5b00d1f3d21b 100644 --- a/projects/js-packages/components/package.json +++ b/projects/js-packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@automattic/jetpack-components", - "version": "0.55.10", + "version": "0.55.11", "description": "Jetpack Components Package", "author": "Automattic", "license": "GPL-2.0-or-later", @@ -60,7 +60,7 @@ "storybook": "8.2.9", "ts-dedent": "2.2.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "peerDependencies": { diff --git a/projects/js-packages/config/CHANGELOG.md b/projects/js-packages/config/CHANGELOG.md index 375e8665338e5..7b9294c9fc851 100644 --- a/projects/js-packages/config/CHANGELOG.md +++ b/projects/js-packages/config/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.1.25] - 2024-08-29 +### Changed +- Internal updates. + ## [0.1.24] - 2023-12-03 ### Changed - Updated package dependencies. [#34427] @@ -100,6 +104,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - fixed and improved README +[0.1.25]: https://github.com/Automattic/jetpack-config-js/compare/v0.1.24...v0.1.25 [0.1.24]: https://github.com/Automattic/jetpack-config-js/compare/v0.1.23...v0.1.24 [0.1.23]: https://github.com/Automattic/jetpack-config-js/compare/v0.1.22...v0.1.23 [0.1.22]: https://github.com/Automattic/jetpack-config-js/compare/v0.1.21...v0.1.22 diff --git a/projects/js-packages/config/changelog/add-more-eslint-rules b/projects/js-packages/config/changelog/add-more-eslint-rules deleted file mode 100644 index 2b32cb03e644c..0000000000000 --- a/projects/js-packages/config/changelog/add-more-eslint-rules +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fixed -Comment: Fix new eslint sniffs. Should be no change in functionality. - - diff --git a/projects/js-packages/config/package.json b/projects/js-packages/config/package.json index 8df5bee780985..2f89385ef4536 100644 --- a/projects/js-packages/config/package.json +++ b/projects/js-packages/config/package.json @@ -1,6 +1,6 @@ { "name": "@automattic/jetpack-config", - "version": "0.1.24", + "version": "0.1.25", "description": "Handles Jetpack global configuration shared across all packages", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/config/#readme", "bugs": { diff --git a/projects/js-packages/image-guide/changelog/renovate-rollup-plugin-svelte-7.x b/projects/js-packages/critical-css-gen/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/js-packages/image-guide/changelog/renovate-rollup-plugin-svelte-7.x rename to projects/js-packages/critical-css-gen/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/js-packages/critical-css-gen/package.json b/projects/js-packages/critical-css-gen/package.json index ad3cdef23e65c..3f0e3fb816e7f 100644 --- a/projects/js-packages/critical-css-gen/package.json +++ b/projects/js-packages/critical-css-gen/package.json @@ -47,7 +47,7 @@ "source-map-js": "1.2.0", "tslib": "2.5.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-dev-middleware": "5.3.4" }, "exports": { diff --git a/projects/js-packages/i18n-check-webpack-plugin/CHANGELOG.md b/projects/js-packages/i18n-check-webpack-plugin/CHANGELOG.md index 94f1a901715f2..574f5639dbc3b 100644 --- a/projects/js-packages/i18n-check-webpack-plugin/CHANGELOG.md +++ b/projects/js-packages/i18n-check-webpack-plugin/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.1.11] - 2024-08-29 +### Changed +- Updated package dependencies. [#39111] + ## [1.1.10] - 2024-08-21 ### Changed - Internal updates. @@ -214,6 +218,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Initial release. +[1.1.11]: https://github.com/Automattic/i18n-check-webpack-plugin/compare/v1.1.10...v1.1.11 [1.1.10]: https://github.com/Automattic/i18n-check-webpack-plugin/compare/v1.1.9...v1.1.10 [1.1.9]: https://github.com/Automattic/i18n-check-webpack-plugin/compare/v1.1.8...v1.1.9 [1.1.8]: https://github.com/Automattic/i18n-check-webpack-plugin/compare/v1.1.7...v1.1.8 diff --git a/projects/js-packages/i18n-check-webpack-plugin/changelog/add-more-eslint-rules b/projects/js-packages/i18n-check-webpack-plugin/changelog/add-more-eslint-rules deleted file mode 100644 index 2b32cb03e644c..0000000000000 --- a/projects/js-packages/i18n-check-webpack-plugin/changelog/add-more-eslint-rules +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fixed -Comment: Fix new eslint sniffs. Should be no change in functionality. - - diff --git a/projects/js-packages/i18n-check-webpack-plugin/package.json b/projects/js-packages/i18n-check-webpack-plugin/package.json index d50f0dd4c19e2..05b891c900632 100644 --- a/projects/js-packages/i18n-check-webpack-plugin/package.json +++ b/projects/js-packages/i18n-check-webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@automattic/i18n-check-webpack-plugin", - "version": "1.1.10", + "version": "1.1.11", "description": "A Webpack plugin to check that WordPress i18n hasn't been mangled by Webpack optimizations.", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/i18n-check-webpack-plugin/#readme", "bugs": { @@ -23,12 +23,12 @@ "@automattic/jetpack-webpack-config": "workspace:*", "@babel/core": "7.24.7", "jest": "29.7.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "peerDependencies": { "@babel/core": "^7.0.0", - "webpack": "^5.0.0" + "webpack": "^5.94.0" }, "exports": { ".": "./src/I18nCheckPlugin.js", diff --git a/projects/js-packages/i18n-check-webpack-plugin/tests/__snapshots__/build.test.js.snap b/projects/js-packages/i18n-check-webpack-plugin/tests/__snapshots__/build.test.js.snap index 8b8d785c2dc7f..c01f8541166ad 100644 --- a/projects/js-packages/i18n-check-webpack-plugin/tests/__snapshots__/build.test.js.snap +++ b/projects/js-packages/i18n-check-webpack-plugin/tests/__snapshots__/build.test.js.snap @@ -167,16 +167,16 @@ exports[`Webpack \`options-filter\`: Webpack build stats 1`] = ` { "errors": [ { - "message": "string/main.js:1:77: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", + "message": "string/main.js:1:76: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", }, { - "message": "string/main.js:1:187: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", + "message": "string/main.js:1:186: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", }, { - "message": "string/main.js:1:376: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", + "message": "string/main.js:1:374: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", }, { - "message": "string/main.js:1:490: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", + "message": "string/main.js:1:488: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", }, { "message": "string/main.js: Optimization seems to have broken the following translation strings: @@ -190,16 +190,16 @@ exports[`Webpack \`options-filter\`: Webpack build stats 1`] = ` { "errors": [ { - "message": "regex/main.js:1:77: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", + "message": "regex/main.js:1:76: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", }, { - "message": "regex/main.js:1:187: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", + "message": "regex/main.js:1:186: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", }, { - "message": "regex/main.js:1:376: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", + "message": "regex/main.js:1:374: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", }, { - "message": "regex/main.js:1:490: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", + "message": "regex/main.js:1:488: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", }, { "message": "regex/main.js: Optimization seems to have broken the following translation strings: @@ -213,16 +213,16 @@ exports[`Webpack \`options-filter\`: Webpack build stats 1`] = ` { "errors": [ { - "message": "function/main.js:1:77: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", + "message": "function/main.js:1:76: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", }, { - "message": "function/main.js:1:187: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", + "message": "function/main.js:1:186: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", }, { - "message": "function/main.js:1:376: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", + "message": "function/main.js:1:374: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", }, { - "message": "function/main.js:1:490: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", + "message": "function/main.js:1:488: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", }, { "message": "function/main.js: Optimization seems to have broken the following translation strings: @@ -236,16 +236,16 @@ exports[`Webpack \`options-filter\`: Webpack build stats 1`] = ` { "errors": [ { - "message": "array/main.js:1:77: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", + "message": "array/main.js:1:76: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", }, { - "message": "array/main.js:1:187: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", + "message": "array/main.js:1:186: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", }, { - "message": "array/main.js:1:376: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", + "message": "array/main.js:1:374: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", }, { - "message": "array/main.js:1:490: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", + "message": "array/main.js:1:488: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", }, { "message": "array/main.js: Optimization seems to have broken the following translation strings: @@ -259,16 +259,16 @@ exports[`Webpack \`options-filter\`: Webpack build stats 1`] = ` { "errors": [ { - "message": "undefined/main.js:1:77: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", + "message": "undefined/main.js:1:76: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", }, { - "message": "undefined/main.js:1:187: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", + "message": "undefined/main.js:1:186: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", }, { - "message": "undefined/main.js:1:376: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", + "message": "undefined/main.js:1:374: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", }, { - "message": "undefined/main.js:1:490: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", + "message": "undefined/main.js:1:488: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", }, { "message": "undefined/main.js: Optimization seems to have broken the following translation strings: @@ -289,19 +289,19 @@ exports[`Webpack \`options-filter\`: Webpack build stats 1`] = ` "errors": [ { "compilerPath": "string", - "message": "string/main.js:1:77: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", + "message": "string/main.js:1:76: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", }, { "compilerPath": "string", - "message": "string/main.js:1:187: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", + "message": "string/main.js:1:186: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", }, { "compilerPath": "string", - "message": "string/main.js:1:376: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", + "message": "string/main.js:1:374: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", }, { "compilerPath": "string", - "message": "string/main.js:1:490: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", + "message": "string/main.js:1:488: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", }, { "compilerPath": "string", @@ -311,19 +311,19 @@ exports[`Webpack \`options-filter\`: Webpack build stats 1`] = ` }, { "compilerPath": "regex", - "message": "regex/main.js:1:77: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", + "message": "regex/main.js:1:76: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", }, { "compilerPath": "regex", - "message": "regex/main.js:1:187: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", + "message": "regex/main.js:1:186: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", }, { "compilerPath": "regex", - "message": "regex/main.js:1:376: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", + "message": "regex/main.js:1:374: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", }, { "compilerPath": "regex", - "message": "regex/main.js:1:490: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", + "message": "regex/main.js:1:488: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", }, { "compilerPath": "regex", @@ -333,19 +333,19 @@ exports[`Webpack \`options-filter\`: Webpack build stats 1`] = ` }, { "compilerPath": "function", - "message": "function/main.js:1:77: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", + "message": "function/main.js:1:76: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", }, { "compilerPath": "function", - "message": "function/main.js:1:187: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", + "message": "function/main.js:1:186: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", }, { "compilerPath": "function", - "message": "function/main.js:1:376: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", + "message": "function/main.js:1:374: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", }, { "compilerPath": "function", - "message": "function/main.js:1:490: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", + "message": "function/main.js:1:488: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", }, { "compilerPath": "function", @@ -355,19 +355,19 @@ exports[`Webpack \`options-filter\`: Webpack build stats 1`] = ` }, { "compilerPath": "array", - "message": "array/main.js:1:77: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", + "message": "array/main.js:1:76: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", }, { "compilerPath": "array", - "message": "array/main.js:1:187: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", + "message": "array/main.js:1:186: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", }, { "compilerPath": "array", - "message": "array/main.js:1:376: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", + "message": "array/main.js:1:374: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", }, { "compilerPath": "array", - "message": "array/main.js:1:490: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", + "message": "array/main.js:1:488: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", }, { "compilerPath": "array", @@ -377,19 +377,19 @@ exports[`Webpack \`options-filter\`: Webpack build stats 1`] = ` }, { "compilerPath": "undefined", - "message": "undefined/main.js:1:77: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", + "message": "undefined/main.js:1:76: msgid argument is not a string literal: __(t?"arr is set":"arr is not set","domain")", }, { "compilerPath": "undefined", - "message": "undefined/main.js:1:187: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", + "message": "undefined/main.js:1:186: msgid argument is not a string literal: __(t?"func is set":"func is not set","domain")", }, { "compilerPath": "undefined", - "message": "undefined/main.js:1:376: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", + "message": "undefined/main.js:1:374: msgid argument is not a string literal: __(t?"regex is set":"regex is not set","domain")", }, { "compilerPath": "undefined", - "message": "undefined/main.js:1:490: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", + "message": "undefined/main.js:1:488: msgid argument is not a string literal: __(t?"string is set":"string is not set","domain")", }, { "compilerPath": "undefined", diff --git a/projects/js-packages/i18n-loader-webpack-plugin/CHANGELOG.md b/projects/js-packages/i18n-loader-webpack-plugin/CHANGELOG.md index ef45eb9ca8fec..218908cefe6b5 100644 --- a/projects/js-packages/i18n-loader-webpack-plugin/CHANGELOG.md +++ b/projects/js-packages/i18n-loader-webpack-plugin/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.0.56] - 2024-08-29 +### Changed +- Updated package dependencies. [#39111] + ## [2.0.55] - 2024-08-21 ### Changed - Internal updates. @@ -249,6 +253,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Initial release. +[2.0.56]: https://github.com/Automattic/i18n-loader-webpack-plugin/compare/v2.0.55...v2.0.56 [2.0.55]: https://github.com/Automattic/i18n-loader-webpack-plugin/compare/v2.0.54...v2.0.55 [2.0.54]: https://github.com/Automattic/i18n-loader-webpack-plugin/compare/v2.0.53...v2.0.54 [2.0.53]: https://github.com/Automattic/i18n-loader-webpack-plugin/compare/v2.0.52...v2.0.53 diff --git a/projects/js-packages/i18n-loader-webpack-plugin/package.json b/projects/js-packages/i18n-loader-webpack-plugin/package.json index 919c4d8e04ebf..2b757aee168a3 100644 --- a/projects/js-packages/i18n-loader-webpack-plugin/package.json +++ b/projects/js-packages/i18n-loader-webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@automattic/i18n-loader-webpack-plugin", - "version": "2.0.55", + "version": "2.0.56", "description": "A Webpack plugin to load WordPress i18n when Webpack lazy-loads a bundle.", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/i18n-loader-webpack-plugin/#readme", "bugs": { @@ -23,11 +23,11 @@ "@wordpress/dependency-extraction-webpack-plugin": "6.5.0", "@wordpress/i18n": "5.5.0", "jest": "29.7.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "peerDependencies": { - "webpack": "^5.29.0" + "webpack": "^5.94.0" }, "exports": { ".": "./src/I18nLoaderPlugin.js" diff --git a/projects/js-packages/idc/CHANGELOG.md b/projects/js-packages/idc/CHANGELOG.md index c6bcf4f939db8..72a6081ee7e1d 100644 --- a/projects/js-packages/idc/CHANGELOG.md +++ b/projects/js-packages/idc/CHANGELOG.md @@ -2,6 +2,10 @@ ### This is a list detailing changes for the Jetpack RNA IDC package releases. +## 0.11.9 - 2024-08-29 +### Changed +- Internal updates. + ## 0.11.8 - 2024-08-21 ### Changed - Internal updates. diff --git a/projects/js-packages/idc/changelog/add-more-eslint-rules b/projects/js-packages/idc/changelog/add-more-eslint-rules deleted file mode 100644 index 2b32cb03e644c..0000000000000 --- a/projects/js-packages/idc/changelog/add-more-eslint-rules +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fixed -Comment: Fix new eslint sniffs. Should be no change in functionality. - - diff --git a/projects/js-packages/idc/package.json b/projects/js-packages/idc/package.json index 67c6bfdeeb9da..6b9b7b6bece08 100644 --- a/projects/js-packages/idc/package.json +++ b/projects/js-packages/idc/package.json @@ -1,6 +1,6 @@ { "name": "@automattic/jetpack-idc", - "version": "0.11.8", + "version": "0.11.9", "description": "Jetpack Connection Component", "author": "Automattic", "license": "GPL-2.0-or-later", diff --git a/projects/js-packages/image-guide/CHANGELOG.md b/projects/js-packages/image-guide/CHANGELOG.md index e773c91e2dbfb..51f3534157e22 100644 --- a/projects/js-packages/image-guide/CHANGELOG.md +++ b/projects/js-packages/image-guide/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.5.11] - 2024-08-29 +### Changed +- Updated package dependencies. [#38287] + +### Fixed +- Fix: Handle uncaught exception for images with empty or no src attributes. [#39024] +- Fixed a bug where image guide would show up for svg images. [#38329] + ## [0.5.10] - 2024-07-10 ### Changed - Updated package dependencies. [#38092] @@ -113,6 +121,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed - Minor package.json change - removing private entry. +[0.5.11]: https://github.com/Automattic/jetpack-image-guide/compare/v0.5.10...v0.5.11 [0.5.10]: https://github.com/Automattic/jetpack-image-guide/compare/v0.5.9...v0.5.10 [0.5.9]: https://github.com/Automattic/jetpack-image-guide/compare/v0.5.8...v0.5.9 [0.5.8]: https://github.com/Automattic/jetpack-image-guide/compare/v0.5.7...v0.5.8 diff --git a/projects/js-packages/image-guide/changelog/fix-uncaught-exception b/projects/js-packages/image-guide/changelog/fix-uncaught-exception deleted file mode 100644 index e9ab1868e6296..0000000000000 --- a/projects/js-packages/image-guide/changelog/fix-uncaught-exception +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fixed - -Fix: Handle uncaught exception for images with empty or no src attributes. diff --git a/projects/js-packages/image-guide/changelog/try-no-version-bumps-in-trunk b/projects/js-packages/image-guide/changelog/try-no-version-bumps-in-trunk deleted file mode 100644 index 91efe85c55e06..0000000000000 --- a/projects/js-packages/image-guide/changelog/try-no-version-bumps-in-trunk +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Un-bump version numbers in trunk. The build will now update the version numbers as needed for mirrors. - - diff --git a/projects/js-packages/image-guide/changelog/update-fix-image-guide-svgs b/projects/js-packages/image-guide/changelog/update-fix-image-guide-svgs deleted file mode 100644 index 694da4b8779ef..0000000000000 --- a/projects/js-packages/image-guide/changelog/update-fix-image-guide-svgs +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fixed - -Fixed a bug where image guide would show up for svg images. diff --git a/projects/js-packages/image-guide/package.json b/projects/js-packages/image-guide/package.json index e7bc461174a84..f88b9d1c663ed 100644 --- a/projects/js-packages/image-guide/package.json +++ b/projects/js-packages/image-guide/package.json @@ -1,6 +1,6 @@ { "name": "@automattic/jetpack-image-guide", - "version": "0.5.10", + "version": "0.5.11", "description": "Go through the dom to analyze image size on screen vs actual file size.", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/image-guide/#readme", "type": "module", @@ -56,7 +56,7 @@ "svelte-preprocess": "6.0.2", "tslib": "2.5.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "exports": { diff --git a/projects/js-packages/publicize-components/CHANGELOG.md b/projects/js-packages/publicize-components/CHANGELOG.md index 0f671ddae6f6e..a40b949dce544 100644 --- a/projects/js-packages/publicize-components/CHANGELOG.md +++ b/projects/js-packages/publicize-components/CHANGELOG.md @@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.64.0] - 2024-08-29 +### Added +- Added share status info to Jetpack sidebar [#39073] +- Added usePostPrePublishValue hook [#39119] + +### Changed +- Social: Default to the current post ID for share status selector [#39112] +- Social: Updated the share status modal to render it globally [#39116] + +### Fixed +- Fixed a deadlock with media validation and media picker [#38933] + ## [0.63.0] - 2024-08-26 ### Added - Added the new feature flag for the social share status [#39015] @@ -861,6 +873,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Updated package dependencies. [#24470] +[0.64.0]: https://github.com/Automattic/jetpack-publicize-components/compare/v0.63.0...v0.64.0 [0.63.0]: https://github.com/Automattic/jetpack-publicize-components/compare/v0.62.0...v0.63.0 [0.62.0]: https://github.com/Automattic/jetpack-publicize-components/compare/v0.61.0...v0.62.0 [0.61.0]: https://github.com/Automattic/jetpack-publicize-components/compare/v0.60.0...v0.61.0 diff --git a/projects/js-packages/publicize-components/changelog/add-social-share-status-info b/projects/js-packages/publicize-components/changelog/add-social-share-status-info deleted file mode 100644 index 0d38a15639ec3..0000000000000 --- a/projects/js-packages/publicize-components/changelog/add-social-share-status-info +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: added - -Added share status info to Jetpack sidebar diff --git a/projects/js-packages/publicize-components/changelog/add-social-share-status-shares-modal b/projects/js-packages/publicize-components/changelog/add-social-share-status-shares-modal new file mode 100644 index 0000000000000..bf7d182e6814d --- /dev/null +++ b/projects/js-packages/publicize-components/changelog/add-social-share-status-shares-modal @@ -0,0 +1,4 @@ +Significance: minor +Type: added + +Add share status log modal to published posts diff --git a/projects/js-packages/publicize-components/changelog/fix-social-hide-share-status-when-no-connection-is-on b/projects/js-packages/publicize-components/changelog/fix-social-hide-share-status-when-no-connection-is-on new file mode 100644 index 0000000000000..4bc68b5f4acd1 --- /dev/null +++ b/projects/js-packages/publicize-components/changelog/fix-social-hide-share-status-when-no-connection-is-on @@ -0,0 +1,4 @@ +Significance: patch +Type: fixed + +Fixed share status being shown even if no connection is enabled diff --git a/projects/js-packages/publicize-components/changelog/try-no-version-bumps-in-trunk b/projects/js-packages/publicize-components/changelog/try-no-version-bumps-in-trunk deleted file mode 100644 index 91efe85c55e06..0000000000000 --- a/projects/js-packages/publicize-components/changelog/try-no-version-bumps-in-trunk +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Un-bump version numbers in trunk. The build will now update the version numbers as needed for mirrors. - - diff --git a/projects/js-packages/publicize-components/changelog/update-socia-render-share-status-modal-globally b/projects/js-packages/publicize-components/changelog/update-socia-render-share-status-modal-globally deleted file mode 100644 index b7d9c012f4521..0000000000000 --- a/projects/js-packages/publicize-components/changelog/update-socia-render-share-status-modal-globally +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: changed - -Social: Updated the share status modal to render it globally diff --git a/projects/js-packages/publicize-components/package.json b/projects/js-packages/publicize-components/package.json index 94e3384c7834f..4235dbb072f2c 100644 --- a/projects/js-packages/publicize-components/package.json +++ b/projects/js-packages/publicize-components/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@automattic/jetpack-publicize-components", - "version": "0.63.0", + "version": "0.64.0", "description": "A library of JS components required by the Publicize editor plugin", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/publicize-components/#readme", "bugs": { diff --git a/projects/js-packages/publicize-components/src/components/form/index.tsx b/projects/js-packages/publicize-components/src/components/form/index.tsx index 08abdbcc35ccd..d659d4afee780 100644 --- a/projects/js-packages/publicize-components/src/components/form/index.tsx +++ b/projects/js-packages/publicize-components/src/components/form/index.tsx @@ -9,6 +9,10 @@ import { Disabled, PanelRow } from '@wordpress/components'; import { Fragment } from '@wordpress/element'; import { usePublicizeConfig } from '../../..'; +import useAttachedMedia from '../../hooks/use-attached-media'; +import useFeaturedImage from '../../hooks/use-featured-image'; +import useMediaDetails from '../../hooks/use-media-details'; +import useMediaRestrictions from '../../hooks/use-media-restrictions'; import useSocialMediaConnections from '../../hooks/use-social-media-connections'; import { getSocialScriptData } from '../../utils/script-data'; import { ThemedConnectionsModal as ManageConnectionsModal } from '../manage-connections-modal'; @@ -24,8 +28,24 @@ import { SharePostForm } from './share-post-form'; * @return {object} - Publicize form component. */ export default function PublicizeForm() { - const { hasConnections, hasEnabledConnections } = useSocialMediaConnections(); + const { hasConnections, hasEnabledConnections, connections } = useSocialMediaConnections(); const { isPublicizeEnabled, isPublicizeDisabledBySitePlan } = usePublicizeConfig(); + const { attachedMedia } = useAttachedMedia(); + const featuredImageId = useFeaturedImage(); + + const mediaId = attachedMedia[ 0 ]?.id || featuredImageId; + const { validationErrors, isConvertible } = useMediaRestrictions( + connections, + useMediaDetails( mediaId )[ 0 ] + ); + + const showSharePostForm = + isPublicizeEnabled && + ( hasEnabledConnections || + // We show the form if there is any attached media or validation errors to let the user + // fix the issues with uploading an image. + attachedMedia.length > 0 || + ( Object.keys( validationErrors ).length !== 0 && ! isConvertible ) ); const Wrapper = isPublicizeDisabledBySitePlan ? Disabled : Fragment; @@ -50,9 +70,7 @@ export default function PublicizeForm() { { ! isPublicizeDisabledBySitePlan && ( - { isPublicizeEnabled && hasEnabledConnections && ( - - ) } + { showSharePostForm && } ) } diff --git a/projects/js-packages/publicize-components/src/components/post-publish-share-status/index.tsx b/projects/js-packages/publicize-components/src/components/post-publish-share-status/index.tsx index 4877a81941ea1..304493afaf73f 100644 --- a/projects/js-packages/publicize-components/src/components/post-publish-share-status/index.tsx +++ b/projects/js-packages/publicize-components/src/components/post-publish-share-status/index.tsx @@ -2,6 +2,8 @@ import { useSelect } from '@wordpress/data'; import { PluginPostPublishPanel } from '@wordpress/edit-post'; import { store as editorStore } from '@wordpress/editor'; import { usePostMeta } from '../../hooks/use-post-meta'; +import { usePostPrePublishValue } from '../../hooks/use-post-pre-publish-value'; +import { store as socialStore } from '../../social-store'; import { ShareStatus } from './share-status'; /** @@ -10,7 +12,7 @@ import { ShareStatus } from './share-status'; * @return {import('react').ReactNode} - Post publish share status component. */ export function PostPublishShareStatus() { - const { isPublicizeEnabled: willPostBeShared } = usePostMeta(); + const { isPublicizeEnabled } = usePostMeta(); const { postId, isPostPublised } = useSelect( select => { // eslint-disable-next-line @typescript-eslint/no-explicit-any -- `@wordpress/editor` is a nightmare to work with TypeScript const _editorStore = select( editorStore ) as any; @@ -21,6 +23,12 @@ export function PostPublishShareStatus() { }; }, [] ); + const enabledConnections = usePostPrePublishValue( + useSelect( select => select( socialStore ).getEnabledConnections(), [] ) + ); + + const willPostBeShared = isPublicizeEnabled && enabledConnections.length > 0; + if ( ! willPostBeShared || ! isPostPublised ) { return null; } diff --git a/projects/js-packages/publicize-components/src/components/share-status-modal/index.tsx b/projects/js-packages/publicize-components/src/components/share-status-modal/index.tsx deleted file mode 100644 index d7db5ead4be80..0000000000000 --- a/projects/js-packages/publicize-components/src/components/share-status-modal/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Button } from '@wordpress/components'; -import { __ } from '@wordpress/i18n'; -import { getSocialScriptData } from '../../utils/script-data'; -import styles from './styles.module.scss'; - -/** - * Share status modal component. - * - * @return {import('react').ReactNode} - Share status modal component. - */ -export function ShareStatusModal() { - const { feature_flags } = getSocialScriptData(); - - if ( ! feature_flags.useShareStatus ) { - return null; - } - - return ( -
- { ' ' } -
- ); -} diff --git a/projects/js-packages/publicize-components/src/components/share-status-modal/styles.module.scss b/projects/js-packages/publicize-components/src/components/share-status-modal/styles.module.scss deleted file mode 100644 index a4bdac5ae6174..0000000000000 --- a/projects/js-packages/publicize-components/src/components/share-status-modal/styles.module.scss +++ /dev/null @@ -1,4 +0,0 @@ -.wrapper { - margin-top: 1rem; - padding-block: 1rem; -} \ No newline at end of file diff --git a/projects/js-packages/publicize-components/src/components/share-status/modal.tsx b/projects/js-packages/publicize-components/src/components/share-status/modal.tsx index 9d204d1033418..cffdb48fcb257 100644 --- a/projects/js-packages/publicize-components/src/components/share-status/modal.tsx +++ b/projects/js-packages/publicize-components/src/components/share-status/modal.tsx @@ -3,6 +3,7 @@ import { Modal } from '@wordpress/components'; import { useDispatch, useSelect } from '@wordpress/data'; import { __ } from '@wordpress/i18n'; import { store as socialStore } from '../../social-store'; +import { ShareList } from './share-list'; import styles from './styles.module.scss'; /** @@ -14,13 +15,15 @@ export function ShareStatusModal() { const { closeShareStatusModal } = useDispatch( socialStore ); return ( - - Content goes here - +
+ + + +
); } diff --git a/projects/js-packages/publicize-components/src/components/share-status/share-info.tsx b/projects/js-packages/publicize-components/src/components/share-status/share-info.tsx new file mode 100644 index 0000000000000..9427778bf92b5 --- /dev/null +++ b/projects/js-packages/publicize-components/src/components/share-status/share-info.tsx @@ -0,0 +1,38 @@ +import { getDate, humanTimeDiff } from '@wordpress/date'; +import ConnectionIcon from '../connection-icon'; +import { ShareStatusAction } from './share-status-action'; +import { ShareStatusLabel } from './share-status-label'; +import styles from './styles.module.scss'; + +/** + * + * ShareInfo component + * + * @param {object} props - component props + * @param {object} props.share - share object + * @return {import('react').ReactNode} - React element + */ +export function ShareInfo( { share } ) { + const { service, external_name, profile_picture, timestamp, status, message } = share; + + return ( +
+ +
+
{ external_name }
+
+
+ { + // @ts-expect-error - humanTimeDiff is incorrectly typed, first argument can be a timestamp + humanTimeDiff( timestamp * 1000, getDate() ) + } +
+ + +
+ ); +} diff --git a/projects/js-packages/publicize-components/src/components/share-status/share-list.tsx b/projects/js-packages/publicize-components/src/components/share-status/share-list.tsx new file mode 100644 index 0000000000000..90714ab167389 --- /dev/null +++ b/projects/js-packages/publicize-components/src/components/share-status/share-list.tsx @@ -0,0 +1,46 @@ +import { Spinner } from '@wordpress/components'; +import { useSelect } from '@wordpress/data'; +import { store as editorStore } from '@wordpress/editor'; +import { __ } from '@wordpress/i18n'; +import { store as socialStore } from '../../social-store'; +import { ShareInfo } from './share-info'; +import styles from './styles.module.scss'; + +/** + * ShareList component + * + * @return {import('react').ReactNode} - Share status modal component. + */ +export function ShareList() { + const { shareStatus } = useSelect( select => { + const store = select( socialStore ); + // eslint-disable-next-line @typescript-eslint/no-explicit-any -- `@wordpress/editor` is a nightmare to work with TypeScript + const _editorStore = select( editorStore ) as any; + + return { + shareStatus: store.getPostShareStatus( _editorStore.getCurrentPostId() ), + }; + }, [] ); + + return ( +
+ { shareStatus.loading && ( +
+ { __( 'Loading…', 'jetpack' ) } +
+ ) } + { shareStatus.shares.length > 0 && ( + + ) } +
+ ); +} diff --git a/projects/js-packages/publicize-components/src/components/share-status/share-status-action.tsx b/projects/js-packages/publicize-components/src/components/share-status/share-status-action.tsx new file mode 100644 index 0000000000000..e81cae6506c55 --- /dev/null +++ b/projects/js-packages/publicize-components/src/components/share-status/share-status-action.tsx @@ -0,0 +1,26 @@ +import { ExternalLink } from '@wordpress/components'; +import { __ } from '@wordpress/i18n'; +import styles from './styles.module.scss'; + +/** + * + * Share status action component. + * + * @param {object} props - component props + * @param {boolean} props.status - status of the share + * @param {string} props.shareLink - link to the share + * @return {import('react').ReactNode} - React element + */ +export function ShareStatusAction( { status, shareLink } ) { + return ( +
+ { 'success' !== status ? ( + Retry + ) : ( + + { __( 'View', 'jetpack' ) } + + ) } +
+ ); +} diff --git a/projects/js-packages/publicize-components/src/components/share-status/share-status-label.tsx b/projects/js-packages/publicize-components/src/components/share-status/share-status-label.tsx new file mode 100644 index 0000000000000..c01703bad43c6 --- /dev/null +++ b/projects/js-packages/publicize-components/src/components/share-status/share-status-label.tsx @@ -0,0 +1,46 @@ +import { IconTooltip, Text } from '@automattic/jetpack-components'; +import { __, _x } from '@wordpress/i18n'; +import { Icon, check } from '@wordpress/icons'; +import clsx from 'clsx'; +import React from 'react'; +import styles from './styles.module.scss'; + +/** + * + * Share status label component. + * + * @param {object} props - component props + * @param {boolean} props.status - status of the share + * @param {string} props.message - link to the share, or error message if failed + * @return {import('react').ReactNode} - React element + */ +export function ShareStatusLabel( { status, message } ) { + const isSuccessful = 'success' === status; + + const icon = isSuccessful ? ( + + ) : ( + + { message } + + ); + + return ( +
+
{ icon }
+
+ { isSuccessful + ? _x( 'Shared', 'The sharing is successful', 'jetpack' ) + : __( 'Failed', 'jetpack' ) } +
+
+ ); +} diff --git a/projects/js-packages/publicize-components/src/components/share-status/styles.module.scss b/projects/js-packages/publicize-components/src/components/share-status/styles.module.scss index 273f943790152..2018e13947793 100644 --- a/projects/js-packages/publicize-components/src/components/share-status/styles.module.scss +++ b/projects/js-packages/publicize-components/src/components/share-status/styles.module.scss @@ -2,3 +2,88 @@ margin-top: 1rem; padding-block: 1rem; } + +.wrapper { + margin-top: 1rem; + padding-block: 1rem; +} + +.spinner{ + margin: 0 1rem 1rem 1rem; +} + +.modal { + width: 60rem; +} + +.share-log-list { + outline: 1px solid var(--jp-gray-5); + border-radius: 4px; + margin: 0; + width: 100%; + + .share-log-list-item { + margin-bottom: 0px; + padding: 0.8rem 1rem; + + &:not(:last-child) { + border-bottom: 1px solid var(--jp-gray-5); + } + } + + .share-item { + display: flex; + gap: 1rem; + align-items: center; + } +} + +.share-item-name-wrapper { + display: flex; + flex-direction: column; + gap: 0.5rem; + flex: 1; + overflow: auto; +} + +.share-item-name { + display: flex; + align-items: center; +} + +.share-status-wrapper { + display: flex; + align-items: center; + width: 5rem; + + &.share-status-success { + color: var(--jp-green-50); + } + + &.share-status-failure { + color: var(--jp-red-50); + height: 29px; + } +} + +.share-status-label { + flex: 1; +} + +.share-status-icon-tooltip { + width: 24px; + top: 2px; + margin-inline-start: 2px; + + > button { + color: var(--jp-red-50) !important; + } +} + +.share-status-icon { + fill: var(--jp-green-50); +} + +.share-status-action-wrapper { + width: 3rem; +} diff --git a/projects/js-packages/publicize-components/src/hooks/use-post-pre-publish-value/index.ts b/projects/js-packages/publicize-components/src/hooks/use-post-pre-publish-value/index.ts new file mode 100644 index 0000000000000..60d80b8b9d97f --- /dev/null +++ b/projects/js-packages/publicize-components/src/hooks/use-post-pre-publish-value/index.ts @@ -0,0 +1,39 @@ +import { useSelect } from '@wordpress/data'; +import { store as editorStore } from '@wordpress/editor'; +import { useEffect, useRef, useState } from '@wordpress/element'; + +/** + * Preserve a value from the post pre-publish state. + * + * The value will stop updating after the post is published. + * + * @template V + * @param {V} value - The value to preserve. + * + * @return {V} The preserved value. + */ +export function usePostPrePublishValue< V >( value: V ) { + const isPublishing = useSelect( + // eslint-disable-next-line @typescript-eslint/no-explicit-any -- `@wordpress/editor` is a nightmare to work with TypeScript + select => ( select( editorStore ) as any ).isPublishingPost(), + [] + ); + + const [ currentValue, setCurrentValue ] = useState( value ); + + const valueFrozen = useRef( false ); + + useEffect( () => { + // Freeze the value after publishing starts. + if ( isPublishing ) { + valueFrozen.current = true; + } + + // Since the value is not frozen yet, update the current value. + if ( ! valueFrozen.current ) { + setCurrentValue( value ); + } + }, [ isPublishing, value ] ); + + return currentValue; +} diff --git a/projects/js-packages/publicize-components/src/hooks/use-post-pre-publish-value/test/index.test.js b/projects/js-packages/publicize-components/src/hooks/use-post-pre-publish-value/test/index.test.js new file mode 100644 index 0000000000000..70b59a9ebdc08 --- /dev/null +++ b/projects/js-packages/publicize-components/src/hooks/use-post-pre-publish-value/test/index.test.js @@ -0,0 +1,79 @@ +import { act, renderHook } from '@testing-library/react'; +import { RegistryProvider } from '@wordpress/data'; +import { store as editorStore } from '@wordpress/editor'; +import { usePostPrePublishValue } from '../'; +import { + connections as connectionsList, + createRegistryWithStores, +} from '../../../utils/test-utils'; + +const connections = connectionsList.map( connection => ( { ...connection, enabled: true } ) ); + +const post = { + jetpack_publicize_connections: [ connections[ 0 ] ], +}; + +describe( 'usePostPrePublishValue', () => { + it( 'should return the value by default', async () => { + const registry = createRegistryWithStores( post ); + + const { result } = renderHook( () => usePostPrePublishValue( 'test-value' ), { + wrapper: ( { children } ) => ( + { children } + ), + } ); + + expect( result.current ).toBe( 'test-value' ); + } ); + + it( 'should return the updated value when the post is not being published', async () => { + const registry = createRegistryWithStores( post ); + + const { rerender, result } = renderHook( + ( initialValue = 'first-value' ) => usePostPrePublishValue( initialValue ), + { + wrapper: ( { children } ) => ( + { children } + ), + } + ); + + rerender( 'second-value' ); + + await act( async () => { + await registry.dispatch( editorStore ).editPost( { + status: 'draft', + content: 'Some test content', + } ); + } ); + + expect( result.current ).toBe( 'second-value' ); + } ); + + it( 'should preserve the pre-publish value', async () => { + const registry = createRegistryWithStores( post ); + + const { rerender, result } = renderHook( + ( initialValue = 'first-value' ) => usePostPrePublishValue( initialValue ), + { + wrapper: ( { children } ) => ( + { children } + ), + } + ); + + rerender( 'second-value' ); + + await act( async () => { + registry.dispatch( editorStore ).editPost( { + status: 'publish', + content: 'Some test content', + } ); + registry.dispatch( editorStore ).savePost(); + } ); + + rerender( 'third-value' ); + + expect( result.current ).toBe( 'second-value' ); + } ); +} ); diff --git a/projects/js-packages/publicize-components/src/hooks/use-sync-post-data-to-store/test/index.test.js b/projects/js-packages/publicize-components/src/hooks/use-sync-post-data-to-store/test/index.test.js index 2593baa4d1c1d..c74bf768b4b3d 100644 --- a/projects/js-packages/publicize-components/src/hooks/use-sync-post-data-to-store/test/index.test.js +++ b/projects/js-packages/publicize-components/src/hooks/use-sync-post-data-to-store/test/index.test.js @@ -7,7 +7,7 @@ import { store as socialStore } from '../../../social-store'; import { connections as connectionsList, createRegistryWithStores, - testPost, + postPublishFetchHandler, } from '../../../utils/test-utils'; const connections = connectionsList.map( connection => ( { ...connection, enabled: true } ) ); @@ -16,9 +16,6 @@ const post = { jetpack_publicize_connections: [ connections[ 0 ] ], }; -const getMethod = options => - options.headers?.[ 'X-HTTP-Method-Override' ] || options.method || 'GET'; - describe( 'useSyncPostDataToStore', () => { it( 'should do nothing by default', async () => { const registry = createRegistryWithStores( post ); @@ -67,37 +64,7 @@ describe( 'useSyncPostDataToStore', () => { await registry.resolveSelect( socialStore ).getConnections(); // Mock apiFetch response. - apiFetch.setFetchHandler( async options => { - const method = getMethod( options ); - const { path, data, parse = true } = options; - - const wrapReturn = parse - ? v => v - : v => - // Ideally we'd do `new Response( JSON.stringify( v ) )` here, but jsdom deletes that. Sigh. - // See https://github.com/jsdom/jsdom/issues/1724 - ( { - async json() { - return v; - }, - } ); - - if ( method === 'PUT' && path.startsWith( `/wp/v2/posts/${ testPost.id }` ) ) { - return wrapReturn( { ...post, ...data } ); - } else if ( - // This URL is requested by the actions dispatched in this test. - // They are safe to ignore and are only listed here to avoid triggeringan error. - method === 'GET' && - path.startsWith( '/wp/v2/types/post' ) - ) { - return wrapReturn( {} ); - } - - throw { - code: 'unknown_path', - message: `Unknown path: ${ method } ${ path }`, - }; - } ); + apiFetch.setFetchHandler( postPublishFetchHandler( post ) ); const prevConnections = registry.select( socialStore ).getConnections(); diff --git a/projects/js-packages/publicize-components/src/social-store/resolvers.js b/projects/js-packages/publicize-components/src/social-store/resolvers.js index d251cf764d01e..ab2e6308d17a0 100644 --- a/projects/js-packages/publicize-components/src/social-store/resolvers.js +++ b/projects/js-packages/publicize-components/src/social-store/resolvers.js @@ -1,5 +1,6 @@ import apiFetch from '@wordpress/api-fetch'; import { store as editorStore } from '@wordpress/editor'; +import { normalizeShareStatus } from '../utils/share-status'; import { setConnections } from './actions/connection-data'; import { setJetpackSettings } from './actions/jetpack-settings'; import { fetchPostShareStatus, receivePostShareStaus } from './actions/share-status'; @@ -63,22 +64,23 @@ export function getConnections() { /** * Resolves the post share status. * - * @param {number} postId - The post ID. + * @param {number} _postId - The post ID. * * @return {Function} Resolver */ -export function getPostShareStatus( postId ) { - return async ( { dispatch } ) => { - if ( ! postId ) { - return; - } +export function getPostShareStatus( _postId ) { + return async ( { dispatch, registry } ) => { + // Default to the current post ID if none is provided. + const postId = _postId || registry.select( editorStore ).getCurrentPostId(); try { dispatch( fetchPostShareStatus( postId ) ); - const result = await apiFetch( { + let result = await apiFetch( { path: `jetpack/v4/social/share-status/${ postId }`, } ); + result = normalizeShareStatus( result ); + dispatch( receivePostShareStaus( result, postId ) ); } catch ( error ) { dispatch( fetchPostShareStatus( postId, false ) ); diff --git a/projects/js-packages/publicize-components/src/social-store/selectors/share-status.ts b/projects/js-packages/publicize-components/src/social-store/selectors/share-status.ts index 2bad3b71550a6..e12b27f345ac7 100644 --- a/projects/js-packages/publicize-components/src/social-store/selectors/share-status.ts +++ b/projects/js-packages/publicize-components/src/social-store/selectors/share-status.ts @@ -1,3 +1,5 @@ +import { createRegistrySelector } from '@wordpress/data'; +import { store as editorStore } from '@wordpress/editor'; import { PostShareStatus, SocialStoreState } from '../types'; /** @@ -6,11 +8,17 @@ import { PostShareStatus, SocialStoreState } from '../types'; * @param {SocialStoreState} state - State object. * @param {number} postId - The post ID. * - * @return {SocialStoreState[number]} - The post share status. + * @return {PostShareStatus} - The post share status. */ -export function getPostShareStatus( state: SocialStoreState, postId: number ): PostShareStatus { - return state.shareStatus?.[ postId ] ?? { shares: [] }; -} +export const getPostShareStatus = createRegistrySelector( + select => + ( state: SocialStoreState, postId?: number ): PostShareStatus => { + // Default to the current post ID if none is provided. + const id = postId || select( editorStore ).getCurrentPostId(); + + return state.shareStatus?.[ id ] ?? { shares: [] }; + } +); /** * Whether the share status modal is open. diff --git a/projects/js-packages/publicize-components/src/utils/share-status.ts b/projects/js-packages/publicize-components/src/utils/share-status.ts new file mode 100644 index 0000000000000..8274971d1a172 --- /dev/null +++ b/projects/js-packages/publicize-components/src/utils/share-status.ts @@ -0,0 +1,16 @@ +import { PostShareStatus } from '../social-store/types'; + +/** + * Normalizes the share status object. + * + * @param {PostShareStatus} shareStatus - Share status object. + * @return {PostShareStatus} - Normalized share status object. + */ +export function normalizeShareStatus( shareStatus: PostShareStatus ) { + if ( shareStatus && 'shares' in shareStatus && shareStatus.done ) { + // Sort shares to show the latest shares on the top. + shareStatus.shares.sort( ( a, b ) => b.timestamp - a.timestamp ); + } + + return shareStatus; +} diff --git a/projects/js-packages/publicize-components/src/utils/test-utils.js b/projects/js-packages/publicize-components/src/utils/test-utils.js index 857e4ecc1585d..fa2f326be7bc6 100644 --- a/projects/js-packages/publicize-components/src/utils/test-utils.js +++ b/projects/js-packages/publicize-components/src/utils/test-utils.js @@ -118,3 +118,54 @@ export function createActiveConnections( count ) { }, ]; } + +const getMethod = options => + options.headers?.[ 'X-HTTP-Method-Override' ] || options.method || 'GET'; + +/** + * Get the mocked fetch handler for post publish fetch requests. + * + * @param {Record} postData - Data to be used in the fetch request. + * + * @return {(options: import('@wordpress/api-fetch/build-types/types').APIFetchOptions) => Promise} Promise resolving to the fetch response + */ +export function postPublishFetchHandler( postData ) { + /** + * The mocked fetch handler for post publish fetch requests. + * + * @param {import('@wordpress/api-fetch/build-types/types').APIFetchOptions} options - Fetch options. + * + * @return {Promise} Promise resolving to the fetch response + */ + return async function ( options ) { + const method = getMethod( options ); + const { path, data, parse = true } = options; + + const wrapReturn = parse + ? v => v + : v => + // Ideally we'd do `new Response( JSON.stringify( v ) )` here, but jsdom deletes that. Sigh. + // See https://github.com/jsdom/jsdom/issues/1724 + ( { + async json() { + return v; + }, + } ); + + if ( method === 'PUT' && path.startsWith( `/wp/v2/posts/${ testPost.id }` ) ) { + return wrapReturn( { ...postData, ...data } ); + } else if ( + // This URL is requested by the actions dispatched in this test. + // They are safe to ignore and are only listed here to avoid triggeringan error. + method === 'GET' && + path.startsWith( '/wp/v2/types/post' ) + ) { + return wrapReturn( {} ); + } + + throw { + code: 'unknown_path', + message: `Unknown path: ${ method } ${ path }`, + }; + }; +} diff --git a/projects/js-packages/react-data-sync-client/CHANGELOG.md b/projects/js-packages/react-data-sync-client/CHANGELOG.md index 6f945c3c9ac8e..178b1e3fa0bb9 100644 --- a/projects/js-packages/react-data-sync-client/CHANGELOG.md +++ b/projects/js-packages/react-data-sync-client/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.1.4] - 2024-08-29 +### Changed +- Updated package dependencies. [#39004] +- Updated package dependencies. [#39111] + ## [0.1.3] - 2024-06-10 ### Changed - Updated package dependencies. [#37380] @@ -42,6 +47,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Added default param for callbacks to prevent crashes when none provided [#34910] +[0.1.4]: https://github.com/Automattic/jetpack-react-data-sync-client/compare/v0.1.3...v0.1.4 [0.1.3]: https://github.com/Automattic/jetpack-react-data-sync-client/compare/v0.1.2...v0.1.3 [0.1.2]: https://github.com/Automattic/jetpack-react-data-sync-client/compare/v0.1.1...v0.1.2 [0.1.1]: https://github.com/Automattic/jetpack-react-data-sync-client/compare/v0.1.0...v0.1.1 diff --git a/projects/js-packages/react-data-sync-client/changelog/add-enable-more-eslint-rules b/projects/js-packages/react-data-sync-client/changelog/add-enable-more-eslint-rules deleted file mode 100644 index db4cc1e54899d..0000000000000 --- a/projects/js-packages/react-data-sync-client/changelog/add-enable-more-eslint-rules +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Resolve new eslint sniffs. Should be no changes to functionality. - - diff --git a/projects/js-packages/react-data-sync-client/changelog/try-no-version-bumps-in-trunk b/projects/js-packages/react-data-sync-client/changelog/try-no-version-bumps-in-trunk deleted file mode 100644 index 91efe85c55e06..0000000000000 --- a/projects/js-packages/react-data-sync-client/changelog/try-no-version-bumps-in-trunk +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Un-bump version numbers in trunk. The build will now update the version numbers as needed for mirrors. - - diff --git a/projects/js-packages/react-data-sync-client/changelog/update-jsdoc-comments-for-wp-coding-standards b/projects/js-packages/react-data-sync-client/changelog/update-jsdoc-comments-for-wp-coding-standards deleted file mode 100644 index 0e655b2b8b7a3..0000000000000 --- a/projects/js-packages/react-data-sync-client/changelog/update-jsdoc-comments-for-wp-coding-standards +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Reformat jsdoc comments. No change to meaning or functionality. - - diff --git a/projects/js-packages/react-data-sync-client/package.json b/projects/js-packages/react-data-sync-client/package.json index c87ed178ff0f9..87e2685262309 100644 --- a/projects/js-packages/react-data-sync-client/package.json +++ b/projects/js-packages/react-data-sync-client/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@automattic/jetpack-react-data-sync-client", - "version": "0.1.3", + "version": "0.1.4", "description": "DataSync client for React", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/react-data-sync-client/#readme", "bugs": { @@ -29,7 +29,7 @@ "react": "18.3.1", "tslib": "2.5.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1", "zod": "3.22.3" }, diff --git a/projects/js-packages/image-guide/changelog/renovate-svelte-4.x b/projects/js-packages/remove-asset-webpack-plugin/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/js-packages/image-guide/changelog/renovate-svelte-4.x rename to projects/js-packages/remove-asset-webpack-plugin/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/js-packages/remove-asset-webpack-plugin/package.json b/projects/js-packages/remove-asset-webpack-plugin/package.json index 9c18f0c6a2ac5..82d6f1a93d3a1 100644 --- a/projects/js-packages/remove-asset-webpack-plugin/package.json +++ b/projects/js-packages/remove-asset-webpack-plugin/package.json @@ -21,11 +21,11 @@ }, "devDependencies": { "jest": "29.7.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "peerDependencies": { - "webpack": "^5.8.0" + "webpack": "^5.94.0" }, "exports": { ".": "./src/index.js" diff --git a/projects/js-packages/image-guide/changelog/renovate-svelte-preprocess-6.x b/projects/js-packages/storybook/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/js-packages/image-guide/changelog/renovate-svelte-preprocess-6.x rename to projects/js-packages/storybook/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/js-packages/storybook/package.json b/projects/js-packages/storybook/package.json index 729898c526148..6aeae685b5917 100644 --- a/projects/js-packages/storybook/package.json +++ b/projects/js-packages/storybook/package.json @@ -67,7 +67,7 @@ "style-loader": "2.0.0", "ts-dedent": "2.2.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "dependencies": { diff --git a/projects/js-packages/image-guide/changelog/renovate-yoast-phpunit-polyfills-1.x b/projects/js-packages/svelte-data-sync-client/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/js-packages/image-guide/changelog/renovate-yoast-phpunit-polyfills-1.x rename to projects/js-packages/svelte-data-sync-client/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/js-packages/svelte-data-sync-client/package.json b/projects/js-packages/svelte-data-sync-client/package.json index 71d6112815637..25a51ea543517 100644 --- a/projects/js-packages/svelte-data-sync-client/package.json +++ b/projects/js-packages/svelte-data-sync-client/package.json @@ -31,7 +31,7 @@ "svelte": "4.2.18", "tslib": "2.5.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1", "zod": "3.22.3" }, diff --git a/projects/js-packages/react-data-sync-client/changelog/renovate-yoast-phpunit-polyfills-1.x b/projects/js-packages/videopress-core/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/js-packages/react-data-sync-client/changelog/renovate-yoast-phpunit-polyfills-1.x rename to projects/js-packages/videopress-core/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/js-packages/videopress-core/package.json b/projects/js-packages/videopress-core/package.json index 311d09bb60c1c..90aeb4fbdb9a4 100644 --- a/projects/js-packages/videopress-core/package.json +++ b/projects/js-packages/videopress-core/package.json @@ -29,7 +29,7 @@ "@types/jest": "29.5.12", "tslib": "2.5.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "exports": { diff --git a/projects/js-packages/webpack-config/CHANGELOG.md b/projects/js-packages/webpack-config/CHANGELOG.md index 1dbc2c8f4fc78..1c56c7a4d75be 100644 --- a/projects/js-packages/webpack-config/CHANGELOG.md +++ b/projects/js-packages/webpack-config/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 3.3.3 - 2024-08-29 +### Changed +- Updated package dependencies. [#39111] + ## 3.3.2 - 2024-08-21 ### Changed - Internal updates. diff --git a/projects/js-packages/webpack-config/package.json b/projects/js-packages/webpack-config/package.json index 97c9f2640d87d..73946fa946f12 100644 --- a/projects/js-packages/webpack-config/package.json +++ b/projects/js-packages/webpack-config/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@automattic/jetpack-webpack-config", - "version": "3.3.2", + "version": "3.3.3", "description": "Library of pieces for webpack config in Jetpack projects.", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/js-packages/webpack-config/#readme", "bugs": { @@ -43,14 +43,14 @@ "@babel/core": "7.24.7", "@babel/runtime": "7.24.7", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "peerDependencies": { "@babel/core": "^7.0.0", "@babel/runtime": "7.24.7", "typescript": ">=4.9.5", - "webpack": "^5.67.0" + "webpack": "^5.94.0" }, "peerDependenciesMeta": { "@babel/core": { diff --git a/projects/packages/admin-ui/CHANGELOG.md b/projects/packages/admin-ui/CHANGELOG.md index 45bad085e6ff2..4fcb27c498e96 100644 --- a/projects/packages/admin-ui/CHANGELOG.md +++ b/projects/packages/admin-ui/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.4.4] - 2024-08-29 +### Changed +- Admin menu: change order of Jetpack sub-menu items [#39095] + ## [0.4.3] - 2024-08-23 ### Changed - Updated package dependencies. [#39004] @@ -152,6 +156,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixing menu visibility issues. +[0.4.4]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.3...0.4.4 [0.4.3]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.2...0.4.3 [0.4.2]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.1...0.4.2 [0.4.1]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.0...0.4.1 diff --git a/projects/packages/admin-ui/package.json b/projects/packages/admin-ui/package.json index 071d8a043b9d4..d507626bfdab0 100644 --- a/projects/packages/admin-ui/package.json +++ b/projects/packages/admin-ui/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@automattic/jetpack-admin-ui", - "version": "0.4.3", + "version": "0.4.4", "description": "Generic Jetpack wp-admin UI elements", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/packages/admin-ui/#readme", "bugs": { diff --git a/projects/packages/admin-ui/src/class-admin-menu.php b/projects/packages/admin-ui/src/class-admin-menu.php index caa7ceed4a461..407271c30c859 100644 --- a/projects/packages/admin-ui/src/class-admin-menu.php +++ b/projects/packages/admin-ui/src/class-admin-menu.php @@ -13,7 +13,7 @@ */ class Admin_Menu { - const PACKAGE_VERSION = '0.4.3'; + const PACKAGE_VERSION = '0.4.4'; /** * Whether this class has been initialized @@ -58,7 +58,7 @@ function () { remove_action( 'admin_menu', array( 'Akismet_Admin', 'admin_menu' ), 5 ); // Add an Anti-spam menu item for Jetpack. - self::add_menu( __( 'Akismet Anti-spam', 'jetpack-admin-ui' ), __( 'Akismet Anti-spam', 'jetpack-admin-ui' ), 'manage_options', 'akismet-key-config', array( 'Akismet_Admin', 'display_page' ) ); + self::add_menu( __( 'Akismet Anti-spam', 'jetpack-admin-ui' ), __( 'Akismet Anti-spam', 'jetpack-admin-ui' ), 'manage_options', 'akismet-key-config', array( 'Akismet_Admin', 'display_page' ), 6 ); }, 4 ); diff --git a/projects/packages/assets/CHANGELOG.md b/projects/packages/assets/CHANGELOG.md index e5c793def6a7f..9ec4e5ba4f68c 100644 --- a/projects/packages/assets/CHANGELOG.md +++ b/projects/packages/assets/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.3.5] - 2024-08-29 +### Changed +- Updated package dependencies. [#39111] + ## [2.3.4] - 2024-08-23 ### Changed - Updated package dependencies. [#39004] @@ -482,6 +486,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Statically access asset tools +[2.3.5]: https://github.com/Automattic/jetpack-assets/compare/v2.3.4...v2.3.5 [2.3.4]: https://github.com/Automattic/jetpack-assets/compare/v2.3.3...v2.3.4 [2.3.3]: https://github.com/Automattic/jetpack-assets/compare/v2.3.2...v2.3.3 [2.3.2]: https://github.com/Automattic/jetpack-assets/compare/v2.3.1...v2.3.2 diff --git a/projects/packages/assets/package.json b/projects/packages/assets/package.json index 7acf696dc8a5a..7ca99f8b70201 100644 --- a/projects/packages/assets/package.json +++ b/projects/packages/assets/package.json @@ -19,7 +19,7 @@ "@wordpress/browserslist-config": "6.5.0", "jest": "29.7.0", "md5-es": "1.8.2", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/packages/plugin-deactivation/changelog/renovate-yoast-phpunit-polyfills-1.x b/projects/packages/backup/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/packages/plugin-deactivation/changelog/renovate-yoast-phpunit-polyfills-1.x rename to projects/packages/backup/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/packages/backup/changelog/update-jetpack-menu-item-order b/projects/packages/backup/changelog/update-jetpack-menu-item-order new file mode 100644 index 0000000000000..4bfbd859ba2bf --- /dev/null +++ b/projects/packages/backup/changelog/update-jetpack-menu-item-order @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Admin menu: change order of Jetpack sub-menu items diff --git a/projects/packages/backup/package.json b/projects/packages/backup/package.json index 65e4b10ee9a13..028ccc52c2f59 100644 --- a/projects/packages/backup/package.json +++ b/projects/packages/backup/package.json @@ -56,7 +56,7 @@ "jest-environment-jsdom": "29.7.0", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/packages/backup/src/class-jetpack-backup.php b/projects/packages/backup/src/class-jetpack-backup.php index d75fb1717eaf7..b6e0fd3bafad7 100644 --- a/projects/packages/backup/src/class-jetpack-backup.php +++ b/projects/packages/backup/src/class-jetpack-backup.php @@ -124,7 +124,8 @@ public static function initialize() { _x( 'VaultPress Backup', 'The Jetpack VaultPress Backup product name, without the Jetpack prefix', 'jetpack-backup-pkg' ), 'manage_options', 'jetpack-backup', - array( __CLASS__, 'plugin_settings_page' ) + array( __CLASS__, 'plugin_settings_page' ), + 7 ); add_action( 'load-' . $page_suffix, array( __CLASS__, 'admin_init' ) ); diff --git a/projects/packages/wp-js-data-sync/changelog/renovate-yoast-phpunit-polyfills-1.x b/projects/packages/blaze/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/packages/wp-js-data-sync/changelog/renovate-yoast-phpunit-polyfills-1.x rename to projects/packages/blaze/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/packages/blaze/package.json b/projects/packages/blaze/package.json index c0d7396e24a05..88518163d68ed 100644 --- a/projects/packages/blaze/package.json +++ b/projects/packages/blaze/package.json @@ -44,7 +44,7 @@ "@wordpress/browserslist-config": "6.5.0", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "browserslist": [ diff --git a/projects/plugins/boost/changelog/renovate-definitelytyped b/projects/packages/calypsoify/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/plugins/boost/changelog/renovate-definitelytyped rename to projects/packages/calypsoify/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/packages/calypsoify/package.json b/projects/packages/calypsoify/package.json index c2f1a6e4988ca..162bb378d404f 100644 --- a/projects/packages/calypsoify/package.json +++ b/projects/packages/calypsoify/package.json @@ -32,7 +32,7 @@ "core-js": "3.23.5", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/plugins/boost/changelog/renovate-lock-file-maintenance b/projects/packages/classic-theme-helper/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/plugins/boost/changelog/renovate-lock-file-maintenance rename to projects/packages/classic-theme-helper/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/packages/classic-theme-helper/package.json b/projects/packages/classic-theme-helper/package.json index b4b114b097e25..542f68af2ec9a 100644 --- a/projects/packages/classic-theme-helper/package.json +++ b/projects/packages/classic-theme-helper/package.json @@ -37,7 +37,7 @@ "postcss-loader": "6.2.0", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/packages/connection/CHANGELOG.md b/projects/packages/connection/CHANGELOG.md index f348d968148a1..ada08c2369ce1 100644 --- a/projects/packages/connection/CHANGELOG.md +++ b/projects/packages/connection/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.12.5] - 2024-08-29 +### Changed +- Sync: Remove the checksum for active plugins if present when sync is not active, so it gets recalculated when sync gets activated [#39098] +- Updated package dependencies. [#39111] + ## [2.12.4] - 2024-08-23 ### Changed - Updated package dependencies. [#39004] @@ -1162,6 +1167,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Separate the connection library into its own package. +[2.12.5]: https://github.com/Automattic/jetpack-connection/compare/v2.12.4...v2.12.5 [2.12.4]: https://github.com/Automattic/jetpack-connection/compare/v2.12.3...v2.12.4 [2.12.3]: https://github.com/Automattic/jetpack-connection/compare/v2.12.2...v2.12.3 [2.12.2]: https://github.com/Automattic/jetpack-connection/compare/v2.12.1...v2.12.2 diff --git a/projects/packages/connection/changelog/add-more-eslint-rules b/projects/packages/connection/changelog/add-more-eslint-rules deleted file mode 100644 index 2b32cb03e644c..0000000000000 --- a/projects/packages/connection/changelog/add-more-eslint-rules +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fixed -Comment: Fix new eslint sniffs. Should be no change in functionality. - - diff --git a/projects/packages/connection/package.json b/projects/packages/connection/package.json index c4cb6197f782e..4d22c790c9fd7 100644 --- a/projects/packages/connection/package.json +++ b/projects/packages/connection/package.json @@ -40,7 +40,7 @@ "react-dom": "18.2.0", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/packages/connection/src/class-package-version.php b/projects/packages/connection/src/class-package-version.php index 9444c3acb4b2c..05b648572d28a 100644 --- a/projects/packages/connection/src/class-package-version.php +++ b/projects/packages/connection/src/class-package-version.php @@ -12,7 +12,7 @@ */ class Package_Version { - const PACKAGE_VERSION = '2.12.4'; + const PACKAGE_VERSION = '2.12.5'; const PACKAGE_SLUG = 'connection'; diff --git a/projects/packages/connection/src/class-plugin-storage.php b/projects/packages/connection/src/class-plugin-storage.php index 3c5da0fa4db88..21d9402bf0e29 100644 --- a/projects/packages/connection/src/class-plugin-storage.php +++ b/projects/packages/connection/src/class-plugin-storage.php @@ -7,6 +7,7 @@ namespace Automattic\Jetpack\Connection; +use Jetpack_Options; use WP_Error; /** @@ -222,9 +223,14 @@ public static function maybe_update_active_connected_plugins() { public static function update_active_plugins_option() { // Note: Since this option is synced to wpcom, if you change its structure, you have to update the sanitizer at wpcom side. update_option( self::ACTIVE_PLUGINS_OPTION_NAME, self::$plugins ); - if ( ! class_exists( 'Automattic\Jetpack\Sync\Settings' ) || ! \Automattic\Jetpack\Sync\Settings::is_sync_enabled() ) { self::update_active_plugins_wpcom_no_sync_fallback(); + // Remove the checksum for active plugins, so it gets recalculated when sync gets activated. + $jetpack_callables_sync_checksum = Jetpack_Options::get_raw_option( 'jetpack_callables_sync_checksum' ); + if ( isset( $jetpack_callables_sync_checksum['jetpack_connection_active_plugins'] ) ) { + unset( $jetpack_callables_sync_checksum['jetpack_connection_active_plugins'] ); + Jetpack_Options::update_raw_option( 'jetpack_callables_sync_checksum', $jetpack_callables_sync_checksum ); + } } } diff --git a/projects/packages/explat/CHANGELOG.md b/projects/packages/explat/CHANGELOG.md index c78f47ffc30fa..f21f4f6e5b5ca 100644 --- a/projects/packages/explat/CHANGELOG.md +++ b/projects/packages/explat/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.1.5] - 2024-08-29 +### Changed +- Updated package dependencies. [#39111] + ## [0.1.4] - 2024-08-26 ### Changed - Updated package dependencies. [#39004] @@ -31,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - ExPlat: add condition to prevent fetching the experiment assignment if there's not anon id (meaning that Tracks is likely disabled) [#38327] - Updated package dependencies. [#38132] +[0.1.5]: https://github.com/Automattic/jetpack-explat/compare/v0.1.4...v0.1.5 [0.1.4]: https://github.com/Automattic/jetpack-explat/compare/v0.1.3...v0.1.4 [0.1.3]: https://github.com/Automattic/jetpack-explat/compare/v0.1.2...v0.1.3 [0.1.2]: https://github.com/Automattic/jetpack-explat/compare/v0.1.1...v0.1.2 diff --git a/projects/packages/explat/package.json b/projects/packages/explat/package.json index 56a1a4dc5f259..ec471c50d61e8 100644 --- a/projects/packages/explat/package.json +++ b/projects/packages/explat/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@automattic/jetpack-explat", - "version": "0.1.4", + "version": "0.1.5", "description": "A package for running A/B tests on the Experimentation Platform (ExPlat) in the plugin.", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/packages/explat/#readme", "bugs": { @@ -29,7 +29,7 @@ "@types/qs": "6.9.15", "jest": "29.7.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "exports": { diff --git a/projects/packages/explat/src/class-explat.php b/projects/packages/explat/src/class-explat.php index 2e67a042d239b..4ca261a4dcf7e 100644 --- a/projects/packages/explat/src/class-explat.php +++ b/projects/packages/explat/src/class-explat.php @@ -20,7 +20,7 @@ class ExPlat { * * @var string */ - const PACKAGE_VERSION = '0.1.4'; + const PACKAGE_VERSION = '0.1.5'; /** * Initializer. diff --git a/projects/packages/forms/changelog/fix-choice-field-caret b/projects/packages/forms/changelog/fix-choice-field-caret new file mode 100644 index 0000000000000..93120cce24a34 --- /dev/null +++ b/projects/packages/forms/changelog/fix-choice-field-caret @@ -0,0 +1,5 @@ +Significance: patch +Type: fixed +Comment: Move Single and Multiple Choice input caret to the end on focus + + diff --git a/projects/plugins/boost/changelog/renovate-storybook-monorepo b/projects/packages/forms/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/plugins/boost/changelog/renovate-storybook-monorepo rename to projects/packages/forms/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/packages/forms/package.json b/projects/packages/forms/package.json index 8812adb7693aa..f2069286ad9d0 100644 --- a/projects/packages/forms/package.json +++ b/projects/packages/forms/package.json @@ -54,7 +54,7 @@ "redux-thunk": "2.3.0", "sass": "1.64.1", "semver": "7.5.2", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "devDependencies": { diff --git a/projects/packages/forms/src/blocks/contact-form/components/jetpack-field-option.js b/projects/packages/forms/src/blocks/contact-form/components/jetpack-field-option.js index c96230db51222..9ba0c4477d69c 100644 --- a/projects/packages/forms/src/blocks/contact-form/components/jetpack-field-option.js +++ b/projects/packages/forms/src/blocks/contact-form/components/jetpack-field-option.js @@ -1,10 +1,12 @@ import { RichText, useBlockProps } from '@wordpress/block-editor'; import { createBlock } from '@wordpress/blocks'; import { useDispatch, useSelect } from '@wordpress/data'; +import { useEffect } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import clsx from 'clsx'; import { first } from 'lodash'; import { supportsParagraphSplitting } from '../util/block-support'; +import { moveCaretToEnd } from '../util/caret'; import { useParentAttributes } from '../util/use-parent-attributes'; import { useJetpackFieldStyles } from './use-jetpack-field-styles'; @@ -44,10 +46,22 @@ export const JetpackFieldOptionEdit = ( { removeBlock( clientId ); }; + const handleFocus = e => moveCaretToEnd( e.target ); + const supportsSplitting = supportsParagraphSplitting(); const type = name.replace( 'jetpack/field-option-', '' ); const classes = clsx( 'jetpack-field-option', `field-option-${ type }` ); + useEffect( () => { + const input = document.getElementById( blockProps.id ); + + input?.addEventListener( 'focus', handleFocus ); + + return () => { + input?.removeEventListener( 'focus', handleFocus ); + }; + }, [ blockProps.id ] ); + return (
diff --git a/projects/packages/forms/src/blocks/contact-form/util/caret.js b/projects/packages/forms/src/blocks/contact-form/util/caret.js index a5748ff3cd88b..253f0498d235d 100644 --- a/projects/packages/forms/src/blocks/contact-form/util/caret.js +++ b/projects/packages/forms/src/blocks/contact-form/util/caret.js @@ -20,3 +20,24 @@ export const getCaretPosition = target => { return preCaretRange.toString().length; }; + +/** + * Move the caret position in an active contenteditable element to the end + * + * @param {HTMLElement} target - Contenteditable element of which to move the caret + */ +export const moveCaretToEnd = target => { + if ( 'undefined' === typeof window ) { + return; + } + + // Add the contenteditable element to a new selection and collapse it to the end + const range = document.createRange(); + range.selectNodeContents( target ); + range.collapse( false ); + + // Clear the window selection object and add the new selection + const selection = window.getSelection(); + selection.removeAllRanges(); + selection.addRange( range ); +}; diff --git a/projects/packages/image-cdn/CHANGELOG.md b/projects/packages/image-cdn/CHANGELOG.md index 81868c8b93be7..b658e82aba942 100644 --- a/projects/packages/image-cdn/CHANGELOG.md +++ b/projects/packages/image-cdn/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.4.7] - 2024-08-29 +### Changed +- Rely on WordPress HTML API to parse HTML instead of Regex [#32700] + ## [0.4.6] - 2024-08-26 ### Changed - Updated package dependencies. [#39004] @@ -114,6 +118,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Add image CDN package. [#29561] +[0.4.7]: https://github.com/Automattic/jetpack-image-cdn/compare/v0.4.6...v0.4.7 [0.4.6]: https://github.com/Automattic/jetpack-image-cdn/compare/v0.4.5...v0.4.6 [0.4.5]: https://github.com/Automattic/jetpack-image-cdn/compare/v0.4.4...v0.4.5 [0.4.4]: https://github.com/Automattic/jetpack-image-cdn/compare/v0.4.3...v0.4.4 diff --git a/projects/packages/image-cdn/src/class-image-cdn.php b/projects/packages/image-cdn/src/class-image-cdn.php index 2aa47aeada031..13921df4355a9 100644 --- a/projects/packages/image-cdn/src/class-image-cdn.php +++ b/projects/packages/image-cdn/src/class-image-cdn.php @@ -12,7 +12,7 @@ */ final class Image_CDN { - const PACKAGE_VERSION = '0.4.6'; + const PACKAGE_VERSION = '0.4.7'; /** * Singleton. @@ -333,297 +333,360 @@ public static function parse_dimensions_from_filename( $src ) { * @return string */ public static function filter_the_content( $content ) { - $images = self::parse_images_from_html( $content ); + static $image_tags = array( 'IMG', 'AMP-IMG', 'AMP-ANIM' ); + $content_width = null; + $image_sizes = null; + $upload_dir = null; + $processor = new \WP_HTML_Tag_Processor( $content ); + $nearest_preceding_href = null; + + // Visit every image-containing tag in the document. + while ( $processor->next_tag( array( 'tag_closers' => 'visit' ) ) ) { + /* + * When an image is wrapped by an A element, the goal is to modify + * both elements. Thus it's important to track links that may be + * opened before reaching any image. In normative HTML this detection + * is reliable enough, but it could be confused in cases where other + * tags implicitly close the A. If this additional reliability is + * required, replace the Tag Processor with the HTML Processor. + */ + if ( 'A' === $processor->get_tag() ) { + // If this is a closing tag the attribute will be `null`. + $nearest_preceding_href = $processor->get_attribute( 'href' ); + $processor->set_bookmark( 'link' ); + continue; + } - if ( ! empty( $images ) ) { - $content_width = Image_CDN_Core::get_jetpack_content_width(); + /* + * Only examine tags that are considered an image. If encountering + * a closing tag then this is not the image being sought. + */ + if ( $processor->is_tag_closer() || ! in_array( $processor->get_tag(), $image_tags, true ) ) { + continue; + } - $image_sizes = self::image_sizes(); + $processor->set_bookmark( 'image' ); - $upload_dir = wp_get_upload_dir(); + /* + * At this point a target image has been found. Initialize the + * shared data and then process each image as it appears. + */ + if ( null === $content_width ) { + $content_width = Image_CDN_Core::get_jetpack_content_width(); + $image_sizes = self::image_sizes(); + $upload_dir = wp_get_upload_dir(); + } - foreach ( $images[0] as $index => $tag ) { - // Default to resize, though fit may be used in certain cases where a dimension cannot be ascertained. - $transform = 'resize'; + /* + * To preserve legacy behaviors for filtering by third-party plugins, + * create a normalized HTML string representing the tag. This will + * present all attributes as double-quoted attributes and include at + * most one copy of each attribute, escaping all values appropriately. + */ + $tag_name = strtolower( $processor->get_tag() ); + $tag = new \WP_HTML_Tag_Processor( "<{$tag_name}>" ); + $tag->next_tag(); + foreach ( $processor->get_attribute_names_with_prefix( '' ) ?? array() as $name ) { + $tag->set_attribute( $name, $processor->get_attribute( $name ) ); + } + $tag = $tag->get_updated_html(); - // Start with a clean attachment ID each time. - $attachment_id = false; + // Default to resize, though fit may be used in certain cases where a dimension cannot be ascertained. + $transform = 'resize'; - // Flag if we need to munge a fullsize URL. - $fullsize_url = false; + // Flag if we need to munge a fullsize URL. + $fullsize_url = false; - // Identify image source. - $src_orig = $images['img_url'][ $index ]; - $src = $src_orig; + // Identify image source. + $src_orig = $processor->get_attribute( 'src' ); + $src = $src_orig; - /** - * Allow specific images to be skipped by Photon. - * - * @module photon - * - * @since 2.0.3 - * - * @param bool false Should Photon ignore this image. Default to false. - * @param string $src Image URL. - * @param string|array|null $tag Image Tag (Image HTML output) or array of image details for srcset. - */ - if ( apply_filters( 'jetpack_photon_skip_image', false, $src, $tag ) ) { - continue; - } - - // Support Automattic's Lazy Load plugin. - // Can't modify $tag yet as we need unadulterated version later. - if ( preg_match( '#data-lazy-src=["\'](.+?)["\']#i', $images['img_tag'][ $index ], $lazy_load_src ) ) { - $placeholder_src_orig = $src; - $placeholder_src = $placeholder_src_orig; - $src_orig = $lazy_load_src[1]; - $src = $src_orig; - } elseif ( preg_match( '#data-lazy-original=["\'](.+?)["\']#i', $images['img_tag'][ $index ], $lazy_load_src ) ) { - $placeholder_src_orig = $src; - $placeholder_src = $placeholder_src_orig; - $src_orig = $lazy_load_src[1]; - $src = $src_orig; - } - - // Check if image URL should be used with Photon. - if ( self::validate_image_url( $src ) ) { - // Find the width and height attributes. - $width = false; - $height = false; - - // First, check the image tag. Note we only check for pixel sizes now; HTML4 percentages have never been correctly - // supported, so we stopped pretending to support them in JP 9.1.0. - if ( preg_match( '#[\s"\']width=["\']?([\d%]+)["\']?#i', $images['img_tag'][ $index ], $width_string ) ) { - $width = str_contains( $width_string[1], '%' ) ? false : $width_string[1]; - } + /** + * Allow specific images to be skipped by Photon. + * + * @module photon + * + * @since 2.0.3 + * + * @param bool false Should Photon ignore this image. Default to false. + * @param string $src Image URL. + * @param string|array|null $tag Image Tag (Image HTML output) or array of image details for srcset. + */ + if ( apply_filters( 'jetpack_photon_skip_image', false, $src, $tag ) ) { + continue; + } - if ( preg_match( '#[\s"\']height=["\']?([\d%]+)["\']?#i', $images['img_tag'][ $index ], $height_string ) ) { - $height = str_contains( $height_string[1], '%' ) ? false : $height_string[1]; - } + $data_lazy_src = $processor->get_attribute( 'data-lazy-src' ); + $data_lazy_original = $processor->get_attribute( 'data-lazy-original' ); - // Detect WP registered image size from HTML class. - if ( preg_match( '#class=["\']?[^"\']*size-([^"\'\s]+)[^"\']*["\']?#i', $images['img_tag'][ $index ], $size ) ) { - $size = array_pop( $size ); + $source_type = 'src'; + $chosen_data_src = null; - if ( false === $width && false === $height && 'full' !== $size && array_key_exists( $size, $image_sizes ) ) { - $width = (int) $image_sizes[ $size ]['width']; - $height = (int) $image_sizes[ $size ]['height']; - $transform = $image_sizes[ $size ]['crop'] ? 'resize' : 'fit'; - } - } else { - unset( $size ); - } + // Prefer a URL from the `data-lazy-src` attribute. + if ( null === $chosen_data_src && is_string( $data_lazy_src ) && ! empty( $data_lazy_src ) ) { + $source_type = 'data-lazy-src'; + $chosen_data_src = $data_lazy_src; + } - // WP Attachment ID, if uploaded to this site. - if ( - preg_match( '#class=["\']?[^"\']*wp-image-([\d]+)[^"\']*["\']?#i', $images['img_tag'][ $index ], $attachment_id ) && - str_starts_with( $src, $upload_dir['baseurl'] ) && - /** - * Filter whether an image using an attachment ID in its class has to be uploaded to the local site to go through Photon. - * - * @module photon - * - * @since 2.0.3 - * - * @param bool false Was the image uploaded to the local site. Default to false. - * @param array $args { - * Array of image details. - * - * @type $src Image URL. - * @type tag Image tag (Image HTML output). - * @type $images Array of information about the image. - * @type $index Image index. - * } - */ - apply_filters( 'jetpack_photon_image_is_local', false, compact( 'src', 'tag', 'images', 'index' ) ) - ) { - $attachment_id = (int) array_pop( $attachment_id ); - - if ( $attachment_id ) { - $attachment = get_post( $attachment_id ); - - // Basic check on returned post object. - if ( is_object( $attachment ) && ! is_wp_error( $attachment ) && 'attachment' === $attachment->post_type ) { - $src_per_wp = wp_get_attachment_image_src( $attachment_id, isset( $size ) ? $size : 'full' ); - - if ( self::validate_image_url( $src_per_wp[0] ) ) { - $src = $src_per_wp[0]; - $fullsize_url = true; - - // Prevent image distortion if a detected dimension exceeds the image's natural dimensions. - if ( ( false !== $width && $width > $src_per_wp[1] ) || ( false !== $height && $height > $src_per_wp[2] ) ) { - $width = false === $width ? false : min( $width, $src_per_wp[1] ); - $height = false === $height ? false : min( $height, $src_per_wp[2] ); - } - - // If no width and height are found, max out at source image's natural dimensions. - // Otherwise, respect registered image sizes' cropping setting. - if ( false === $width && false === $height ) { - $width = $src_per_wp[1]; - $height = $src_per_wp[2]; - $transform = 'fit'; - } elseif ( isset( $size ) && array_key_exists( $size, $image_sizes ) && isset( $image_sizes[ $size ]['crop'] ) ) { - $transform = (bool) $image_sizes[ $size ]['crop'] ? 'resize' : 'fit'; - } - } - } else { - unset( $attachment_id ); - unset( $attachment ); - } - } - } + // Fall back to a URL from the `data-lazy-original` attribute. + if ( null === $chosen_data_src && is_string( $data_lazy_original ) && ! empty( $data_lazy_original ) ) { + $source_type = 'data-lazy-original'; + $chosen_data_src = $data_lazy_original; + } - // If image tag lacks width and height arguments, try to determine from strings WP appends to resized image filenames. - if ( false === $width && false === $height ) { - list( $width, $height ) = self::parse_dimensions_from_filename( $src ); - } + // Update the src if one was provided in the `data-lazy-` attributes. + if ( 'src' !== $source_type ) { + $placeholder_src_orig = $src; + $placeholder_src = $placeholder_src_orig; + $src_orig = $chosen_data_src; + $src = $src_orig; + } - $width_orig = $width; - $height_orig = $height; - $transform_orig = $transform; + // Check if image URL should be used with Photon. + if ( self::validate_image_url( $src ) ) { + $width = $processor->get_attribute( 'width' ); + $height = $processor->get_attribute( 'height' ); + + // First, check the image tag. Note we only check for pixel sizes now; HTML4 percentages have never been correctly + // supported, so we stopped pretending to support them in JP 9.1.0. + if ( ! is_string( $width ) || str_contains( $width, '%' ) ) { + $width = false; + } - // If width is available, constrain to $content_width. - if ( false !== $width && is_numeric( $content_width ) && $width > $content_width ) { - if ( false !== $height ) { - $height = round( ( $content_width * $height ) / $width ); - } - $width = $content_width; - } + if ( ! is_string( $height ) || str_contains( $height, '%' ) ) { + $height = false; + } - // Set a width if none is found and $content_width is available. - // If width is set in this manner and height is available, use `fit` instead of `resize` to prevent skewing. - if ( false === $width && is_numeric( $content_width ) ) { - $width = (int) $content_width; + $needs_sizing = false === $width && false === $height; + $size = null; - if ( false !== $height ) { - $transform = 'fit'; + if ( $needs_sizing ) { + // Find the first CSS class listed with a prefix of `size-`, e.g. `size-full-width` + foreach ( $processor->class_list() ?? array() as $class_name ) { + if ( str_starts_with( $class_name, 'size-' ) ) { + $size = substr( $class_name, strlen( 'size-' ) ); + break; } } + } - // Detect if image source is for a custom-cropped thumbnail and prevent further URL manipulation. - if ( ! $fullsize_url && preg_match_all( '#-e[a-z0-9]+(-\d+x\d+)?\.(' . implode( '|', self::$extensions ) . '){1}$#i', basename( $src ), $filename ) ) { - $fullsize_url = true; - } - - // Build URL, first maybe removing WP's resized string so we pass the original image to Photon. - if ( ! $fullsize_url && str_starts_with( $src, $upload_dir['baseurl'] ) ) { - $src = self::strip_image_dimensions_maybe( $src ); - } - - // Build array of Photon args and expose to filter before passing to Photon URL function. - $args = array(); + if ( $needs_sizing && 'full' !== $size && is_string( $size ) && isset( $image_sizes[ $size ] ) && is_array( $image_sizes[ $size ] ) ) { + $width = (int) $image_sizes[ $size ]['width']; + $height = (int) $image_sizes[ $size ]['height']; + $transform = $image_sizes[ $size ]['crop'] ? 'resize' : 'fit'; + } else { + unset( $size ); + } - if ( false !== $width && false !== $height ) { - $args[ $transform ] = $width . ',' . $height; - } elseif ( false !== $width ) { - $args['w'] = $width; - } elseif ( false !== $height ) { - $args['h'] = $height; + // WP Attachment ID, if uploaded to this site. + $attachment_id = null; + foreach ( $processor->class_list() ?? array() as $class_name ) { + if ( str_starts_with( $class_name, 'wp-image-' ) ) { + $attachment_id = substr( $class_name, strlen( 'wp-image-' ) ); + break; } + } + // These values have not been used for a very long time, but removing them could break something. + $images = array(); + $index = 0; + if ( + $attachment_id && + preg_match( '#^[1-9][0-9]*$#', $attachment_id ) && + is_array( $upload_dir ) && + str_starts_with( $src, $upload_dir['baseurl'] ) && /** - * Filter the array of Photon arguments added to an image when it goes through Photon. - * By default, only includes width and height values. - * - * @see https://developer.wordpress.com/docs/photon/api/ + * Filter whether an image using an attachment ID in its class has to be uploaded to the local site to go through Photon. * * @module photon * - * @since 2.0.0 + * @since 2.0.3 * - * @param array $args Array of Photon Arguments. - * @param array $details { - * Array of image details. + * @param bool false Was the image uploaded to the local site. Default to false. + * @param array $args { + * Array of image details. * - * @type string $tag Image tag (Image HTML output). - * @type string $src Image URL. - * @type string $src_orig Original Image URL. - * @type int|false $width Image width. - * @type int|false $height Image height. - * @type int|false $width_orig Original image width before constrained by content_width. - * @type int|false $height_orig Original Image height before constrained by content_width. - * @type string $transform Transform. - * @type string $transform_orig Original transform before constrained by content_width. + * @type $src Image URL. + * @type tag Image tag (Image HTML output). * } */ - $args = apply_filters( 'jetpack_photon_post_image_args', $args, compact( 'tag', 'src', 'src_orig', 'width', 'height', 'width_orig', 'height_orig', 'transform', 'transform_orig' ) ); + apply_filters( 'jetpack_photon_image_is_local', false, compact( 'src', 'tag', 'images', 'index' ) ) + ) { + $attachment_id = (int) $attachment_id; + $attachment = get_post( $attachment_id ); + + // Basic check on returned post object. + if ( is_object( $attachment ) && ! is_wp_error( $attachment ) && 'attachment' === $attachment->post_type ) { + $src_per_wp = wp_get_attachment_image_src( $attachment_id, isset( $size ) ? $size : 'full' ); + + if ( self::validate_image_url( $src_per_wp[0] ) ) { + $src = $src_per_wp[0]; + $fullsize_url = true; + + // Prevent image distortion if a detected dimension exceeds the image's natural dimensions. + if ( ( false !== $width && $width > $src_per_wp[1] ) || ( false !== $height && $height > $src_per_wp[2] ) ) { + $width = false === $width ? false : min( $width, $src_per_wp[1] ); + $height = false === $height ? false : min( $height, $src_per_wp[2] ); + } - $photon_url = Image_CDN_Core::cdn_url( $src, $args ); + // If no width and height are found, max out at source image's natural dimensions. + // Otherwise, respect registered image sizes' cropping setting. + if ( false === $width && false === $height ) { + $width = $src_per_wp[1]; + $height = $src_per_wp[2]; + $transform = 'fit'; + } elseif ( isset( $size ) && is_array( $image_sizes ) && array_key_exists( $size, $image_sizes ) && isset( $image_sizes[ $size ]['crop'] ) ) { + $transform = $image_sizes[ $size ]['crop'] ? 'resize' : 'fit'; + } + } + } else { + unset( $attachment_id ); + unset( $attachment ); + } + } - // Modify image tag if Photon function provides a URL - // Ensure changes are only applied to the current image by copying and modifying the matched tag, then replacing the entire tag with our modified version. - if ( $src !== $photon_url ) { - $new_tag = $tag; + // If image tag lacks width and height arguments, try to determine from strings WP appends to resized image filenames. + if ( false === $width && false === $height ) { + list( $width, $height ) = self::parse_dimensions_from_filename( $src ); + } - // If present, replace the link href with a Photoned URL for the full-size image. - if ( ! empty( $images['link_url'][ $index ] ) && self::validate_image_url( $images['link_url'][ $index ] ) ) { - $new_tag = preg_replace( '#(href=["|\'])' . preg_quote( $images['link_url'][ $index ], '#' ) . '(["|\'])#i', '\1' . Image_CDN_Core::cdn_url( $images['link_url'][ $index ] ) . '\2', $new_tag, 1 ); - } + $width_orig = $width; + $height_orig = $height; + $transform_orig = $transform; - // Supplant the original source value with our Photon URL. - $photon_url = esc_url( $photon_url ); - $new_tag = str_replace( $src_orig, $photon_url, $new_tag ); + // If width is available, constrain to $content_width. + if ( false !== $width && is_numeric( $content_width ) && $width > $content_width ) { + if ( false !== $height ) { + $height = round( ( $content_width * $height ) / $width ); + } + $width = $content_width; + } - // If Lazy Load is in use, pass placeholder image through Photon. - if ( isset( $placeholder_src ) && self::validate_image_url( $placeholder_src ) ) { - $placeholder_src = Image_CDN_Core::cdn_url( $placeholder_src ); + // Set a width if none is found and $content_width is available. + // If width is set in this manner and height is available, use `fit` instead of `resize` to prevent skewing. + if ( false === $width && is_numeric( $content_width ) ) { + $width = (int) $content_width; - if ( $placeholder_src !== $placeholder_src_orig ) { - $new_tag = str_replace( $placeholder_src_orig, esc_url( $placeholder_src ), $new_tag ); - } + if ( false !== $height ) { + $transform = 'fit'; + } + } - unset( $placeholder_src ); - } + // Detect if image source is for a custom-cropped thumbnail and prevent further URL manipulation. + if ( ! $fullsize_url && preg_match_all( '#-e[a-z0-9]+(-\d+x\d+)?\.(' . implode( '|', self::$extensions ) . '){1}$#i', basename( $src ), $filename ) ) { + $fullsize_url = true; + } - // If we are not transforming the image with resize, fit, or letterbox (lb), then we should remove - // the width and height arguments (including HTML4 percentages) from the image to prevent distortion. - // Even if $args['w'] and $args['h'] are present, Photon does not crop to those dimensions. Instead, - // it appears to favor height. - // - // If we are transforming the image via one of those methods, let's update the width and height attributes. - if ( empty( $args['resize'] ) && empty( $args['fit'] ) && empty( $args['lb'] ) ) { - $new_tag = preg_replace( '#(?<=\s)(width|height)=["\']?[\d%]+["\']?\s?#i', '', $new_tag ); - } else { - $resize_args = isset( $args['resize'] ) ? $args['resize'] : false; - if ( false === $resize_args ) { - $resize_args = ( ! $resize_args && isset( $args['fit'] ) ) - ? $args['fit'] - : false; - } - if ( false === $resize_args ) { - $resize_args = ( ! $resize_args && isset( $args['lb'] ) ) - ? $args['lb'] - : false; - } + // Build URL, first maybe removing WP's resized string so we pass the original image to Photon. + if ( ! $fullsize_url && is_array( $upload_dir ) && str_starts_with( $src, $upload_dir['baseurl'] ) ) { + $src = self::strip_image_dimensions_maybe( $src ); + } + + // Build array of Photon args and expose to filter before passing to Photon URL function. + $args = array(); + + if ( false !== $width && false !== $height ) { + $args[ $transform ] = $width . ',' . $height; + } elseif ( false !== $width ) { + $args['w'] = $width; + } elseif ( false !== $height ) { + $args['h'] = $height; + } + + /** + * Filter the array of Photon arguments added to an image when it goes through Photon. + * By default, only includes width and height values. + * + * @see https://developer.wordpress.com/docs/photon/api/ + * + * @module photon + * + * @since 2.0.0 + * @since 0.4.7 Passes image tag name instead of full HTML of tag. + * + * @param array $args Array of Photon Arguments. + * @param array $details { + * Array of image details. + * + * @type string $tag Image tag (Image HTML output). + * @type string $src Image URL. + * @type string $src_orig Original Image URL. + * @type int|false $width Image width. + * @type int|false $height Image height. + * @type int|false $width_orig Original image width before constrained by content_width. + * @type int|false $height_orig Original Image height before constrained by content_width. + * @type string $transform Transform. + * @type string $transform_orig Original transform before constrained by content_width. + * } + */ + $args = apply_filters( 'jetpack_photon_post_image_args', $args, compact( 'tag', 'src', 'src_orig', 'width', 'height', 'width_orig', 'height_orig', 'transform', 'transform_orig' ) ); + + $photon_url = Image_CDN_Core::cdn_url( $src, $args ); + + // Modify image tag if Photon function provides a URL + // Ensure changes are only applied to the current image by copying and modifying the matched tag, then replacing the entire tag with our modified version. + if ( $src !== $photon_url ) { + // If present, replace the link href with a Photoned URL for the full-size image. + if ( is_string( $nearest_preceding_href ) && self::validate_image_url( $nearest_preceding_href ) ) { + $processor->seek( 'link' ); + $processor->set_attribute( 'href', Image_CDN_Core::cdn_url( $nearest_preceding_href ) ); + $processor->seek( 'image' ); + } + + // Supplant the original source value with our Photon URL. + $processor->set_attribute( 'src', $photon_url ); - $resize_args = array_map( 'trim', explode( ',', $resize_args ) ); + // If Lazy Load is in use, pass placeholder image through Photon. + if ( isset( $placeholder_src ) && self::validate_image_url( $placeholder_src ) ) { + $placeholder_src = Image_CDN_Core::cdn_url( $placeholder_src ); - // (?<=\s) - Ensure width or height attribute is preceded by a space - // (width=["\']?) - Matches, and captures, width=, width=", or width=' - // [\d%]+ - Matches 1 or more digits or percent signs - // (["\']?) - Matches, and captures, ", ', or empty string - // \s - Ensures there's a space after the attribute - $new_tag = preg_replace( '#(?<=\s)(width=["\']?)[\d%]+(["\']?)\s?#i', sprintf( '${1}%d${2} ', $resize_args[0] ), $new_tag ); - $new_tag = preg_replace( '#(?<=\s)(height=["\']?)[\d%]+(["\']?)\s?#i', sprintf( '${1}%d${2} ', $resize_args[1] ), $new_tag ); + if ( $placeholder_src !== $placeholder_src_orig ) { + $processor->set_attribute( $source_type, $placeholder_src ); } - // Tag an image for dimension checking. - if ( ! self::is_amp_endpoint() ) { - $new_tag = preg_replace( '#(\s?/)?>(\s*)?$#i', ' data-recalc-dims="1"\1>\2', $new_tag ); + unset( $placeholder_src ); + } + + // If we are not transforming the image with resize, fit, or letterbox (lb), then we should remove + // the width and height arguments (including HTML4 percentages) from the image to prevent distortion. + // Even if $args['w'] and $args['h'] are present, Photon does not crop to those dimensions. Instead, + // it appears to favor height. + // + // If we are transforming the image via one of those methods, let's update the width and height attributes. + if ( empty( $args['resize'] ) && empty( $args['fit'] ) && empty( $args['lb'] ) ) { + $processor->remove_attribute( 'width' ); + $processor->remove_attribute( 'height' ); + } else { + $resize_args = isset( $args['resize'] ) ? $args['resize'] : false; + if ( false === $resize_args ) { + $resize_args = ( ! $resize_args && isset( $args['fit'] ) ) + ? $args['fit'] + : false; + } + if ( false === $resize_args ) { + $resize_args = ( ! $resize_args && isset( $args['lb'] ) ) + ? $args['lb'] + : false; } - // Replace original tag with modified version. - $content = str_replace( $tag, $new_tag, $content ); + list( $resize_width, $resize_height ) = explode( ',', $resize_args ); + $processor->set_attribute( 'width', trim( $resize_width ) ); + $processor->set_attribute( 'height', trim( $resize_height ) ); } - } elseif ( preg_match( '#^http(s)?://i[\d]{1}.wp.com#', $src ) && ! empty( $images['link_url'][ $index ] ) && self::validate_image_url( $images['link_url'][ $index ] ) ) { - $new_tag = preg_replace( '#(href=["\'])' . preg_quote( $images['link_url'][ $index ], '#' ) . '(["\'])#i', '\1' . Image_CDN_Core::cdn_url( $images['link_url'][ $index ] ) . '\2', $tag, 1 ); - $content = str_replace( $tag, $new_tag, $content ); + // Tag an image for dimension checking. + if ( ! self::is_amp_endpoint() ) { + $processor->set_attribute( 'data-recalc-dims', '1' ); + } } + } elseif ( preg_match( '#^http(s)?://i[\d]{1}.wp.com#', $src ) && is_string( $nearest_preceding_href ) && self::validate_image_url( $nearest_preceding_href ) ) { + $processor->seek( 'link' ); + $processor->set_attribute( 'href', Image_CDN_Core::cdn_url( $nearest_preceding_href ) ); + $processor->seek( 'image' ); } } - return $content; + return $processor->get_updated_html(); } /** diff --git a/projects/packages/image-cdn/tests/php/sample-content/a-tags-with-hash-href.html b/projects/packages/image-cdn/tests/php/sample-content/a-tags-with-hash-href.html index 4b2c58ea0ce9e..266fdcebd587a 100644 --- a/projects/packages/image-cdn/tests/php/sample-content/a-tags-with-hash-href.html +++ b/projects/packages/image-cdn/tests/php/sample-content/a-tags-with-hash-href.html @@ -1,5 +1,5 @@ --RESULTS-- - + diff --git a/projects/plugins/boost/changelog/renovate-wordpress-monorepo b/projects/packages/jetpack-mu-wpcom/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/plugins/boost/changelog/renovate-wordpress-monorepo rename to projects/packages/jetpack-mu-wpcom/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/packages/jetpack-mu-wpcom/package.json b/projects/packages/jetpack-mu-wpcom/package.json index 4c572f2a9a109..48fb888c0042b 100644 --- a/projects/packages/jetpack-mu-wpcom/package.json +++ b/projects/packages/jetpack-mu-wpcom/package.json @@ -43,7 +43,7 @@ "sass": "1.64.1", "sass-loader": "12.4.0", "typescript": "^5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "dependencies": { diff --git a/projects/packages/jitm/CHANGELOG.md b/projects/packages/jitm/CHANGELOG.md index d6fbb0ef3d10d..13dcd5be77c4f 100644 --- a/projects/packages/jitm/CHANGELOG.md +++ b/projects/packages/jitm/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.1.19] - 2024-08-29 +### Changed +- Updated package dependencies. [#39111] + ## [3.1.18] - 2024-08-23 ### Changed - Updated package dependencies. [#39004] @@ -751,6 +755,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Update Jetpack to use new JITM package +[3.1.19]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.18...v3.1.19 [3.1.18]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.17...v3.1.18 [3.1.17]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.16...v3.1.17 [3.1.16]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.15...v3.1.16 diff --git a/projects/packages/jitm/package.json b/projects/packages/jitm/package.json index 34d050daac44b..9ce31fd30b742 100644 --- a/projects/packages/jitm/package.json +++ b/projects/packages/jitm/package.json @@ -27,7 +27,7 @@ "@wordpress/browserslist-config": "6.5.0", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/packages/jitm/src/class-jitm.php b/projects/packages/jitm/src/class-jitm.php index c8da570a56f58..1e79af826c202 100644 --- a/projects/packages/jitm/src/class-jitm.php +++ b/projects/packages/jitm/src/class-jitm.php @@ -20,7 +20,7 @@ */ class JITM { - const PACKAGE_VERSION = '3.1.18'; + const PACKAGE_VERSION = '3.1.19'; /** * The configuration method that is called from the jetpack-config package. diff --git a/projects/plugins/boost/changelog/renovate-yoast-phpunit-polyfills-1.x b/projects/packages/masterbar/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/plugins/boost/changelog/renovate-yoast-phpunit-polyfills-1.x rename to projects/packages/masterbar/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/packages/masterbar/package.json b/projects/packages/masterbar/package.json index c239558812d16..542fc9fd1ab3a 100644 --- a/projects/packages/masterbar/package.json +++ b/projects/packages/masterbar/package.json @@ -42,7 +42,7 @@ "postcss-loader": "6.2.0", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/packages/my-jetpack/CHANGELOG.md b/projects/packages/my-jetpack/CHANGELOG.md index bdc0bb51e90b7..c26f3b6f70b69 100644 --- a/projects/packages/my-jetpack/CHANGELOG.md +++ b/projects/packages/my-jetpack/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [4.33.1] - 2024-08-29 +### Changed +- Admin menu: change order of Jetpack sub-menu items [#39095] +- My Jetpack: reflect tier filters properly on product class and UI. Fix little nuances with date constructor [#39074] +- Updated package dependencies. [#39111] + +### Fixed +- Don't consider user lifecycle status when repeating evaluation [#39069] +- My Jetpack: Fix the popover and active button of the Bboost card are overlapping [#39067] + ## [4.33.0] - 2024-08-26 ### Added - Add context switching to videopress card from yearly views to monthly views [#38979] @@ -1669,6 +1679,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Created package +[4.33.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.33.0...4.33.1 [4.33.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.32.4...4.33.0 [4.32.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.32.3...4.32.4 [4.32.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.32.2...4.32.3 diff --git a/projects/packages/my-jetpack/_inc/components/welcome-flow/index.tsx b/projects/packages/my-jetpack/_inc/components/welcome-flow/index.tsx index 94719828bcb2e..deb312653e88f 100644 --- a/projects/packages/my-jetpack/_inc/components/welcome-flow/index.tsx +++ b/projects/packages/my-jetpack/_inc/components/welcome-flow/index.tsx @@ -23,7 +23,8 @@ export type WelcomeFlowExperiment = { const WelcomeFlow: FC< PropsWithChildren > = ( { children } ) => { const { recordEvent } = useAnalytics(); const { dismissWelcomeBanner } = useWelcomeBanner(); - const { submitEvaluation, saveEvaluationResult } = useEvaluationRecommendations(); + const { recommendedModules, submitEvaluation, saveEvaluationResult } = + useEvaluationRecommendations(); const { siteIsRegistered, siteIsRegistering, @@ -44,15 +45,27 @@ const WelcomeFlow: FC< PropsWithChildren > = ( { children } ) => { if ( ! siteIsRegistered || welcomeFlowExperiment.isLoading ) { return 'connection'; } else if ( ! isProcessingEvaluation ) { - if ( ! isJetpackUserNew() || welcomeFlowExperiment.variation !== 'treatment' ) { - // If the user is not new, we don't show the evaluation step + if ( + ! recommendedModules && + ( welcomeFlowExperiment.variation === 'control' || ! isJetpackUserNew() ) + ) { + // If user is not new but doesn't have recommendations, we skip evaluation + // If user has recommendations, it means they were already in treatment group and they redo the evaluation return null; } + + // Otherwise, it means user is either new or just repeats the recommendation return 'evaluation'; } return 'evaluation-processing'; - }, [ isProcessingEvaluation, siteIsRegistered, welcomeFlowExperiment ] ); + }, [ + isProcessingEvaluation, + recommendedModules, + siteIsRegistered, + welcomeFlowExperiment.isLoading, + welcomeFlowExperiment.variation, + ] ); useEffect( () => { if ( prevStep !== currentStep ) { diff --git a/projects/packages/my-jetpack/changelog/add-more-eslint-rules b/projects/packages/my-jetpack/changelog/add-more-eslint-rules deleted file mode 100644 index 2b32cb03e644c..0000000000000 --- a/projects/packages/my-jetpack/changelog/add-more-eslint-rules +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: fixed -Comment: Fix new eslint sniffs. Should be no change in functionality. - - diff --git a/projects/packages/my-jetpack/changelog/change-my-jetpack-disabled-tiers-handle b/projects/packages/my-jetpack/changelog/change-my-jetpack-disabled-tiers-handle deleted file mode 100644 index 49cd68c2f1c58..0000000000000 --- a/projects/packages/my-jetpack/changelog/change-my-jetpack-disabled-tiers-handle +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: changed - -My Jetpack: reflect tier filters properly on product class and UI. Fix little nuances with date constructor diff --git a/projects/packages/my-jetpack/changelog/fix-boost-score-popover b/projects/packages/my-jetpack/changelog/fix-boost-score-popover deleted file mode 100644 index 8aaff1a860047..0000000000000 --- a/projects/packages/my-jetpack/changelog/fix-boost-score-popover +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fixed - -My Jetpack: Fix the popover and active button of the Bboost card are overlapping diff --git a/projects/packages/my-jetpack/changelog/try-no-version-bumps-in-trunk b/projects/packages/my-jetpack/changelog/try-no-version-bumps-in-trunk deleted file mode 100644 index 91efe85c55e06..0000000000000 --- a/projects/packages/my-jetpack/changelog/try-no-version-bumps-in-trunk +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Un-bump version numbers in trunk. The build will now update the version numbers as needed for mirrors. - - diff --git a/projects/packages/my-jetpack/package.json b/projects/packages/my-jetpack/package.json index 3735b0ac72a5d..76706c2a685b9 100644 --- a/projects/packages/my-jetpack/package.json +++ b/projects/packages/my-jetpack/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@automattic/jetpack-my-jetpack", - "version": "4.33.0", + "version": "4.33.1", "description": "WP Admin page with information and configuration shared among all Jetpack stand-alone plugins", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/packages/my-jetpack/#readme", "bugs": { @@ -75,7 +75,7 @@ "sass-loader": "12.4.0", "storybook": "8.2.9", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/packages/my-jetpack/src/class-activitylog.php b/projects/packages/my-jetpack/src/class-activitylog.php index 0e59226dbd508..4de90c075ded5 100644 --- a/projects/packages/my-jetpack/src/class-activitylog.php +++ b/projects/packages/my-jetpack/src/class-activitylog.php @@ -51,7 +51,7 @@ public static function add_submenu_jetpack() { 'manage_options', esc_url( Redirect::get_url( 'cloud-activity-log-wp-menu', $args ) ), null, - 1 + 8 ); } } diff --git a/projects/packages/my-jetpack/src/class-initializer.php b/projects/packages/my-jetpack/src/class-initializer.php index b0be741ad3c7b..3e164192b9764 100644 --- a/projects/packages/my-jetpack/src/class-initializer.php +++ b/projects/packages/my-jetpack/src/class-initializer.php @@ -42,7 +42,7 @@ class Initializer { * * @var string */ - const PACKAGE_VERSION = '4.33.0'; + const PACKAGE_VERSION = '4.33.1'; /** * HTML container ID for the IDC screen on My Jetpack page. diff --git a/projects/packages/my-jetpack/src/class-jetpack-manage.php b/projects/packages/my-jetpack/src/class-jetpack-manage.php index be32839498d54..3a732192c90a9 100644 --- a/projects/packages/my-jetpack/src/class-jetpack-manage.php +++ b/projects/packages/my-jetpack/src/class-jetpack-manage.php @@ -49,7 +49,7 @@ public static function add_submenu_jetpack() { 'manage_options', esc_url( Redirect::get_url( 'cloud-manage-dashboard-wp-menu', $args ) ), null, - 100 + 15 ); } diff --git a/projects/packages/plugin-deactivation/CHANGELOG.md b/projects/packages/plugin-deactivation/CHANGELOG.md index b8c1a3a540873..59c5b3ee10414 100644 --- a/projects/packages/plugin-deactivation/CHANGELOG.md +++ b/projects/packages/plugin-deactivation/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.2.2] - 2024-08-29 +### Changed +- Updated package dependencies. [#39004] +- Updated package dependencies. [#39111] + ## [0.2.1] - 2024-03-15 ### Changed - Internal updates. @@ -47,6 +52,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added package to intercept plugin deactivation [#27081] +[0.2.2]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.2.1...v0.2.2 [0.2.1]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.2.0...v0.2.1 [0.2.0]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.1.6...v0.2.0 [0.1.6]: https://github.com/Automattic/jetpack-plugin-deactivation/compare/v0.1.5...v0.1.6 diff --git a/projects/packages/plugin-deactivation/changelog/try-no-version-bumps-in-trunk b/projects/packages/plugin-deactivation/changelog/try-no-version-bumps-in-trunk deleted file mode 100644 index 91efe85c55e06..0000000000000 --- a/projects/packages/plugin-deactivation/changelog/try-no-version-bumps-in-trunk +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Un-bump version numbers in trunk. The build will now update the version numbers as needed for mirrors. - - diff --git a/projects/packages/plugin-deactivation/package.json b/projects/packages/plugin-deactivation/package.json index 7a21c67011c2c..9becad3698ca9 100644 --- a/projects/packages/plugin-deactivation/package.json +++ b/projects/packages/plugin-deactivation/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@automattic/jetpack-plugin-deactivation", - "version": "0.2.1", + "version": "0.2.2", "description": "Intercept plugin deactivation with a dialog", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/packages/plugin-deactivation/#readme", "bugs": { @@ -27,7 +27,7 @@ "sass-loader": "12.4.0", "tslib": "2.5.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/packages/plugin-deactivation/src/class-deactivation-handler.php b/projects/packages/plugin-deactivation/src/class-deactivation-handler.php index dd0ce7517c1be..30eb420e8e29f 100644 --- a/projects/packages/plugin-deactivation/src/class-deactivation-handler.php +++ b/projects/packages/plugin-deactivation/src/class-deactivation-handler.php @@ -21,7 +21,7 @@ class Deactivation_Handler { * * @var string */ - const PACKAGE_VERSION = '0.2.1'; + const PACKAGE_VERSION = '0.2.2'; /** * Slug of the plugin to intercept deactivation for. diff --git a/projects/packages/publicize/CHANGELOG.md b/projects/packages/publicize/CHANGELOG.md index 3932e2d010018..7a33c43a78778 100644 --- a/projects/packages/publicize/CHANGELOG.md +++ b/projects/packages/publicize/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.50.1] - 2024-08-29 +### Added +- Added share status info to Jetpack sidebar [#39073] + +### Changed +- Updated package dependencies. [#39111] + ## [0.50.0] - 2024-08-26 ### Added - Added the new feature flag for the social share status [#39015] @@ -666,6 +673,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated package dependencies. - Update package.json metadata. +[0.50.1]: https://github.com/Automattic/jetpack-publicize/compare/v0.50.0...v0.50.1 [0.50.0]: https://github.com/Automattic/jetpack-publicize/compare/v0.49.2...v0.50.0 [0.49.2]: https://github.com/Automattic/jetpack-publicize/compare/v0.49.1...v0.49.2 [0.49.1]: https://github.com/Automattic/jetpack-publicize/compare/v0.49.0...v0.49.1 diff --git a/projects/packages/publicize/changelog/add-social-share-status-info b/projects/packages/publicize/changelog/add-social-share-status-info deleted file mode 100644 index 0d38a15639ec3..0000000000000 --- a/projects/packages/publicize/changelog/add-social-share-status-info +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: added - -Added share status info to Jetpack sidebar diff --git a/projects/packages/publicize/changelog/add-social-share-status-shares-modal b/projects/packages/publicize/changelog/add-social-share-status-shares-modal new file mode 100644 index 0000000000000..bf7d182e6814d --- /dev/null +++ b/projects/packages/publicize/changelog/add-social-share-status-shares-modal @@ -0,0 +1,4 @@ +Significance: minor +Type: added + +Add share status log modal to published posts diff --git a/projects/packages/publicize/changelog/try-no-version-bumps-in-trunk b/projects/packages/publicize/changelog/try-no-version-bumps-in-trunk deleted file mode 100644 index 91efe85c55e06..0000000000000 --- a/projects/packages/publicize/changelog/try-no-version-bumps-in-trunk +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Un-bump version numbers in trunk. The build will now update the version numbers as needed for mirrors. - - diff --git a/projects/packages/publicize/package.json b/projects/packages/publicize/package.json index b417481070cd8..1b8f123ea551a 100644 --- a/projects/packages/publicize/package.json +++ b/projects/packages/publicize/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@automattic/jetpack-publicize", - "version": "0.50.0", + "version": "0.50.1", "description": "Publicize makes it easy to share your site’s posts on several social media networks automatically when you publish a new post.", "homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/packages/publicize/#readme", "bugs": { @@ -30,7 +30,7 @@ "@automattic/jetpack-webpack-config": "workspace:*", "@wordpress/browserslist-config": "6.5.0", "concurrently": "7.6.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "dependencies": { diff --git a/projects/packages/schema/CHANGELOG.md b/projects/packages/schema/CHANGELOG.md index 411eeac18f4d6..4f89809afb93f 100644 --- a/projects/packages/schema/CHANGELOG.md +++ b/projects/packages/schema/CHANGELOG.md @@ -5,9 +5,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.1.1] - 2024-08-29 +### Changed +- Cleanup utils [#39025] + ## 0.1.0 - 2024-08-22 ### Added - Initial version. [#38563] ### Changed - Updated package dependencies. [#39004] + +[0.1.1]: https://github.com/Automattic/jetpack-schema/compare/v0.1.0...v0.1.1 diff --git a/projects/packages/schema/changelog/try-no-version-bumps-in-trunk b/projects/packages/schema/changelog/try-no-version-bumps-in-trunk deleted file mode 100644 index 91efe85c55e06..0000000000000 --- a/projects/packages/schema/changelog/try-no-version-bumps-in-trunk +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Un-bump version numbers in trunk. The build will now update the version numbers as needed for mirrors. - - diff --git a/projects/packages/schema/src/class-schema.php b/projects/packages/schema/src/class-schema.php index a5bb133d15fa5..fe3b30f6e0be1 100644 --- a/projects/packages/schema/src/class-schema.php +++ b/projects/packages/schema/src/class-schema.php @@ -65,7 +65,7 @@ * $parsed_data = $my_schema->parse($input_data); */ class Schema { - const PACKAGE_VERSION = '0.1.0'; + const PACKAGE_VERSION = '0.1.1'; public static function as_string() { return new Schema_Parser( new Type_String() ); diff --git a/projects/packages/search/changelog/add-allow-customizing-highlighted-fields b/projects/packages/search/changelog/add-allow-customizing-highlighted-fields new file mode 100644 index 0000000000000..bc31a86a45be0 --- /dev/null +++ b/projects/packages/search/changelog/add-allow-customizing-highlighted-fields @@ -0,0 +1,4 @@ +Significance: minor +Type: added + +Search: allow customizing highlighted fields diff --git a/projects/plugins/social/changelog/renovate-definitelytyped b/projects/packages/search/changelog/renovate-npm-webpack-vulnerability similarity index 100% rename from projects/plugins/social/changelog/renovate-definitelytyped rename to projects/packages/search/changelog/renovate-npm-webpack-vulnerability diff --git a/projects/packages/search/changelog/update-jetpack-menu-item-order b/projects/packages/search/changelog/update-jetpack-menu-item-order new file mode 100644 index 0000000000000..4bfbd859ba2bf --- /dev/null +++ b/projects/packages/search/changelog/update-jetpack-menu-item-order @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Admin menu: change order of Jetpack sub-menu items diff --git a/projects/packages/search/package.json b/projects/packages/search/package.json index aeca4c9411f08..c370738adde1b 100644 --- a/projects/packages/search/package.json +++ b/projects/packages/search/package.json @@ -91,7 +91,7 @@ "sass": "1.64.1", "sass-loader": "12.4.0", "size-limit": "11.1.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "browserslist": [ diff --git a/projects/packages/search/src/dashboard/class-dashboard.php b/projects/packages/search/src/dashboard/class-dashboard.php index 8da1e6ea86254..ac6494edc6f23 100644 --- a/projects/packages/search/src/dashboard/class-dashboard.php +++ b/projects/packages/search/src/dashboard/class-dashboard.php @@ -102,7 +102,8 @@ public function add_wp_admin_submenu() { _x( 'Search', 'product name shown in menu', 'jetpack-search-pkg' ), 'manage_options', 'jetpack-search', - array( $this, 'render' ) + array( $this, 'render' ), + 10 ); } else { // always add the page, but hide it from the menu. diff --git a/projects/packages/search/src/instant-search/components/search-app.jsx b/projects/packages/search/src/instant-search/components/search-app.jsx index e00e8bfc89054..58423aaa4fae4 100644 --- a/projects/packages/search/src/instant-search/components/search-app.jsx +++ b/projects/packages/search/src/instant-search/components/search-app.jsx @@ -229,6 +229,7 @@ class SearchApp extends Component { sort: this.props.sort, postsPerPage: this.props.options.postsPerPage, adminQueryFilter: this.props.options.adminQueryFilter, + highlightFields: this.props.options.highlightFields, isInCustomizer: this.props.isInCustomizer, } ); }; diff --git a/projects/packages/search/src/instant-search/components/search-result-expanded.jsx b/projects/packages/search/src/instant-search/components/search-result-expanded.jsx index 7bb2af8a23cb7..c712740a56c40 100644 --- a/projects/packages/search/src/instant-search/components/search-result-expanded.jsx +++ b/projects/packages/search/src/instant-search/components/search-result-expanded.jsx @@ -89,7 +89,16 @@ export default function SearchResultExpanded( props ) { className="jetpack-instant-search__search-result-expanded__content" //eslint-disable-next-line react/no-danger dangerouslySetInnerHTML={ { - __html: highlight.content.join( ' ... ' ), + __html: + highlight && typeof highlight === 'object' + ? Object.entries( highlight ) + .filter( + ( [ key, value ] ) => + key !== 'comments' && key !== 'title' && Array.isArray( value ) + ) + .map( ( [ , array ] ) => array.join( ' ... ' ) ) + .join( ' ... ' ) + : '', } } /> diff --git a/projects/packages/search/src/instant-search/components/search-result-minimal.jsx b/projects/packages/search/src/instant-search/components/search-result-minimal.jsx index 7e0adff204a37..46739b9af523b 100644 --- a/projects/packages/search/src/instant-search/components/search-result-minimal.jsx +++ b/projects/packages/search/src/instant-search/components/search-result-minimal.jsx @@ -87,7 +87,16 @@ class SearchResultMinimal extends Component { className="jetpack-instant-search__search-result-minimal-content" //eslint-disable-next-line react/no-danger dangerouslySetInnerHTML={ { - __html: this.props.result.highlight.content.join( ' ... ' ), + __html: + this.props.result.highlight && typeof this.props.result.highlight === 'object' + ? Object.entries( this.props.result.highlight ) + .filter( + ( [ key, value ] ) => + key !== 'comments' && key !== 'title' && Array.isArray( value ) + ) + .map( ( [ , array ] ) => array.join( ' ... ' ) ) + .join( ' ... ' ) + : '', } } /> ); @@ -98,7 +107,13 @@ class SearchResultMinimal extends Component { if ( result_type !== 'post' ) { return null; } - const noMatchingContent = ! highlight.content || highlight.content[ 0 ] === ''; + const noMatchingContent = + ! highlight || + typeof highlight !== 'object' || + Object.entries( highlight ).every( + ( [ key, value ] ) => + key === 'comments' || key === 'title' || ! Array.isArray( value ) || value[ 0 ] === '' + ); return (
  • 0; + typeof highlight === 'object' && + Object.entries( highlight ).some( + ( [ key, value ] ) => + key !== 'title' && key !== 'comments' && Array.isArray( value ) && value[ 0 ]?.length > 0 + ); return (
  • { + let foundIndex = -1; + subMenuItems.forEach( ( item, index ) => { + const href = item.href; + if ( + ( matchType === 'end' && href.endsWith( urlPattern ) ) || + ( matchType === 'start' && href.startsWith( urlPattern ) ) + ) { + foundIndex = index + 1; + } + } ); + return foundIndex; + }; + + urlPatterns.forEach( ( { key, pattern, matchType } ) => { + const index = findIndex( pattern, matchType ); + pageOrder[ key ] = index; + } ); + return pageOrder; + } + } +} + /** * Manages changing the visuals of the sub-nav items on the left sidebar when the React app changes routes * - * @param pageOrder */ -window.wpNavMenuClassChange = function ( - pageOrder = { myJetpack: 1, activityLog: 2, dashboard: 3, settings: 4 } -) { +window.wpNavMenuClassChange = function () { + const pageOrder = jetpackPageOrder(); + let hash = window.location.hash; let page = new URLSearchParams( window.location.search ); diff --git a/projects/plugins/jetpack/_inc/lib/admin-pages/class.jetpack-react-page.php b/projects/plugins/jetpack/_inc/lib/admin-pages/class.jetpack-react-page.php index 56b96499d14a4..428108f4dcf3d 100644 --- a/projects/plugins/jetpack/_inc/lib/admin-pages/class.jetpack-react-page.php +++ b/projects/plugins/jetpack/_inc/lib/admin-pages/class.jetpack-react-page.php @@ -1,5 +1,6 @@ is_offline_mode() + || Jetpack::is_connection_ready() + ) { + remove_submenu_page( 'jetpack', 'jetpack' ); + } + } + /** * Add Jetpack Dashboard sub-link and point it to AAG if the user can view stats, manage modules or if Protect is active. * @@ -86,8 +102,14 @@ public function add_page_actions( $hook ) { */ public function jetpack_add_dashboard_sub_nav_item() { if ( ( new Status() )->is_offline_mode() || Jetpack::is_connection_ready() ) { - add_submenu_page( 'jetpack', __( 'Dashboard', 'jetpack' ), __( 'Dashboard', 'jetpack' ), 'jetpack_admin_page', 'jetpack#/dashboard', '__return_null', 1 ); - remove_submenu_page( 'jetpack', 'jetpack' ); + Admin_Menu::add_menu( + __( 'Dashboard', 'jetpack' ), + __( 'Dashboard', 'jetpack' ), + 'jetpack_admin_page', + Jetpack::admin_url( array( 'page' => 'jetpack#/dashboard' ) ), + null, // @phan-suppress-current-line PhanTypeMismatchArgumentProbablyReal -- See https://core.trac.wordpress.org/ticket/52539. + 14 + ); } } @@ -165,7 +187,14 @@ private function can_access_settings() { */ public function jetpack_add_settings_sub_nav_item() { if ( $this->can_access_settings() ) { - add_submenu_page( 'jetpack', __( 'Settings', 'jetpack' ), __( 'Settings', 'jetpack' ), 'jetpack_admin_page', 'jetpack#/settings', '__return_null' ); + Admin_Menu::add_menu( + __( 'Settings', 'jetpack' ), + __( 'Settings', 'jetpack' ), + 'jetpack_admin_page', + Jetpack::admin_url( array( 'page' => 'jetpack#/settings' ) ), + null, // @phan-suppress-current-line PhanTypeMismatchArgumentProbablyReal -- See https://core.trac.wordpress.org/ticket/52539. + 13 + ); } } diff --git a/projects/plugins/jetpack/changelog/add-monetize-add-wpcom-currencies b/projects/plugins/jetpack/changelog/add-monetize-add-wpcom-currencies new file mode 100644 index 0000000000000..7d1631b31d4b2 --- /dev/null +++ b/projects/plugins/jetpack/changelog/add-monetize-add-wpcom-currencies @@ -0,0 +1,4 @@ +Significance: minor +Type: other + +Monetize: support more currencies diff --git a/projects/plugins/jetpack/changelog/change-ai-image-generation-unlimited-plan-hard-limit b/projects/plugins/jetpack/changelog/change-ai-image-generation-unlimited-plan-hard-limit new file mode 100644 index 0000000000000..28255fb70ecb6 --- /dev/null +++ b/projects/plugins/jetpack/changelog/change-ai-image-generation-unlimited-plan-hard-limit @@ -0,0 +1,4 @@ +Significance: patch +Type: other + +Jetpack AI: remove hardcoded limit on image generation, it's handled by backend diff --git a/projects/plugins/jetpack/changelog/change-jetpack-ai-sidebar-hide-usage-panel-on-plans b/projects/plugins/jetpack/changelog/change-jetpack-ai-sidebar-hide-usage-panel-on-plans new file mode 100644 index 0000000000000..10a3084411675 --- /dev/null +++ b/projects/plugins/jetpack/changelog/change-jetpack-ai-sidebar-hide-usage-panel-on-plans @@ -0,0 +1,4 @@ +Significance: minor +Type: other + +Jetpack AI: hide usagepanel when tier plans are disabled. Show QuotaExceededMessage instead of nudges diff --git a/projects/plugins/jetpack/changelog/fix-map-block-selection b/projects/plugins/jetpack/changelog/fix-map-block-selection new file mode 100644 index 0000000000000..989aae81cfcda --- /dev/null +++ b/projects/plugins/jetpack/changelog/fix-map-block-selection @@ -0,0 +1,4 @@ +Significance: patch +Type: enhancement + +Map block: Allow maps on WordPress.com to be selectable. diff --git a/projects/plugins/boost/changelog/prerelease b/projects/plugins/jetpack/changelog/renovate-npm-webpack-vulnerability similarity index 80% rename from projects/plugins/boost/changelog/prerelease rename to projects/plugins/jetpack/changelog/renovate-npm-webpack-vulnerability index 7d3f9cba4bc0e..1eaea6a769e84 100644 --- a/projects/plugins/boost/changelog/prerelease +++ b/projects/plugins/jetpack/changelog/renovate-npm-webpack-vulnerability @@ -1,4 +1,4 @@ Significance: patch -Type: fixed +Type: other Updated package dependencies. diff --git a/projects/plugins/jetpack/changelog/update-audit-usage-of-extensions-when-blocks-disabled b/projects/plugins/jetpack/changelog/update-audit-usage-of-extensions-when-blocks-disabled new file mode 100644 index 0000000000000..5d17a625c878e --- /dev/null +++ b/projects/plugins/jetpack/changelog/update-audit-usage-of-extensions-when-blocks-disabled @@ -0,0 +1,4 @@ +Significance: minor +Type: other + +Blocks: Ensure function is loaded even if blocks aren't enabled diff --git a/projects/plugins/jetpack/changelog/update-jetpack-ai-breve-anchorless-popover b/projects/plugins/jetpack/changelog/update-jetpack-ai-breve-anchorless-popover new file mode 100644 index 0000000000000..b04e8b78a7564 --- /dev/null +++ b/projects/plugins/jetpack/changelog/update-jetpack-ai-breve-anchorless-popover @@ -0,0 +1,4 @@ +Significance: patch +Type: other + +AI Assistant: Limit popover height and fix anchorless popover diff --git a/projects/plugins/jetpack/changelog/update-jetpack-ai-breve-clean b/projects/plugins/jetpack/changelog/update-jetpack-ai-breve-clean new file mode 100644 index 0000000000000..a0a449db0a03f --- /dev/null +++ b/projects/plugins/jetpack/changelog/update-jetpack-ai-breve-clean @@ -0,0 +1,4 @@ +Significance: patch +Type: other + +AI Assistant: Remove dead Breve code diff --git a/projects/plugins/jetpack/changelog/update-jetpack-ai-update-sidebar-fair-usage-messaging b/projects/plugins/jetpack/changelog/update-jetpack-ai-update-sidebar-fair-usage-messaging new file mode 100644 index 0000000000000..68a0489bb624c --- /dev/null +++ b/projects/plugins/jetpack/changelog/update-jetpack-ai-update-sidebar-fair-usage-messaging @@ -0,0 +1,4 @@ +Significance: minor +Type: other + +Jetpack AI: update fair usage messaging on the sidebar. diff --git a/projects/plugins/jetpack/changelog/update-jetpack-menu-item-order b/projects/plugins/jetpack/changelog/update-jetpack-menu-item-order new file mode 100644 index 0000000000000..c96aa7333e16a --- /dev/null +++ b/projects/plugins/jetpack/changelog/update-jetpack-menu-item-order @@ -0,0 +1,4 @@ +Significance: patch +Type: enhancement + +Admin menu: Change order of Jetpack sub-menu items diff --git a/projects/plugins/jetpack/class.jetpack-admin.php b/projects/plugins/jetpack/class.jetpack-admin.php index 73e437c1d83f3..60e1af1fd3747 100644 --- a/projects/plugins/jetpack/class.jetpack-admin.php +++ b/projects/plugins/jetpack/class.jetpack-admin.php @@ -64,6 +64,7 @@ private function __construct() { add_action( 'admin_init', array( $jetpack_react, 'react_redirects' ), 0 ); add_action( 'admin_menu', array( $jetpack_react, 'add_actions' ), 998 ); + add_action( 'admin_menu', array( $jetpack_react, 'remove_jetpack_menu' ), 2000 ); add_action( 'jetpack_admin_menu', array( $jetpack_react, 'jetpack_add_dashboard_sub_nav_item' ) ); add_action( 'jetpack_admin_menu', array( $jetpack_react, 'jetpack_add_settings_sub_nav_item' ) ); add_action( 'jetpack_admin_menu', array( $this, 'admin_menu_debugger' ) ); diff --git a/projects/plugins/jetpack/extensions/blocks/ai-assistant/components/quota-exceeded-message/index.tsx b/projects/plugins/jetpack/extensions/blocks/ai-assistant/components/quota-exceeded-message/index.tsx index a7a8f17ce8e96..8163e41c2d46e 100644 --- a/projects/plugins/jetpack/extensions/blocks/ai-assistant/components/quota-exceeded-message/index.tsx +++ b/projects/plugins/jetpack/extensions/blocks/ai-assistant/components/quota-exceeded-message/index.tsx @@ -266,17 +266,36 @@ const VIPUpgradePrompt = ( { ); }; +type FairUsageNoticeProps = { + variant?: 'error' | 'muted'; +}; + /** * The fair usage notice component. + * @param {FairUsageNoticeProps} props - Fair usage notice component props. + * @param {FairUsageNoticeProps.variant} props.variant - The variant of the notice to render. * @return {ReactElement} the Notice component with the fair usage message. */ -const FairUsageNotice = () => { +export const FairUsageNotice = ( { variant = 'error' }: FairUsageNoticeProps ) => { const useFairUsageNoticeMessageElement = useFairUsageNoticeMessage(); - return ( - - { useFairUsageNoticeMessageElement } - - ); + + if ( variant === 'muted' ) { + return ( + + { useFairUsageNoticeMessageElement } + + ); + } + + if ( variant === 'error' ) { + return ( + + { useFairUsageNoticeMessageElement } + + ); + } + + return null; }; const QuotaExceededMessage = props => { diff --git a/projects/plugins/jetpack/extensions/blocks/ai-assistant/components/quota-exceeded-message/style.scss b/projects/plugins/jetpack/extensions/blocks/ai-assistant/components/quota-exceeded-message/style.scss index 5e04a8e519ec1..35b21b5ec6713 100644 --- a/projects/plugins/jetpack/extensions/blocks/ai-assistant/components/quota-exceeded-message/style.scss +++ b/projects/plugins/jetpack/extensions/blocks/ai-assistant/components/quota-exceeded-message/style.scss @@ -12,3 +12,24 @@ } } } + +.jetpack-ai-fair-usage-notice-muted-variant { + line-height: 1.4; + margin: 0px; + text-wrap: pretty; + font-size: calc(13px); + font-weight: normal; + color: #757575; + + a { + color: #757575; + } +} + +.jetpack-ai-fair-usage-notice { + color: #1E1E1E; + + a { + color: #1E1E1E; + } +} diff --git a/projects/plugins/jetpack/extensions/blocks/ai-assistant/edit.js b/projects/plugins/jetpack/extensions/blocks/ai-assistant/edit.js index b8e65c0df2338..f2bed94f0106d 100644 --- a/projects/plugins/jetpack/extensions/blocks/ai-assistant/edit.js +++ b/projects/plugins/jetpack/extensions/blocks/ai-assistant/edit.js @@ -26,10 +26,10 @@ import clsx from 'clsx'; */ import UsagePanel from '../../plugins/ai-assistant-plugin/components/usage-panel'; import { USAGE_PANEL_PLACEMENT_BLOCK_SETTINGS_SIDEBAR } from '../../plugins/ai-assistant-plugin/components/usage-panel/types'; -import { PLAN_TYPE_FREE, usePlanType } from '../../shared/use-plan-type'; +import { PLAN_TYPE_FREE, PLAN_TYPE_UNLIMITED, usePlanType } from '../../shared/use-plan-type'; import ConnectPrompt from './components/connect-prompt'; import FeedbackControl from './components/feedback-control'; -import QuotaExceededMessage from './components/quota-exceeded-message'; +import QuotaExceededMessage, { FairUsageNotice } from './components/quota-exceeded-message'; import ToolbarControls from './components/toolbar-controls'; import { getStoreBlockId } from './extensions/ai-assistant/with-ai-assistant'; import useAIAssistant from './hooks/use-ai-assistant'; @@ -61,6 +61,7 @@ export default function AIAssistantEdit( { attributes, setAttributes, clientId, requestsLimit, currentTier, loading: loadingAiFeature, + tierPlansEnabled, } = useAiFeature(); const requestsRemaining = Math.max( requestsLimit - requestsCount, 0 ); @@ -322,6 +323,10 @@ export default function AIAssistantEdit( { attributes, setAttributes, clientId, ); + const fairUsageNotice = ( + <>{ isOverLimit && planType === PLAN_TYPE_UNLIMITED && } + ); + const trackUpgradeClick = useCallback( event => { event.preventDefault(); @@ -353,6 +358,12 @@ export default function AIAssistantEdit( { attributes, setAttributes, clientId,
  • ) } + { fairUsageNotice && ( +
    + + { fairUsageNotice } +
    + ) } { /* Mock BlockCard component styles to keep alignment */ }
    @@ -360,11 +371,14 @@ export default function AIAssistantEdit( { attributes, setAttributes, clientId, { __( 'Discover all features', 'jetpack' ) }
    - - - - - + { ( planType === PLAN_TYPE_FREE || + ( tierPlansEnabled && planType !== PLAN_TYPE_UNLIMITED ) ) && ( + + + + + + ) } diff --git a/projects/plugins/jetpack/extensions/blocks/ai-assistant/hooks/use-ai-feature/index.ts b/projects/plugins/jetpack/extensions/blocks/ai-assistant/hooks/use-ai-feature/index.ts index 6a75e66bc5326..db84bbd4577c7 100644 --- a/projects/plugins/jetpack/extensions/blocks/ai-assistant/hooks/use-ai-feature/index.ts +++ b/projects/plugins/jetpack/extensions/blocks/ai-assistant/hooks/use-ai-feature/index.ts @@ -2,11 +2,7 @@ * External dependencies */ import { useDispatch, useSelect } from '@wordpress/data'; -import { - PLAN_TYPE_FREE, - PLAN_TYPE_TIERED, - usePlanType as getPlanType, -} from '../../../../shared/use-plan-type'; +import { PLAN_TYPE_FREE, usePlanType as getPlanType } from '../../../../shared/use-plan-type'; import type { WordPressPlansSelectors } from 'extensions/store/wordpress-com'; export default function useAiFeature() { @@ -26,10 +22,11 @@ export default function useAiFeature() { const planType = getPlanType( currentTier ); + const currentTierLimit = currentTier?.limit || freeRequestsLimit; + const actualRequestsCount = - planType === PLAN_TYPE_TIERED ? usagePeriod?.requestsCount : allTimeRequestsCount; - const actualRequestsLimit = - planType === PLAN_TYPE_FREE ? freeRequestsLimit : currentTier?.limit; + planType === PLAN_TYPE_FREE ? allTimeRequestsCount : usagePeriod?.requestsCount; + const actualRequestsLimit = planType === PLAN_TYPE_FREE ? freeRequestsLimit : currentTierLimit; return { data: featureData, diff --git a/projects/plugins/jetpack/extensions/blocks/map/component/mapkit.js b/projects/plugins/jetpack/extensions/blocks/map/component/mapkit.js index 0d70b9f2a7e11..37f6a44c57cac 100644 --- a/projects/plugins/jetpack/extensions/blocks/map/component/mapkit.js +++ b/projects/plugins/jetpack/extensions/blocks/map/component/mapkit.js @@ -1,4 +1,12 @@ -import { Children, forwardRef, memo, useCallback, useEffect, useRef } from '@wordpress/element'; +import { + Children, + forwardRef, + memo, + useCallback, + useEffect, + useRef, + useState, +} from '@wordpress/element'; import { get } from 'lodash'; import { MapkitProvider } from '../mapkit/context'; import { @@ -45,6 +53,7 @@ const MapkitComponent = forwardRef( return child; } } ); + const [ isSelected, setIsSelected ] = useState( false ); useEffect( () => { if ( error ) { @@ -52,6 +61,23 @@ const MapkitComponent = forwardRef( } }, [ error, onError ] ); + const handleBlockClick = () => { + setIsSelected( true ); + }; + + useEffect( () => { + const handleClickOutside = event => { + if ( ! mapRef.current.contains( event.target ) ) { + setIsSelected( false ); + } + }; + + document.addEventListener( 'mousedown', handleClickOutside ); + return () => { + document.removeEventListener( 'mousedown', handleClickOutside ); + }; + }, [ mapRef ] ); + return ( ) : null } + + { /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */ }
    + onClick={ handleBlockClick } + > + { ! isSelected &&
    } + { /* Map container */ } +
    +
    + { addPoint } diff --git a/projects/plugins/jetpack/extensions/blocks/map/editor.scss b/projects/plugins/jetpack/extensions/blocks/map/editor.scss index 810a5c9c0f8ca..e482a2e52bb77 100644 --- a/projects/plugins/jetpack/extensions/blocks/map/editor.scss +++ b/projects/plugins/jetpack/extensions/blocks/map/editor.scss @@ -42,6 +42,21 @@ // This matches the color that MapBox uses as a placeholder before map tiles have loaded. background-color: #e4e2de; } + + .wp-block-jetpack-map__gm-container { + position: absolute; + inset: 0; + z-index: 0; + } + + /* Overlay for block selection */ + .wp-block-jetpack-map__select-overlay { + position: absolute; + inset: 0; + z-index: 2; + background-color: transparent; + pointer-events: auto; + } } .wp-block-jetpack-map__height_input { diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-assistant-plugin-sidebar/index.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-assistant-plugin-sidebar/index.tsx index 4a9047e726ae7..0cfd93de39a81 100644 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-assistant-plugin-sidebar/index.tsx +++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-assistant-plugin-sidebar/index.tsx @@ -14,11 +14,13 @@ import React from 'react'; /** * Internal dependencies */ +import { FairUsageNotice } from '../../../../blocks/ai-assistant/components/quota-exceeded-message'; import useAICheckout from '../../../../blocks/ai-assistant/hooks/use-ai-checkout'; import useAiFeature from '../../../../blocks/ai-assistant/hooks/use-ai-feature'; import useAiProductPage from '../../../../blocks/ai-assistant/hooks/use-ai-product-page'; import { getFeatureAvailability } from '../../../../blocks/ai-assistant/lib/utils/get-feature-availability'; import JetpackPluginSidebar from '../../../../shared/jetpack-plugin-sidebar'; +import { PLAN_TYPE_FREE, PLAN_TYPE_UNLIMITED, usePlanType } from '../../../../shared/use-plan-type'; import { FeaturedImage } from '../ai-image'; import { Breve, registerBreveHighlights, Highlight } from '../breve'; import useBreveAvailability from '../breve/hooks/use-breve-availability'; @@ -63,6 +65,8 @@ const JetpackAndSettingsContent = ( { placement, requireUpgrade, upgradeType, + showUsagePanel, + showFairUsageNotice, }: JetpackSettingsContentProps ) => { const { checkoutUrl } = useAICheckout(); const { productPageUrl } = useAiProductPage(); @@ -76,6 +80,14 @@ const JetpackAndSettingsContent = ( { return ( <> + { showFairUsageNotice && ( + + + + + + ) } + { isBreveAvailable && ( @@ -109,7 +121,7 @@ const JetpackAndSettingsContent = ( { ) } - { isUsagePanelAvailable && ( + { isUsagePanelAvailable && showUsagePanel && ( @@ -137,7 +149,8 @@ const JetpackAndSettingsContent = ( { }; export default function AiAssistantPluginSidebar() { - const { requireUpgrade, upgradeType, currentTier } = useAiFeature(); + const { requireUpgrade, upgradeType, currentTier, tierPlansEnabled, isOverLimit } = + useAiFeature(); const { checkoutUrl } = useAICheckout(); const { tracks } = useAnalytics(); const isBreveAvailable = useBreveAvailability(); @@ -152,6 +165,8 @@ export default function AiAssistantPluginSidebar() { return postTypeObject?.viewable; }, [] ); + const planType = usePlanType( currentTier ); + // If the post type is not viewable, do not render my plugin. if ( ! isViewable ) { return null; @@ -164,6 +179,10 @@ export default function AiAssistantPluginSidebar() { tracks.recordEvent( 'jetpack_ai_panel_open', { placement } ); }; + const showUsagePanel = + planType === PLAN_TYPE_FREE || ( tierPlansEnabled && planType !== PLAN_TYPE_UNLIMITED ); + const showFairUsageNotice = planType === PLAN_TYPE_UNLIMITED && isOverLimit; + return ( <> { isBreveAvailable && } @@ -180,6 +199,8 @@ export default function AiAssistantPluginSidebar() { placement={ PLACEMENT_JETPACK_SIDEBAR } requireUpgrade={ requireUpgrade } upgradeType={ upgradeType } + showUsagePanel={ showUsagePanel } + showFairUsageNotice={ showFairUsageNotice } /> @@ -193,6 +214,8 @@ export default function AiAssistantPluginSidebar() { placement={ PLACEMENT_DOCUMENT_SETTINGS } requireUpgrade={ requireUpgrade } upgradeType={ upgradeType } + showUsagePanel={ showUsagePanel } + showFairUsageNotice={ showFairUsageNotice } /> @@ -214,7 +237,7 @@ export default function AiAssistantPluginSidebar() { busy={ false } disabled={ requireUpgrade } /> - { requireUpgrade && ( + { requireUpgrade && tierPlansEnabled && ( { const [ initialized, setInitialized ] = useState( false ); @@ -34,13 +38,13 @@ export const useInit = init => { }; const Controls = ( { blocks, disabledFeatures } ) => { - const [ gradeLevel, setGradeLevel ] = useState( null ); + const [ gradeLevel, setGradeLevel ] = useState< string | null >( null ); const { toggleFeature, toggleProofread, setPopoverHover, setHighlightHover, setPopoverAnchor } = useDispatch( 'jetpack/ai-breve' ); const { tracks } = useAnalytics(); const isProofreadEnabled = useSelect( - select => select( 'jetpack/ai-breve' ).isProofreadEnabled(), + select => ( select( 'jetpack/ai-breve' ) as BreveSelect ).isProofreadEnabled(), [] ); @@ -64,7 +68,7 @@ const Controls = ( { blocks, disabledFeatures } ) => { const debouncedGradeLevelUpdate = useDebounce( updateGradeLevel, 250 ); const handleToggleFeature = useCallback( - feature => checked => { + ( feature: string ) => ( checked: boolean ) => { tracks.recordEvent( 'jetpack_ai_breve_feature_toggle', { type: feature, on: checked } ); toggleFeature( feature, checked ); }, diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/dictionaries/adjectives.js b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/dictionaries/adjectives.js deleted file mode 100644 index d94a988a35541..0000000000000 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/dictionaries/adjectives.js +++ /dev/null @@ -1,461 +0,0 @@ -const adjectives = [ - 'amazing', - 'authentic', - 'awesome', - 'beautiful', - 'best', - 'breathtaking', - 'brilliant', - 'captivating', - 'classic', - 'compelling', - 'creative', - 'cutting-edge', - 'dazzling', - 'delightful', - 'effective', - 'efficient', - 'elegant', - 'elite', - 'empowering', - 'enchanting', - 'endless', - 'engaging', - 'epic', - 'exclusive', - 'extraordinary', - 'fabulous', - 'fantastic', - 'flawless', - 'foolproof', - 'foremost', - 'glamorous', - 'glorious', - 'gorgeous', - 'groundbreaking', - 'guaranteed', - 'hassle-free', - 'heroic', - 'incredible', - 'ingenious', - 'innovative', - 'inspirational', - 'inspiring', - 'invincible', - 'legendary', - 'life-changing', - 'luxurious', - 'magical', - 'magnificent', - 'marvelous', - 'miraculous', - 'modern', - 'must-have', - 'one-of-a-kind', - 'outstanding', - 'phenomenal', - 'premium', - 'proven', - 'remarkable', - 'revolutionary', - 'riveting', - 'sensational', - 'sleek', - 'smart', - 'sophisticated', - 'stunning', - 'superb', - 'superior', - 'supreme', - 'transformative', - 'unbelievable', - 'unique', - 'unmatched', - 'unparalleled', - 'unrivaled', - 'unstoppable', - 'untouchable', - 'visionary', - 'world-class', - 'amazing', - 'authentic', - 'awesome', - 'beautiful', - 'best', - 'breathtaking', - 'brilliant', - 'captivating', - 'classic', - 'compelling', - 'creative', - 'cutting-edge', - 'dazzling', - 'delightful', - 'effective', - 'efficient', - 'elegant', - 'elite', - 'empowering', - 'enchanting', - 'endless', - 'engaging', - 'epic', - 'exclusive', - 'extraordinary', - 'fabulous', - 'fantastic', - 'flawless', - 'foolproof', - 'foremost', - 'glamorous', - 'glorious', - 'gorgeous', - 'groundbreaking', - 'guaranteed', - 'hassle-free', - 'heroic', - 'incredible', - 'ingenious', - 'innovative', - 'inspirational', - 'inspiring', - 'invincible', - 'legendary', - 'life-changing', - 'luxurious', - 'magical', - 'magnificent', - 'marvelous', - 'miraculous', - 'modern', - 'must-have', - 'one-of-a-kind', - 'outstanding', - 'phenomenal', - 'premium', - 'proven', - 'remarkable', - 'revolutionary', - 'riveting', - 'sensational', - 'sleek', - 'smart', - 'sophisticated', - 'stunning', - 'superb', - 'superior', - 'supreme', - 'transformative', - 'unbelievable', - 'unique', - 'unmatched', - 'unparalleled', - 'unrivaled', - 'unstoppable', - 'untouchable', - 'visionary', - 'world-class', - 'affordable', - 'astounding', - 'astounding', - 'bargain', - 'best-selling', - 'bold', - 'brilliant', - 'captivating', - 'charismatic', - 'charming', - 'commendable', - 'confident', - 'convenient', - 'cool', - 'coveted', - 'creative', - 'crisp', - 'customizable', - 'cutting-edge', - 'daring', - 'dazzling', - 'dependable', - 'desirable', - 'distinctive', - 'dynamic', - 'efficient', - 'effortless', - 'elegant', - 'elite', - 'enduring', - 'enlightening', - 'enthralling', - 'enticing', - 'entrancing', - 'epic', - 'essential', - 'eternal', - 'euphoric', - 'everlasting', - 'exemplary', - 'exhilarating', - 'extraordinary', - 'eye-catching', - 'fabulous', - 'fascinating', - 'faultless', - 'fearless', - 'first-class', - 'flawless', - 'foremost', - 'formidable', - 'glamorous', - 'gleaming', - 'glorious', - 'gorgeous', - 'groundbreaking', - 'guaranteed', - 'hassle-free', - 'heroic', - 'high-quality', - 'ideal', - 'illustrious', - 'impeccable', - 'impressive', - 'incomparable', - 'incredible', - 'indispensable', - 'ingenious', - 'inspirational', - 'inspiring', - 'intuitive', - 'invincible', - 'legendary', - 'life-changing', - 'luxurious', - 'magical', - 'magnificent', - 'majestic', - 'marvelous', - 'mind-blowing', - 'modern', - 'must-have', - 'noteworthy', - 'one-of-a-kind', - 'outstanding', - 'peerless', - 'perfect', - 'phenomenal', - 'pioneering', - 'plush', - 'popular', - 'posh', - 'powerful', - 'premium', - 'prestigious', - 'priceless', - 'profound', - 'proven', - 'quintessential', - 'radiant', - 'rare', - 'reliable', - 'remarkable', - 'renowned', - 'revolutionary', - 'rich', - 'riveting', - 'sensational', - 'simple', - 'sleek', - 'smart', - 'smooth', - 'sophisticated', - 'special', - 'spectacular', - 'spellbinding', - 'stellar', - 'stunning', - 'stylish', - 'successful', - 'superb', - 'superior', - 'supreme', - 'timeless', - 'top-notch', - 'transformative', - 'trendy', - 'trustworthy', - 'unbelievable', - 'unforgettable', - 'unique', - 'unmatched', - 'unparalleled', - 'unrivaled', - 'unseen', - 'unstoppable', - 'untouchable', - 'uplifting', - 'valiant', - 'versatile', - 'vibrant', - 'visionary', - 'vital', - 'wholesome', - 'world-class', - 'youthful', - 'zesty', - 'admired', - 'adored', - 'amazing', - 'appealing', - 'astounding', - 'astounding', - 'awesome', - 'beautiful', - 'beloved', - 'breathtaking', - 'brilliant', - 'captivating', - 'classic', - 'compelling', - 'confident', - 'cool', - 'coveted', - 'creative', - 'crisp', - 'cutting-edge', - 'dazzling', - 'delightful', - 'dependable', - 'desirable', - 'distinctive', - 'dynamic', - 'effective', - 'efficient', - 'effortless', - 'elegant', - 'elite', - 'empowering', - 'enchanting', - 'endless', - 'enduring', - 'engaging', - 'enlightening', - 'enthralling', - 'enticing', - 'entrancing', - 'epic', - 'essential', - 'eternal', - 'euphoric', - 'everlasting', - 'exemplary', - 'exclusive', - 'exhilarating', - 'extraordinary', - 'eye-catching', - 'fabulous', - 'fascinating', - 'faultless', - 'fearless', - 'first-class', - 'flawless', - 'foremost', - 'formidable', - 'glamorous', - 'gleaming', - 'glorious', - 'gorgeous', - 'groundbreaking', - 'guaranteed', - 'hassle-free', - 'heroic', - 'high-quality', - 'ideal', - 'illustrious', - 'impeccable', - 'impressive', - 'incomparable', - 'incredible', - 'indispensable', - 'ingenious', - 'inspirational', - 'inspiring', - 'intuitive', - 'invincible', - 'legendary', - 'life-changing', - 'luxurious', - 'magical', - 'magnificent', - 'majestic', - 'marvelous', - 'mind-blowing', - 'modern', - 'must-have', - 'noteworthy', - 'one-of-a-kind', - 'outstanding', - 'peerless', - 'perfect', - 'phenomenal', - 'pioneering', - 'plush', - 'popular', - 'posh', - 'powerful', - 'premium', - 'prestigious', - 'priceless', - 'profound', - 'proven', - 'quintessential', - 'radiant', - 'rare', - 'reliable', - 'remarkable', - 'renowned', - 'revolutionary', - 'rich', - 'riveting', - 'sensational', - 'simple', - 'sleek', - 'smart', - 'smooth', - 'sophisticated', - 'special', - 'spectacular', - 'spellbinding', - 'stellar', - 'stunning', - 'stylish', - 'successful', - 'superb', - 'superior', - 'supreme', - 'timeless', - 'top-notch', - 'transformative', - 'trendy', - 'trustworthy', - 'unbelievable', - 'unforgettable', - 'unique', - 'unmatched', - 'unparalleled', - 'unrivaled', - 'unseen', - 'unstoppable', - 'untouchable', - 'uplifting', - 'valiant', - 'versatile', - 'vibrant', - 'visionary', - 'vital', - 'wholesome', - 'world-class', - 'youthful', - 'zesty', -]; - -export default adjectives; diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/dictionaries/adverbs.js b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/dictionaries/adverbs.js deleted file mode 100644 index f29561f391e23..0000000000000 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/dictionaries/adverbs.js +++ /dev/null @@ -1,504 +0,0 @@ -const adverbs = [ - 'abruptly', - 'accurately', - 'actively', - 'adaptively', - 'aesthetically', - 'asynchronously', - 'automatically', - 'autonomously', - 'broadly', - 'carefully', - 'clearly', - 'collaboratively', - 'completely', - 'comprehensively', - 'consistently', - 'constantly', - 'continuously', - 'correctly', - 'creatively', - 'critically', - 'dynamically', - 'effectively', - 'efficiently', - 'elegantly', - 'energetically', - 'enthusiastically', - 'entirely', - 'ergonomically', - 'evolutionarily', - 'exponentially', - 'extensively', - 'fault-tolerantly', - 'flexibly', - 'frequently', - 'fundamentally', - 'generally', - 'globally', - 'gracefully', - 'graphically', - 'holistically', - 'immediately', - 'independently', - 'industrially', - 'intelligently', - 'interactively', - 'intuitively', - 'invariably', - 'locally', - 'logically', - 'low-latency', - 'massively', - 'minimally', - 'modularly', - 'naturally', - 'normally', - 'objectively', - 'optimally', - 'partially', - 'periodically', - 'personally', - 'precisely', - 'predictively', - 'primarily', - 'privately', - 'proactively', - 'promptly', - 'quickly', - 'quietly', - 'rapidly', - 'readily', - 'reliably', - 'remotely', - 'repeatedly', - 'resiliently', - 'robustly', - 'scalably', - 'securely', - 'sequentially', - 'smoothly', - 'solely', - 'specifically', - 'speedily', - 'steadily', - 'strategically', - 'strongly', - 'structurally', - 'successfully', - 'synchronously', - 'systematically', - 'technically', - 'thoroughly', - 'transparently', - 'uniformly', - 'universally', - 'uniquely', - 'universally', - 'user-centrically', - 'virtually', - 'visually', - 'abundantly', - 'accurately', - 'actively', - 'adaptively', - 'aesthetically', - 'aggressively', - 'automatically', - 'autonomously', - 'broadly', - 'carefully', - 'clearly', - 'collaboratively', - 'completely', - 'comprehensively', - 'consistently', - 'constantly', - 'continuously', - 'correctly', - 'creatively', - 'critically', - 'dynamically', - 'effectively', - 'efficiently', - 'elegantly', - 'energetically', - 'enthusiastically', - 'entirely', - 'ergonomically', - 'evolutionarily', - 'exponentially', - 'extensively', - 'fault-tolerantly', - 'flexibly', - 'frequently', - 'fundamentally', - 'generally', - 'globally', - 'gracefully', - 'graphically', - 'holistically', - 'immediately', - 'independently', - 'industrially', - 'intelligently', - 'interactively', - 'intuitively', - 'invariably', - 'locally', - 'logically', - 'low-latency', - 'massively', - 'minimally', - 'modularly', - 'naturally', - 'normally', - 'objectively', - 'optimally', - 'partially', - 'periodically', - 'personally', - 'precisely', - 'predictively', - 'primarily', - 'privately', - 'proactively', - 'promptly', - 'quickly', - 'quietly', - 'rapidly', - 'readily', - 'reliably', - 'remotely', - 'repeatedly', - 'resiliently', - 'robustly', - 'scalably', - 'securely', - 'sequentially', - 'smoothly', - 'solely', - 'specifically', - 'speedily', - 'steadily', - 'strategically', - 'strongly', - 'structurally', - 'successfully', - 'synchronously', - 'systematically', - 'technically', - 'thoroughly', - 'transparently', - 'uniformly', - 'universally', - 'uniquely', - 'universally', - 'user-centrically', - 'virtually', - 'visually', - 'abnormally', - 'absentmindedly', - 'accidentally', - 'actually', - 'adventurously', - 'allegedly', - 'almost', - 'always', - 'angrily', - 'annually', - 'anxiously', - 'arrogantly', - 'awkwardly', - 'badly', - 'barely', - 'bashfully', - 'beautifully', - 'bitterly', - 'bleakly', - 'blindly', - 'blissfully', - 'boldly', - 'bravely', - 'briefly', - 'brightly', - 'briskly', - 'broadly', - 'busily', - 'calmly', - 'carelessly', - 'cautiously', - 'certainly', - 'cheerfully', - 'cleverly', - 'closely', - 'coaxingly', - 'colorfully', - 'commonly', - 'continually', - 'coolly', - 'correctly', - 'courageously', - 'crossly', - 'cruelly', - 'curiously', - 'daily', - 'deceivingly', - 'deeply', - 'defiantly', - 'deliberately', - 'delightfully', - 'diligently', - 'dimly', - 'dramatically', - 'dreamily', - 'easily', - 'eloquently', - 'endlessly', - 'equally', - 'especially', - 'even', - 'evenly', - 'eventually', - 'exactly', - 'excitedly', - 'extremely', - 'fairly', - 'faithfully', - 'famously', - 'far', - 'fast', - 'fatally', - 'ferociously', - 'fervently', - 'fiercely', - 'fondly', - 'foolishly', - 'fortunately', - 'frankly', - 'frantically', - 'freely', - 'frightfully', - 'fully', - 'generally', - 'generously', - 'gently', - 'gladly', - 'gleefully', - 'gracefully', - 'gratefully', - 'greatly', - 'greedily', - 'happily', - 'hastily', - 'healthily', - 'heavily', - 'helpfully', - 'helplessly', - 'highly', - 'honestly', - 'hopelessly', - 'hourly', - 'hungrily', - 'impatiently', - 'innocently', - 'inquisitively', - 'irritably', - 'jovially', - 'joyfully', - 'joyously', - 'jubilantly', - 'judgmentally', - 'justly', - 'keenly', - 'kindly', - 'knavishly', - 'knowingly', - 'knowledgeably', - 'lazily', - 'lightly', - 'likely', - 'limply', - 'lively', - 'loftily', - 'longingly', - 'loosely', - 'loudly', - 'lovingly', - 'loyally', - 'madly', - 'majestically', - 'meaningfully', - 'mechanically', - 'merrily', - 'miserably', - 'mockingly', - 'monthly', - 'morally', - 'mortally', - 'mysteriously', - 'naturally', - 'nearly', - 'neatly', - 'nervously', - 'never', - 'nicely', - 'noisily', - 'obediently', - 'obnoxiously', - 'oddly', - 'offensively', - 'officially', - 'often', - 'only', - 'openly', - 'optimistically', - 'overconfidently', - 'painfully', - 'partially', - 'patiently', - 'perfectly', - 'periodically', - 'permanently', - 'persistently', - 'personally', - 'physically', - 'playfully', - 'politely', - 'poorly', - 'positively', - 'potentially', - 'powerfully', - 'promptly', - 'properly', - 'punctually', - 'quaintly', - 'queasily', - 'questionably', - 'questioningly', - 'quickly', - 'quietly', - 'quintessentially', - 'quizzically', - 'randomly', - 'rapidly', - 'rarely', - 'readily', - 'really', - 'reassuringly', - 'recklessly', - 'regularly', - 'reliably', - 'reluctantly', - 'repeatedly', - 'reproachfully', - 'republically', - 'resentfully', - 'restfully', - 'righteously', - 'rightfully', - 'rigidly', - 'roughly', - 'rudely', - 'sadly', - 'safely', - 'seldom', - 'selfishly', - 'selflessly', - 'separately', - 'seriously', - 'shakily', - 'sharply', - 'sheepishly', - 'shrilly', - 'shyly', - 'sickly', - 'silently', - 'sleepily', - 'slowly', - 'smoothly', - 'softly', - 'solemnly', - 'solidly', - 'soon', - 'speedily', - 'stealthily', - 'sternly', - 'strictly', - 'stubbornly', - 'stylishly', - 'substantially', - 'successfully', - 'suddenly', - 'sufficiently', - 'supposedly', - 'surprisingly', - 'suspiciously', - 'sympathetically', - 'tenderly', - 'tensely', - 'terribly', - 'thankfully', - 'thoroughly', - 'thoughtfully', - 'tightly', - 'tomorrow', - 'tremendously', - 'triumphantly', - 'truly', - 'truthfully', - 'ultimately', - 'unabashedly', - 'unaccountably', - 'unbearably', - 'unethically', - 'unexpectedly', - 'unfortunately', - 'unimpressively', - 'unnaturally', - 'unnecessarily', - 'upbeat', - 'upliftingly', - 'uprightly', - 'upward', - 'urgently', - 'usefully', - 'uselessly', - 'usually', - 'utterly', - 'vacantly', - 'vaguely', - 'vainly', - 'valiantly', - 'vastly', - 'verbally', - 'very', - 'viciously', - 'victoriously', - 'violently', - 'vivaciously', - 'voluntarily', - 'warmly', - 'weakly', - 'wearily', - 'weekly', - 'weirdly', - 'wetly', - 'wholly', - 'wildly', - 'wisely', - 'woefully', - 'wonderfully', - 'worriedly', - 'wrongly', - 'yearly', - 'yearningly', - 'yesterday', - 'yieldingly', - 'youthfully', - 'zealously', - 'zestfully', - 'zestily', -]; - -export default adverbs; diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/dictionaries/dictionaries-config.js b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/dictionaries/dictionaries-config.js deleted file mode 100644 index 23b0a1f3e5ad2..0000000000000 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/dictionaries/dictionaries-config.js +++ /dev/null @@ -1,51 +0,0 @@ -import phrases from '../features/complex-words/phrases'; -import weaselWords from '../features/weasel-words/words'; -import { escapeRegExp } from '../utils/escapeRegExp'; -import adjectives from './adjectives'; -import adverbs from './adverbs'; - -const config = { - dictionaries: { - phrase: { - dictionary: phrases, - type: 'key-value', - tooltip: "Consider replacing with '{value}'.", - label: 'Complex words', - }, - 'long-sentence': { - type: 'function', - function: text => { - const sentenceRegex = /[^.!?]+[.!?]+/g; - const sentences = text.match( sentenceRegex ) || []; - return sentences - .filter( sentence => sentence.split( /\s+/ ).length > 20 ) - .map( sentence => ( { - sentence, - regex: new RegExp( escapeRegExp( sentence ), 'gi' ), - } ) ); - }, - tooltip: 'Break this long sentence into shorter ones.', - label: 'Long sentences', - }, - weasel: { - dictionary: weaselWords, - type: 'list', - tooltip: "Remove 'Weasel' words to add confidence.", - label: 'Weasel words', - }, - adverb: { - dictionary: adverbs, - type: 'list', - tooltip: 'Adverbs make your writing less concise.', - label: 'Adverbs', - }, - adjective: { - dictionary: adjectives, - type: 'list', - tooltip: 'Replace adjectives with data or remove them.', - label: 'Adjectives', - }, - }, -}; - -export default config; diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/highlight/index.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/highlight/index.tsx index 4152522bb8b17..aaa421188a3c7 100644 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/highlight/index.tsx +++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/highlight/index.tsx @@ -116,7 +116,7 @@ export default function Highlight() { }, [] ); const isPopoverOpen = popoverOpen && virtual; - const hasSuggestions = Boolean( suggestions?.suggestion ); + const hasSuggestions = Boolean( suggestions?.suggestion ) || spellingSuggestions.length > 0; const handleMouseEnter = () => { setPopoverHover( true ); @@ -263,7 +263,7 @@ export default function Highlight() { return ( <> - { isPopoverOpen && ( + { isPopoverOpen && anchor?.parentElement && ( ) }
    -
    +
    { feature !== SPELLING_MISTAKES.name && hasSuggestions && ( ) ) } +
    +
    + { feature === SPELLING_MISTAKES.name && ( + + ) } -
    - { feature === SPELLING_MISTAKES.name && ( - - ) } - - { feature !== SPELLING_MISTAKES.name && - ( hasSuggestions - ? __( 'Click on the suggestion to insert it.', 'jetpack' ) - : description ) } + { feature !== SPELLING_MISTAKES.name && + ( hasSuggestions + ? __( 'Click on the suggestion to insert it.', 'jetpack' ) + : description ) } -
    - -
    +
    +
    diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/highlight/style.scss b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/highlight/style.scss index 5c6097308e4ca..dec5b67a664c5 100644 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/highlight/style.scss +++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/highlight/style.scss @@ -32,8 +32,13 @@ &.jetpack-ai-breve__has-suggestions { align-items: flex-start; - padding-top: 8px; - gap: 8px; + + .jetpack-ai-breve__suggestions-container { + max-height: calc( 200px - 32px ); // 32px is the height of the helper buttons wrapper + overflow-y: auto; + overflow-x: hidden; + padding: 3px 0; // Space for the focus highlight + } } .jetpack-ai-breve__header-container { @@ -41,6 +46,7 @@ width: 100%; justify-content: space-between; gap: 32px; + height: 40px; .jetpack-ai-breve__title, .jetpack-ai-breve__action { @@ -75,17 +81,27 @@ padding-top: 0px; padding-bottom: 0px; padding-right: 0px; - height: unset; + height: 24px; & > svg, path { fill: #0277a8; } } + + .jetpack-ai-breve__loading { + height: 24px; + display: flex; + align-items: center; + + svg { + margin-top: 0; + } + } } } - .jetpack-ai-breve__bottom-container { + .jetpack-ai-breve__suggestions-container { display: flex; flex-direction: column; border-top: 1px solid #dcdcde; @@ -101,30 +117,6 @@ } } - .jetpack-ai-breve__helper { - padding: 4px 8px; - background-color: #f6f7f7; - white-space: nowrap; - color: #646970; - margin: 4px; - border-radius: 4px; - font-size: 12px; - display: flex; - justify-content: space-between; - align-items: center; - gap: 8px; - - .jetpack-ai-breve__helper-buttons-wrapper { - display: flex; - gap: 16px; - } - - .components-button { - padding: 0px; - color: #646970; - } - } - .components-button.is-tertiary { color: #000000; white-space: break-spaces; @@ -137,5 +129,30 @@ line-height: 20px; } } + + .jetpack-ai-breve__helper { + padding: 4px 8px; + background-color: #f6f7f7; + white-space: nowrap; + color: #646970; + margin: 4px; + border-radius: 4px; + font-size: 12px; + display: flex; + justify-content: space-between; + align-items: center; + gap: 8px; + width: calc( 100% - 8px ); + + .jetpack-ai-breve__helper-buttons-wrapper { + display: flex; + gap: 16px; + } + + .components-button { + padding: 0px; + color: #646970; + } + } } } diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/FleschKincaidUtils.js b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/FleschKincaidUtils.ts similarity index 73% rename from projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/FleschKincaidUtils.js rename to projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/FleschKincaidUtils.ts index fb0de09ed02b1..d08cc101493cb 100644 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/FleschKincaidUtils.js +++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/FleschKincaidUtils.ts @@ -1,12 +1,12 @@ -const countWords = text => { +const countWords = ( text: string ) => { return text.split( /\s+/ ).filter( word => word.length > 0 ).length; }; -const countSentences = text => { +const countSentences = ( text: string ) => { return text.split( /[.!?]+/ ).filter( sentence => sentence.length > 0 ).length; }; -const countSyllables = word => { +const countSyllables = ( word: string ) => { if ( word.length <= 3 ) { return 1; } @@ -21,11 +21,11 @@ const countSyllables = word => { return syllables ? syllables.length : 1; }; -const countTotalSyllables = text => { +const countTotalSyllables = ( text: string ) => { return text.split( /\s+/ ).reduce( ( total, word ) => total + countSyllables( word ), 0 ); }; -const fleschKincaidGrade = ( words, sentences, syllables ) => { +const fleschKincaidGrade = ( words: number, sentences: number, syllables: number ) => { if ( words === 0 || sentences === 0 ) { return null; } @@ -33,7 +33,7 @@ const fleschKincaidGrade = ( words, sentences, syllables ) => { return 0.39 * ( words / sentences ) + 11.8 * ( syllables / words ) - 15.59; }; -const calculateFleschKincaid = text => { +const calculateFleschKincaid = ( text: string ) => { const words = countWords( text ); const sentences = countSentences( text ); const syllables = countTotalSyllables( text ); diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/escapeRegExp.js b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/escapeRegExp.ts similarity index 53% rename from projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/escapeRegExp.js rename to projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/escapeRegExp.ts index d22279c125399..733295ea3a8ed 100644 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/escapeRegExp.js +++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/escapeRegExp.ts @@ -1,3 +1,3 @@ -export const escapeRegExp = string => { +export const escapeRegExp = ( string: string ) => { return string.replace( /[.*+?^${}()|[\]\\/]/g, '\\$&' ); }; diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/getClientId.js b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/getClientId.js deleted file mode 100644 index 411ffaae84976..0000000000000 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/getClientId.js +++ /dev/null @@ -1,13 +0,0 @@ -export const getClientId = element => { - if ( ! element ) { - return null; - } - - const clientId = element.getAttribute( 'data-block' ); - - if ( clientId ) { - return clientId; - } - - return getClientId( element.parentElement ); -}; diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/getHighlightRects.js b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/getHighlightRects.js deleted file mode 100644 index a32f3a4749ece..0000000000000 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/getHighlightRects.js +++ /dev/null @@ -1,96 +0,0 @@ -import config from '../dictionaries/dictionaries-config'; -import { escapeRegExp } from './escapeRegExp'; - -const getWordRects = ( content, regex ) => { - const ranges = []; - const nodeIterator = document.createNodeIterator( content, window.NodeFilter.SHOW_TEXT ); - let currentNode; - while ( ( currentNode = nodeIterator.nextNode() ) ) { - let match; - while ( ( match = regex.exec( currentNode.nodeValue ) ) ) { - const range = document.createRange(); - range.setStart( currentNode, match.index ); - range.setEnd( currentNode, match.index + match[ 0 ].length ); - ranges.push( { range, text: match[ 0 ] } ); - } - } - return ranges; -}; - -export const getHighlightRects = element => { - const rects = []; - const textContent = element.innerText || element.textContent; - - const allRanges = []; - - for ( const key in config.dictionaries ) { - const dictConfig = config.dictionaries[ key ]; - if ( dictConfig.type === 'function' ) { - const ranges = dictConfig - .function( textContent ) - .map( ( { regex } ) => getWordRects( element, regex ) ) - .flat(); - allRanges.push( ...ranges ); - } else { - const dictionary = dictConfig.dictionary; - let regex; - if ( dictConfig.type === 'key-value' ) { - regex = new RegExp( - `\\b(${ Object.keys( dictionary ).map( escapeRegExp ).join( '|' ) })\\b`, - 'gi' - ); - } else if ( dictConfig.type === 'list' ) { - regex = new RegExp( `\\b(${ dictionary.map( escapeRegExp ).join( '|' ) })\\b`, 'gi' ); - } - const ranges = getWordRects( element, regex ); - allRanges.push( ...ranges ); - } - } - - allRanges.forEach( ( { range, text } ) => { - const clientRects = Array.from( range.getClientRects() ); - clientRects.forEach( ( rect, rangeIndex ) => { - let type; - let replacement = text.toLowerCase(); - - for ( const key in config.dictionaries ) { - const dictConfig = config.dictionaries[ key ]; - if ( dictConfig.type === 'key-value' && dictConfig.dictionary[ text.toLowerCase() ] ) { - type = key; - replacement = dictConfig.dictionary[ text.toLowerCase() ]; - break; - } else if ( - dictConfig.type === 'list' && - dictConfig.dictionary.includes( text.toLowerCase() ) - ) { - type = key; - break; - } else if ( dictConfig.type === 'function' && key === 'long-sentence' ) { - const longSentences = dictConfig - .function( textContent ) - .map( ( { sentence } ) => sentence ); - if ( longSentences.includes( text ) ) { - type = key; - break; - } - } - } - - if ( ! type ) { - type = 'phrase'; - } - - rects.push( { - rect, - rangeIndex, - range, - target: `${ text }`, // The original text - replacement, // It's replacement - type, - highlightId: `${ range.startOffset }${ text }${ range.endOffset }`, - } ); - } ); - } ); - - return rects; -}; diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/handleMessage.js b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/handleMessage.js deleted file mode 100644 index 18780d7294e71..0000000000000 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/handleMessage.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * WordPress dependencies - */ -import { select, dispatch } from '@wordpress/data'; - -export const findBlockRecursively = ( clientId, blocks ) => { - const block = blocks.find( currentBlock => currentBlock.clientId === clientId ); - - if ( block ) { - return block; - } - - // If the block was not found, check the inner blocks - for ( const currentBlock of blocks ) { - if ( currentBlock.innerBlocks?.length > 0 ) { - const innerBlock = findBlockRecursively( clientId, currentBlock.innerBlocks ); - - if ( innerBlock ) { - return innerBlock; - } - } - } - - return null; -}; - -// messageHandler.js -export const handleMessage = event => { - const { clientId, aiReplacementText, updateFunc } = event; - const { getBlocks } = select( 'core/block-editor' ); - const { selectBlock, updateBlockAttributes } = dispatch( 'core/block-editor' ); - - const updateBlocks = attributes => { - selectBlock( clientId ); - updateBlockAttributes( clientId, attributes ); - }; - - const block = findBlockRecursively( clientId, getBlocks() ); - - if ( block ) { - updateBlocks( { content: aiReplacementText } ); - updateFunc(); - } -}; diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/requestAnimationFrame.js b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/requestAnimationFrame.js deleted file mode 100644 index 6c9b3c5a00298..0000000000000 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/requestAnimationFrame.js +++ /dev/null @@ -1 +0,0 @@ -export const requestAnimationFrame = window.requestAnimationFrame || ( cb => cb() ); diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/textEditingHelpers.js b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/textEditingHelpers.js deleted file mode 100644 index 220a50a66deab..0000000000000 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/breve/utils/textEditingHelpers.js +++ /dev/null @@ -1,106 +0,0 @@ -import { requestAnimationFrame } from './requestAnimationFrame'; - -export const saveCaretPosition = ( containerEl, caretPositionRef ) => { - const selection = containerEl.ownerDocument.defaultView.getSelection(); - - if ( selection.rangeCount > 0 ) { - const range = selection.getRangeAt( 0 ); - const preCaretRange = range.cloneRange(); - preCaretRange.selectNodeContents( range.startContainer ); - preCaretRange.setEnd( range.startContainer, range.startOffset ); - const caretOffset = preCaretRange.toString().length; - - caretPositionRef.current = { - container: range.startContainer, - offset: caretOffset, - }; - } -}; - -export const restoreCaretPosition = ( containerEl, caretPositionRef ) => { - const { container, offset } = caretPositionRef.current || {}; - - if ( container && typeof offset === 'number' ) { - const range = containerEl.ownerDocument.createRange(); - const selection = containerEl.ownerDocument.defaultView.getSelection(); - range.setStart( container, offset ); - range.collapse( true ); - selection.removeAllRanges(); - selection.addRange( range ); - } -}; - -export const getChildTextNodes = element => { - const textNodes = []; - - for ( let i = 0; i < element.childNodes.length; i++ ) { - const childNode = element.childNodes[ i ]; - - if ( childNode.nodeType === Node.TEXT_NODE ) { - textNodes.push( childNode ); - } else if ( childNode.nodeType === Node.ELEMENT_NODE ) { - const childNodeTextNodes = getChildTextNodes( childNode ); - textNodes.push( ...childNodeTextNodes ); - } - } - - return textNodes; -}; - -export const simulateClick = ( event, blockElement ) => { - blockElement.focus(); - - requestAnimationFrame( () => { - const selectedText = blockElement.ownerDocument.getSelection(); - const clickRange = blockElement.ownerDocument.createRange(); - const textNodes = getChildTextNodes( blockElement ); - - // Get the mouse click position relative to the block - const clickRect = blockElement.getBoundingClientRect(); - const x = event.clientX - clickRect.left; - - // Translate event.nativeEvent.pageY to local block coordinate - const y = - event.nativeEvent.pageY - - blockElement.ownerDocument.documentElement.scrollTop - - clickRect.top; - - // Get the text node and determine the character offset based on the click position - let offset = 0; - let accumulatedWidth = 0; - - // Create a temporary range to measure text width - let textNode; - - for ( let i = 0; i < textNodes.length; i++ ) { - textNode = textNodes[ i ]; - - for ( let j = 0; j < textNode.textContent.length; j++ ) { - clickRange.setStart( textNode, j ); - clickRange.setEnd( textNode, j + 1 ); - const charRect = clickRange.getBoundingClientRect(); - - if ( y >= charRect.top - clickRect.top && y <= charRect.bottom - clickRect.top ) { - accumulatedWidth += charRect.width; - // If x is between the accumulated width minus half the character width and the full accumulated width, then the click is closer to the next character - if ( x >= accumulatedWidth - charRect.width / 2 && x <= accumulatedWidth ) { - offset = j + 1; - break; - } - // if x is less than the accumulated width, then the click is closer to the previous character - else if ( x < accumulatedWidth ) { - offset = j; - break; - } - } - } - } - - // Set the caret at the exact position where the click occurred - clickRange.setStart( textNode, offset ); - clickRange.collapse( true ); - - selectedText.removeAllRanges(); - selectedText.addRange( clickRange ); - } ); -}; diff --git a/projects/plugins/jetpack/json-endpoints/class.wpcom-json-api-update-post-v1-2-endpoint.php b/projects/plugins/jetpack/json-endpoints/class.wpcom-json-api-update-post-v1-2-endpoint.php index 56b87ca7513d0..7baf274254fd5 100644 --- a/projects/plugins/jetpack/json-endpoints/class.wpcom-json-api-update-post-v1-2-endpoint.php +++ b/projects/plugins/jetpack/json-endpoints/class.wpcom-json-api-update-post-v1-2-endpoint.php @@ -1002,6 +1002,9 @@ private function dtp_fb_preprocess_post( $post, $metadata ) { 'title' => $fb_point['name'], ); } + if ( ! function_exists( 'map_block_from_geo_points' ) ) { + require_once JETPACK__PLUGIN_DIR . 'extensions/blocks/map/map.php'; + } $map_block = map_block_from_geo_points( $geo_points ); $post['post_content'] = $map_block . $post['post_content']; diff --git a/projects/plugins/jetpack/modules/memberships/class-jetpack-memberships.php b/projects/plugins/jetpack/modules/memberships/class-jetpack-memberships.php index 30619a296ef1f..70e1567f3c036 100644 --- a/projects/plugins/jetpack/modules/memberships/class-jetpack-memberships.php +++ b/projects/plugins/jetpack/modules/memberships/class-jetpack-memberships.php @@ -148,6 +148,14 @@ public static function clear_post_access_level_cache() { 'PLN' => 2.0, 'SEK' => 3.0, 'SGD' => 0.5, + 'CZK' => 15.0, + 'HUF' => 175.0, + 'TWD' => 10.0, + 'IDR' => 0, + 'ILS' => 0, + 'PHP' => 0, + 'RUB' => 0, + 'TRY' => 0, ); /** diff --git a/projects/plugins/jetpack/modules/scan/class-admin-sidebar-link.php b/projects/plugins/jetpack/modules/scan/class-admin-sidebar-link.php index 925b1050b0ca9..2c78af6ba64e5 100644 --- a/projects/plugins/jetpack/modules/scan/class-admin-sidebar-link.php +++ b/projects/plugins/jetpack/modules/scan/class-admin-sidebar-link.php @@ -7,6 +7,7 @@ namespace Automattic\Jetpack\Scan; +use Automattic\Jetpack\Admin_UI\Admin_Menu; use Automattic\Jetpack\My_Jetpack\Products\Backup; use Automattic\Jetpack\Redirect; use Automattic\Jetpack\Status\Host; @@ -68,22 +69,37 @@ public function maybe_add_admin_link() { } if ( $this->should_show_scan() ) { - $menu_label = __( 'Scan', 'jetpack' ); - $url = Redirect::get_url( 'calypso-scanner' ); - add_submenu_page( 'jetpack', $menu_label, esc_html( $menu_label ) . ' ', 'manage_options', esc_url( $url ), null, $this->get_link_offset() ); + Admin_Menu::add_menu( + __( 'Scan', 'jetpack' ), + __( 'Scan', 'jetpack' ) . ' ', + 'manage_options', + esc_url( Redirect::get_url( 'cloud-scan-history-wp-menu' ) ), + null, + $this->get_link_offset() + ); } // Add scan item which shows history page only. This is mutally exclusive from the scan item above and is only shown for Atomic sitse. if ( $this->should_show_scan_history_only() ) { - $menu_label = __( 'Scan', 'jetpack' ); - $url = Redirect::get_url( 'cloud-scan-history-wp-menu' ); - add_submenu_page( 'jetpack', $menu_label, esc_html( $menu_label ) . ' ', 'manage_options', esc_url( $url ), null, $this->get_link_offset() ); + Admin_Menu::add_menu( + __( 'Scan', 'jetpack' ), + __( 'Scan', 'jetpack' ) . ' ', + 'manage_options', + esc_url( Redirect::get_url( 'cloud-scan-history-wp-menu' ) ), + null, + $this->get_link_offset() + ); } if ( $this->should_show_backup() ) { - $menu_label = __( 'VaultPress', 'jetpack' ); - $url = Redirect::get_url( 'calypso-backups' ); - add_submenu_page( 'jetpack', $menu_label, esc_html( $menu_label ) . ' ', 'manage_options', esc_url( $url ), null, $this->get_link_offset() ); + Admin_Menu::add_menu( + __( 'VaultPress', 'jetpack' ), + __( 'VaultPress', 'jetpack' ) . ' ', + 'manage_options', + esc_url( Redirect::get_url( 'calypso-backups' ) ), + null, + $this->get_link_offset() + ); } } @@ -96,7 +112,7 @@ public function maybe_add_admin_link() { */ private function get_link_offset() { global $submenu; - $offset = 0; + $offset = 9; if ( ! array_key_exists( 'jetpack', $submenu ) ) { return $offset; diff --git a/projects/plugins/jetpack/modules/subscriptions.php b/projects/plugins/jetpack/modules/subscriptions.php index a67cb3fd27148..87801f8868919 100644 --- a/projects/plugins/jetpack/modules/subscriptions.php +++ b/projects/plugins/jetpack/modules/subscriptions.php @@ -15,6 +15,7 @@ // phpcs:disable Universal.Files.SeparateFunctionsFromOO.Mixed -- TODO: Move classes to appropriately-named class files. +use Automattic\Jetpack\Admin_UI\Admin_Menu; use Automattic\Jetpack\Connection\Manager as Connection_Manager; use Automattic\Jetpack\Connection\XMLRPC_Async_Call; use Automattic\Jetpack\Redirect; @@ -1000,13 +1001,13 @@ public function add_subscribers_menu() { array( 'site' => $blog_id ? $blog_id : $status->get_site_suffix() ) ); - add_submenu_page( - 'jetpack', - esc_attr__( 'Subscribers', 'jetpack' ), + Admin_Menu::add_menu( + __( 'Subscribers', 'jetpack' ), __( 'Subscribers', 'jetpack' ) . ' ', 'manage_options', esc_url( $link ), - null + null, + 11 ); } diff --git a/projects/plugins/jetpack/package.json b/projects/plugins/jetpack/package.json index b21e808d0eb26..604eec2436e21 100644 --- a/projects/plugins/jetpack/package.json +++ b/projects/plugins/jetpack/package.json @@ -113,7 +113,7 @@ "swiper": "6.7.0", "tinycolor2": "1.4.2", "tus-js-client": "2.3.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" }, "devDependencies": { diff --git a/projects/plugins/migration/changelog/renovate-npm-webpack-vulnerability b/projects/plugins/migration/changelog/renovate-npm-webpack-vulnerability new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/migration/changelog/renovate-npm-webpack-vulnerability @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/migration/package.json b/projects/plugins/migration/package.json index cf19140aa39ed..ea87c0affcfbc 100644 --- a/projects/plugins/migration/package.json +++ b/projects/plugins/migration/package.json @@ -49,7 +49,7 @@ "concurrently": "7.6.0", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/plugins/protect/changelog/renovate-npm-webpack-vulnerability b/projects/plugins/protect/changelog/renovate-npm-webpack-vulnerability new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/protect/changelog/renovate-npm-webpack-vulnerability @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/protect/changelog/update-jetpack-menu-item-order b/projects/plugins/protect/changelog/update-jetpack-menu-item-order new file mode 100644 index 0000000000000..4bfbd859ba2bf --- /dev/null +++ b/projects/plugins/protect/changelog/update-jetpack-menu-item-order @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Admin menu: change order of Jetpack sub-menu items diff --git a/projects/plugins/protect/package.json b/projects/plugins/protect/package.json index 132e63bbbc6ce..639e586f71945 100644 --- a/projects/plugins/protect/package.json +++ b/projects/plugins/protect/package.json @@ -57,7 +57,7 @@ "sass": "1.64.1", "sass-loader": "12.4.0", "typescript": "5.0.4", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/plugins/protect/src/class-jetpack-protect.php b/projects/plugins/protect/src/class-jetpack-protect.php index 300886a9bed03..b2db8472267ea 100644 --- a/projects/plugins/protect/src/class-jetpack-protect.php +++ b/projects/plugins/protect/src/class-jetpack-protect.php @@ -156,7 +156,8 @@ public function admin_page_init() { $menu_label, 'manage_options', 'jetpack-protect', - array( $this, 'plugin_settings_page' ) + array( $this, 'plugin_settings_page' ), + 5 ); add_action( 'load-' . $page_suffix, array( $this, 'enqueue_admin_scripts' ) ); diff --git a/projects/plugins/social/CHANGELOG.md b/projects/plugins/social/CHANGELOG.md index 0f66218a0ce1f..a65d961faf62a 100644 --- a/projects/plugins/social/CHANGELOG.md +++ b/projects/plugins/social/CHANGELOG.md @@ -5,57 +5,97 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 5.2.0 - 2024-08-29 + +### Changed + +- Admin menu: change order of Jetpack sub-menu items [#39095] +- Moved PostPublishPanels component to publicize-components package [#39049] +- Social: Migrated shares data to the new script data [#38988] +- Social: Updated intial state logic to use the new consolidated initial state [#38606] +- Social: Updated the share status modal to render it globally [#39116] +- Update composer lock file [#38942] +- Updated package dependencies. [#38662] [#38665] [#38822] [#38822] [#39111] + +### Removed + +- Remove the unused Advanced plan nudge [#38926] +- Social: Removed share limits UI and data logic [#38904] + +### Fixed + +- Revert recent SVG image optimizations. [#38981] + ## 5.1.0 - 2024-08-08 + ### Added + - Added feature flag management for social [#38669] ### Fixed + - Lossless image optimization of images in projects/plugins [subdirectories from a* through social] [#38573] ## 5.0.0 - 2024-08-01 + ### Changed + - Social: Removed unnecessary feature checks for social connections [#38216] - Updated package dependencies. [#38228] [#38235] [#38464] ### Removed + - General: update WordPress version requirements to WordPress 6.5. [#38382] - Removed the unused code for image auto-conversion from social store [#38609] - Social | Removed the media auto-conversion UI [#38497] ## 4.5.2 - 2024-07-03 + ### Changed + - General: indicate compatibility with the upcoming version of WordPress - 6.6. [#37962] - Updated package dependencies. [#37917] [#38132] ### Fixed + - Fixed E2E tests navigating to block editor [#37875] - Fixed the admin page pricing table not shown [#37877] - Social: Fixed broken connections reconnect link to point it to new connections UI [#37869] ## 4.5.1 - 2024-06-18 + ### Fixed + - My Jetpack: Update My Jetpack to a more stable version. [#37911] ## 4.5.0 - 2024-06-13 + ### Changed + - Move the admin upsell to the toggle section [#37731] - Updated package dependencies. [#37767] [#37776] [#37796] ### Removed + - Removed the social basic plan from the admin page [#36846] ### Fixed + - Updated wp.org screenshots [#37726] ## 4.4.0 - 2024-06-05 + ### Changed + - Social | Removed the top "Connect accounts" on the admin page [#37697] - Social | Updated upgrade nudges to use the new plan [#37638] - Updated package dependencies. [#37669] - Updated the editor nudge text and logic [#37644] ## 4.3.0 - 2024-05-29 + ### Added + - Add connect form/button for connection management [#37196] - Added a CTA button to create a social note [#36972] - Added and rendered GlobalNotices component [#37237] @@ -69,6 +109,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Social Limits: Added clarification of cycle reset [#37350] ### Changed + - General: update WordPress version requirements to WordPress 6.4. [#37047] - General: use wp_admin_notice function introduced in WP 6.4 to display notices. [#37051] - Remove explicit Plugin Install package dependency. [#37430] @@ -78,12 +119,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Update the Social sidebar share post panel to direct non-admin authors to user connection if there is no user connection. [#36976] ### Fixed + - Adjusted the webpack config so the social icon colours are picked up by PostCSS [#37327] - Fixed CSS variables not loaded for modals on Social admin page [#37391] - Fixed timeouts in E2E tests [#37045] ## 4.2.0 - 2024-04-11 + ### Added + - Added functions to display share urls [#36328] - Added options and UI for link formatting [#36671] - Added support for comments on Social Notes [#36428] @@ -91,6 +135,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Trigger red bubble notification when bad install is detected [#36449] ### Changed + - Allow multiple paragraphs for Social Notes [#36522] - Only show custom media picker for normal posts [#36640] - Only show installation errors on plugins page [#36390] @@ -101,11 +146,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Update to the most recent version of the @automattic/calypso-color-schemes package. [#36227] ### Fixed + - Fixed typos [#36554] - Prevent enqueuing of admin styles on the frontend [#36552] ## 4.1.0 - 2024-03-07 + ### Added + - Added a template lock to our Social Note CPT [#35619] - Added endpoint to update post meta [#35822] - Added feature support for the new CPT to support activitypub. [#35442] @@ -117,6 +165,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Social: Added archive page support to notes [#35592] ### Changed + - Changed the admin page 'Write a post' button to primary if the site has connections [#36031] - General: indicate compatibility with the upcoming version of WordPress, 6.5. [#35820] - Social Notes: Added the post list enhancements [#35819] @@ -127,11 +176,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Use Blog ID in links to WPCOM instead of site slug. [#35006] ### Fixed + - Fixed no title from showing up in og:title [#35624] - Fixed og:title having word-breaks. [#36068] ## 4.0.0 - 2024-01-18 + ### Changed + - Changed dismissed notices endpoint to be a core endpoint [#34544] - Social: Changed the illustration on the admin page [#34454] - Social: Refactored storing of feature options to use core functions [#34113] @@ -141,16 +193,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated the design for Quick Share buttons and fixed its a11y [#34754] ### Fixed + - Fixed a bug with the initial state script [#34861] - Fixed Jetpack Social scheduled post messaging [#34182] ## 3.0.0 - 2023-12-06 + ### Added + - Added a new post-publish panel for quick sharing [#33231] - Added Nextdoor to Social Previews [#33907] - Added traking for social sharing buttons [#33231] ### Changed + - Code Modernization: Replace usage of strpos() with str_contains() [#34137] - General: updated PHP requirement to PHP 7.0+ [#34126] - General: update WordPress version requirements to WordPress 6.3 and compatible with 6.4. [#34127] [#33776] @@ -159,19 +215,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated Social admin pricing page [#33176] ### Removed + - Removed unused code [#34111] [#34241] ### Fixed + - Fixed an issue where initial state is not in sync [#33969] - Fixed broken connections UI [#34391] - Fixed pre-publish UI reactivity for Jetpack Social [#34243] - Fixed the issue of publicize remaining ON after the post is published [#34289] ## 2.3.0 - 2023-09-20 + ### Added + - Add the change settings logic in Social for the auto conversion feature. [#32712] ### Changed + - Changed logic that disables the connections based on the auto-conversion feature. [#32671] - General: remove WP 6.1 backwards compatibility checks. [#32772] - General: update WordPress version requirements to WordPress 6.2. [#32762] @@ -180,7 +241,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated package dependencies. [#33001] ## 2.2.0 - 2023-08-23 + ### Added + - Add admin-page upsell notice [#32128] - Add new nudge in the editor to upgrade to the Advanced plan that will appear every 3 months [#32087] - Add SIG toggle for Jetpack Settings [#32475] @@ -188,6 +251,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add check for checking if user is on Basic plan [#32112] ### Changed + - Changed JITM so it can be properly dismissed. [#32033] - Jetpack editor extensions: use shared component for the logo. [#32257] - Moved store to publicize-components package. [#32317] @@ -196,84 +260,109 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Use a new method to render Connection initial state. [#32499] ### Fixed + - Fixed checkout link so it's not siteless. [#32254] ## 2.1.0 - 2023-08-01 + ### Changed + - General: indicate full compatibility with the latest version of WordPress, 6.3. [#31910] - Refactor TemplatePicker component, so inner part can be use in it's own without a modal. [#31740] - Social: Update the screenshots to reflect the current UI [#31832] - Updated package dependencies. [#31659, #31661, #31769, #31785, #31872, #31923, #32040] ### Fixed + - Fix admin page unit test [#31417] ## 2.0.0 - 2023-07-05 + ### Added + - Add authentication to Zendesk chat widget. [#31339] ### Changed + - Social: change the admin page plan redirect link. [#31195] - Social: update the Readme to better reflect new features. [#31686] - Updated package dependencies. ### Fixed + - Social: fix the connection state to ensure that new connections are disabled by default when there are no shares left. [#31168] - Social Review Prompt: fix the state so it is shown when Jetpack is also active. [#31456] ## 1.11.0 - 2023-06-06 + ### Added + - Added feature flag for Mastodon preview [#30919] - Jetpack Social: Add a notice to let users know Instagram is available [#30777] ### Changed + - Remove conditional rendering from zendesk chat widget component due to it being handled by an api endpoint now [#29942] - Updated package dependencies. - Updates the enhanced publishing feature check [#29881] ### Deprecated + - Minor changes around upcoming functionality change in Twitter. [#30272] ## 1.10.0 - 2023-05-02 + ### Added + - Social: Updating plugin version. [#30158] ### Changed + - Added dynamic pricing to Social admin page. [#30105] - Updated package dependencies. [#29565, #29854, #29857, #30019] - Update WordPress version requirements. Now requires version 6.1. [#30120] ### Fixed + - Dashboard: ensure the link to the post editor works, even when WordPress is installed in a subdirectory. [#30159] - Jetpack Social: Render Social Image Generator panel even when SIG's default is disabled [#30358] - Temporarily removed review prompts to fix the plugin's UI state. [#30101] ## 1.9.1 - 2023-04-06 + ### Fixed + - Reinstated is_social_image_generator_enabled for backwards compatibility. [#29952] ## 1.9.0 - 2023-04-04 + ### Added + - (Backup, Boost, Search, Social) Add links on upgrade pages to activate a license key, if you already have one. [#29443] - Added option for CUT component to have a tooltip. [#29609] - Added SIG image to the post media array if it's enabled. [#29093] - Added toggle to Social admin page to enable or disable Social Image Generator as well as an option to pick a default template. [#29722] ### Changed + - General: indicate full compatibility with the latest version of WordPress, 6.2. [#29341] - Jetpack Social: Enable Social Image Generator by default when it's available. [#29742] - Refactored the ToggleSection component to decouple it from other logic. [#29619] - Updated package dependencies. [#29216, #29289, #29297, #29434, #29471, #29480] ### Other changes + - Updated composer.lock. [#29762] ## 1.8.0 - 2023-03-07 + ### Added + - Add Social Image Generator editor panel to post sidebar [#28737] - Add Social Image Generator feature flag to Jetpack Social [#29001] ### Changed + - Changed remaining shares phrasing [#28688] - Remove `ci.targets` from package.json. Better scoping of e2e tests. [#28913] - Update billing language [#29126] @@ -281,67 +370,90 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Update to React 18. [#28710] ### Fixed + - Revise Jetpack connection agreement text to comply with our User Agreement [#28403] - Use External Link icons for external links [#28922] ## 1.7.0 - 2023-02-07 + ### Added + - Added Advanced Social plan to pricing table [#28258] ### Changed + - Moved resharing to be available in the free plan [#28661] - Updated package dependencies. - Update playwright dependency [#28094] - Use `flex-end` instead of `end` for better browser compatibility. [#28530] ## 1.6.0 - 2023-01-10 + ### Added + - Add a review request prompt for Jetpack Social plugin. [#28072] - Add simple JS React test. [#27122] - Add the adminUrl to the initial editor state. [#27617] - Redirect to admin page on plugin activation, and add link to admin page from plugins page. [#24586] ### Changed + - Updated package dependencies. [#27340, #27688, #27689, #27696, #27697, #27874, #27887, #27916, #27962] ## 1.5.1 - 2022-12-06 + ### Changed + - Updated package dependencies. [#26069] ### Fixed + - Fix alignment issues on social admin page [#27146] ## 1.5.0 - 2022-11-08 + ### Changed + - Compatibility: WordPress 6.1 compatibility [#27084] ### Other changes + - Social: Updated the plugin versions to start the new cycle [#27114] - Updated package dependencies. [#27182, #27196, #27278, #27289] ## 1.5.0-beta - 2022-10-27 + ### Added + - Display broken connections to user in editor [#25803] - Integrate the ConnectionError react component to the Social plugin. [#26904] - Reshare: Added the reshare UI to the block editor extension [#25993] ### Changed + - Updated package dependencies. [#25993, #26640, #26683, #26705, #26716, #26790, #26791, #26808, #26826, #26829, #26851, #27089] ### Fixed + - Social: Fix the connection test endpoint URL [#26892] - Social: Fix the path to the connections URL in the editor [#26932] ## 1.4.2 - 2022-10-20 + ### Fixed + - Social: Fix the path to the connections URL in the editor [#26932] ## 1.4.1 - 2022-10-19 + ### Fixed + - Social: Fix the connection test endpoint URL [#26892] ## 1.4.0 - 2022-10-06 + ### Added + - Add ContextualUpgradeTrigger to Jetpack Social admin page [#26115] - Added check to not show the share metre if someone has a paid plan. [#26310] - Added Jetpack social redirect urls. [#26135] @@ -350,6 +462,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Enforce sharing limits in the Classic Editor [#26039] ### Changed + - Changed the values on the pricing table, and fixed a redirect [#26605] - Move share limits code to the Publicize package [#26294] - Set version to 1.4.0-alpha [#25955] @@ -360,26 +473,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Use Jetpack logo in Jetpack Social pre-publish screen for Publicize and Social Preview features [#26044] ### Fixed + - Social: Require a user connection to use the plugin. [#26543] - Store: Added the missing showNudge reducer [#26635] ## 1.3.0 - 2022-09-07 + ### Added + - Added scheduled post calculation on plugin activation. [#25334] - Added Social Previews. [#25931] - Added support for JITMs. [#25880] - Enforce sharing limits in the block editor, if it is enabled for a site. [#25661] ### Changed + - Updated package dependencies. [#24477, #25265, #25300, #25315, #25334, #25338, #25339, #25377, #25406, #25628, #25661, #25665, #25694, #25762, #25769, #25787, #25814, #25931] ### Removed + - Packages: remove deprecated package. [#25883] ### Fixed + - Avoid PHP warnings when OG description is not set. [#25777] ### Other + - My Jetpack includes JITMs [#22452] - Post release tasks. [#25364] - Start a new release cycle. [#25289] @@ -389,7 +509,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Enables autotag, autorelease, and autosvn actions ## 1.2.0 - 2022-08-03 + ### Added + - Added shares meter to Jetpack Social admin page. - Updated package dependencies. - Added the posts box to the Jetpack Social admin page @@ -397,12 +519,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated publicize package version. ### Changed + - Rework the admin page to use new components - Start the 1.2.0 release cycle - Updated the tagline on the admin page. ## 1.1.0-beta - 2022-06-29 + ### Changed + - Renaming master to trunk. - Renaming `master` references to `trunk` - Reorder JS imports for `import/order` eslint rule. @@ -410,5 +535,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated the design of the admin page to include share counters. ## 1.0.0 - 2022-05-31 + ### Added + - Initial release. diff --git a/projects/plugins/social/changelog/add-filter-for-filtered-order-data b/projects/plugins/social/changelog/add-filter-for-filtered-order-data deleted file mode 100644 index 9aa70e3ec1f75..0000000000000 --- a/projects/plugins/social/changelog/add-filter-for-filtered-order-data +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Updated composer.lock. - - diff --git a/projects/plugins/social/changelog/add-new-sync-active-modules-callable b/projects/plugins/social/changelog/add-new-sync-active-modules-callable deleted file mode 100644 index 9aa70e3ec1f75..0000000000000 --- a/projects/plugins/social/changelog/add-new-sync-active-modules-callable +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Updated composer.lock. - - diff --git a/projects/plugins/social/changelog/add-protect-threat-history b/projects/plugins/social/changelog/add-protect-threat-history deleted file mode 100644 index 9aa70e3ec1f75..0000000000000 --- a/projects/plugins/social/changelog/add-protect-threat-history +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Updated composer.lock. - - diff --git a/projects/plugins/social/changelog/add-social-share-status-feature-flag b/projects/plugins/social/changelog/add-social-share-status-feature-flag deleted file mode 100644 index 9aa70e3ec1f75..0000000000000 --- a/projects/plugins/social/changelog/add-social-share-status-feature-flag +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Updated composer.lock. - - diff --git a/projects/plugins/social/changelog/fix-my-jetpack-currency b/projects/plugins/social/changelog/fix-my-jetpack-currency deleted file mode 100644 index 9aa70e3ec1f75..0000000000000 --- a/projects/plugins/social/changelog/fix-my-jetpack-currency +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Updated composer.lock. - - diff --git a/projects/plugins/social/changelog/refactor-social-post-publish-panel b/projects/plugins/social/changelog/refactor-social-post-publish-panel deleted file mode 100644 index c2d9eb2e4c754..0000000000000 --- a/projects/plugins/social/changelog/refactor-social-post-publish-panel +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: changed - -Moved PostPublishPanels component to publicize-components package diff --git a/projects/plugins/social/changelog/remove-social-advanced-plan-nudge b/projects/plugins/social/changelog/remove-social-advanced-plan-nudge deleted file mode 100644 index 5a418563a57a9..0000000000000 --- a/projects/plugins/social/changelog/remove-social-advanced-plan-nudge +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: removed - -Remove the unused Advanced plan nudge diff --git a/projects/plugins/social/changelog/revert-svg-image-optimizations b/projects/plugins/social/changelog/revert-svg-image-optimizations deleted file mode 100644 index 356496f8a1f8f..0000000000000 --- a/projects/plugins/social/changelog/revert-svg-image-optimizations +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: fixed - -Revert recent SVG image optimizations. diff --git a/projects/plugins/social/changelog/try-no-version-bumps-in-trunk b/projects/plugins/social/changelog/try-no-version-bumps-in-trunk deleted file mode 100644 index 91efe85c55e06..0000000000000 --- a/projects/plugins/social/changelog/try-no-version-bumps-in-trunk +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Un-bump version numbers in trunk. The build will now update the version numbers as needed for mirrors. - - diff --git a/projects/plugins/social/changelog/update-connection-initial-state b/projects/plugins/social/changelog/update-connection-initial-state deleted file mode 100644 index 9aa70e3ec1f75..0000000000000 --- a/projects/plugins/social/changelog/update-connection-initial-state +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Updated composer.lock. - - diff --git a/projects/plugins/social/changelog/update-consolidate-social-state b/projects/plugins/social/changelog/update-consolidate-social-state deleted file mode 100644 index 688c9484e12ef..0000000000000 --- a/projects/plugins/social/changelog/update-consolidate-social-state +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: changed - -Social: Updated intial state logic to use the new consolidated initial state diff --git a/projects/plugins/social/changelog/update-jsdoc-comments-for-wp-coding-standards b/projects/plugins/social/changelog/update-jsdoc-comments-for-wp-coding-standards deleted file mode 100644 index 0e655b2b8b7a3..0000000000000 --- a/projects/plugins/social/changelog/update-jsdoc-comments-for-wp-coding-standards +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Reformat jsdoc comments. No change to meaning or functionality. - - diff --git a/projects/plugins/social/changelog/update-my-jetpack-protect-card-waf-dependency b/projects/plugins/social/changelog/update-my-jetpack-protect-card-waf-dependency deleted file mode 100644 index 59c80f69574e5..0000000000000 --- a/projects/plugins/social/changelog/update-my-jetpack-protect-card-waf-dependency +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: changed - -Update composer lock file diff --git a/projects/plugins/social/changelog/update-socia-render-share-status-modal-globally b/projects/plugins/social/changelog/update-socia-render-share-status-modal-globally deleted file mode 100644 index b7d9c012f4521..0000000000000 --- a/projects/plugins/social/changelog/update-socia-render-share-status-modal-globally +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: changed - -Social: Updated the share status modal to render it globally diff --git a/projects/plugins/social/changelog/update-social-initial-stat-migrate-shares-data b/projects/plugins/social/changelog/update-social-initial-stat-migrate-shares-data deleted file mode 100644 index b1cfb12b7f277..0000000000000 --- a/projects/plugins/social/changelog/update-social-initial-stat-migrate-shares-data +++ /dev/null @@ -1,4 +0,0 @@ -Significance: minor -Type: removed - -Social: Removed share limits UI and data logic diff --git a/projects/plugins/social/changelog/update-social-initial-state-migrate-shares-data b/projects/plugins/social/changelog/update-social-initial-state-migrate-shares-data deleted file mode 100644 index 40880a44a4eaa..0000000000000 --- a/projects/plugins/social/changelog/update-social-initial-state-migrate-shares-data +++ /dev/null @@ -1,4 +0,0 @@ -Significance: patch -Type: changed - -Social: Migrated shares data to the new script data diff --git a/projects/plugins/social/changelog/update-sync-hpos-add-shop-subscription-to-types b/projects/plugins/social/changelog/update-sync-hpos-add-shop-subscription-to-types deleted file mode 100644 index 9aa70e3ec1f75..0000000000000 --- a/projects/plugins/social/changelog/update-sync-hpos-add-shop-subscription-to-types +++ /dev/null @@ -1,5 +0,0 @@ -Significance: patch -Type: changed -Comment: Updated composer.lock. - - diff --git a/projects/plugins/social/composer.json b/projects/plugins/social/composer.json index 9d0f2deb98628..7b3ba059a6152 100644 --- a/projects/plugins/social/composer.json +++ b/projects/plugins/social/composer.json @@ -84,6 +84,6 @@ "automattic/jetpack-autoloader": true, "automattic/jetpack-composer-plugin": true }, - "autoloader-suffix": "c4802e05bbcf59fd3b6350e8d3e5482c_socialⓥ5_1_0" + "autoloader-suffix": "c4802e05bbcf59fd3b6350e8d3e5482c_socialⓥ5_2_0" } } diff --git a/projects/plugins/social/jetpack-social.php b/projects/plugins/social/jetpack-social.php index 22eef18bb6641..f18c302c72ce3 100644 --- a/projects/plugins/social/jetpack-social.php +++ b/projects/plugins/social/jetpack-social.php @@ -4,7 +4,7 @@ * Plugin Name: Jetpack Social * Plugin URI: https://wordpress.org/plugins/jetpack-social * Description: Share your site’s posts on several social media networks automatically when you publish a new post. - * Version: 5.1.0 + * Version: 5.2.0 * Author: Automattic - Jetpack Social team * Author URI: https://jetpack.com/social/ * License: GPLv2 or later diff --git a/projects/plugins/social/package.json b/projects/plugins/social/package.json index 1a930f58e08b5..b3330a186a63a 100644 --- a/projects/plugins/social/package.json +++ b/projects/plugins/social/package.json @@ -65,7 +65,7 @@ "postcss-loader": "6.2.0", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/plugins/social/readme.txt b/projects/plugins/social/readme.txt index 329da21e4468a..b93c5e8cb612e 100644 --- a/projects/plugins/social/readme.txt +++ b/projects/plugins/social/readme.txt @@ -102,12 +102,26 @@ The easiest way is to use the Custom Message option in the publishing options bo 6. Managing Social media accounts in the post editor == Changelog == -### 5.1.0 - 2024-08-08 -#### Added -- Added feature flag management for social +### 5.2.0 - 2024-08-29 + +#### Changed + +- Admin menu: change order of Jetpack sub-menu items +- Moved PostPublishPanels component to publicize-components package +- Social: Migrated shares data to the new script data +- Social: Updated intial state logic to use the new consolidated initial state +- Social: Updated the share status modal to render it globally +- Update composer lock file +- Updated package dependencies. + +#### Removed + +- Remove the unused Advanced plan nudge +- Social: Removed share limits UI and data logic #### Fixed -- Lossless image optimization of images in projects/plugins [subdirectories from a* through social] + +- Revert recent SVG image optimizations. == Upgrade Notice == diff --git a/projects/plugins/social/src/class-jetpack-social.php b/projects/plugins/social/src/class-jetpack-social.php index 60c80835cdced..9a4954d4c55eb 100644 --- a/projects/plugins/social/src/class-jetpack-social.php +++ b/projects/plugins/social/src/class-jetpack-social.php @@ -52,7 +52,8 @@ public function __construct( $connection_manager = null ) { _x( 'Social', 'The Jetpack Social product name, without the Jetpack prefix', 'jetpack-social' ), 'manage_options', 'jetpack-social', - array( $this, 'plugin_settings_page' ) + array( $this, 'plugin_settings_page' ), + 4 ); add_action( 'load-' . $page_suffix, array( $this, 'admin_init' ) ); diff --git a/projects/plugins/starter-plugin/changelog/renovate-npm-webpack-vulnerability b/projects/plugins/starter-plugin/changelog/renovate-npm-webpack-vulnerability new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/starter-plugin/changelog/renovate-npm-webpack-vulnerability @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/starter-plugin/package.json b/projects/plugins/starter-plugin/package.json index 9a3634c378eb0..070c5f753e392 100644 --- a/projects/plugins/starter-plugin/package.json +++ b/projects/plugins/starter-plugin/package.json @@ -50,7 +50,7 @@ "jest-environment-jsdom": "29.7.0", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/projects/plugins/videopress/changelog/renovate-npm-webpack-vulnerability b/projects/plugins/videopress/changelog/renovate-npm-webpack-vulnerability new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/videopress/changelog/renovate-npm-webpack-vulnerability @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/videopress/package.json b/projects/plugins/videopress/package.json index b2f11b6df655f..068ef40fbbf6d 100644 --- a/projects/plugins/videopress/package.json +++ b/projects/plugins/videopress/package.json @@ -35,7 +35,7 @@ "concurrently": "7.6.0", "sass": "1.64.1", "sass-loader": "12.4.0", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.9.1" } } diff --git a/tools/composer-update-monorepo.sh b/tools/composer-update-monorepo.sh index 224f198ac147d..97e25d1de5b27 100755 --- a/tools/composer-update-monorepo.sh +++ b/tools/composer-update-monorepo.sh @@ -25,9 +25,9 @@ function check_dir { return 1 elif [[ -d "$1" ]]; then DIR="${1%/}" - elif [[ "$1" == "*/composer.json" && -f "$1" ]]; then # DWIM + elif [[ "$1" == */composer.json && -f "$1" ]]; then # DWIM DIR="$(dirname "$1")" - elif [[ "$1" == "*/composer.lock" && -f "$1" ]]; then # DWIM + elif [[ "$1" == */composer.lock && -f "$1" ]]; then # DWIM DIR="$(dirname "$1")" else error "Directory $1 does not exist." diff --git a/tools/version-packages.sh b/tools/version-packages.sh index e562c8e1c5a06..c76ddec94cc93 100755 --- a/tools/version-packages.sh +++ b/tools/version-packages.sh @@ -35,7 +35,7 @@ function check_dir { error "$DIR does not contain composer.json." return 1 fi - elif [[ "$1" == "*/composer.json" && -f "$1" ]]; then # DWIM + elif [[ "$1" == */composer.json && -f "$1" ]]; then # DWIM DIR="$(dirname "$1")" else error "Directory $1 does not exist."