diff --git a/packages/extensions/gomage-plugin-braintree-three-d-secure/Intercepts/brainTreeDropIn.js b/packages/extensions/gomage-plugin-braintree-three-d-secure/Intercepts/brainTreeDropIn.js new file mode 100644 index 0000000000..8f60682b61 --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/Intercepts/brainTreeDropIn.js @@ -0,0 +1,111 @@ +/** + * adding to brainTreeDropIn 3D secure part + * @param targets + */ +function localIntercept(targets) { + const { Targetables } = require('@magento/pwa-buildpack'); + const targetables = Targetables.using(targets); + + /** + * We can disable the logic if you will add to .env param CHECKOUT_BRAINTREE_3D with value false + */ + if (process.env.CHECKOUT_BRAINTREE_3D != 'false') { + const brainTreeDropIn = targetables.reactComponent( + '@magento/venia-ui/lib/components/CheckoutPage/PaymentInformation/brainTreeDropIn.js' + ); + + /** + * import 3d secure plugin + */ + brainTreeDropIn.addImport( + '{useBraintreeThreeDSecure} from "@gomage/plugin-braintree-three-d-secure"' + ); + brainTreeDropIn.addImport( + '{usePriceSummary} from "@magento/peregrine/lib/talons/CartPage/PriceSummary/usePriceSummary"' + ); + + /** + * add hook for getting of client token + */ + brainTreeDropIn.insertAfterSource( + 'const [dropinInstance, setDropinInstance] = useState();', + '\n const clientToken = useBraintreeThreeDSecure();' + + '\n const talonProps = usePriceSummary();' + ); + /** + * check if exist clientToken + */ + brainTreeDropIn.insertAfterSource( + 'const createDropinInstance = useCallback(async () => {', + '\n if(clientToken){ ' + ); + /** + * end condition of check if exist clientToken + */ + brainTreeDropIn.insertAfterSource('return dropinInstance;', '\n}'); + /** + * setting new dependency clientToken to useCallback createDropinInstance hook + */ + brainTreeDropIn.insertAfterSource( + '[containerId', + ' ,clientToken, talonProps.flatData.total.value' + ); + + /** + * check if exist clientToken + */ + brainTreeDropIn.insertBeforeSource( + 'const renderDropin = async () => {', + '\n if(clientToken){ ' + ); + + /** + * end condition of check if exist clientToken + */ + brainTreeDropIn.insertBeforeSource( + '}, [createDropinInstance, onReady]);', + '} \n' + ); + + /** + * setting new dependency clientToken to useEffect hook + */ + brainTreeDropIn.insertAfterSource( + '[createDropinInstance, onReady', + ' ,clientToken' + ); + + /** + * change of value token to client Token + */ + brainTreeDropIn.insertAfterSource( + 'const dropinInstance = await dropIn.create({\n' + + ' authorization', + ':clientToken' + ); + + /** + * enable 3d secure + */ + brainTreeDropIn.insertAfterSource( + 'container: `#${containerId}`,', + '\n threeDSecure: {amount:talonProps.flatData.total.value},' + ); + + /** + * update brain tree if total was changes + */ + brainTreeDropIn.insertBeforeSource( + 'if (isError) {', + 'useEffect(() => {\n' + + ' if(dropinInstance) {\n' + + ' dropinInstance.teardown();\n' + + ' }\n' + + ' }, [\n' + + ' talonProps.flatData.total.value,\n' + + ']);' + ); + } +} + +module.exports = localIntercept; diff --git a/packages/extensions/gomage-plugin-braintree-three-d-secure/Model/useBraintreeThreeDSecure.js b/packages/extensions/gomage-plugin-braintree-three-d-secure/Model/useBraintreeThreeDSecure.js new file mode 100644 index 0000000000..03aad4f2e8 --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/Model/useBraintreeThreeDSecure.js @@ -0,0 +1,24 @@ +import { useMutation } from '@apollo/client'; +import { useEffect } from 'react'; +import { GET_BRAINTREE_CLIENT_TOKEN } from '../Queries/createBraintreeClientToken.gql'; + +/** + * + * @returns {*|string} + */ +export const useBraintreeThreeDSecure = () => { + const [setBraintreeClientToken, { data }] = useMutation( + GET_BRAINTREE_CLIENT_TOKEN + ); + const clientToken = data ? data.createBraintreeClientToken : ''; + /** + * set Braintree Client Token + */ + useEffect(() => { + if (!clientToken) { + setBraintreeClientToken(); + } + }, [clientToken, setBraintreeClientToken]); + + return clientToken; +}; diff --git a/packages/extensions/gomage-plugin-braintree-three-d-secure/Queries/createBraintreeClientToken.gql.js b/packages/extensions/gomage-plugin-braintree-three-d-secure/Queries/createBraintreeClientToken.gql.js new file mode 100644 index 0000000000..f7a9301e1e --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/Queries/createBraintreeClientToken.gql.js @@ -0,0 +1,10 @@ +import { gql } from '@apollo/client'; +/** + * + * @type {DocumentNode} + */ +export const GET_BRAINTREE_CLIENT_TOKEN = gql` + mutation { + createBraintreeClientToken + } +`; diff --git a/packages/extensions/gomage-plugin-braintree-three-d-secure/README.md b/packages/extensions/gomage-plugin-braintree-three-d-secure/README.md new file mode 100644 index 0000000000..7c8c153890 --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/README.md @@ -0,0 +1,7 @@ +# GoMage Braintree 3D Secure + +GoMage Braintree 3D Secure + +That plugin works only as a fix bugs of PWA Studio and adds 3d secure part. + +If you need to disable the module, you can add to the .env parameter CHECKOUT_BRAINTREE_3D=false, or remove the plugin. diff --git a/packages/extensions/gomage-plugin-braintree-three-d-secure/index.js b/packages/extensions/gomage-plugin-braintree-three-d-secure/index.js new file mode 100644 index 0000000000..100e265a35 --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/index.js @@ -0,0 +1 @@ +export { useBraintreeThreeDSecure } from './Model/useBraintreeThreeDSecure'; diff --git a/packages/extensions/gomage-plugin-braintree-three-d-secure/intercept.js b/packages/extensions/gomage-plugin-braintree-three-d-secure/intercept.js new file mode 100644 index 0000000000..9c3560643d --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/intercept.js @@ -0,0 +1,11 @@ +/** + * + * @param targets + */ +function localIntercept(targets) { + require('@gomage/plugin-braintree-three-d-secure/Intercepts/brainTreeDropIn')( + targets + ); +} + +module.exports = localIntercept; diff --git a/packages/extensions/gomage-plugin-braintree-three-d-secure/package.json b/packages/extensions/gomage-plugin-braintree-three-d-secure/package.json new file mode 100644 index 0000000000..e9cf101f9e --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/package.json @@ -0,0 +1,20 @@ +{ + "name": "@gomage/plugin-braintree-three-d-secure", + "version": "3.94.0", + "description": "GoMage Braintree 3D Secure", + "main": "./index.js", + "author": "GoMage", + "dependencies": { + "braintree-web-drop-in": "~1.43.0" + }, + + "scripts": { + "clean": " " + }, + "license": "SEE LICENSE IN LICENSE.txt", + "pwa-studio": { + "targets": { + "intercept": "./intercept.js" + } + } +} \ No newline at end of file diff --git a/packages/extensions/upward-security-headers/upward.yml b/packages/extensions/upward-security-headers/upward.yml index ff22d7afa6..db8c6a0de5 100644 --- a/packages/extensions/upward-security-headers/upward.yml +++ b/packages/extensions/upward-security-headers/upward.yml @@ -25,7 +25,7 @@ veniaSecurityHeaders: base-uri 'none'; child-src 'self'; font-src 'self' fonts.gstatic.com; - frame-src assets.braintreegateway.com *.google.com *.youtube.com *.youtu.be *.vimeo.com + frame-src *.braintreegateway.com *.google.com *.youtube.com *.youtu.be *.vimeo.com *.cardinalcommerce.com " default: inline: " @@ -36,7 +36,7 @@ veniaSecurityHeaders: base-uri 'none'; child-src 'self'; font-src 'self' fonts.gstatic.com; - frame-src assets.braintreegateway.com *.google.com *.youtube.com *.youtu.be *.vimeo.com + frame-src *.braintreegateway.com *.google.com *.youtube.com *.youtu.be *.vimeo.com *.cardinalcommerce.com " strict-transport-security: inline: max-age=31536000 diff --git a/packages/venia-concept/package.json b/packages/venia-concept/package.json index ea35e6279e..773fefb630 100644 --- a/packages/venia-concept/package.json +++ b/packages/venia-concept/package.json @@ -35,6 +35,7 @@ }, "homepage": "https://github.com/magento/pwa-studio/tree/main/packages/venia-concept#readme", "dependencies": { + "@gomage/plugin-braintree-three-d-secure": "3.94.0", "@magento/pwa-buildpack": "~11.5.3" }, "devDependencies": { @@ -50,6 +51,7 @@ "@babel/plugin-transform-runtime": "~7.4.4", "@babel/preset-env": "~7.16.0", "@babel/runtime": "~7.15.3", + "@gomage/plugin-braintree-three-d-secure": "3.94.0", "@magento/babel-preset-peregrine": "~1.3.3", "@magento/eslint-config": "~1.5.0", "@magento/pagebuilder": "~9.3.2", @@ -69,7 +71,7 @@ "babel-plugin-graphql-tag": "~2.0.0", "babel-plugin-module-resolver": "~3.2.0", "babel-plugin-react-remove-properties": "~0.3.0", - "braintree-web-drop-in": "~1.33.3", + "braintree-web-drop-in": "~1.43.0", "compression": "~1.7.4", "css-loader": "~5.2.7", "dotenv": "~6.2.0", @@ -144,6 +146,9 @@ "pwa-studio": { "targets": { "intercept": "./local-intercept.js" - } + }, + "trusted-vendors": [ + "@gomage" + ] } } diff --git a/packages/venia-ui/package.json b/packages/venia-ui/package.json index cc0a976e3b..c25b98268a 100644 --- a/packages/venia-ui/package.json +++ b/packages/venia-ui/package.json @@ -83,7 +83,7 @@ "@magento/peregrine": "~14.4.1", "@magento/pwa-buildpack": "~11.5.3", "apollo-cache-persist": "~0.1.1", - "braintree-web-drop-in": "~1.33.3", + "braintree-web-drop-in": "~1.43.0", "graphql": "~15.5.0", "react": "~17.0.1", "react-intl": "~5.20.0", diff --git a/yarn.lock b/yarn.lock index 1c9743f74c..6e8fbe3edc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,6 +15,10 @@ integrity sha512-y5B1LcLo1xbUtRZLe4FRGiburzLu6kgY2VgLutgjoz0bpsKFxb21mqJ1axemsTfpJawYEvuP23+No1ud1ZsP2A== "@adobe/alloy@^2.9.0": + version "2.21.1" + resolved "https://registry.yarnpkg.com/@adobe/alloy/-/alloy-2.21.1.tgz#fc5fa5e857a94c23ae3d89973944c445a0ff4b6c" + integrity sha512-uTrHlf02eRMEDm69o3bSliwxBV4You/5EI6BtmXJEDhCNycy3xu0CfkYTmA0kNVdfNfZ/FYQrPEaajjyhROSfA== + version "2.23.0" resolved "https://registry.yarnpkg.com/@adobe/alloy/-/alloy-2.23.0.tgz#9e8baa35a717afd80c09007a0c2a431f927377d4" integrity sha512-UFPEtGqlST11kAIxwb8armSBp2urU8G7v+mHa/a2lM5bg/3KI34hbWe0uI69LOgo22a5ErHtRo855Njut7obaA== @@ -43,6 +47,7 @@ optionalDependencies: "@rollup/rollup-linux-x64-gnu" "^4.21.0" + "@adobe/apollo-link-mutation-queue@~1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@adobe/apollo-link-mutation-queue/-/apollo-link-mutation-queue-1.0.2.tgz#0c589ffb970b9917ba52c38812740c613c0a40da" @@ -206,7 +211,6 @@ dependencies: "@babel/highlight" "^7.25.7" picocolors "^1.0.0" - "@babel/compat-data@^7.14.7", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.7.tgz#b8479fe0018ef0ac87b6b7a5c6916fcd67ae2c9c" @@ -275,7 +279,7 @@ json5 "^2.1.2" semver "^6.3.0" source-map "^0.5.0" - + "@babel/eslint-parser@^7.25.1": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.7.tgz#27b43de786c83cbabbcb328efbb4f099ae85415e" @@ -401,7 +405,7 @@ integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== dependencies: "@babel/types" "^7.24.7" - + "@babel/helper-member-expression-to-functions@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz#541a33b071f0355a63a0fa4bdf9ac360116b8574" @@ -485,7 +489,7 @@ integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== dependencies: "@babel/types" "^7.24.7" - + "@babel/helper-string-parser@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54" @@ -961,7 +965,7 @@ integrity sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg== dependencies: "@babel/helper-plugin-utils" "^7.25.7" - + "@babel/plugin-transform-async-generator-functions@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.7.tgz#af61a02b30d7bff5108c63bd39ac7938403426d7" @@ -971,7 +975,7 @@ "@babel/helper-remap-async-to-generator" "^7.25.7" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/traverse" "^7.25.7" - + "@babel/plugin-transform-async-to-generator@^7.16.8", "@babel/plugin-transform-async-to-generator@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz#a44c7323f8d4285a6c568dd43c5c361d6367ec52" @@ -987,7 +991,7 @@ integrity sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ== dependencies: "@babel/helper-plugin-utils" "^7.25.7" - + "@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.16.7", "@babel/plugin-transform-block-scoping@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz#6dab95e98adf780ceef1b1c3ab0e55cd20dd410a" @@ -1085,7 +1089,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - + "@babel/plugin-transform-flow-strip-types@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.7.tgz#32be871a80e10bbe6d8b1c8a7eeedbbc896d5e80" @@ -6838,7 +6842,7 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -braintree-web-drop-in@~1.33.3: +braintree-web-drop-in@~1.33.1, braintree-web-drop-in@~1.33.3: version "1.33.7" resolved "https://registry.yarnpkg.com/braintree-web-drop-in/-/braintree-web-drop-in-1.33.7.tgz#16cd3b00ab768437e2de91f2f9f307214f83891b" integrity sha512-69wtLGbFh1jbgkUCyES598OwSsTljwLn33f9bsl2JRLlbvcW6emMazdyG95k3Am5kyh04Aa1Qx0RO3Yx81U/Jg== @@ -7023,7 +7027,7 @@ buffer@^5.5.0, buffer@^5.7.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-modules@^3.1.0: +builtin-modules@^3.1.0, builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== @@ -7978,7 +7982,7 @@ copy-webpack-plugin@~6.4.0: schema-utils "^3.0.0" serialize-javascript "^5.0.1" webpack-sources "^1.4.3" - + core-js-compat@^3.20.2, core-js-compat@^3.21.0, core-js-compat@^3.38.0, core-js-compat@^3.38.1, core-js-compat@^3.8.1: version "3.38.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09" @@ -9640,6 +9644,11 @@ estree-to-babel@^3.1.0: "@babel/types" "^7.2.0" c8 "^7.6.0" +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + estree-walker@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" @@ -9931,7 +9940,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.1.1, fast-glob@^3.2.4, fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@^3.1.1, fast-glob@^3.2.4, fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -11877,6 +11886,24 @@ inquirer@^8.2.0: through "^2.3.6" wrap-ansi "^6.0.1" +inquirer@^9.2.23: + version "9.3.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.3.6.tgz#670f1e9408743c3ed23df576f94fe5369f353055" + integrity sha512-riK/iQB2ctwkpWYgjjWIRv3MBLt2gzb2Sj0JNQNbyTXgyXsLWcDPJ5WS5ZDTCx7BRFnJsARtYh+58fjP5M2Y0Q== + dependencies: + "@inquirer/figures" "^1.0.3" + ansi-escapes "^4.3.2" + cli-width "^4.1.0" + external-editor "^3.1.0" + mute-stream "1.0.0" + ora "^5.4.1" + run-async "^3.0.0" + rxjs "^7.8.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + yoctocolors-cjs "^2.1.2" + internal-ip@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -12045,6 +12072,13 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-builtin-module@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + dependencies: + builtin-modules "^3.3.0" + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -12565,6 +12599,17 @@ istanbul-lib-instrument@^5.0.4: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" +istanbul-lib-instrument@^6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + istanbul-lib-report@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" @@ -17302,6 +17347,13 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" +rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + rollup@^2.43.1: version "2.79.2" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090" @@ -17334,6 +17386,31 @@ rollup@^4.21.0: "@rollup/rollup-win32-x64-msvc" "4.24.0" fsevents "~2.3.2" +rollup@^4.18.0: + version "4.20.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.20.0.tgz#f9d602161d29e178f0bf1d9f35f0a26f83939492" + integrity sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.20.0" + "@rollup/rollup-android-arm64" "4.20.0" + "@rollup/rollup-darwin-arm64" "4.20.0" + "@rollup/rollup-darwin-x64" "4.20.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.20.0" + "@rollup/rollup-linux-arm-musleabihf" "4.20.0" + "@rollup/rollup-linux-arm64-gnu" "4.20.0" + "@rollup/rollup-linux-arm64-musl" "4.20.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.20.0" + "@rollup/rollup-linux-riscv64-gnu" "4.20.0" + "@rollup/rollup-linux-s390x-gnu" "4.20.0" + "@rollup/rollup-linux-x64-gnu" "4.20.0" + "@rollup/rollup-linux-x64-musl" "4.20.0" + "@rollup/rollup-win32-arm64-msvc" "4.20.0" + "@rollup/rollup-win32-ia32-msvc" "4.20.0" + "@rollup/rollup-win32-x64-msvc" "4.20.0" + fsevents "~2.3.2" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -18089,6 +18166,20 @@ spdx-satisfies@~5.0.1: spdx-expression-parse "^3.0.0" spdx-ranges "^2.0.0" +spdx-ranges@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/spdx-ranges/-/spdx-ranges-2.1.1.tgz#87573927ba51e92b3f4550ab60bfc83dd07bac20" + integrity sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA== + +spdx-satisfies@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/spdx-satisfies/-/spdx-satisfies-5.0.1.tgz#9feeb2524686c08e5f7933c16248d4fdf07ed6a6" + integrity sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw== + dependencies: + spdx-compare "^1.0.0" + spdx-expression-parse "^3.0.0" + spdx-ranges "^2.0.0" + spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"