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..7e596cd9b0 --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/Intercepts/brainTreeDropIn.js @@ -0,0 +1,112 @@ +/** + * 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..701936a7ae --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/Model/useBraintreeThreeDSecure.js @@ -0,0 +1,22 @@ +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(); + } + }, []); + + 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..63217c9505 --- /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..1fca3204ab --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/intercept.js @@ -0,0 +1,9 @@ +/** + * + * @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..540fe545b5 --- /dev/null +++ b/packages/extensions/gomage-plugin-braintree-three-d-secure/package.json @@ -0,0 +1,15 @@ +{ + "name": "@gomage/plugin-braintree-three-d-secure", + "version": "1.0.3", + "description": "GoMage Braintree 3D Secure", + "main": "./index.js", + "author": "GoMage", + "pwa-studio": { + "targets": { + "intercept": "./intercept.js" + } + }, + "dependencies": { + "braintree-web-drop-in": "~1.33.1" + } +} 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 1e415bdb24..3d5034ef6b 100644 --- a/packages/venia-concept/package.json +++ b/packages/venia-concept/package.json @@ -144,6 +144,10 @@ "pwa-studio": { "targets": { "intercept": "./local-intercept.js" - } + }, + "trusted-vendors": [ + "@gomage" + ] } + } diff --git a/yarn.lock b/yarn.lock index 31b3e5cff6..7d14d437f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2061,11 +2061,23 @@ dependencies: promise-polyfill "^8.1.3" +"@braintree/asset-loader@0.4.4": + version "0.4.4" + resolved "https://npm-pwa.gomage.dev/@braintree%2fasset-loader/-/asset-loader-0.4.4.tgz#9a5eda24c3627bfd5c7f7483cd48f0e411dd2f09" + integrity sha512-uVhXC5dydmngmNVuDiKgfXSlz4kv4x5ytIJodI8N5SY16mRh13m/UmbQ7yH+o8DQqp50qPZ45MUHIZkXKPg85w== + dependencies: + promise-polyfill "^8.1.3" + "@braintree/browser-detection@1.14.0", "@braintree/browser-detection@^1.12.1": version "1.14.0" - resolved "https://registry.yarnpkg.com/@braintree/browser-detection/-/browser-detection-1.14.0.tgz#d1b397b00ccbc7cac12f6cec27c0a413d740332a" + resolved "https://npm-pwa.gomage.dev/@braintree%2fbrowser-detection/-/browser-detection-1.14.0.tgz#d1b397b00ccbc7cac12f6cec27c0a413d740332a" integrity sha512-OsqU+28RhNvSw8Y5JEiUHUrAyn4OpYazFkjSJe8ZVZfkAaRXQc6hsV38MMEpIlkPMig+A68buk/diY+0O8/dMQ== +"@braintree/browser-detection@1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@braintree/browser-detection/-/browser-detection-1.7.0.tgz#895ba64b700c3f36cab5c54591caf71a41171dd8" + integrity sha1-iVumS3AMPzbKtcVFkcr3GkEXHdg= + "@braintree/class-list@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@braintree/class-list/-/class-list-0.2.0.tgz#4c4352ac19c262f61526f93d07d248244b399ec4" @@ -2076,29 +2088,56 @@ resolved "https://registry.yarnpkg.com/@braintree/event-emitter/-/event-emitter-0.4.1.tgz#204eaad8cf84eb7bf81fb288a359d34eda85a396" integrity sha512-X41357O3OXUDlnwMvS1m0GQEn3zB3s3flOBeg2J5OBvLvdJEIAVpPkblABPtsPrlciDSvfv1aSG5ixHPgFH0Zg== + +"@braintree/class-list@0.2.0": + version "0.2.0" + resolved "https://npm-pwa.gomage.dev/@braintree%2fclass-list/-/class-list-0.2.0.tgz#4c4352ac19c262f61526f93d07d248244b399ec4" + integrity sha512-iLXJT51jnBFuGvyTAQqZ2uwyEVwdyapyz52F5MK1Uoh2ZOiPJ5hoqI0wncyCP2KfqrgyCpOkkEaLMLb/94unGA== + +"@braintree/event-emitter@0.4.1": + version "0.4.1" + resolved "https://npm-pwa.gomage.dev/@braintree%2fevent-emitter/-/event-emitter-0.4.1.tgz#204eaad8cf84eb7bf81fb288a359d34eda85a396" + integrity sha512-X41357O3OXUDlnwMvS1m0GQEn3zB3s3flOBeg2J5OBvLvdJEIAVpPkblABPtsPrlciDSvfv1aSG5ixHPgFH0Zg== + "@braintree/extended-promise@0.4.1": version "0.4.1" - resolved "https://registry.yarnpkg.com/@braintree/extended-promise/-/extended-promise-0.4.1.tgz#b44f8e6236ddb43434be11924f00fa69f8782a36" + resolved "https://npm-pwa.gomage.dev/@braintree%2fextended-promise/-/extended-promise-0.4.1.tgz#b44f8e6236ddb43434be11924f00fa69f8782a36" integrity sha512-00n7m4z+swWHoFQLHLvrIBIEoxnGUBsl3ogvX79ITpcn8CHczDwtxYy5+RhMoAraRdfN3oB+8QIpN3KOxs2Q7w== +"@braintree/iframer@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@braintree/iframer/-/iframer-1.0.3.tgz#21dd1fd4cebd4154aeab1efa4d5b0d5f4384364e" + integrity sha1-Id0f1M69QVSuqx76TVsNX0OENk4= + "@braintree/iframer@1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@braintree/iframer/-/iframer-1.1.0.tgz#7e59b975c2a48bd92616f653367a5214fc2ddd4b" + resolved "https://npm-pwa.gomage.dev/@braintree%2fiframer/-/iframer-1.1.0.tgz#7e59b975c2a48bd92616f653367a5214fc2ddd4b" integrity sha512-tVpr7U6u6bqeQlHreEjYMNtnHX62vLnNWziY2kQLqkWhvusPuY5DfuGEIPpWqsd+V/a1slyTQaxK6HWTlH6A/Q== +"@braintree/sanitize-url@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-3.0.0.tgz#a0ce629d18d4d435f23a0b880098cff7d99e8bb3" + integrity sha512-ymeXC1qObTag/hhEG7BoTMdIzuhKekTxNJTIfiVXsoP1fUXHKBpr0EfCsSA06BuP5gxTPs2vDKjtmYbgvEfY+g== + "@braintree/sanitize-url@6.0.0": version "6.0.0" - resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz#fe364f025ba74f6de6c837a84ef44bdb1d61e68f" + resolved "https://npm-pwa.gomage.dev/@braintree%2fsanitize-url/-/sanitize-url-6.0.0.tgz#fe364f025ba74f6de6c837a84ef44bdb1d61e68f" + integrity sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w== "@braintree/uuid@0.1.0", "@braintree/uuid@^0.1.0": version "0.1.0" - resolved "https://registry.yarnpkg.com/@braintree/uuid/-/uuid-0.1.0.tgz#ab9355015a7fb0e25cf3c2ff9cd32ece8ea304b0" + resolved "https://npm-pwa.gomage.dev/@braintree%2fuuid/-/uuid-0.1.0.tgz#ab9355015a7fb0e25cf3c2ff9cd32ece8ea304b0" integrity sha512-YvZJdlNcK5EnR+7M8AjgEAf4Qx696+FOSYlPfy5ePn80vODtVAUU0FxHnzKZC0og1VbDNQDDiwhthR65D4Na0g== +"@braintree/wrap-promise@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@braintree/wrap-promise/-/wrap-promise-1.1.1.tgz#d22c76855e6d4b4012610060421fae1a37ec90b0" + integrity sha1-0ix2hV5tS0ASYQBgQh+uGjfskLA= + "@braintree/wrap-promise@2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@braintree/wrap-promise/-/wrap-promise-2.1.0.tgz#7e27ffc5dacd2d71533b0c42506eea8e7c2e50fa" + resolved "https://npm-pwa.gomage.dev/@braintree%2fwrap-promise/-/wrap-promise-2.1.0.tgz#7e27ffc5dacd2d71533b0c42506eea8e7c2e50fa" integrity sha512-UIrJB+AfKU0CCfbMoWrsGpd2D/hBpY/SGgFI6WRHPOwhaZ3g9rz1weiJ6eb6L9KgVyunT7s2tckcPkbHw+NzeA== "@cnakazawa/watch@^1.0.3": @@ -6384,9 +6423,22 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -braintree-web-drop-in@~1.33.3: +braintree-web-drop-in@~1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/braintree-web-drop-in/-/braintree-web-drop-in-1.16.0.tgz#cda0dbccb3b9a4c47057f9e4af6c23b053b4e7c9" + integrity sha512-IdhAK0CyBCX67r2tOxCJWyoelMKFZkd+8Op3T4ijIKJTOFAJkx2uyqYh+GJHNoxuc3+KcJXfzbCA8xNnGIc2Dw== + dependencies: + "@braintree/asset-loader" "0.2.1" + "@braintree/browser-detection" "1.7.0" + "@braintree/class-list" "0.1.0" + "@braintree/wrap-promise" "1.1.1" + braintree-web "3.42.0" + promise-polyfill "8.1.0" + +braintree-web-drop-in@~1.33.1: version "1.33.3" - resolved "https://registry.yarnpkg.com/braintree-web-drop-in/-/braintree-web-drop-in-1.33.3.tgz#d8b27d7caffc8a8bf2e3bfafaaa2ca831dcf42aa" + resolved "https://npm-pwa.gomage.dev/braintree-web-drop-in/-/braintree-web-drop-in-1.33.3.tgz#d8b27d7caffc8a8bf2e3bfafaaa2ca831dcf42aa" + integrity sha512-0Jz8MrTkN50B0WKsC/Zvf4vm8/6sZdufZqtDlMz/VLAkp+kbJ9uHs/ydxBFAPUrORXKbcH8kTqa7gShvbGDeHA== dependencies: "@braintree/asset-loader" "0.4.4" @@ -6398,9 +6450,29 @@ braintree-web-drop-in@~1.33.3: braintree-web "3.85.5" promise-polyfill "8.2.3" + +braintree-web@3.42.0: + version "3.42.0" + resolved "https://registry.yarnpkg.com/braintree-web/-/braintree-web-3.42.0.tgz#07d8cb87bdbd89e9629098c9f4065c92e537e34c" + integrity sha512-R6Eyjz1XCftNk5RVVfcDwWtdlXqguLyWtXGXa7BjK6D2r4/PXqUGRzakWcKUtAYOixibjl0JKHLjf9DzxpTH5w== + dependencies: + "@braintree/asset-loader" "0.2.1" + "@braintree/browser-detection" "1.7.0" + "@braintree/class-list" "0.1.0" + "@braintree/iframer" "1.0.3" + "@braintree/sanitize-url" "3.0.0" + "@braintree/wrap-promise" "1.1.1" + card-validator "6.1.0" + credit-card-type "8.0.0" + framebus "3.0.2" + inject-stylesheet "1.0.0" + promise-polyfill "8.1.0" + restricted-input "1.2.7" + + braintree-web@3.85.5: version "3.85.5" - resolved "https://registry.yarnpkg.com/braintree-web/-/braintree-web-3.85.5.tgz#318fad1439e9f95c0819049648567ea7584592a3" + resolved "https://npm-pwa.gomage.dev/braintree-web/-/braintree-web-3.85.5.tgz#318fad1439e9f95c0819049648567ea7584592a3" integrity sha512-fRUwF8as9SJd2PCwmdkwE94nvItGmKHmB1Py4C4RM5G/j1v6rxh67l0pXBW14RtvEbnuQ0eIMeR1JQbu/Y5K2g== dependencies: "@braintree/asset-loader" "0.4.4" @@ -6861,6 +6933,13 @@ card-validator@8.1.1: dependencies: credit-card-type "^9.1.0" +card-validator@8.1.1: + version "8.1.1" + resolved "https://npm-pwa.gomage.dev/card-validator/-/card-validator-8.1.1.tgz#418f5f32435553fb9ca2a02634ad413bb38697a9" + integrity sha512-cN4FsKwoTfTFnqPwVc7TQLSsH/QMDB3n/gWm0XelcApz4sKipnOQ6k33sa3bWsNnnIpgs7eXOF+mUV2UQAX2Sw== + dependencies: + credit-card-type "^9.1.0" + case-sensitive-paths-webpack-plugin@^2.3.0: version "2.4.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" @@ -7697,11 +7776,22 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +credit-card-type@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/credit-card-type/-/credit-card-type-8.0.0.tgz#e65347bcdb979b4deb3107cd43a1cd9da802cd50" + integrity sha512-q3k5fbLJJIkPTBLr03Wo2Ui8cF5vHE8eTT/3K7BUW1ROoyns2vHoglWrzjmU/8JKA0X7JFlYlUVuDRwn7l2ldw== + credit-card-type@9.1.0, credit-card-type@^9.1.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/credit-card-type/-/credit-card-type-9.1.0.tgz#54dd96c93b6579623e9c8656e6798fc2b93f5f05" + resolved "https://npm-pwa.gomage.dev/credit-card-type/-/credit-card-type-9.1.0.tgz#54dd96c93b6579623e9c8656e6798fc2b93f5f05" integrity sha512-CpNFuLxiPFxuZqhSKml3M+t0K/484pMAnfYWH14JoD7OZMnmC0Lmo+P7JX9SobqFpRoo7ifA18kOHdxJywYPEA== +credit-card-type@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/credit-card-type/-/credit-card-type-8.3.0.tgz#f93c187c9362411544158c91d552efcc443aa87a" + integrity sha512-czfZUpQ7W9CDxZL4yFLb1kFtM/q2lTOY975hL2aO+DC8+GRNDVSXVCHXhVFZPxiUKmQCZbFP8vIhxx5TBQaThw== + + cross-fetch@3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" @@ -9922,6 +10012,13 @@ framebus@5.1.2: dependencies: "@braintree/uuid" "^0.1.0" +framebus@5.1.2: + version "5.1.2" + resolved "https://npm-pwa.gomage.dev/framebus/-/framebus-5.1.2.tgz#cb38cf6a282d405411227cfaab4a1095ca9e8e15" + integrity sha512-Z/y6/0gHVx4Td4c0jkDiASBo0pXlJ2fKOP6CynSFnxTzqojG9xOKOFOqoYkcBHlz1vP4t4yHHR6Esp+GsYIh/Q== + dependencies: + "@braintree/uuid" "^0.1.0" + fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -11311,6 +11408,11 @@ inject-stylesheet@5.0.0: resolved "https://registry.yarnpkg.com/inject-stylesheet/-/inject-stylesheet-5.0.0.tgz#bb34acf05ca6ed86e5763d886cd6c9b19f360ab1" integrity sha512-GzncrJP8E/pavMQzoO93CXoYCfTttwVm2cX2TyXJdgtVE0cCvWSFCn1/uMsM6ZkEg7LUsOcKuamcLiGWlv2p9A== +inject-stylesheet@5.0.0: + version "5.0.0" + resolved "https://npm-pwa.gomage.dev/inject-stylesheet/-/inject-stylesheet-5.0.0.tgz#bb34acf05ca6ed86e5763d886cd6c9b19f360ab1" + integrity sha512-GzncrJP8E/pavMQzoO93CXoYCfTttwVm2cX2TyXJdgtVE0cCvWSFCn1/uMsM6ZkEg7LUsOcKuamcLiGWlv2p9A== + inline-style-parser@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" @@ -15500,7 +15602,7 @@ promise-polyfill@8.1.3: promise-polyfill@8.2.3, promise-polyfill@^8.1.3: version "8.2.3" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.2.3.tgz#2edc7e4b81aff781c88a0d577e5fe9da822107c6" + resolved "https://npm-pwa.gomage.dev/promise-polyfill/-/promise-polyfill-8.2.3.tgz#2edc7e4b81aff781c88a0d577e5fe9da822107c6" integrity sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg== promise-polyfill@^7.1.1: @@ -16601,6 +16703,13 @@ restricted-input@3.0.5: dependencies: "@braintree/browser-detection" "^1.12.1" +restricted-input@3.0.5: + version "3.0.5" + resolved "https://npm-pwa.gomage.dev/restricted-input/-/restricted-input-3.0.5.tgz#c43d279df36be0a11085daa3b1ae1d28044c44d8" + integrity sha512-lUuXZ3wUnHURRarj5/0C8vomWIfWJO+p7T6RYwB46v7Oyuyr3yyupU+i7SjqUv4S6RAeAAZt1C/QCLJ9xhQBow== + dependencies: + "@braintree/browser-detection" "^1.12.1" + resumer@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" @@ -19136,8 +19245,10 @@ watchpack@^1.7.4: resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== dependencies: + chokidar "^3.4.1" graceful-fs "^4.1.2" neo-async "^2.5.0" + watchpack-chokidar2 "^2.0.1" optionalDependencies: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.1"