Merge branch 'main' into dependabot/npm_and_yarn/sentry-cf90d29063
|
@ -9,3 +9,14 @@ landing-all-hero-emailform-submit-label = Get free scan
|
|||
|
||||
# This is a label underneath a big number "14" - it's an image that demos Monitor.
|
||||
landing-all-hero-image-chart-label = exposures
|
||||
|
||||
# Value Proposition
|
||||
|
||||
landing-all-value-prop-fix-exposures = We’ll help you fix your exposures
|
||||
landing-all-value-prop-fix-exposures-description = Our mission is to put control of your personal data back in your hands. We’ll help you resolve data breaches and keep your info private — and we’ll <privacy_link>respect your privacy</privacy_link> in the process.
|
||||
landing-all-value-prop-info-at-risk = What info could be at risk?
|
||||
landing-all-value-prop-info-at-risk-description = Data leaks are unfortunately part of our digital lives. Your passwords, contact details, financial information, and other personal info can be exposed, putting you at risk of identity theft.
|
||||
|
||||
# Quote
|
||||
|
||||
landing-all-quote = <data_breaches>Data breaches</data_breaches> happen every 11 minutes, exposing your private information — but don’t worry, we can help.
|
||||
|
|
|
@ -101,3 +101,13 @@ landing-premium-plans-cards-feature-removal-plus = <b>Automatic removal</b> of p
|
|||
landing-premium-plans-cards-feature-alerts = Get alerts when your data has been breached
|
||||
landing-premium-plans-cards-feature-guidance = <b>Guided help</b> to fix high-risk data breaches
|
||||
landing-premium-plans-cards-feature-monitoring = Continuous monitoring
|
||||
|
||||
# Value proposition
|
||||
|
||||
landing-premium-value-prop-fix-exposures-description = We provide steps to follow when you’ve been affected by a data breach and can even remove your data from more than 190 sites trying to sell it — and we <privacy_link>respect your privacy</privacy_link> in the process.
|
||||
landing-premium-value-prop-info-at-risk-description = Details like your <exposure_type_list>home address, family members’ names, financial info</exposure_type_list> and more can be exposed when a website is hacked — or sold on data broker sites to anyone looking for you. Knowing what info is out there is the first step in protecting yourself.
|
||||
landing-premium-value-prop-progress-card-illustration-alt = Progress card delineating exposures that are fixed, in progress or manually fixed
|
||||
|
||||
# Quote
|
||||
|
||||
landing-premium-quote = There’s a $240 billion industry of <data_brokers>data brokers</data_brokers> selling your private information for profit. It’s time to take back your privacy.
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
"version": "1.0.0",
|
||||
"license": "MPL-2.0",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.474.0",
|
||||
"@aws-sdk/lib-storage": "^3.474.0",
|
||||
"@aws-sdk/client-s3": "^3.481.0",
|
||||
"@aws-sdk/lib-storage": "^3.481.0",
|
||||
"@fluent/bundle": "^0.18.0",
|
||||
"@fluent/langneg": "^0.7.0",
|
||||
"@fluent/react": "^0.15.2",
|
||||
|
@ -268,16 +268,16 @@
|
|||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
||||
},
|
||||
"node_modules/@aws-sdk/client-s3": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.474.0.tgz",
|
||||
"integrity": "sha512-uqji9u2yIhFMx6E18+iIlKqimZE1SUEewS78iYYzOKRoQQ+XqFnQXtHTvBGfTExEvdwZUXYg8FqSP2UpQiEf/g==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.481.0.tgz",
|
||||
"integrity": "sha512-W4xpJRTuKKhQf1yCNPoErqAHize140LJf+YU+H60UB6rHy0uI52KJVSdMMKAghwAlAMLwmLWhKeMYWVpBOOtJw==",
|
||||
"dependencies": {
|
||||
"@aws-crypto/sha1-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/client-sts": "3.474.0",
|
||||
"@aws-sdk/core": "3.474.0",
|
||||
"@aws-sdk/credential-provider-node": "3.474.0",
|
||||
"@aws-sdk/client-sts": "3.481.0",
|
||||
"@aws-sdk/core": "3.481.0",
|
||||
"@aws-sdk/credential-provider-node": "3.481.0",
|
||||
"@aws-sdk/middleware-bucket-endpoint": "3.470.0",
|
||||
"@aws-sdk/middleware-expect-continue": "3.468.0",
|
||||
"@aws-sdk/middleware-flexible-checksums": "3.468.0",
|
||||
|
@ -285,18 +285,19 @@
|
|||
"@aws-sdk/middleware-location-constraint": "3.468.0",
|
||||
"@aws-sdk/middleware-logger": "3.468.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.468.0",
|
||||
"@aws-sdk/middleware-sdk-s3": "3.474.0",
|
||||
"@aws-sdk/middleware-sdk-s3": "3.481.0",
|
||||
"@aws-sdk/middleware-signing": "3.468.0",
|
||||
"@aws-sdk/middleware-ssec": "3.468.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.470.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.478.0",
|
||||
"@aws-sdk/region-config-resolver": "3.470.0",
|
||||
"@aws-sdk/signature-v4-multi-region": "3.474.0",
|
||||
"@aws-sdk/signature-v4-multi-region": "3.481.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-endpoints": "3.470.0",
|
||||
"@aws-sdk/util-endpoints": "3.478.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.468.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.470.0",
|
||||
"@aws-sdk/xml-builder": "3.472.0",
|
||||
"@smithy/config-resolver": "^2.0.21",
|
||||
"@smithy/core": "^1.2.1",
|
||||
"@smithy/eventstream-serde-browser": "^2.0.15",
|
||||
"@smithy/eventstream-serde-config-resolver": "^2.0.15",
|
||||
"@smithy/eventstream-serde-node": "^2.0.15",
|
||||
|
@ -308,20 +309,20 @@
|
|||
"@smithy/md5-js": "^2.0.17",
|
||||
"@smithy/middleware-content-length": "^2.0.17",
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-retry": "^2.0.24",
|
||||
"@smithy/middleware-retry": "^2.0.25",
|
||||
"@smithy/middleware-serde": "^2.0.15",
|
||||
"@smithy/middleware-stack": "^2.0.9",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/node-http-handler": "^2.2.1",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/url-parser": "^2.0.15",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.1",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.22",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.29",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.23",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.30",
|
||||
"@smithy/util-endpoints": "^1.0.7",
|
||||
"@smithy/util-retry": "^2.0.8",
|
||||
"@smithy/util-stream": "^2.0.23",
|
||||
|
@ -335,42 +336,43 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/client-sso": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.474.0.tgz",
|
||||
"integrity": "sha512-6toUmQUIHkDM/P2/nyLEO/mcWOIPByTlegqX9VCHhYh9Fs5MDT2nit7I6fZzBjZjB5oVTwKjbzgxae9cE3bhqw==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.481.0.tgz",
|
||||
"integrity": "sha512-d+crFfW8HSDXa68MSfMDX6LH0J22P29SxJW4IGgRZKwHWEaSf4UjOP0mjA4V26R50suAV052/WBY6LjtGsZsHg==",
|
||||
"dependencies": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/core": "3.474.0",
|
||||
"@aws-sdk/core": "3.481.0",
|
||||
"@aws-sdk/middleware-host-header": "3.468.0",
|
||||
"@aws-sdk/middleware-logger": "3.468.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.468.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.470.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.478.0",
|
||||
"@aws-sdk/region-config-resolver": "3.470.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-endpoints": "3.470.0",
|
||||
"@aws-sdk/util-endpoints": "3.478.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.468.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.470.0",
|
||||
"@smithy/config-resolver": "^2.0.21",
|
||||
"@smithy/core": "^1.2.1",
|
||||
"@smithy/fetch-http-handler": "^2.3.1",
|
||||
"@smithy/hash-node": "^2.0.17",
|
||||
"@smithy/invalid-dependency": "^2.0.15",
|
||||
"@smithy/middleware-content-length": "^2.0.17",
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-retry": "^2.0.24",
|
||||
"@smithy/middleware-retry": "^2.0.25",
|
||||
"@smithy/middleware-serde": "^2.0.15",
|
||||
"@smithy/middleware-stack": "^2.0.9",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/node-http-handler": "^2.2.1",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/url-parser": "^2.0.15",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.1",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.22",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.29",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.23",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.30",
|
||||
"@smithy/util-endpoints": "^1.0.7",
|
||||
"@smithy/util-retry": "^2.0.8",
|
||||
"@smithy/util-utf8": "^2.0.2",
|
||||
|
@ -381,44 +383,44 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/client-sts": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.474.0.tgz",
|
||||
"integrity": "sha512-qPPMbrDVAUJgYiFWVewFG7dg0VyMfuGNNK4IC1nZr0eXejUTbdm8cio6IZ8OkWtK+A+L+wx1vX5686WYVgQ0dQ==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.481.0.tgz",
|
||||
"integrity": "sha512-GSnJiceKpwLSEW5q2KRu9zHNJgtYysiy9Xkey0EKLKCdDRdM62yCJEFerAbvRRVJsF2LTSrmBmUl2zWB5RT8mw==",
|
||||
"dependencies": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/core": "3.474.0",
|
||||
"@aws-sdk/credential-provider-node": "3.474.0",
|
||||
"@aws-sdk/core": "3.481.0",
|
||||
"@aws-sdk/credential-provider-node": "3.481.0",
|
||||
"@aws-sdk/middleware-host-header": "3.468.0",
|
||||
"@aws-sdk/middleware-logger": "3.468.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.468.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.470.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.478.0",
|
||||
"@aws-sdk/region-config-resolver": "3.470.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-endpoints": "3.470.0",
|
||||
"@aws-sdk/util-endpoints": "3.478.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.468.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.470.0",
|
||||
"@smithy/config-resolver": "^2.0.21",
|
||||
"@smithy/core": "^1.1.0",
|
||||
"@smithy/core": "^1.2.1",
|
||||
"@smithy/fetch-http-handler": "^2.3.1",
|
||||
"@smithy/hash-node": "^2.0.17",
|
||||
"@smithy/invalid-dependency": "^2.0.15",
|
||||
"@smithy/middleware-content-length": "^2.0.17",
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-retry": "^2.0.24",
|
||||
"@smithy/middleware-retry": "^2.0.25",
|
||||
"@smithy/middleware-serde": "^2.0.15",
|
||||
"@smithy/middleware-stack": "^2.0.9",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/node-http-handler": "^2.2.1",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/url-parser": "^2.0.15",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.1",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.22",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.29",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.23",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.30",
|
||||
"@smithy/util-endpoints": "^1.0.7",
|
||||
"@smithy/util-middleware": "^2.0.8",
|
||||
"@smithy/util-retry": "^2.0.8",
|
||||
|
@ -431,14 +433,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/core": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.474.0.tgz",
|
||||
"integrity": "sha512-eVRdeB+AoTNSzfc4viHfr0jfkHujSlf4ToExJtTuxS1wlgmIyyxRNrVKxbf0K78YK/TXRsRlJPoS5QCD5h1S2w==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.481.0.tgz",
|
||||
"integrity": "sha512-UeyAc2FnWQDts81vPVBWKEj0WagYK4SVAgNfGcg6zCzzqsUG4unr4NPKQoca2L+XOU55yMCy+5l2K6R3YsFGKg==",
|
||||
"dependencies": {
|
||||
"@smithy/core": "^1.1.0",
|
||||
"@smithy/core": "^1.2.1",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/signature-v4": "^2.0.0",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
|
@ -461,13 +463,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-provider-ini": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.474.0.tgz",
|
||||
"integrity": "sha512-3Y2fHI4ZCNjdOO47Vh/xBgLXOrKm3KwBkYkBKKT2g02FUGNT8NLjJg8WBo3D4RQX2h34qx4mtW5nTY6YcGP80Q==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.481.0.tgz",
|
||||
"integrity": "sha512-QXMlILewLV/yQHkyjXsu7PhvmTZIDAaQ4uAfhjnqbH1B8mErRpZKkzHWwp4yeZdTcHfenTVqoTnx9WDa+SnK/Q==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/credential-provider-env": "3.468.0",
|
||||
"@aws-sdk/credential-provider-process": "3.468.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.474.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.481.0",
|
||||
"@aws-sdk/credential-provider-web-identity": "3.468.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@smithy/credential-provider-imds": "^2.0.0",
|
||||
|
@ -481,14 +483,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-provider-node": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.474.0.tgz",
|
||||
"integrity": "sha512-3OVVVGnb8Ru5hWeeHkg76YZT5mrufweIiWr6ge5zn7FYxc7WkyqIJ0XehqUqG5VQfaYhqh7uq/zmk8OE2B04lQ==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.481.0.tgz",
|
||||
"integrity": "sha512-148Ztn2FjlS3VdGWJnAMjuXiZ55/tD823I/koawgp80LnDqMiKfmSGAioXIikqaBHl40K7ZvtBMqP/n/6GM41A==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/credential-provider-env": "3.468.0",
|
||||
"@aws-sdk/credential-provider-ini": "3.474.0",
|
||||
"@aws-sdk/credential-provider-ini": "3.481.0",
|
||||
"@aws-sdk/credential-provider-process": "3.468.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.474.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.481.0",
|
||||
"@aws-sdk/credential-provider-web-identity": "3.468.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@smithy/credential-provider-imds": "^2.0.0",
|
||||
|
@ -517,12 +519,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-provider-sso": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.474.0.tgz",
|
||||
"integrity": "sha512-ik4rzhQtcRLSHB/MLQfi/dSpILxPd3zITb79DIEnqT3gpZRNjoARkZ3Hi68pujkU2530NYf8NcFwLCWoV1hS7Q==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.481.0.tgz",
|
||||
"integrity": "sha512-3MrSIQPQDOxhZDppC2XpOLVfuUm7iqRfTrwjSYGeWc//pUZtUI7nMXYjEDL+li5gvasw1lYfYX3VHNdwNnvyOQ==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-sso": "3.474.0",
|
||||
"@aws-sdk/token-providers": "3.470.0",
|
||||
"@aws-sdk/client-sso": "3.481.0",
|
||||
"@aws-sdk/token-providers": "3.481.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/shared-ini-file-loader": "^2.0.6",
|
||||
|
@ -548,13 +550,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/lib-storage": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.474.0.tgz",
|
||||
"integrity": "sha512-cTfoBZmzC6OyXFzBOlzo3nFK10oTY/JJiXIzHLHkU5Oy9z4V3CvQlVqkFjbkguG4plYvPTT+2xPeNi45NYagqQ==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.481.0.tgz",
|
||||
"integrity": "sha512-8atrewlLqMi9jPS8yehthh0BnP4eKzBsy4VPgIDj/YCMDtZSIS4BLDFNLeFRyG8vPe2k7gLz3AgeaoI9ff94+Q==",
|
||||
"dependencies": {
|
||||
"@smithy/abort-controller": "^2.0.1",
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"buffer": "5.6.0",
|
||||
"events": "3.3.0",
|
||||
"stream-browserify": "3.0.0",
|
||||
|
@ -671,16 +673,16 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/middleware-sdk-s3": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.474.0.tgz",
|
||||
"integrity": "sha512-62aAo/8u5daIabeJ+gseYeHeShe9eYH6mH+kfWmLsHybXCCv1EaD/ZkdXWNhL0HZ3bUI1z1SF1p8jjTAWALnwA==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.481.0.tgz",
|
||||
"integrity": "sha512-LOFXtxZOnU75vB5rL5/rOjSrYrbk/kqJGbnQJywHQosAiPKSVw9BR/6Q6tQIDDvtMYsVqMB7Db5SzA64hr80Rg==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-arn-parser": "3.465.0",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/signature-v4": "^2.0.0",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/util-config-provider": "^2.0.0",
|
||||
"tslib": "^2.5.0"
|
||||
|
@ -720,12 +722,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/middleware-user-agent": {
|
||||
"version": "3.470.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.470.0.tgz",
|
||||
"integrity": "sha512-s0YRGgf4fT5KwwTefpoNUQfB5JghzXyvmPfY1QuFEMeVQNxv0OPuydzo3rY2oXPkZjkulKDtpm5jzIHwut75hA==",
|
||||
"version": "3.478.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.478.0.tgz",
|
||||
"integrity": "sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-endpoints": "3.470.0",
|
||||
"@aws-sdk/util-endpoints": "3.478.0",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"tslib": "^2.5.0"
|
||||
|
@ -750,11 +752,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/signature-v4-multi-region": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.474.0.tgz",
|
||||
"integrity": "sha512-93OWRQgTJZASXLrlUNX7mmXknNkYxFYldRLARmYQccONmnIqgYQW0lQj8BFwqkHJTzSMik3/UsU0SHKwZ9ynYA==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.481.0.tgz",
|
||||
"integrity": "sha512-bNQ+5Gb3c6a+AiR4D9o0olPjPkGal8Dqvq4Mt0vWQ+ZOzzKEZZDSjpCMUdkhm3ezYIFr9rnCmQOpTtyf3/KDVg==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/middleware-sdk-s3": "3.474.0",
|
||||
"@aws-sdk/middleware-sdk-s3": "3.481.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/signature-v4": "^2.0.0",
|
||||
|
@ -766,19 +768,19 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/token-providers": {
|
||||
"version": "3.470.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.470.0.tgz",
|
||||
"integrity": "sha512-rzxnJxEUJiV69Cxsf0AHXTqJqTACITwcSH/PL4lWP4uvtzdrzSi3KA3u2aWHWpOcdE6+JFvdICscsbBSo3/TOg==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.481.0.tgz",
|
||||
"integrity": "sha512-G4ObHF2A/FlvQG7Lb/2sjuklG89IiH3TI1EiNZSzgu6TvY904Js72Slldls4VeJLY2zAnZgyZ9903pBMkDrcxQ==",
|
||||
"dependencies": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/middleware-host-header": "3.468.0",
|
||||
"@aws-sdk/middleware-logger": "3.468.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.468.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.470.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.478.0",
|
||||
"@aws-sdk/region-config-resolver": "3.470.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-endpoints": "3.470.0",
|
||||
"@aws-sdk/util-endpoints": "3.478.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.468.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.470.0",
|
||||
"@smithy/config-resolver": "^2.0.21",
|
||||
|
@ -787,7 +789,7 @@
|
|||
"@smithy/invalid-dependency": "^2.0.15",
|
||||
"@smithy/middleware-content-length": "^2.0.17",
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-retry": "^2.0.24",
|
||||
"@smithy/middleware-retry": "^2.0.25",
|
||||
"@smithy/middleware-serde": "^2.0.15",
|
||||
"@smithy/middleware-stack": "^2.0.9",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
|
@ -795,14 +797,14 @@
|
|||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/shared-ini-file-loader": "^2.0.6",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/url-parser": "^2.0.15",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.1",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.22",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.29",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.23",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.30",
|
||||
"@smithy/util-endpoints": "^1.0.7",
|
||||
"@smithy/util-retry": "^2.0.8",
|
||||
"@smithy/util-utf8": "^2.0.2",
|
||||
|
@ -836,9 +838,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/util-endpoints": {
|
||||
"version": "3.470.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.470.0.tgz",
|
||||
"integrity": "sha512-6N6VvPCmu+89p5Ez/+gLf+X620iQ9JpIs8p8ECZiCodirzFOe8NC1O2S7eov7YiG9IHSuodqn/0qNq+v+oLe0A==",
|
||||
"version": "3.478.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.478.0.tgz",
|
||||
"integrity": "sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@smithy/util-endpoints": "^1.0.7",
|
||||
|
@ -7568,16 +7570,17 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@smithy/core": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.1.0.tgz",
|
||||
"integrity": "sha512-k1zaT5S4K0bG67Q5TmPZ6PdWNQBTMQErChuDvTi+NTx21kKDt+/4YRidsK6nDbHizN6fn1bafUxrougZdKrpxA==",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.2.1.tgz",
|
||||
"integrity": "sha512-f6cwmMuHo7RIw/c184NBd2rGeGvGIX6p55HSrG5jfR3qkNYo80PHRfhzkJMq1+mv1ZjI5p8NhenWMMkIRJR4tw==",
|
||||
"dependencies": {
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-retry": "^2.0.24",
|
||||
"@smithy/middleware-retry": "^2.0.25",
|
||||
"@smithy/middleware-serde": "^2.0.15",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/util-middleware": "^2.0.8",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -7772,14 +7775,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@smithy/middleware-retry": {
|
||||
"version": "2.0.24",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.24.tgz",
|
||||
"integrity": "sha512-q2SvHTYu96N7lYrn3VSuX3vRpxXHR/Cig6MJpGWxd0BWodUQUWlKvXpWQZA+lTaFJU7tUvpKhRd4p4MU3PbeJg==",
|
||||
"version": "2.0.25",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.25.tgz",
|
||||
"integrity": "sha512-FXhafCPvx/9L9OgHJ3cdo/pD1f7ngC7DKsjDV2J7k6LO/Yl69POoBLk4sI1OZPUGc4dfxriENlTma9Nj1hI+IQ==",
|
||||
"dependencies": {
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/service-error-classification": "^2.0.8",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/util-middleware": "^2.0.8",
|
||||
"@smithy/util-retry": "^2.0.8",
|
||||
|
@ -7942,11 +7945,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@smithy/smithy-client": {
|
||||
"version": "2.1.18",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.1.18.tgz",
|
||||
"integrity": "sha512-7FqdbaJiVaHJDD9IfDhmzhSDbpjyx+ZsfdYuOpDJF09rl8qlIAIlZNoSaflKrQ3cEXZN2YxGPaNWGhbYimyIRQ==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.2.0.tgz",
|
||||
"integrity": "sha512-C/bkNue5H5Obgl83SnlBt4v6VM68CqIjIELh3vAabud87xFYznLNKtj6Qb69Z+QOnLp9T+We++sEem/f2AHE+Q==",
|
||||
"dependencies": {
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-stack": "^2.0.9",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/util-stream": "^2.0.23",
|
||||
"tslib": "^2.5.0"
|
||||
|
@ -8031,12 +8036,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@smithy/util-defaults-mode-browser": {
|
||||
"version": "2.0.22",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.22.tgz",
|
||||
"integrity": "sha512-qcF20IHHH96FlktvBRICDXDhLPtpVmtksHmqNGtotb9B0DYWXsC6jWXrkhrrwF7tH26nj+npVTqh9isiFV1gdA==",
|
||||
"version": "2.0.23",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.23.tgz",
|
||||
"integrity": "sha512-2u+7t7Wgz1jlfsf6il3pz6DIzyJHS3qrnNnmATICm00pQeqp2D4kUOYauOgKGIeKgVpwzzq8+hFQe749r3xR5w==",
|
||||
"dependencies": {
|
||||
"@smithy/property-provider": "^2.0.16",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"bowser": "^2.11.0",
|
||||
"tslib": "^2.5.0"
|
||||
|
@ -8046,15 +8051,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@smithy/util-defaults-mode-node": {
|
||||
"version": "2.0.29",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.29.tgz",
|
||||
"integrity": "sha512-+uG/15VoUh6JV2fdY9CM++vnSuMQ1VKZ6BdnkUM7R++C/vLjnlg+ToiSR1FqKZbMmKBXmsr8c/TsDWMAYvxbxQ==",
|
||||
"version": "2.0.30",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.30.tgz",
|
||||
"integrity": "sha512-nmcmEyRlClNprp7mBnUzfmW6HrKQK+yvl+cyXCRUoQSxRvZuLDrztV+JD+zr3qV/oirEc4Q0QNIrrhTDCE6JeA==",
|
||||
"dependencies": {
|
||||
"@smithy/config-resolver": "^2.0.21",
|
||||
"@smithy/credential-provider-imds": "^2.1.4",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/property-provider": "^2.0.16",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
|
@ -28398,16 +28403,16 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/client-s3": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.474.0.tgz",
|
||||
"integrity": "sha512-uqji9u2yIhFMx6E18+iIlKqimZE1SUEewS78iYYzOKRoQQ+XqFnQXtHTvBGfTExEvdwZUXYg8FqSP2UpQiEf/g==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.481.0.tgz",
|
||||
"integrity": "sha512-W4xpJRTuKKhQf1yCNPoErqAHize140LJf+YU+H60UB6rHy0uI52KJVSdMMKAghwAlAMLwmLWhKeMYWVpBOOtJw==",
|
||||
"requires": {
|
||||
"@aws-crypto/sha1-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/client-sts": "3.474.0",
|
||||
"@aws-sdk/core": "3.474.0",
|
||||
"@aws-sdk/credential-provider-node": "3.474.0",
|
||||
"@aws-sdk/client-sts": "3.481.0",
|
||||
"@aws-sdk/core": "3.481.0",
|
||||
"@aws-sdk/credential-provider-node": "3.481.0",
|
||||
"@aws-sdk/middleware-bucket-endpoint": "3.470.0",
|
||||
"@aws-sdk/middleware-expect-continue": "3.468.0",
|
||||
"@aws-sdk/middleware-flexible-checksums": "3.468.0",
|
||||
|
@ -28415,18 +28420,19 @@
|
|||
"@aws-sdk/middleware-location-constraint": "3.468.0",
|
||||
"@aws-sdk/middleware-logger": "3.468.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.468.0",
|
||||
"@aws-sdk/middleware-sdk-s3": "3.474.0",
|
||||
"@aws-sdk/middleware-sdk-s3": "3.481.0",
|
||||
"@aws-sdk/middleware-signing": "3.468.0",
|
||||
"@aws-sdk/middleware-ssec": "3.468.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.470.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.478.0",
|
||||
"@aws-sdk/region-config-resolver": "3.470.0",
|
||||
"@aws-sdk/signature-v4-multi-region": "3.474.0",
|
||||
"@aws-sdk/signature-v4-multi-region": "3.481.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-endpoints": "3.470.0",
|
||||
"@aws-sdk/util-endpoints": "3.478.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.468.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.470.0",
|
||||
"@aws-sdk/xml-builder": "3.472.0",
|
||||
"@smithy/config-resolver": "^2.0.21",
|
||||
"@smithy/core": "^1.2.1",
|
||||
"@smithy/eventstream-serde-browser": "^2.0.15",
|
||||
"@smithy/eventstream-serde-config-resolver": "^2.0.15",
|
||||
"@smithy/eventstream-serde-node": "^2.0.15",
|
||||
|
@ -28438,20 +28444,20 @@
|
|||
"@smithy/md5-js": "^2.0.17",
|
||||
"@smithy/middleware-content-length": "^2.0.17",
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-retry": "^2.0.24",
|
||||
"@smithy/middleware-retry": "^2.0.25",
|
||||
"@smithy/middleware-serde": "^2.0.15",
|
||||
"@smithy/middleware-stack": "^2.0.9",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/node-http-handler": "^2.2.1",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/url-parser": "^2.0.15",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.1",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.22",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.29",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.23",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.30",
|
||||
"@smithy/util-endpoints": "^1.0.7",
|
||||
"@smithy/util-retry": "^2.0.8",
|
||||
"@smithy/util-stream": "^2.0.23",
|
||||
|
@ -28462,42 +28468,43 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/client-sso": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.474.0.tgz",
|
||||
"integrity": "sha512-6toUmQUIHkDM/P2/nyLEO/mcWOIPByTlegqX9VCHhYh9Fs5MDT2nit7I6fZzBjZjB5oVTwKjbzgxae9cE3bhqw==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.481.0.tgz",
|
||||
"integrity": "sha512-d+crFfW8HSDXa68MSfMDX6LH0J22P29SxJW4IGgRZKwHWEaSf4UjOP0mjA4V26R50suAV052/WBY6LjtGsZsHg==",
|
||||
"requires": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/core": "3.474.0",
|
||||
"@aws-sdk/core": "3.481.0",
|
||||
"@aws-sdk/middleware-host-header": "3.468.0",
|
||||
"@aws-sdk/middleware-logger": "3.468.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.468.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.470.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.478.0",
|
||||
"@aws-sdk/region-config-resolver": "3.470.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-endpoints": "3.470.0",
|
||||
"@aws-sdk/util-endpoints": "3.478.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.468.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.470.0",
|
||||
"@smithy/config-resolver": "^2.0.21",
|
||||
"@smithy/core": "^1.2.1",
|
||||
"@smithy/fetch-http-handler": "^2.3.1",
|
||||
"@smithy/hash-node": "^2.0.17",
|
||||
"@smithy/invalid-dependency": "^2.0.15",
|
||||
"@smithy/middleware-content-length": "^2.0.17",
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-retry": "^2.0.24",
|
||||
"@smithy/middleware-retry": "^2.0.25",
|
||||
"@smithy/middleware-serde": "^2.0.15",
|
||||
"@smithy/middleware-stack": "^2.0.9",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/node-http-handler": "^2.2.1",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/url-parser": "^2.0.15",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.1",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.22",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.29",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.23",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.30",
|
||||
"@smithy/util-endpoints": "^1.0.7",
|
||||
"@smithy/util-retry": "^2.0.8",
|
||||
"@smithy/util-utf8": "^2.0.2",
|
||||
|
@ -28505,44 +28512,44 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/client-sts": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.474.0.tgz",
|
||||
"integrity": "sha512-qPPMbrDVAUJgYiFWVewFG7dg0VyMfuGNNK4IC1nZr0eXejUTbdm8cio6IZ8OkWtK+A+L+wx1vX5686WYVgQ0dQ==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.481.0.tgz",
|
||||
"integrity": "sha512-GSnJiceKpwLSEW5q2KRu9zHNJgtYysiy9Xkey0EKLKCdDRdM62yCJEFerAbvRRVJsF2LTSrmBmUl2zWB5RT8mw==",
|
||||
"requires": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/core": "3.474.0",
|
||||
"@aws-sdk/credential-provider-node": "3.474.0",
|
||||
"@aws-sdk/core": "3.481.0",
|
||||
"@aws-sdk/credential-provider-node": "3.481.0",
|
||||
"@aws-sdk/middleware-host-header": "3.468.0",
|
||||
"@aws-sdk/middleware-logger": "3.468.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.468.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.470.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.478.0",
|
||||
"@aws-sdk/region-config-resolver": "3.470.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-endpoints": "3.470.0",
|
||||
"@aws-sdk/util-endpoints": "3.478.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.468.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.470.0",
|
||||
"@smithy/config-resolver": "^2.0.21",
|
||||
"@smithy/core": "^1.1.0",
|
||||
"@smithy/core": "^1.2.1",
|
||||
"@smithy/fetch-http-handler": "^2.3.1",
|
||||
"@smithy/hash-node": "^2.0.17",
|
||||
"@smithy/invalid-dependency": "^2.0.15",
|
||||
"@smithy/middleware-content-length": "^2.0.17",
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-retry": "^2.0.24",
|
||||
"@smithy/middleware-retry": "^2.0.25",
|
||||
"@smithy/middleware-serde": "^2.0.15",
|
||||
"@smithy/middleware-stack": "^2.0.9",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/node-http-handler": "^2.2.1",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/url-parser": "^2.0.15",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.1",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.22",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.29",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.23",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.30",
|
||||
"@smithy/util-endpoints": "^1.0.7",
|
||||
"@smithy/util-middleware": "^2.0.8",
|
||||
"@smithy/util-retry": "^2.0.8",
|
||||
|
@ -28552,14 +28559,14 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/core": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.474.0.tgz",
|
||||
"integrity": "sha512-eVRdeB+AoTNSzfc4viHfr0jfkHujSlf4ToExJtTuxS1wlgmIyyxRNrVKxbf0K78YK/TXRsRlJPoS5QCD5h1S2w==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.481.0.tgz",
|
||||
"integrity": "sha512-UeyAc2FnWQDts81vPVBWKEj0WagYK4SVAgNfGcg6zCzzqsUG4unr4NPKQoca2L+XOU55yMCy+5l2K6R3YsFGKg==",
|
||||
"requires": {
|
||||
"@smithy/core": "^1.1.0",
|
||||
"@smithy/core": "^1.2.1",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/signature-v4": "^2.0.0",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"tslib": "^2.5.0"
|
||||
}
|
||||
|
@ -28576,13 +28583,13 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/credential-provider-ini": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.474.0.tgz",
|
||||
"integrity": "sha512-3Y2fHI4ZCNjdOO47Vh/xBgLXOrKm3KwBkYkBKKT2g02FUGNT8NLjJg8WBo3D4RQX2h34qx4mtW5nTY6YcGP80Q==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.481.0.tgz",
|
||||
"integrity": "sha512-QXMlILewLV/yQHkyjXsu7PhvmTZIDAaQ4uAfhjnqbH1B8mErRpZKkzHWwp4yeZdTcHfenTVqoTnx9WDa+SnK/Q==",
|
||||
"requires": {
|
||||
"@aws-sdk/credential-provider-env": "3.468.0",
|
||||
"@aws-sdk/credential-provider-process": "3.468.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.474.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.481.0",
|
||||
"@aws-sdk/credential-provider-web-identity": "3.468.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@smithy/credential-provider-imds": "^2.0.0",
|
||||
|
@ -28593,14 +28600,14 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/credential-provider-node": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.474.0.tgz",
|
||||
"integrity": "sha512-3OVVVGnb8Ru5hWeeHkg76YZT5mrufweIiWr6ge5zn7FYxc7WkyqIJ0XehqUqG5VQfaYhqh7uq/zmk8OE2B04lQ==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.481.0.tgz",
|
||||
"integrity": "sha512-148Ztn2FjlS3VdGWJnAMjuXiZ55/tD823I/koawgp80LnDqMiKfmSGAioXIikqaBHl40K7ZvtBMqP/n/6GM41A==",
|
||||
"requires": {
|
||||
"@aws-sdk/credential-provider-env": "3.468.0",
|
||||
"@aws-sdk/credential-provider-ini": "3.474.0",
|
||||
"@aws-sdk/credential-provider-ini": "3.481.0",
|
||||
"@aws-sdk/credential-provider-process": "3.468.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.474.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.481.0",
|
||||
"@aws-sdk/credential-provider-web-identity": "3.468.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@smithy/credential-provider-imds": "^2.0.0",
|
||||
|
@ -28623,12 +28630,12 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/credential-provider-sso": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.474.0.tgz",
|
||||
"integrity": "sha512-ik4rzhQtcRLSHB/MLQfi/dSpILxPd3zITb79DIEnqT3gpZRNjoARkZ3Hi68pujkU2530NYf8NcFwLCWoV1hS7Q==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.481.0.tgz",
|
||||
"integrity": "sha512-3MrSIQPQDOxhZDppC2XpOLVfuUm7iqRfTrwjSYGeWc//pUZtUI7nMXYjEDL+li5gvasw1lYfYX3VHNdwNnvyOQ==",
|
||||
"requires": {
|
||||
"@aws-sdk/client-sso": "3.474.0",
|
||||
"@aws-sdk/token-providers": "3.470.0",
|
||||
"@aws-sdk/client-sso": "3.481.0",
|
||||
"@aws-sdk/token-providers": "3.481.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/shared-ini-file-loader": "^2.0.6",
|
||||
|
@ -28648,13 +28655,13 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/lib-storage": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.474.0.tgz",
|
||||
"integrity": "sha512-cTfoBZmzC6OyXFzBOlzo3nFK10oTY/JJiXIzHLHkU5Oy9z4V3CvQlVqkFjbkguG4plYvPTT+2xPeNi45NYagqQ==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.481.0.tgz",
|
||||
"integrity": "sha512-8atrewlLqMi9jPS8yehthh0BnP4eKzBsy4VPgIDj/YCMDtZSIS4BLDFNLeFRyG8vPe2k7gLz3AgeaoI9ff94+Q==",
|
||||
"requires": {
|
||||
"@smithy/abort-controller": "^2.0.1",
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"buffer": "5.6.0",
|
||||
"events": "3.3.0",
|
||||
"stream-browserify": "3.0.0",
|
||||
|
@ -28744,16 +28751,16 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/middleware-sdk-s3": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.474.0.tgz",
|
||||
"integrity": "sha512-62aAo/8u5daIabeJ+gseYeHeShe9eYH6mH+kfWmLsHybXCCv1EaD/ZkdXWNhL0HZ3bUI1z1SF1p8jjTAWALnwA==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.481.0.tgz",
|
||||
"integrity": "sha512-LOFXtxZOnU75vB5rL5/rOjSrYrbk/kqJGbnQJywHQosAiPKSVw9BR/6Q6tQIDDvtMYsVqMB7Db5SzA64hr80Rg==",
|
||||
"requires": {
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-arn-parser": "3.465.0",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/signature-v4": "^2.0.0",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/util-config-provider": "^2.0.0",
|
||||
"tslib": "^2.5.0"
|
||||
|
@ -28784,12 +28791,12 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/middleware-user-agent": {
|
||||
"version": "3.470.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.470.0.tgz",
|
||||
"integrity": "sha512-s0YRGgf4fT5KwwTefpoNUQfB5JghzXyvmPfY1QuFEMeVQNxv0OPuydzo3rY2oXPkZjkulKDtpm5jzIHwut75hA==",
|
||||
"version": "3.478.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.478.0.tgz",
|
||||
"integrity": "sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw==",
|
||||
"requires": {
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-endpoints": "3.470.0",
|
||||
"@aws-sdk/util-endpoints": "3.478.0",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"tslib": "^2.5.0"
|
||||
|
@ -28808,11 +28815,11 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/signature-v4-multi-region": {
|
||||
"version": "3.474.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.474.0.tgz",
|
||||
"integrity": "sha512-93OWRQgTJZASXLrlUNX7mmXknNkYxFYldRLARmYQccONmnIqgYQW0lQj8BFwqkHJTzSMik3/UsU0SHKwZ9ynYA==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.481.0.tgz",
|
||||
"integrity": "sha512-bNQ+5Gb3c6a+AiR4D9o0olPjPkGal8Dqvq4Mt0vWQ+ZOzzKEZZDSjpCMUdkhm3ezYIFr9rnCmQOpTtyf3/KDVg==",
|
||||
"requires": {
|
||||
"@aws-sdk/middleware-sdk-s3": "3.474.0",
|
||||
"@aws-sdk/middleware-sdk-s3": "3.481.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/signature-v4": "^2.0.0",
|
||||
|
@ -28821,19 +28828,19 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/token-providers": {
|
||||
"version": "3.470.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.470.0.tgz",
|
||||
"integrity": "sha512-rzxnJxEUJiV69Cxsf0AHXTqJqTACITwcSH/PL4lWP4uvtzdrzSi3KA3u2aWHWpOcdE6+JFvdICscsbBSo3/TOg==",
|
||||
"version": "3.481.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.481.0.tgz",
|
||||
"integrity": "sha512-G4ObHF2A/FlvQG7Lb/2sjuklG89IiH3TI1EiNZSzgu6TvY904Js72Slldls4VeJLY2zAnZgyZ9903pBMkDrcxQ==",
|
||||
"requires": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/middleware-host-header": "3.468.0",
|
||||
"@aws-sdk/middleware-logger": "3.468.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.468.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.470.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.478.0",
|
||||
"@aws-sdk/region-config-resolver": "3.470.0",
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@aws-sdk/util-endpoints": "3.470.0",
|
||||
"@aws-sdk/util-endpoints": "3.478.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.468.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.470.0",
|
||||
"@smithy/config-resolver": "^2.0.21",
|
||||
|
@ -28842,7 +28849,7 @@
|
|||
"@smithy/invalid-dependency": "^2.0.15",
|
||||
"@smithy/middleware-content-length": "^2.0.17",
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-retry": "^2.0.24",
|
||||
"@smithy/middleware-retry": "^2.0.25",
|
||||
"@smithy/middleware-serde": "^2.0.15",
|
||||
"@smithy/middleware-stack": "^2.0.9",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
|
@ -28850,14 +28857,14 @@
|
|||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/shared-ini-file-loader": "^2.0.6",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/url-parser": "^2.0.15",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.1",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.22",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.29",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.23",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.30",
|
||||
"@smithy/util-endpoints": "^1.0.7",
|
||||
"@smithy/util-retry": "^2.0.8",
|
||||
"@smithy/util-utf8": "^2.0.2",
|
||||
|
@ -28882,9 +28889,9 @@
|
|||
}
|
||||
},
|
||||
"@aws-sdk/util-endpoints": {
|
||||
"version": "3.470.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.470.0.tgz",
|
||||
"integrity": "sha512-6N6VvPCmu+89p5Ez/+gLf+X620iQ9JpIs8p8ECZiCodirzFOe8NC1O2S7eov7YiG9IHSuodqn/0qNq+v+oLe0A==",
|
||||
"version": "3.478.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.478.0.tgz",
|
||||
"integrity": "sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g==",
|
||||
"requires": {
|
||||
"@aws-sdk/types": "3.468.0",
|
||||
"@smithy/util-endpoints": "^1.0.7",
|
||||
|
@ -33553,16 +33560,17 @@
|
|||
}
|
||||
},
|
||||
"@smithy/core": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.1.0.tgz",
|
||||
"integrity": "sha512-k1zaT5S4K0bG67Q5TmPZ6PdWNQBTMQErChuDvTi+NTx21kKDt+/4YRidsK6nDbHizN6fn1bafUxrougZdKrpxA==",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.2.1.tgz",
|
||||
"integrity": "sha512-f6cwmMuHo7RIw/c184NBd2rGeGvGIX6p55HSrG5jfR3qkNYo80PHRfhzkJMq1+mv1ZjI5p8NhenWMMkIRJR4tw==",
|
||||
"requires": {
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-retry": "^2.0.24",
|
||||
"@smithy/middleware-retry": "^2.0.25",
|
||||
"@smithy/middleware-serde": "^2.0.15",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/util-middleware": "^2.0.8",
|
||||
"tslib": "^2.5.0"
|
||||
}
|
||||
},
|
||||
|
@ -33724,14 +33732,14 @@
|
|||
}
|
||||
},
|
||||
"@smithy/middleware-retry": {
|
||||
"version": "2.0.24",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.24.tgz",
|
||||
"integrity": "sha512-q2SvHTYu96N7lYrn3VSuX3vRpxXHR/Cig6MJpGWxd0BWodUQUWlKvXpWQZA+lTaFJU7tUvpKhRd4p4MU3PbeJg==",
|
||||
"version": "2.0.25",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.25.tgz",
|
||||
"integrity": "sha512-FXhafCPvx/9L9OgHJ3cdo/pD1f7ngC7DKsjDV2J7k6LO/Yl69POoBLk4sI1OZPUGc4dfxriENlTma9Nj1hI+IQ==",
|
||||
"requires": {
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/service-error-classification": "^2.0.8",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/util-middleware": "^2.0.8",
|
||||
"@smithy/util-retry": "^2.0.8",
|
||||
|
@ -33857,11 +33865,13 @@
|
|||
}
|
||||
},
|
||||
"@smithy/smithy-client": {
|
||||
"version": "2.1.18",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.1.18.tgz",
|
||||
"integrity": "sha512-7FqdbaJiVaHJDD9IfDhmzhSDbpjyx+ZsfdYuOpDJF09rl8qlIAIlZNoSaflKrQ3cEXZN2YxGPaNWGhbYimyIRQ==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.2.0.tgz",
|
||||
"integrity": "sha512-C/bkNue5H5Obgl83SnlBt4v6VM68CqIjIELh3vAabud87xFYznLNKtj6Qb69Z+QOnLp9T+We++sEem/f2AHE+Q==",
|
||||
"requires": {
|
||||
"@smithy/middleware-endpoint": "^2.2.3",
|
||||
"@smithy/middleware-stack": "^2.0.9",
|
||||
"@smithy/protocol-http": "^3.0.11",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"@smithy/util-stream": "^2.0.23",
|
||||
"tslib": "^2.5.0"
|
||||
|
@ -33928,27 +33938,27 @@
|
|||
}
|
||||
},
|
||||
"@smithy/util-defaults-mode-browser": {
|
||||
"version": "2.0.22",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.22.tgz",
|
||||
"integrity": "sha512-qcF20IHHH96FlktvBRICDXDhLPtpVmtksHmqNGtotb9B0DYWXsC6jWXrkhrrwF7tH26nj+npVTqh9isiFV1gdA==",
|
||||
"version": "2.0.23",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.23.tgz",
|
||||
"integrity": "sha512-2u+7t7Wgz1jlfsf6il3pz6DIzyJHS3qrnNnmATICm00pQeqp2D4kUOYauOgKGIeKgVpwzzq8+hFQe749r3xR5w==",
|
||||
"requires": {
|
||||
"@smithy/property-provider": "^2.0.16",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"bowser": "^2.11.0",
|
||||
"tslib": "^2.5.0"
|
||||
}
|
||||
},
|
||||
"@smithy/util-defaults-mode-node": {
|
||||
"version": "2.0.29",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.29.tgz",
|
||||
"integrity": "sha512-+uG/15VoUh6JV2fdY9CM++vnSuMQ1VKZ6BdnkUM7R++C/vLjnlg+ToiSR1FqKZbMmKBXmsr8c/TsDWMAYvxbxQ==",
|
||||
"version": "2.0.30",
|
||||
"resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.30.tgz",
|
||||
"integrity": "sha512-nmcmEyRlClNprp7mBnUzfmW6HrKQK+yvl+cyXCRUoQSxRvZuLDrztV+JD+zr3qV/oirEc4Q0QNIrrhTDCE6JeA==",
|
||||
"requires": {
|
||||
"@smithy/config-resolver": "^2.0.21",
|
||||
"@smithy/credential-provider-imds": "^2.1.4",
|
||||
"@smithy/node-config-provider": "^2.1.8",
|
||||
"@smithy/property-provider": "^2.0.16",
|
||||
"@smithy/smithy-client": "^2.1.18",
|
||||
"@smithy/smithy-client": "^2.2.0",
|
||||
"@smithy/types": "^2.7.0",
|
||||
"tslib": "^2.5.0"
|
||||
}
|
||||
|
|
|
@ -48,8 +48,8 @@
|
|||
"npm": "10.2.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.474.0",
|
||||
"@aws-sdk/lib-storage": "^3.474.0",
|
||||
"@aws-sdk/client-s3": "^3.481.0",
|
||||
"@aws-sdk/lib-storage": "^3.481.0",
|
||||
"@fluent/bundle": "^0.18.0",
|
||||
"@fluent/langneg": "^0.7.0",
|
||||
"@fluent/react": "^0.15.2",
|
||||
|
|
|
@ -23,7 +23,7 @@ export type Props = {
|
|||
|
||||
export function StartFreeScanView(props: Props) {
|
||||
const l10n = useL10n();
|
||||
const record = useTelemetry();
|
||||
const recordTelemetry = useTelemetry();
|
||||
|
||||
return (
|
||||
<FixView
|
||||
|
@ -59,7 +59,7 @@ export function StartFreeScanView(props: Props) {
|
|||
href={process.env.NEXT_PUBLIC_HOW_IT_WORKS_SUMO_URL}
|
||||
target="_blank"
|
||||
onClick={() => {
|
||||
record("link", "click", {
|
||||
recordTelemetry("link", "click", {
|
||||
link_id: "returning_user_info_scan_learn_more",
|
||||
});
|
||||
}}
|
||||
|
@ -75,7 +75,7 @@ export function StartFreeScanView(props: Props) {
|
|||
variant="primary"
|
||||
href="/redesign/user/welcome/free-scan?referrer=fix"
|
||||
onPress={() => {
|
||||
record("ctaButton", "click", {
|
||||
recordTelemetry("ctaButton", "click", {
|
||||
button_id: "intent_to_start_free_scan",
|
||||
});
|
||||
}}
|
||||
|
@ -88,7 +88,7 @@ export function StartFreeScanView(props: Props) {
|
|||
variant="secondary"
|
||||
href="/redesign/user/dashboard/fix/high-risk-data-breaches"
|
||||
onPress={() => {
|
||||
record("ctaButton", "click", {
|
||||
recordTelemetry("ctaButton", "click", {
|
||||
button_id: "skipped_free_scan",
|
||||
});
|
||||
}}
|
||||
|
|
|
@ -72,7 +72,7 @@ export const EnterInfo = ({
|
|||
const [invalidInputs, setInvalidInputs] = useState<Array<string>>([]);
|
||||
const [requestingScan, setRequestingScan] = useState(false);
|
||||
|
||||
const record = useTelemetry();
|
||||
const recordTelemetry = useTelemetry();
|
||||
const explainerDialogState = useOverlayTriggerState({});
|
||||
const explainerDialogTrigger = useOverlayTrigger(
|
||||
{ type: "dialog" },
|
||||
|
@ -88,11 +88,11 @@ export const EnterInfo = ({
|
|||
if (isOpen) {
|
||||
// TODO: Uncomment popup_id after it has been added to metrics.yaml
|
||||
// in https://github.com/mozilla/blurts-server/pull/3913.
|
||||
record("popup", "view", {
|
||||
recordTelemetry("popup", "view", {
|
||||
// popup_id: "enter_scan_info_confirmation_modal",
|
||||
});
|
||||
} else {
|
||||
record("button", "click", {
|
||||
recordTelemetry("button", "click", {
|
||||
button_id: "edit_free_scan",
|
||||
});
|
||||
}
|
||||
|
@ -189,7 +189,7 @@ export const EnterInfo = ({
|
|||
const handleOnSubmit = (event: FormEvent<HTMLFormElement>) => {
|
||||
event.preventDefault();
|
||||
|
||||
record("ctaButton", "click", {
|
||||
recordTelemetry("ctaButton", "click", {
|
||||
button_id: "started_free_scan",
|
||||
});
|
||||
|
||||
|
@ -301,7 +301,7 @@ export const EnterInfo = ({
|
|||
// TODO: Figure out how to intercept the fetch request in a test:
|
||||
/* c8 ignore next */
|
||||
onPress={() => {
|
||||
record("ctaButton", "click", {
|
||||
recordTelemetry("ctaButton", "click", {
|
||||
button_id: "confirmed_free_scan",
|
||||
});
|
||||
handleRequestScan();
|
||||
|
@ -335,7 +335,7 @@ export const EnterInfo = ({
|
|||
// TODO: Add unit test when changing this code:
|
||||
/* c8 ignore next */
|
||||
onClick={() => {
|
||||
record("button", "click", {
|
||||
recordTelemetry("button", "click", {
|
||||
button_id: "why_do_we_need_this_info",
|
||||
});
|
||||
explainerDialogState.open();
|
||||
|
@ -365,7 +365,7 @@ export const EnterInfo = ({
|
|||
validationState={validationState}
|
||||
inputValue={value}
|
||||
onFocus={() => {
|
||||
record("field", "focus", {
|
||||
recordTelemetry("field", "focus", {
|
||||
field_id: key,
|
||||
});
|
||||
}}
|
||||
|
@ -384,7 +384,7 @@ export const EnterInfo = ({
|
|||
validationState={validationState}
|
||||
value={value}
|
||||
onFocus={() => {
|
||||
record("field", "focus", {
|
||||
recordTelemetry("field", "focus", {
|
||||
field_id: key,
|
||||
});
|
||||
}}
|
||||
|
|
|
@ -24,7 +24,7 @@ export type Props = {
|
|||
|
||||
export const GetStarted = (props: Props) => {
|
||||
const l10n = useL10n();
|
||||
const record = useTelemetry();
|
||||
const recordTelemetry = useTelemetry();
|
||||
const explainerDialogState = useOverlayTriggerState({});
|
||||
const explainerDialogTrigger = useOverlayTrigger(
|
||||
{ type: "dialog" },
|
||||
|
@ -47,7 +47,7 @@ export const GetStarted = (props: Props) => {
|
|||
{...buttonProps}
|
||||
ref={triggerRef}
|
||||
onClick={() => {
|
||||
record("button", "click", {
|
||||
recordTelemetry("button", "click", {
|
||||
button_id: "welcome_data_protection",
|
||||
});
|
||||
explainerDialogState.open();
|
||||
|
|
|
@ -42,7 +42,7 @@ export const View = ({
|
|||
const skipInitialStep = stepId === "enterInfo";
|
||||
const [currentStep, setCurrentStep] = useState<StepId>(stepId);
|
||||
const router = useRouter();
|
||||
const record = useTelemetry();
|
||||
const recordTelemetry = useTelemetry();
|
||||
|
||||
useEffect(() => {
|
||||
let pageName = "welcome";
|
||||
|
@ -52,11 +52,11 @@ export const View = ({
|
|||
pageName = "scanning_for_exposures";
|
||||
}
|
||||
|
||||
record("page", "view", {
|
||||
recordTelemetry("page", "view", {
|
||||
utm_campaign: skipInitialStep ? "legacy_user" : "new_user",
|
||||
utm_source: pageName,
|
||||
});
|
||||
}, [currentStep, record, skipInitialStep]);
|
||||
}, [currentStep, recordTelemetry, skipInitialStep]);
|
||||
|
||||
const currentComponent =
|
||||
currentStep === "findExposures" ? (
|
||||
|
@ -74,7 +74,7 @@ export const View = ({
|
|||
previousRoute={previousRoute}
|
||||
skipInitialStep={skipInitialStep}
|
||||
onGoBack={() => {
|
||||
record("button", "click", {
|
||||
recordTelemetry("button", "click", {
|
||||
button_id: "declined_free_scan",
|
||||
});
|
||||
|
||||
|
@ -89,7 +89,7 @@ export const View = ({
|
|||
<GetStarted
|
||||
dataBrokerCount={dataBrokerCount}
|
||||
onStart={() => {
|
||||
record("ctaButton", "click", {
|
||||
recordTelemetry("ctaButton", "click", {
|
||||
button_id: "welcome_start",
|
||||
});
|
||||
setCurrentStep("enterInfo");
|
||||
|
|
|
@ -76,30 +76,6 @@
|
|||
font: $text-body-lg;
|
||||
color: $color-grey-50;
|
||||
}
|
||||
|
||||
form {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: $spacing-sm;
|
||||
|
||||
input {
|
||||
flex: 1 0 auto;
|
||||
border-radius: $border-radius-md;
|
||||
border: 1px solid $color-grey-20;
|
||||
padding: $spacing-md;
|
||||
font: $text-body-xl;
|
||||
}
|
||||
|
||||
button {
|
||||
flex: 1 0 auto;
|
||||
font: $text-title-xs;
|
||||
}
|
||||
|
||||
label {
|
||||
font: $text-body-sm;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.heroImage {
|
||||
|
@ -163,3 +139,107 @@
|
|||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.quoteWrapper {
|
||||
padding: $layout-lg $spacing-md;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
||||
@media screen and (min-width: $content-md) {
|
||||
padding: $layout-lg;
|
||||
}
|
||||
|
||||
.quote {
|
||||
max-width: $content-lg;
|
||||
text-align: center;
|
||||
font: $text-title-2xs;
|
||||
line-height: 1.5;
|
||||
font-family: var(--font-inter);
|
||||
font-weight: normal;
|
||||
|
||||
b {
|
||||
em {
|
||||
font-style: normal;
|
||||
display: inline;
|
||||
color: $color-violet-50;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.valuePropositionWrapper {
|
||||
.item {
|
||||
display: flex;
|
||||
flex-direction: column-reverse;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: $spacing-2xl $spacing-md;
|
||||
gap: $spacing-lg;
|
||||
|
||||
&.grayBg {
|
||||
background: $color-grey-05;
|
||||
}
|
||||
|
||||
.exposureTypeList {
|
||||
font-weight: 600;
|
||||
color: $color-purple-70;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-md) {
|
||||
padding-inline: $layout-lg;
|
||||
padding-block: $layout-sm;
|
||||
flex-direction: row;
|
||||
gap: $spacing-xl;
|
||||
|
||||
&.reverseRow {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-lg) {
|
||||
padding-inline: $layout-lg;
|
||||
gap: $layout-xl;
|
||||
|
||||
@media screen and (min-width: $screen-xl) {
|
||||
padding-inline: $layout-xl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
gap: $spacing-md;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
h2 {
|
||||
font: $text-title-xs;
|
||||
font-family: var(--font-inter);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
p {
|
||||
font: $text-body-lg;
|
||||
}
|
||||
}
|
||||
|
||||
.illustration {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
||||
img {
|
||||
height: auto;
|
||||
}
|
||||
@media screen and (min-width: $screen-md) {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-md) {
|
||||
span,
|
||||
.illustration {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ export const LandingUs: Story = {
|
|||
name: "US visitors",
|
||||
args: {
|
||||
eligibleForPremium: true,
|
||||
countryCode: "us",
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -28,5 +29,22 @@ export const LandingNonUs: Story = {
|
|||
name: "Non-US visitors",
|
||||
args: {
|
||||
eligibleForPremium: false,
|
||||
countryCode: "nz",
|
||||
},
|
||||
};
|
||||
|
||||
export const LandingNonUsDe: Story = {
|
||||
name: "German",
|
||||
args: {
|
||||
eligibleForPremium: false,
|
||||
countryCode: "de",
|
||||
},
|
||||
};
|
||||
|
||||
export const LandingNonUsFr: Story = {
|
||||
name: "French",
|
||||
args: {
|
||||
eligibleForPremium: false,
|
||||
countryCode: "fr",
|
||||
},
|
||||
};
|
||||
|
|
|
@ -16,9 +16,15 @@ import {
|
|||
import { userEvent } from "@testing-library/user-event";
|
||||
import { axe } from "jest-axe";
|
||||
import { signIn } from "next-auth/react";
|
||||
import Meta, { LandingNonUs, LandingUs } from "./LandingView.stories";
|
||||
import Meta, {
|
||||
LandingNonUs,
|
||||
LandingNonUsDe,
|
||||
LandingNonUsFr,
|
||||
LandingUs,
|
||||
} from "./LandingView.stories";
|
||||
|
||||
jest.mock("next-auth/react");
|
||||
jest.mock("../../../hooks/useTelemetry");
|
||||
|
||||
describe("When Premium is not available", () => {
|
||||
it("passes the axe accessibility test suite", async () => {
|
||||
|
@ -33,19 +39,64 @@ describe("When Premium is not available", () => {
|
|||
const ComposedDashboard = composeStory(LandingNonUs, Meta);
|
||||
render(<ComposedDashboard />);
|
||||
|
||||
const inputField = screen.getByLabelText(
|
||||
const inputField = screen.getAllByLabelText(
|
||||
"Enter your email address to check for data breach exposures.",
|
||||
);
|
||||
await user.type(inputField, "mail@example.com");
|
||||
await user.type(inputField[0], "mail@example.com");
|
||||
|
||||
const submitButton = screen.getByRole("button", { name: "Get free scan" });
|
||||
await user.click(submitButton);
|
||||
const submitButton = screen.getAllByRole("button", {
|
||||
name: "Get free scan",
|
||||
});
|
||||
await user.click(submitButton[0]);
|
||||
|
||||
expect(signIn).toHaveBeenCalledTimes(1);
|
||||
expect(signIn).toHaveBeenCalledWith("fxa", expect.any(Object), {
|
||||
email: "mail@example.com",
|
||||
});
|
||||
});
|
||||
|
||||
it("shows the data breaches quote", () => {
|
||||
const ComposedDashboard = composeStory(LandingNonUs, Meta);
|
||||
render(<ComposedDashboard />);
|
||||
const quote = screen.getByText(
|
||||
"Data breaches happen every 11 minutes, exposing your private information — but don’t worry, we can help.",
|
||||
);
|
||||
expect(quote).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("shows the scanning for exposures illustration in the fix your exposures section", () => {
|
||||
const ComposedDashboard = composeStory(LandingNonUs, Meta);
|
||||
render(<ComposedDashboard />);
|
||||
|
||||
const scanningForExposuresIllustration = screen.getByTestId(
|
||||
"scanning-for-exposures-image",
|
||||
);
|
||||
expect(scanningForExposuresIllustration).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("shows the german scanning for exposures illustration", () => {
|
||||
const ComposedDashboard = composeStory(LandingNonUsDe, Meta);
|
||||
render(<ComposedDashboard />);
|
||||
const scanningForExposuresIllustration = screen.getByTestId(
|
||||
"scanning-for-exposures-image",
|
||||
);
|
||||
expect(scanningForExposuresIllustration).toHaveAttribute(
|
||||
"data-country-code",
|
||||
"de",
|
||||
);
|
||||
});
|
||||
|
||||
it("shows the french scanning for exposures illustration", () => {
|
||||
const ComposedDashboard = composeStory(LandingNonUsFr, Meta);
|
||||
render(<ComposedDashboard />);
|
||||
const scanningForExposuresIllustration = screen.getByTestId(
|
||||
"scanning-for-exposures-image",
|
||||
);
|
||||
expect(scanningForExposuresIllustration).toHaveAttribute(
|
||||
"data-country-code",
|
||||
"fr",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("When Premium is available", () => {
|
||||
|
@ -306,4 +357,21 @@ describe("When Premium is available", () => {
|
|||
|
||||
expect(signIn).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("shows the data brokers quote", () => {
|
||||
const ComposedDashboard = composeStory(LandingUs, Meta);
|
||||
render(<ComposedDashboard />);
|
||||
const quote = screen.getByText(
|
||||
"There’s a $240 billion industry of data brokers selling your private information for profit. It’s time to take back your privacy.",
|
||||
);
|
||||
expect(quote).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("shows the progress card illustration in the fix your exposures section", () => {
|
||||
const ComposedDashboard = composeStory(LandingUs, Meta);
|
||||
render(<ComposedDashboard />);
|
||||
|
||||
const progressCardIllustration = screen.getByTestId("progress-card-image");
|
||||
expect(progressCardIllustration).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -9,10 +9,18 @@ import { ExtendedReactLocalization } from "../../../hooks/l10n";
|
|||
import { PlansTable } from "./PlansTable";
|
||||
import { useId } from "react";
|
||||
import getPremiumSubscriptionUrl from "../../../functions/server/getPremiumSubscriptionUrl";
|
||||
import Image from "next/image";
|
||||
import ProgressCardImage from "./value-prop-images/progress-card.svg";
|
||||
import {
|
||||
LeakedPasswordExampleIllustration,
|
||||
ScanningForExposuresIllustration,
|
||||
} from "./WalkthroughImages";
|
||||
import { TelemetryLink } from "./TelemetryLink";
|
||||
|
||||
export type Props = {
|
||||
eligibleForPremium: boolean;
|
||||
l10n: ExtendedReactLocalization;
|
||||
countryCode: string;
|
||||
};
|
||||
|
||||
export const View = (props: Props) => {
|
||||
|
@ -32,14 +40,135 @@ export const View = (props: Props) => {
|
|||
)}
|
||||
</p>
|
||||
<SignUpForm
|
||||
isHero
|
||||
eligibleForPremium={props.eligibleForPremium}
|
||||
signUpCallbackUrl={`${process.env.SERVER_URL}/redesign/user/dashboard/`}
|
||||
eventId={{
|
||||
cta: "clicked_get_scan_header",
|
||||
field: "entered_email_address_header",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<div className={styles.heroImage}>
|
||||
<HeroImage {...props} />
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div className={styles.quoteWrapper}>
|
||||
<div className={styles.quote}>
|
||||
<b>
|
||||
{props.eligibleForPremium
|
||||
? props.l10n.getFragment("landing-premium-quote", {
|
||||
elems: {
|
||||
data_brokers: <em />,
|
||||
},
|
||||
})
|
||||
: props.l10n.getFragment("landing-all-quote", {
|
||||
elems: {
|
||||
data_breaches: <em />,
|
||||
},
|
||||
})}
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className={styles.valuePropositionWrapper}>
|
||||
<div className={`${styles.item} ${styles.grayBg}`}>
|
||||
<span>
|
||||
<h2>
|
||||
{props.l10n.getString("landing-all-value-prop-fix-exposures")}
|
||||
</h2>
|
||||
<p>
|
||||
{props.eligibleForPremium
|
||||
? props.l10n.getFragment(
|
||||
"landing-premium-value-prop-fix-exposures-description",
|
||||
{
|
||||
elems: {
|
||||
privacy_link: (
|
||||
<TelemetryLink
|
||||
eventData={{ button_id: "privacy_information" }}
|
||||
href="https://www.mozilla.org/en-US/firefox/privacy/"
|
||||
target="_blank"
|
||||
/>
|
||||
),
|
||||
},
|
||||
},
|
||||
)
|
||||
: props.l10n.getFragment(
|
||||
"landing-all-value-prop-fix-exposures-description",
|
||||
{
|
||||
elems: {
|
||||
privacy_link: (
|
||||
<TelemetryLink
|
||||
eventData={{ button_id: "privacy_information" }}
|
||||
href="https://www.mozilla.org/en-US/firefox/privacy/"
|
||||
target="_blank"
|
||||
/>
|
||||
),
|
||||
},
|
||||
},
|
||||
)}
|
||||
</p>
|
||||
<SignUpForm
|
||||
eligibleForPremium={props.eligibleForPremium}
|
||||
signUpCallbackUrl={`${process.env.SERVER_URL}/redesign/user/dashboard/`}
|
||||
eventId={{
|
||||
cta: "clicked_get_scan_second",
|
||||
field: "entered_email_address_second",
|
||||
}}
|
||||
/>
|
||||
</span>
|
||||
<div className={styles.illustration}>
|
||||
{props.eligibleForPremium ? (
|
||||
<Image
|
||||
src={ProgressCardImage}
|
||||
alt={props.l10n.getString(
|
||||
"landing-premium-value-prop-progress-card-illustration-alt",
|
||||
)}
|
||||
data-testid="progress-card-image"
|
||||
/>
|
||||
) : (
|
||||
<ScanningForExposuresIllustration {...props} />
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className={`${styles.item} ${styles.reverseRow}`}>
|
||||
<span>
|
||||
<h2>
|
||||
{props.l10n.getString("landing-all-value-prop-info-at-risk")}
|
||||
</h2>
|
||||
<p>
|
||||
{props.eligibleForPremium
|
||||
? props.l10n.getFragment(
|
||||
"landing-premium-value-prop-info-at-risk-description",
|
||||
{
|
||||
elems: {
|
||||
exposure_type_list: (
|
||||
<span className={styles.exposureTypeList} />
|
||||
),
|
||||
},
|
||||
},
|
||||
)
|
||||
: props.l10n.getString(
|
||||
"landing-all-value-prop-info-at-risk-description",
|
||||
)}
|
||||
</p>
|
||||
<SignUpForm
|
||||
eligibleForPremium={props.eligibleForPremium}
|
||||
signUpCallbackUrl={`${process.env.SERVER_URL}/redesign/user/dashboard/`}
|
||||
eventId={{
|
||||
cta: "clicked_get_scan_third",
|
||||
field: "entered_email_address_third",
|
||||
}}
|
||||
/>
|
||||
</span>
|
||||
<div className={styles.illustration}>
|
||||
<LeakedPasswordExampleIllustration {...props} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Plans {...props} />
|
||||
</main>
|
||||
);
|
||||
|
@ -83,7 +212,7 @@ const Plans = (props: Props) => {
|
|||
}
|
||||
|
||||
return (
|
||||
<section className={styles.plans}>
|
||||
<div className={styles.plans}>
|
||||
<h2 id={headingId} className={styles.planName}>
|
||||
{props.l10n.getString("landing-premium-plans-heading")}
|
||||
</h2>
|
||||
|
@ -97,6 +226,6 @@ const Plans = (props: Props) => {
|
|||
yearly: getPremiumSubscriptionUrl({ type: "yearly" }),
|
||||
}}
|
||||
/>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
@import "../../../tokens";
|
||||
|
||||
.form {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: $spacing-xl;
|
||||
|
||||
input {
|
||||
flex: 1 0 auto;
|
||||
border-radius: $border-radius-md;
|
||||
border: 1px solid $color-grey-20;
|
||||
padding: $spacing-md;
|
||||
font: $text-body-md;
|
||||
}
|
||||
|
||||
button {
|
||||
flex: 1 0 auto;
|
||||
font: $text-body-md;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
label {
|
||||
font: $text-body-sm;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
form.isHero {
|
||||
gap: $spacing-sm;
|
||||
}
|
||||
|
||||
input.isHero {
|
||||
font: $text-body-xl;
|
||||
}
|
||||
|
||||
button.isHero {
|
||||
font: $text-title-xs;
|
||||
}
|
|
@ -8,20 +8,28 @@ import { FormEventHandler, useId, useState } from "react";
|
|||
import { signIn } from "next-auth/react";
|
||||
import { useL10n } from "../../../hooks/l10n";
|
||||
import { Button } from "../../../components/client/Button";
|
||||
import styles from "./SignUpForm.module.scss";
|
||||
import { useTelemetry } from "../../../hooks/useTelemetry";
|
||||
import { VisuallyHidden } from "../../../components/server/VisuallyHidden";
|
||||
|
||||
export type Props = {
|
||||
eligibleForPremium: boolean;
|
||||
signUpCallbackUrl: string;
|
||||
isHero?: boolean;
|
||||
eventId: {
|
||||
cta: string;
|
||||
field: string;
|
||||
};
|
||||
};
|
||||
|
||||
export const SignUpForm = (props: Props) => {
|
||||
const emailInputId = useId();
|
||||
const l10n = useL10n();
|
||||
const [emailInput, setEmailInput] = useState("");
|
||||
const record = useTelemetry();
|
||||
|
||||
const onSubmit: FormEventHandler = (event) => {
|
||||
event.preventDefault();
|
||||
|
||||
void signIn(
|
||||
"fxa",
|
||||
{ callbackUrl: props.signUpCallbackUrl },
|
||||
|
@ -30,30 +38,54 @@ export const SignUpForm = (props: Props) => {
|
|||
// https://mozilla.github.io/ecosystem-platform/relying-parties/reference/query-parameters#email
|
||||
{ email: emailInput },
|
||||
);
|
||||
record("ctaButton", "click", {
|
||||
button_id: props.eventId.cta,
|
||||
});
|
||||
};
|
||||
|
||||
const labelContent = (
|
||||
<label htmlFor={emailInputId}>
|
||||
{l10n.getString(
|
||||
props.eligibleForPremium
|
||||
? "landing-premium-hero-emailform-input-label"
|
||||
: "landing-all-hero-emailform-input-label",
|
||||
)}
|
||||
</label>
|
||||
);
|
||||
|
||||
return (
|
||||
<form onSubmit={onSubmit}>
|
||||
<form className={styles.form} onSubmit={onSubmit}>
|
||||
<input
|
||||
className={props.isHero ? styles.isHero : ""}
|
||||
name={emailInputId}
|
||||
id={emailInputId}
|
||||
onChange={(e) => setEmailInput(e.target.value)}
|
||||
onChange={(e) => {
|
||||
setEmailInput(e.target.value);
|
||||
}}
|
||||
onFocus={() => {
|
||||
record("field", "focus", {
|
||||
field_id: props.eventId.field,
|
||||
});
|
||||
}}
|
||||
value={emailInput}
|
||||
type="email"
|
||||
placeholder={l10n.getString(
|
||||
"landing-all-hero-emailform-input-placeholder",
|
||||
)}
|
||||
/>
|
||||
<Button type="submit" variant="primary" wide>
|
||||
<Button
|
||||
type="submit"
|
||||
variant="primary"
|
||||
wide
|
||||
className={props.isHero ? styles.isHero : ""}
|
||||
>
|
||||
{l10n.getString("landing-all-hero-emailform-submit-label")}
|
||||
</Button>
|
||||
<label htmlFor={emailInputId}>
|
||||
{l10n.getString(
|
||||
props.eligibleForPremium
|
||||
? "landing-premium-hero-emailform-input-label"
|
||||
: "landing-all-hero-emailform-input-label",
|
||||
)}
|
||||
</label>
|
||||
{props.isHero ? (
|
||||
labelContent
|
||||
) : (
|
||||
<VisuallyHidden>{labelContent}</VisuallyHidden>
|
||||
)}
|
||||
</form>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
"use client";
|
||||
|
||||
import { useTelemetry } from "../../../hooks/useTelemetry";
|
||||
import { GleanMetricMap } from "../../../../telemetry/generated/_map";
|
||||
import { HTMLAttributes } from "react";
|
||||
|
||||
// Telemetry link is shown in a fluent getFragment (which does not get rendered in tests)
|
||||
/* c8 ignore start */
|
||||
export const TelemetryLink = ({
|
||||
eventData,
|
||||
...props
|
||||
}: {
|
||||
eventData: GleanMetricMap["button"]["click"];
|
||||
href: string;
|
||||
target: string;
|
||||
} & HTMLAttributes<HTMLAnchorElement>) => {
|
||||
const record = useTelemetry();
|
||||
|
||||
return (
|
||||
<a
|
||||
{...props}
|
||||
onClick={(event) => {
|
||||
record("button", "click", eventData);
|
||||
|
||||
props.onClick?.(event);
|
||||
}}
|
||||
/>
|
||||
);
|
||||
};
|
||||
/* c8 ignore stop */
|
|
@ -0,0 +1,73 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
import { ExtendedReactLocalization } from "../../../hooks/l10n";
|
||||
import Image from "next/image";
|
||||
import ScanningForExposuresImage from "./value-prop-images/scanning-for-exposures.svg";
|
||||
import LeakedPasswordExampleImage from "./value-prop-images/leaked-password-example.svg";
|
||||
import ScanningForExposuresImageDe from "./value-prop-images/de/scanning-for-exposures-de.svg";
|
||||
import LeakedPasswordExampleImageDe from "./value-prop-images/de/leaked-password-example-de.svg";
|
||||
import ScanningForExposuresImageFr from "./value-prop-images/fr/scanning-for-exposures-fr.svg";
|
||||
import LeakedPasswordExampleImageFr from "./value-prop-images/fr/leaked-password-example-fr.svg";
|
||||
|
||||
const IllustrationWrapper = ({
|
||||
image,
|
||||
testId,
|
||||
countryCode,
|
||||
}: {
|
||||
image: string;
|
||||
l10n: ExtendedReactLocalization;
|
||||
testId: string;
|
||||
countryCode: string;
|
||||
}) => (
|
||||
<Image
|
||||
src={image}
|
||||
alt=""
|
||||
data-testid={testId}
|
||||
data-country-code={countryCode}
|
||||
/>
|
||||
);
|
||||
|
||||
type Props = {
|
||||
countryCode: string;
|
||||
l10n: ExtendedReactLocalization;
|
||||
};
|
||||
|
||||
export const ScanningForExposuresIllustration = (props: Props) => {
|
||||
let imageSrc = ScanningForExposuresImage;
|
||||
|
||||
if (props.countryCode === "de") {
|
||||
imageSrc = ScanningForExposuresImageDe;
|
||||
} else if (props.countryCode === "fr") {
|
||||
imageSrc = ScanningForExposuresImageFr;
|
||||
}
|
||||
|
||||
return (
|
||||
<IllustrationWrapper
|
||||
{...props}
|
||||
image={imageSrc}
|
||||
testId="scanning-for-exposures-image"
|
||||
countryCode={props.countryCode}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export const LeakedPasswordExampleIllustration = (props: Props) => {
|
||||
let imageSrc = LeakedPasswordExampleImage;
|
||||
|
||||
if (props.countryCode === "de") {
|
||||
imageSrc = LeakedPasswordExampleImageDe;
|
||||
} else if (props.countryCode === "fr") {
|
||||
imageSrc = LeakedPasswordExampleImageFr;
|
||||
}
|
||||
|
||||
return (
|
||||
<IllustrationWrapper
|
||||
{...props}
|
||||
image={imageSrc}
|
||||
testId="leaked-password-example"
|
||||
countryCode={props.countryCode}
|
||||
/>
|
||||
);
|
||||
};
|
|
@ -14,5 +14,11 @@ export default async function Page() {
|
|||
const countryCode = getCountryCode(headers());
|
||||
const eligibleForPremium = isEligibleForPremium(countryCode, enabledFlags);
|
||||
|
||||
return <View eligibleForPremium={eligibleForPremium} l10n={getL10n()} />;
|
||||
return (
|
||||
<View
|
||||
eligibleForPremium={eligibleForPremium}
|
||||
l10n={getL10n()}
|
||||
countryCode={countryCode}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
После Ширина: | Высота: | Размер: 41 KiB |
После Ширина: | Высота: | Размер: 30 KiB |
После Ширина: | Высота: | Размер: 49 KiB |
После Ширина: | Высота: | Размер: 35 KiB |
После Ширина: | Высота: | Размер: 40 KiB |
После Ширина: | Высота: | Размер: 6.2 MiB |
После Ширина: | Высота: | Размер: 26 KiB |
|
@ -73,7 +73,7 @@ function PremiumUpsellDialogContent({
|
|||
const l10n = useL10n();
|
||||
const defaultSelectedKey = "yearly";
|
||||
const [selectedTab, setSelectedTab] = useState<Key>(defaultSelectedKey);
|
||||
const record = useTelemetry();
|
||||
const recordTelemetry = useTelemetry();
|
||||
|
||||
const isMonthly = selectedTab === "monthly";
|
||||
const tabsData = [
|
||||
|
@ -100,7 +100,7 @@ function PremiumUpsellDialogContent({
|
|||
tabs={tabsData}
|
||||
defaultSelectedKey={defaultSelectedKey}
|
||||
onSelectionChange={(selectedKey) => {
|
||||
record("button", "click", {
|
||||
recordTelemetry("button", "click", {
|
||||
button_id:
|
||||
selectedKey === "monthly"
|
||||
? "selected_monthly_plan"
|
||||
|
@ -156,7 +156,7 @@ function PremiumUpsellDialogContent({
|
|||
// the back-end because the page unloads before we can do so.
|
||||
// This will be dealt with in upstream Glean:
|
||||
// https://matrix.to/#/!SCdsJdSTaQHjzEVrAE:mozilla.org/$muLULIgsOMaLwe3HR6HI_oJbMkyD5gZBoRN3GmDL8Ko
|
||||
record("upgradeIntent", "click", {
|
||||
recordTelemetry("upgradeIntent", "click", {
|
||||
button_id: isMonthly
|
||||
? "intent_to_purchase_monthly_plan_nav_modal"
|
||||
: "intent_to_purchase_yearly_plan_nav_modal",
|
||||
|
@ -183,7 +183,7 @@ function PremiumUpsellDialog({
|
|||
...otherProps
|
||||
}: PremiumUpsellDialogProps & OverlayTriggerProps) {
|
||||
const l10n = useL10n();
|
||||
const record = useTelemetry();
|
||||
const recordTelemetry = useTelemetry();
|
||||
|
||||
return (
|
||||
<div className={styles.modal}>
|
||||
|
@ -193,7 +193,7 @@ function PremiumUpsellDialog({
|
|||
title={l10n.getString("premium-upsell-dialog-title")}
|
||||
illustration={<Image src={ModalImage} alt="" />}
|
||||
onDismiss={() => {
|
||||
record("button", "click", {
|
||||
recordTelemetry("button", "click", {
|
||||
button_id: "close_upsell_modal",
|
||||
});
|
||||
return void state.close();
|
||||
|
|
|
@ -86,6 +86,16 @@ export type ScanResult = {
|
|||
created_at: ISO8601DateString;
|
||||
updated_at: ISO8601DateString;
|
||||
};
|
||||
export type ProfileStats = {
|
||||
created: number;
|
||||
deleted: number;
|
||||
activated: number;
|
||||
reactivated: number;
|
||||
deactivated: number;
|
||||
total_active: number;
|
||||
total_inactive: number;
|
||||
total: number;
|
||||
};
|
||||
export type ListScanResultsResponse = OneRepResponse<ScanResult[]>;
|
||||
|
||||
async function onerepFetch(
|
||||
|
@ -439,3 +449,42 @@ export async function fetchAllPages<Data>(
|
|||
|
||||
return dataList.flat();
|
||||
}
|
||||
|
||||
// Local instance map to cache results to prevent excessive API requests
|
||||
// Would be nice to share this cache with other pod via Redis in the future
|
||||
const profileStatsCache = new Map<string, ProfileStats>();
|
||||
export async function getProfilesStats(
|
||||
from?: Date,
|
||||
to?: Date,
|
||||
): Promise<ProfileStats | undefined> {
|
||||
const queryParams = new URLSearchParams();
|
||||
if (from) queryParams.set("from", from.toISOString().substring(0, 10));
|
||||
if (to) queryParams.set("to", to.toISOString().substring(0, 10));
|
||||
const queryParamsString = queryParams.toString();
|
||||
|
||||
// check for cache map first
|
||||
if (profileStatsCache.has(queryParamsString))
|
||||
return profileStatsCache.get(queryParamsString);
|
||||
|
||||
const response: Response = await onerepFetch(
|
||||
`/stats/profiles?${queryParamsString}`,
|
||||
{
|
||||
method: "GET",
|
||||
},
|
||||
);
|
||||
if (!response.ok) {
|
||||
logger.error(
|
||||
`Failed to fetch OneRep profile: [${response.status}] [${response.statusText}]`,
|
||||
);
|
||||
throw new Error(
|
||||
`Failed to fetch OneRep profile: [${response.status}] [${response.statusText}]`,
|
||||
);
|
||||
}
|
||||
|
||||
const profileStats: ProfileStats = await response.json();
|
||||
|
||||
// cache results in map, with a flush hack to keep the size low
|
||||
if (profileStatsCache.size > 5) profileStatsCache.clear();
|
||||
profileStatsCache.set(queryParamsString, profileStats);
|
||||
return profileStats;
|
||||
}
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
import type { useTelemetry as ogUseTelemetry } from "../useTelemetry";
|
||||
|
||||
const mockRecord = jest.fn();
|
||||
const mockedRecordTelemetry = jest.fn();
|
||||
|
||||
export const useTelemetry: typeof ogUseTelemetry = () => {
|
||||
return mockRecord as ReturnType<typeof ogUseTelemetry>;
|
||||
return mockedRecordTelemetry as ReturnType<typeof ogUseTelemetry>;
|
||||
};
|
||||
|
|
|
@ -23,7 +23,7 @@ export const useTelemetry = () => {
|
|||
const { gtag } = useGa();
|
||||
|
||||
const { Glean, Ga } = TelemetryPlatforms;
|
||||
const record = <
|
||||
const recordTelemetry = <
|
||||
EventModule extends keyof GleanMetricMap,
|
||||
EventName extends keyof GleanMetricMap[EventModule],
|
||||
>(
|
||||
|
@ -53,5 +53,5 @@ export const useTelemetry = () => {
|
|||
}
|
||||
};
|
||||
|
||||
return record;
|
||||
return recordTelemetry;
|
||||
};
|
||||
|
|
|
@ -153,6 +153,8 @@ popup:
|
|||
flow_id:
|
||||
description: A randomly generated unique identifier for following user flows within the FxA system.
|
||||
type: string
|
||||
popup_id:
|
||||
description: The ID of the popup that was shown, or some way to identify where on the page the interaction is located.
|
||||
|
||||
button:
|
||||
click:
|
||||
|
|