diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 306ac4d87c7..4f6c6de7687 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -9,80 +9,80 @@ /src/pages/console/ @dbanksdesign @aws-amplify/documentation-team #Analytics -/src/**/**/analytics @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/analytics @hdworld11 @dbanksdesign @aws-amplify/documentation-team #Auth -/src/**/**/auth @renebrandel @dbanksdesign @aws-amplify/documentation-team -/src/**/**/authz @renebrandel @dbanksdesign @aws-amplify/documentation-team -/src/**/**/authentication @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/auth @josefaidt @aws-amplify/documentation-team +/src/**/**/authz @josefaidt @renebrandel @aws-amplify/documentation-team +/src/**/**/authentication @renebrandel @josefaidt @aws-amplify/documentation-team #Client Configuration -/src/**/**/client-configuration @renebrandel @dbanksdesign @hdworld11 @aws-amplify/documentation-team -/src/**/**/configuration @renebrandel @dbanksdesign @hdworld11 @aws-amplify/documentation-team +/src/**/**/client-configuration @renebrandel @josefaidt @hdworld11 @aws-amplify/documentation-team +/src/**/**/configuration @renebrandel @josefaidt @hdworld11 @aws-amplify/documentation-team #Common -/src/fragments/common @renebrandel @dbanksdesign @aws-amplify/documentation-team -/src/fragments/lib/common @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/fragments/common @renebrandel @hdworld11 @josefaidt @dbanksdesign @aws-amplify/documentation-team +/src/fragments/lib/common @renebrandel @hdworld11 @josefaidt @dbanksdesign @aws-amplify/documentation-team #Data -/src/**/**/datastore @renebrandel @dbanksdesign @aws-amplify/documentation-team -/src/**/**/data @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/datastore @renebrandel @aws-amplify/documentation-team +/src/**/**/data @renebrandel @aws-amplify/documentation-team #Debugging -/src/fragments/**/debugging @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/fragments/**/debugging @josefaidt @aws-amplify/documentation-team #Geo -/src/**/**/geo @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/geo @hdworld11 @aws-amplify/documentation-team #Getting Started -/src/**/start @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/start @renebrandel @hdworld11 @josefaidt @dbanksdesign @aws-amplify/documentation-team #GraphQL API -/src/**/**/api-graphql @renebrandel @dbanksdesign @aws-amplify/documentation-team -/src/**/**/graphqlapi @renebrandel @dbanksdesign @aws-amplify/documentation-team -/src/**/cli-legacy/graphql-transformer @renebrandel @dbanksdesign @aws-amplify/documentation-team -/src/fragments/sdk/api/**/graphql.mdx @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/api-graphql @renebrandel @aws-amplify/documentation-team +/src/**/**/graphqlapi @renebrandel @aws-amplify/documentation-team +/src/**/cli-legacy/graphql-transformer @renebrandel @aws-amplify/documentation-team +/src/fragments/sdk/api/**/graphql.mdx @renebrandel @aws-amplify/documentation-team #In-App Messaging -/src/**/**/in-app-messaging @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/in-app-messaging @hdworld11 @aws-amplify/documentation-team #Info -/src/fragments/**/info @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/fragments/**/info @renebrandel @hdworld11 @josefaidt @dbanksdesign @aws-amplify/documentation-team #Interactions -/src/**/**/interactions @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/interactions @josefaidt @aws-amplify/documentation-team #Logging -/src/fragments/lib/logging @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/fragments/lib/logging @hdworld11 @aws-amplify/documentation-team #Predictions -/src/**/**/predictions @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/predictions @hdworld11 @dbanksdesign @aws-amplify/documentation-team #Project Setup -/src/**/**/project-setup @renebrandel @dbanksdesign @hdworld11 @aws-amplify/documentation-team +/src/**/**/project-setup @renebrandel @josefaidt @dbanksdesign @hdworld11 @aws-amplify/documentation-team #PubSub -/src/**/**/pubsub @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/pubsub @renebrandel @aws-amplify/documentation-team #Push Notifications -/src/**/**/push-notifications @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/push-notifications @hdworld11 @dbanksdesign @aws-amplify/documentation-team #Rest API -/src/**/**/api-rest @renebrandel @dbanksdesign @aws-amplify/documentation-team -/src/**/**/restapi @renebrandel @dbanksdesign @aws-amplify/documentation-team -/src/fragments/sdk/api/**/rest.mdx @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/api-rest @josefaidt @aws-amplify/documentation-team +/src/**/**/restapi @josefaidt @aws-amplify/documentation-team +/src/fragments/sdk/api/**/rest.mdx @josefaidt @aws-amplify/documentation-team #SSR -/src/fragments/lib/ssr @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/fragments/lib/ssr @renebrandel @josefaidt @dbanksdesign @aws-amplify/documentation-team #Storage /src/**/**/storage @hdworld11 @aws-amplify/documentation-team #Troubleshooting -/src/fragments/lib/troubleshooting @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/fragments/lib/troubleshooting @josefaidt @aws-amplify/documentation-team #Utilities -/src/**/**/utilities @renebrandel @dbanksdesign @aws-amplify/documentation-team +/src/**/**/utilities @josefaidt @aws-amplify/documentation-team #Docs Engineering /src/components @aws-amplify/documentation-team diff --git a/package.json b/package.json index 23e85d5a6e0..4922a142c58 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "lint-staged": "^14.0.0", "next-bundle-analyzer": "^0.6.7", "prettier": "^3.0.3", - "puppeteer": "^20.8.2", + "puppeteer": "^22.2.0", "rehype": "^11.0.0", "rehype-img-size": "^1.0.1", "rehype-mdx-code-props": "^2.0.0", @@ -91,7 +91,7 @@ "follow-redirects": "^1.15.4", "ip": "2.0.1", "sharp": "0.32.6" - }, + }, "scripts": { "clean": "rm -rf node_modules yarn.lock", "refresh": "yarn clean && yarn", diff --git a/src/components/Layout/Layout.tsx b/src/components/Layout/Layout.tsx index 41b5b57d891..836c5414bb0 100644 --- a/src/components/Layout/Layout.tsx +++ b/src/components/Layout/Layout.tsx @@ -228,10 +228,10 @@ export const Layout = ({ mainId={mainId} /> diff --git a/src/components/Layout/LayoutHeader.tsx b/src/components/Layout/LayoutHeader.tsx index 8310f5b2d67..2addc54ca34 100644 --- a/src/components/Layout/LayoutHeader.tsx +++ b/src/components/Layout/LayoutHeader.tsx @@ -2,7 +2,7 @@ import { useContext, useRef } from 'react'; import { useRouter } from 'next/router'; import { Button, Flex, View, VisuallyHidden } from '@aws-amplify/ui-react'; import classNames from 'classnames'; -import { DEFAULT_PLATFORM, PLATFORMS, Platform } from '@/data/platforms'; +import { Platform } from '@/data/platforms'; import { ALGOLIA_API_KEY, ALGOLIA_INDEX_NAME, @@ -11,7 +11,6 @@ import { import { IconMenu, IconDoubleChevron } from '@/components/Icons'; import { Menu } from '@/components/Menu'; import { LayoutContext } from '@/components/Layout'; -import type { HeadingInterface } from '@/components/TableOfContents/TableOfContents'; import { PlatformNavigator } from '@/components/PlatformNavigator'; import flatDirectory from 'src/directory/flatDirectory.json'; import { DocSearch } from '@docsearch/react'; @@ -22,43 +21,25 @@ import RepoActions from '../Menu/RepoActions'; import { usePathWithoutHash } from '@/utils/usePathWithoutHash'; export const LayoutHeader = ({ - hasTOC = true, - tocHeadings, + currentPlatform, + isGen2, pageType = 'inner', - platform, - showLastUpdatedDate = true + showLastUpdatedDate = true, + showTOC }: { - hasTOC?: boolean; - tocHeadings: HeadingInterface[]; + currentPlatform?: Platform | undefined; + isGen2?: boolean; pageType?: 'home' | 'inner'; - platform?: Platform; showLastUpdatedDate: boolean; + showTOC?: boolean; }) => { const { menuOpen, toggleMenuOpen } = useContext(LayoutContext); const menuButtonRef = useRef(null); const sidebarMenuButtonRef = useRef(null); - const showTOC = hasTOC && tocHeadings.length > 0; const router = useRouter(); const asPathWithNoHash = usePathWithoutHash(); - const isGen2 = asPathWithNoHash.split('/')[1] === 'gen2'; - let currentPlatform = isGen2 ? undefined : DEFAULT_PLATFORM; const isPrev = asPathWithNoHash.split('/')[2] === 'prev'; - if (!isGen2) { - // [platform] will always be the very first subpath right? - // when using `router.asPath` it returns a string that starts with a '/' - // To get the "platform" the client was trying to visit, we have to get the string at index 1 - // Doing this because when visiting a 404 page, there is no `router.query.platform`, so we have - // to check where the user was trying to visit from - const asPathPlatform = asPathWithNoHash.split('/')[1] as Platform; - - currentPlatform = platform - ? platform - : PLATFORMS.includes(asPathPlatform) - ? asPathPlatform - : DEFAULT_PLATFORM; - } - const handleMenuToggle = () => { if (!menuOpen) { toggleMenuOpen(true); diff --git a/src/directory/directory.mjs b/src/directory/directory.mjs index 746179097e3..a1cdfbc4488 100644 --- a/src/directory/directory.mjs +++ b/src/directory/directory.mjs @@ -2182,6 +2182,9 @@ export const directory = { children: [ { path: 'src/pages/gen1/[platform]/sdk/configuration/setup-options/index.mdx' + }, + { + path: 'src/pages/gen1/[platform]/sdk/configuration/amplify-compatibility/index.mdx' } ] }, diff --git a/src/pages/[platform]/build-a-backend/data/customize-authz/multi-user-data-access/index.mdx b/src/pages/[platform]/build-a-backend/data/customize-authz/multi-user-data-access/index.mdx index 1141bc2dc6b..f18cd0a21f4 100644 --- a/src/pages/[platform]/build-a-backend/data/customize-authz/multi-user-data-access/index.mdx +++ b/src/pages/[platform]/build-a-backend/data/customize-authz/multi-user-data-access/index.mdx @@ -38,10 +38,10 @@ If you want to grant a set of users access to a record, you use the `multipleOwn ```ts export const schema = a.schema({ Todo: a.model({ - content: a.string() + content: a.string(), }).authorization([ - a.allow.multipleOwners() - ]) + a.allow.multipleOwners(), + ]), }) ``` @@ -52,10 +52,10 @@ You can override the `inField` to a list of owners. Use this if you want a dynam ```ts export const schema = a.schema({ Todo: a.model({ - content: a.string() - authors: a.string().array() // record owner information now stored in "authors" field + content: a.string(), + authors: a.string().array(), // record owner information now stored in "authors" field }).authorization([ - a.allow.multipleOwners().inField("authors") - ]) + a.allow.multipleOwners().inField("authors"), + ]), }) ``` diff --git a/src/pages/gen1/[platform]/build-ui/uibuilder/index.mdx b/src/pages/gen1/[platform]/build-ui/uibuilder/index.mdx index 58dc40ce6ab..5c90e350365 100644 --- a/src/pages/gen1/[platform]/build-ui/uibuilder/index.mdx +++ b/src/pages/gen1/[platform]/build-ui/uibuilder/index.mdx @@ -1,5 +1,5 @@ import { getCustomStaticPath } from '@/utils/getCustomStaticPath'; - + export const meta = { title: 'Figma-to-Code', description: 'Generate clean React code from Figma design files with Amplify Studio.', @@ -30,7 +30,7 @@ export function getStaticProps(context) { } }; } - + Amplify Studio offers an integration with Figma, allowing you to generate clean React code by importing your Figma design file. [Figma](https://figma.com/) is a browser-based UI and UX design application that is used to build high-fidelity designs. In the standard product development lifecycle, UI or UX designers build mockups that get implemented as code by developers. Amplify Studio automatically converts any [Figma component](https://help.figma.com/hc/en-us/articles/360038662654-Guide-to-Components-in-Figma) in your Figma file to a [React component](https://reactjs.org/docs/components-and-props.html) that is then usable in your app. @@ -83,7 +83,7 @@ import amplifyconfig from './amplifyconfiguration.json'; import "@aws-amplify/ui-react/styles.css"; import studioTheme from './ui-components/studioTheme'; -Amplify.configure(awsconfig); +Amplify.configure(amplifyconfig); ``` 3. In your application's entrypoint file (e.g. `src/index.js` for create-react-app or `src/main.jsx` for Vite), wrap the `` with the following: diff --git a/src/pages/gen1/[platform]/sdk/configuration/amplify-compatibility/index.mdx b/src/pages/gen1/[platform]/sdk/configuration/amplify-compatibility/index.mdx new file mode 100644 index 00000000000..60af44a8e19 --- /dev/null +++ b/src/pages/gen1/[platform]/sdk/configuration/amplify-compatibility/index.mdx @@ -0,0 +1,278 @@ +import { getCustomStaticPath } from '@/utils/getCustomStaticPath'; + +export const meta = { + title: 'Amplify v2 Compatibility', + description: + 'Learn how to use the AWS SDK with Amplify v2.', + platforms: ['android'] +}; + +export const getStaticPaths = async () => { + return getCustomStaticPath(meta.platforms); +}; + +export function getStaticProps(context) { + return { + props: { + platform: context.params.platform, + meta + } + }; +} + + + +The AWS Mobile Client (com.amazonaws:aws-android-sdk-mobile-client) and Amplify Android v2 are not compatible with each other. Amplify v2 migrates the credentials from AWS Mobile Client into a different format, leaving AWS Mobile Client unable to read the credentials. If AWS Mobile Client is launched after this migration has taken place, the Amplify v2 credentials will also be cleared. + + +## Using Amplify V2 Auth with AWS Android SDK Plugin + +We recommend using Amplify v2 with the [AWS Kotlin SDK](https://aws.amazon.com/sdk-for-kotlin/), rather than the AWS Android SDK. In order to better support existing implementations, this guide demonstrates how to continue using AWS Android SDK plugins with Amplify v2. + +### Creating an AmplifyCredentialsProvider + +Many of the AWS Android SDK plugins accept a custom `AWSCredentialsProvider` implementation. You can implement your own `AWSCredentialsProvider` that uses Amplify Android v2 to provide credentials. + + + + +```java +import com.amazonaws.auth.AWSCredentials; +import com.amazonaws.auth.AWSCredentialsProvider; +import com.amazonaws.auth.BasicSessionCredentials; +import com.amplifyframework.auth.AWSTemporaryCredentials; +import com.amplifyframework.auth.cognito.AWSCognitoAuthSession; +import com.amplifyframework.auth.options.AuthFetchSessionOptions; +import com.amplifyframework.core.Amplify; + +import java.util.concurrent.CompletableFuture; + +class AmplifyCredentialsProvider implements AWSCredentialsProvider { + + @Override + public AWSCredentials getCredentials() { + CompletableFuture sdkCredentials = new CompletableFuture<>(); + + Amplify.Auth.fetchAuthSession((authSession) -> { + BasicSessionCredentials credentials = null; + if (authSession instanceof AWSCognitoAuthSession) { + AWSCognitoAuthSession cognitoAuthSession = (AWSCognitoAuthSession) authSession; + com.amplifyframework.auth.AWSCredentials awsCredentials = + cognitoAuthSession.getAwsCredentialsResult().getValue(); + if (awsCredentials instanceof AWSTemporaryCredentials) { + AWSTemporaryCredentials temporaryAwsCredentials = + (AWSTemporaryCredentials) awsCredentials; + credentials = new BasicSessionCredentials( + temporaryAwsCredentials.getAccessKeyId(), + temporaryAwsCredentials.getSecretAccessKey(), + temporaryAwsCredentials.getSessionToken() + ); + } + } + + if (credentials != null) { + sdkCredentials.complete(credentials); + } else { + sdkCredentials.completeExceptionally( + new RuntimeException("Failed to get credentials") + ); + } + }, (exception) -> sdkCredentials.completeExceptionally( + new RuntimeException("Failed to get credentials", exception) + )); + + return sdkCredentials.join(); + } + + @Override + public void refresh() { + CompletableFuture result = new CompletableFuture<>(); + Amplify.Auth.fetchAuthSession( + AuthFetchSessionOptions.builder().forceRefresh(true).build(), + // We do not need to capture value if refresh succeeds + (authSession) -> result.complete(null), + // We do not need to throw if refresh fails + (exception) -> result.complete(null) + ); + + result.join(); + } +} +``` + + + + +```kotlin +import com.amazonaws.auth.AWSCredentials +import com.amazonaws.auth.AWSCredentialsProvider +import com.amazonaws.auth.BasicSessionCredentials +import com.amplifyframework.auth.AWSTemporaryCredentials +import com.amplifyframework.auth.cognito.AWSCognitoAuthSession +import com.amplifyframework.auth.options.AuthFetchSessionOptions +import com.amplifyframework.core.Amplify +import java.lang.RuntimeException +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException +import kotlin.coroutines.suspendCoroutine +import kotlinx.coroutines.runBlocking + +class AmplifyCredentialsProvider : AWSCredentialsProvider { + + override fun getCredentials(): AWSCredentials = runBlocking { + suspendCoroutine { continuation -> + Amplify.Auth.fetchAuthSession( + { authSession -> + val awsTemporaryCredentials = (authSession as? AWSCognitoAuthSession) + ?.awsCredentialsResult?.value as? AWSTemporaryCredentials + + val sdkCredentials = awsTemporaryCredentials?.let { + BasicSessionCredentials(it.accessKeyId, it.secretAccessKey, it.sessionToken) + } + + if (sdkCredentials != null) { + continuation.resume(sdkCredentials) + } else { + val authException = RuntimeException("Failed to get credentials") + continuation.resumeWithException(authException) + } + }, + { + continuation.resumeWithException( + RuntimeException("Failed to get credentials. See exception.", it) + ) + } + ) + } + } + + override fun refresh() = runBlocking { + suspendCoroutine { continuation -> + Amplify.Auth.fetchAuthSession( + AuthFetchSessionOptions.builder().forceRefresh(true).build(), + // We do not need to capture value if refresh succeeds + { continuation.resume(Unit) }, + // We do not need to throw if refresh fails + { continuation.resume(Unit) } + ) + } + } +} +``` + + + + +You can now use your `AmplifyCredentialsProvider` in any plugins that accept an `AWSCredentialsProvider`, instead of using `AWSMobileClient.getInstance()` as your AWSCredentialsProvider. + + +## Providing AWS Configuration Information + +Amplify v2 uses the `amplifyconfiguration.json` file where AWS Android SDK uses the `awsconfiguration.json` file. If you are using both Amplify v2 and AWS Android SDK in your project, it is important to ensure the resources are in sync. The Amplify CLI still generates and updates both of these file types, but any manual customizations should be applied to both files. + +For AWS Android SDK plugins that require configuration information, you can continue to use the `AWSConfiguration` class. + + + + +```java +AWSConfiguration awsConfiguration = new AWSConfiguration(context); +``` + + + + +```kotlin +val awsConfiguration = AWSConfiguration(context) +``` + + + + +## Example Usage of AWS Android SDK Plugins with Amplify v2 + +This is not an exhaustive list of supported plugins. Any plugins that accept an AWSCredentialsProvider and do not rely on AWS Mobile Client should work. + +### S3 Storage (com.amazonaws:aws-android-sdk-s3) + + + + +```java +AWSConfiguration awsConfiguration = new AWSConfiguration(context); +TransferUtility transferUtility = TransferUtility.builder() + .context(context) + .awsConfiguration(awsConfig) + .s3Client( + new AmazonS3Client( + new AmplifyCredentialsProvider(), + Region.getRegion(Regions.US_EAST_1) + ) + ) + .build(); +``` + + + + +```kotlin +val awsConfiguration = AWSConfiguration(context) +val transferUtility = TransferUtility.builder() + .context(context) + .awsConfiguration(awsConfiguration) + .s3Client( + AmazonS3Client( + AmplifyCredentialsProvider(), + Region.getRegion(Regions.US_EAST_1) + ) + ) + .build() +``` + + + + +### IoT (com.amazonaws:aws-android-sdk-iot) + + + + +```java +AWSIotClient client = new AWSIotClient(new AmplifyCredentialsProvider()); + +``` + + + + +```kotlin +val client = AWSIotClient(AmplifyCredentialsProvider()) +``` + + + + + + +### Android SDK Generated by API Gateway (aws-android-sdk-apigateway-core) + + + + +```java +ApiClientFactory clientFactory = new ApiClientFactory(); +clientFactory.credentialsProvider(new AmplifyCredentialsProvider()); +``` + + + + +```kotlin +val clientFactory = ApiClientFactory() +clientFactory.credentialsProvider(AmplifyCredentialsProvider()) +``` + + + + + diff --git a/src/pages/gen1/[platform]/tools/cli/usage/lambda-triggers/index.mdx b/src/pages/gen1/[platform]/tools/cli/usage/lambda-triggers/index.mdx index 236d4d83e31..12e39458a0d 100644 --- a/src/pages/gen1/[platform]/tools/cli/usage/lambda-triggers/index.mdx +++ b/src/pages/gen1/[platform]/tools/cli/usage/lambda-triggers/index.mdx @@ -120,7 +120,7 @@ import trigger from '/src/fragments/cli/lambda_triggers_callout.mdx'; The CLI Auth workflow provides the following Lambda trigger templates: -### Custom Auth Challenge with Google reCaptcha +#### Custom Auth Challenge with Google reCaptcha Captchas allow front end applications to guard against bots or other unwanted page interactions by presenting a challenge that is designed to require human intervention. The Google reCaptcha service is a popular implementation of captcha. @@ -277,23 +277,23 @@ export class AppComponent { -### Basic Scaffolding for a Custom Auth Challenge +#### Basic Scaffolding for a Custom Auth Challenge This template will configure three triggers: [CreateAuthChallenge](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-create-auth-challenge.html), [DefineAuthChallenge](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-define-auth-challenge.html), and [VerifyAuthChallengeResponse](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-verify-auth-challenge-response.html). It will not, however, provide a fully-formed custom authentication flow. Instead, it will create a 'hello world' custom auth flow skeleton that you can manually edit. The intent of this template is to give you a starting place for building out your own custom auth flow. -### Add User to Group +#### Add User to Group This trigger allows you to define a Cognito group to which a user will be added upon registration. The trigger will check for the existence of the group in your User Pool, and will create the group if it is not present. -### Email Domain Filtering (deny list) and Email Domain Filtering (allow list) +#### Email Domain Filtering (deny list) and Email Domain Filtering (allow list) These two templates allow you to define email domains which are allowed or disallowed (respectively). They can be used in tandem or individually. -### Override ID Token Claims +#### Override ID Token Claims This template uses the Pre Token Generation trigger and allows you to add, override or remove claims from the [ID token](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html#amazon-cognito-user-pools-using-the-id-token) that is returned by Cognito. diff --git a/yarn.lock b/yarn.lock index f962b821a04..6aee437ac0d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2029,18 +2029,19 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.24.tgz#58601079e11784d20f82d0585865bb42305c4df3" integrity sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ== -"@puppeteer/browsers@1.4.6": - version "1.4.6" - resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-1.4.6.tgz#1f70fd23d5d2ccce9d29b038e5039d7a1049ca77" - integrity sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ== +"@puppeteer/browsers@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.1.0.tgz#2683d3c908ecfc9af6b63111b5037679d3cebfd8" + integrity sha512-xloWvocjvryHdUjDam/ZuGMh7zn4Sn3ZAaV4Ah2e2EwEt90N3XphZlSsU3n0VDc1F7kggCjMuH0UuxfPQ5mD9w== dependencies: debug "4.3.4" extract-zip "2.0.1" progress "2.0.3" - proxy-agent "6.3.0" - tar-fs "3.0.4" + proxy-agent "6.4.0" + semver "7.6.0" + tar-fs "3.0.5" unbzip2-stream "1.4.3" - yargs "17.7.1" + yargs "17.7.2" "@radix-ui/number@1.0.0": version "1.0.0" @@ -4170,12 +4171,13 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -chromium-bidi@0.4.16: - version "0.4.16" - resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.4.16.tgz#8a67bfdf6bb8804efc22765a82859d20724b46ab" - integrity sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA== +chromium-bidi@0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.5.9.tgz#f068bd10e8a3007bc842ae99f5038c8689bf58a5" + integrity sha512-wOTX3m2zuHX0zRX4h7Ol1DAGz0cqHzo2IrAPvOqBxdd4ZR32vxg4FKNjmBihi1oP9b1QGSBBG5VNUUXUCsxDfg== dependencies: - mitt "3.0.0" + mitt "3.0.1" + urlpattern-polyfill "10.0.0" ci-info@^2.0.0: version "2.0.0" @@ -4540,15 +4542,15 @@ cosmiconfig@8.0.0: parse-json "^5.0.0" path-type "^4.0.0" -cosmiconfig@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.2.0.tgz#f7d17c56a590856cd1e7cee98734dca272b0d8fd" - integrity sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ== +cosmiconfig@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== dependencies: - import-fresh "^3.2.1" + env-paths "^2.2.1" + import-fresh "^3.3.0" js-yaml "^4.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" + parse-json "^5.2.0" create-require@^1.1.0: version "1.1.1" @@ -4929,10 +4931,10 @@ devlop@^1.0.0, devlop@^1.1.0: dependencies: dequal "^2.0.0" -devtools-protocol@0.0.1147663: - version "0.0.1147663" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz#4ec5610b39a6250d1f87e6b9c7e16688ed0ac78e" - integrity sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ== +devtools-protocol@0.0.1249869: + version "0.0.1249869" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1249869.tgz#000c3cf1afc189a18db98135a50d4a8f95a47d29" + integrity sha512-Ctp4hInA0BEavlUoRy9mhGq0i+JSo/AwVyX2EFgZmV1kYB+Zq+EMBAn52QWu6FbRr10hRb6pBl420upbp4++vg== diff-sequences@^26.6.2: version "26.6.2" @@ -5092,6 +5094,11 @@ enquirer@^2.3.6: ansi-colors "^4.1.1" strip-ansi "^6.0.1" +env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -6487,7 +6494,7 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.3: +https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.3: version "7.0.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== @@ -8870,10 +8877,10 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== -mitt@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.0.tgz#69ef9bd5c80ff6f57473e8d89326d01c414be0bd" - integrity sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ== +mitt@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" + integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== mixin-deep@^1.2.0: version "1.3.2" @@ -9353,7 +9360,7 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pac-proxy-agent@^7.0.0, pac-proxy-agent@^7.0.1: +pac-proxy-agent@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz#6b9ddc002ec3ff0ba5fdf4a8a21d363bcc612d75" integrity sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A== @@ -9419,7 +9426,7 @@ parse-imports@^1.1.0: es-module-lexer "^1.3.0" slashes "^3.0.12" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -9669,21 +9676,7 @@ property-information@^6.0.0: resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.4.1.tgz#de8b79a7415fd2107dfbe65758bb2cc9dfcf60ac" integrity sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w== -proxy-agent@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.3.0.tgz#72f7bb20eb06049db79f7f86c49342c34f9ba08d" - integrity sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og== - dependencies: - agent-base "^7.0.2" - debug "^4.3.4" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.0" - lru-cache "^7.14.1" - pac-proxy-agent "^7.0.0" - proxy-from-env "^1.1.0" - socks-proxy-agent "^8.0.1" - -proxy-agent@^6.3.0: +proxy-agent@6.4.0, proxy-agent@^6.3.0: version "6.4.0" resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.4.0.tgz#b4e2dd51dee2b377748aef8d45604c2d7608652d" integrity sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ== @@ -9725,26 +9718,26 @@ punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -puppeteer-core@20.9.0: - version "20.9.0" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-20.9.0.tgz#6f4b420001b64419deab38d398a4d9cd071040e6" - integrity sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg== +puppeteer-core@22.2.0: + version "22.2.0" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-22.2.0.tgz#85bf2c492ba02e8051bb75dff3043d21d9945f21" + integrity sha512-rxLM860FP05CxCPAn6dwY0KnVhbnogsXu4XORb+2hb/va69v7R1VdJWLMGHd7EE5wfpT8oFZ7Q6NN85OhOtV9Q== dependencies: - "@puppeteer/browsers" "1.4.6" - chromium-bidi "0.4.16" + "@puppeteer/browsers" "2.1.0" + chromium-bidi "0.5.9" cross-fetch "4.0.0" debug "4.3.4" - devtools-protocol "0.0.1147663" - ws "8.13.0" + devtools-protocol "0.0.1249869" + ws "8.16.0" -puppeteer@^20.8.2: - version "20.9.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-20.9.0.tgz#7bfb9e37deab9728e13b02ea3fb499b5560c79a7" - integrity sha512-kAglT4VZ9fWEGg3oLc4/de+JcONuEJhlh3J6f5R1TLkrY/EHHIHxWXDOzXvaxQCtedmyVXBwg8M+P8YCO/wZjw== +puppeteer@^22.2.0: + version "22.2.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-22.2.0.tgz#2f4e4bff252bc6999f213288ed717940b27b0918" + integrity sha512-0Ax7zeqqbQL6Zcpo1WAvrqWQAnGsLB4tmQUUwsb5Cfo05XaQ78LWUUjaO4um7qaddKpZfk0vXlGcRVwtedpWfg== dependencies: - "@puppeteer/browsers" "1.4.6" - cosmiconfig "8.2.0" - puppeteer-core "20.9.0" + "@puppeteer/browsers" "2.1.0" + cosmiconfig "9.0.0" + puppeteer-core "22.2.0" qrcode@1.5.0: version "1.5.0" @@ -10335,7 +10328,7 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -"semver@2 || 3 || 4 || 5", semver@7.5.2, semver@7.x, semver@^5.5.0, semver@^6.0.0, semver@^6.3.0, semver@^6.3.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.8, semver@^7.5.1, semver@^7.5.3, semver@^7.5.4: +"semver@2 || 3 || 4 || 5", semver@7.5.2, semver@7.6.0, semver@7.x, semver@^5.5.0, semver@^6.0.0, semver@^6.3.0, semver@^6.3.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.8, semver@^7.5.1, semver@^7.5.3, semver@^7.5.4: version "7.5.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.2.tgz#5b851e66d1be07c1cdaf37dfc856f543325a2beb" integrity sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ== @@ -10595,7 +10588,7 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^8.0.1, socks-proxy-agent@^8.0.2: +socks-proxy-agent@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz#5acbd7be7baf18c46a3f293a840109a430a640ad" integrity sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g== @@ -10999,14 +10992,16 @@ tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar-fs@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.4.tgz#a21dc60a2d5d9f55e0089ccd78124f1d3771dbbf" - integrity sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w== +tar-fs@3.0.5, tar-fs@^3.0.4: + version "3.0.5" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.5.tgz#f954d77767e4e6edf973384e1eb95f8f81d64ed9" + integrity sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg== dependencies: - mkdirp-classic "^0.5.2" pump "^3.0.0" tar-stream "^3.1.5" + optionalDependencies: + bare-fs "^2.1.1" + bare-path "^2.1.0" tar-fs@^2.0.0: version "2.1.1" @@ -11018,17 +11013,6 @@ tar-fs@^2.0.0: pump "^3.0.0" tar-stream "^2.1.4" -tar-fs@^3.0.4: - version "3.0.5" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.5.tgz#f954d77767e4e6edf973384e1eb95f8f81d64ed9" - integrity sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg== - dependencies: - pump "^3.0.0" - tar-stream "^3.1.5" - optionalDependencies: - bare-fs "^2.1.1" - bare-path "^2.1.0" - tar-stream@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" @@ -11694,6 +11678,11 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" +urlpattern-polyfill@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz#f0a03a97bfb03cdf33553e5e79a2aadd22cac8ec" + integrity sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg== + use-callback-ref@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.1.tgz#9be64c3902cbd72b07fe55e56408ae3a26036fd0" @@ -12117,10 +12106,10 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +ws@8.16.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== ws@^7.3.1, ws@^7.4.6: version "7.5.9" @@ -12205,10 +12194,10 @@ yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@17.7.1: - version "17.7.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" - integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== +yargs@17.7.2, yargs@^17.1.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" escalade "^3.1.1" @@ -12235,19 +12224,6 @@ yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^17.1.1: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"