From 5da5c7c29bb1405936577767501b1ed8d3fb1c75 Mon Sep 17 00:00:00 2001 From: Kyle Khoury Date: Wed, 18 May 2022 06:10:31 -0400 Subject: [PATCH] feat(api): support for CustomEmailSender --- README.md | 82 +- .../aws-sdk/adminCreateUser.test.ts | 5 +- integration-tests/aws-sdk/setup.ts | 15 +- package.json | 38 +- src/__tests__/mockTriggers.ts | 1 + src/server/config.ts | 9 + src/server/defaults.ts | 4 +- src/services/crypto.ts | 58 + src/services/lambda.test.ts | 60 + src/services/lambda.ts | 45 + src/services/messages.ts | 35 + .../triggers/customEmailSender.test.ts | 76 ++ src/services/triggers/customEmailSender.ts | 80 ++ src/services/triggers/triggers.ts | 12 +- src/targets/adminCreateUser.test.ts | 9 + src/targets/adminCreateUser.ts | 14 +- src/targets/signUp.test.ts | 11 + src/targets/signUp.ts | 20 +- yarn.lock | 1089 +++++++++++------ 19 files changed, 1230 insertions(+), 433 deletions(-) create mode 100644 src/services/crypto.ts create mode 100644 src/services/triggers/customEmailSender.test.ts create mode 100644 src/services/triggers/customEmailSender.ts diff --git a/README.md b/README.md index 937299bb..fc67d579 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ A _Good Enough_ offline emulator for [Amazon Cognito](https://aws.amazon.com/cog - [Updating your application](#updating-your-application) - [Creating your first User Pool](#creating-your-first-user-pool) - [Configuration](#configuration) + - [Custom Email Sender Trigger](#custom-email-sender-trigger) - [HTTPS endpoints with self-signed certificates](#https-endpoints-with-self-signed-certificates) - [User Pools and Clients](#user-pools-and-clients) - [Known Limitations](#known-limitations) @@ -179,7 +180,13 @@ cognito-local how to connect to your local Lambda server: | Trigger | Operation | Support | | --------------------------- | ------------------------------------ | ------- | | CreateAuthChallenge | \* | ❌ | -| CustomEmailSender | \* | ❌ | +| CustomEmailSender | CustomEmailSender_SignUp | ✅ | +| CustomEmailSender | CustomEmailSender_ResendCode | ✅ | +| CustomEmailSender | CustomEmailSender_ForgotPassword | ✅ | +| CustomEmailSender | CustomEmailSender_UpdateUserAttribute| ✅ | +| CustomEmailSender | CustomEmailSender_VerifyUserAttribute| ✅ | +| CustomEmailSender | CustomEmailSender_AdminCreateUser | ✅ | +| CustomEmailSender | CustomEmailSender_AccountTakeOver... | ❌ | | CustomMessage | AdminCreateUser | ✅ | | CustomMessage | Authentication | ✅ | | CustomMessage | ForgotPassword | ✅ | @@ -319,6 +326,13 @@ You can edit that `.cognito/config.json` and add any of the following settings: | `UserPoolDefaults` | `object` | | Default behaviour to use for the User Pool | | `UserPoolDefaults.MfaConfiguration` | `string` | | MFA type | | `UserPoolDefaults.UsernameAttributes` | `string[]` | `["email"]` | Username alias attributes | +| `KMSConfig` | `object` | | Any setting you would pass to the AWS.KMS Node.js client | +| `KMSConfig.KMSKeyId` | `string` | `local` | The KMSKeyId to pass to encrypt the code | +| `KMSConfig.KMSKeyAlias` | `string` | `local` | The KMSKeyAlias to pass to encrypt the code | +| `KMSConfig.credentials.accessKeyId` | `string` | `local` | | +| `KMSConfig.credentials.secretAccessKey` | `string` | `local` | | +| `KMSConfig.endpoint` | `string` | `local` | | +| `KMSConfig.region` | `string` | `local` | | The default config is: @@ -337,10 +351,76 @@ The default config is: "TriggerFunctions": {}, "UserPoolDefaults": { "UsernameAttributes": ["email"] + }, + "KMSConfig": { + "credentials": { + "accessKeyId": "local", + "secretAccessKey": "local", + }, + "region": "local", } } ``` +### Custom Email Sender Trigger +To use a the custom email sender trigger you **must** provide the `KMSKeyID` and `KMSKeyAlias` properties in the `KMSConfig` property in the `.cognito/config.json` file. + +One way of setting this up locally is as follows: + +You can use the (local kms)[https://github.com/nsmithuk/local-kms] package to simulate a locally running KMS service. + +Create a `./local-kms/seed.yml` file and populate it with the KMS Key and the KMS Alias: + +```yml +Keys: + Symmetric: + Aes: + - Metadata: + KeyId: bc436485-5092-42b8-92a3-0aa8b93536c + BackingKeys: + - 5cdaead27fe7da2de47945d73cd6d79e36494e73802f3cd3869f1d2cb0b5d7a9 +Aliases: + - AliasName: alias/testing + TargetKeyId: bc436485-5092-42b8-92a3-0aa8b93536c +``` + +We can use docker-compose to start local-kms: + +```yml +local-kms: + image: nsmithuk/local-kms + volumes: + - ./local-kms/:/init + environment: + KMS_ACCOUNT_ID: '999999999' + KMS_REGION: 'us-west-2' +``` + +This will expose the `local-kms` service in the docker network at `http://local-kms:8080`. It will also create a KMS Key with arn: `arn:aws:kms:us-west-2:999999999:key/bc436485-5092-42b8-92a3-0aa8b93536c` and an KMS Alias with arn `arn:aws:kms:us-west-2:999999999:alias/testing`. + +Now in our cognito-local `.cognito/config.json` file we just need to populate it with these values: + +```yml +"TriggerFunctions": { + "CustomEmailSender": "your-custom-email-sender-trigger-function-here" +}, +"KMSConfig": { + "KMSKeyId": "arn:aws:kms:us-west-2:999999999:key/bc436485-5092-42b8-92a3-0aa8b93536c", + "KMSKeyAlias": "arn:aws:kms:us-west-2:999999999:alias/testing", + "endpoint": "http://local-kms:8080" +} +``` + +Your custom email sender trigger should now be called with the encrypted code. You can then decrypt it following (aws' documentation)[https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-email-sender.html]. However, make sure to use the same `local-kms` endpoint, KMS Key and KMS Alias when decrypting the code: + +```ts + const kmsKeyringNode = new kmsSdk.KmsKeyringNode({ + generatorKeyId: 'arn:aws:kms:us-west-2:999999999:alias/testing', + keyIds: ['arn:aws:kms:us-west-2:999999999:key/bc436485-5092-42b8-92a3-0aa8b93536c'], + clientProvider: () => new AWS.KMS({ endpoint: 'http://local-kms:8080' }), +}); +``` + ### HTTPS endpoints with self-signed certificates If you need your Lambda endpoint to be HTTPS with a self-signed certificate, you will need to disable certificate diff --git a/integration-tests/aws-sdk/adminCreateUser.test.ts b/integration-tests/aws-sdk/adminCreateUser.test.ts index 133c29bf..11eb0027 100644 --- a/integration-tests/aws-sdk/adminCreateUser.test.ts +++ b/integration-tests/aws-sdk/adminCreateUser.test.ts @@ -18,7 +18,7 @@ describe( const createUserResult = await client .adminCreateUser({ UserAttributes: [{ Name: "phone_number", Value: "0400000000" }], - Username: "abc", + Username: "example@example.com", UserPoolId: "test", }) .promise(); @@ -31,12 +31,13 @@ describe( Value: expect.stringMatching(UUID), }, { Name: "phone_number", Value: "0400000000" }, + { Name: "email", Value: "example@example.com" }, ], Enabled: true, UserCreateDate: roundedDate, UserLastModifiedDate: roundedDate, UserStatus: "FORCE_CHANGE_PASSWORD", - Username: "abc", + Username: "example@example.com", }, }); }); diff --git a/integration-tests/aws-sdk/setup.ts b/integration-tests/aws-sdk/setup.ts index 25ac3cd2..eae3ed77 100644 --- a/integration-tests/aws-sdk/setup.ts +++ b/integration-tests/aws-sdk/setup.ts @@ -21,6 +21,7 @@ import { otp } from "../../src/services/otp"; import { JwtTokenGenerator } from "../../src/services/tokenGenerator"; import { UserPoolServiceFactoryImpl } from "../../src/services/userPoolService"; import { Router } from "../../src/server/Router"; +import { CryptoService } from "../../src/services/crypto"; const mkdtemp = promisify(fs.mkdtemp); const rmdir = promisify(fs.rmdir); @@ -57,10 +58,16 @@ export const withCognitoSdk = new UserPoolServiceFactoryImpl(clock, dataStoreFactory) ); const cognitoClient = await cognitoServiceFactory.create(ctx, {}); - const triggers = new TriggersService(clock, cognitoClient, { - enabled: jest.fn().mockReturnValue(false), - invoke: jest.fn(), - }); + const triggers = new TriggersService( + clock, + cognitoClient, + { + enabled: jest.fn().mockReturnValue(false), + invoke: jest.fn(), + }, + new CryptoService({ KMSKeyId: "", KMSKeyAlias: "" }) + ); + const router = Router({ clock, cognito: cognitoClient, diff --git a/package.json b/package.json index f5964921..da78e296 100644 --- a/package.json +++ b/package.json @@ -38,9 +38,9 @@ "@types/jest": "^25.2.1", "@types/jsonwebtoken": "^8.5.6", "@types/lodash.mergewith": "^4.6.6", + "@types/node": "^16.11.11", "@types/supertest": "^2.0.11", "@types/uuid": "^8.3.3", - "@types/node": "^16.11.11", "@typescript-eslint/eslint-plugin": "^2.27.0", "@typescript-eslint/parser": "^2.27.0", "esbuild": "^0.14.2", @@ -60,7 +60,8 @@ "typescript": "^4.5.2" }, "dependencies": { - "aws-sdk": "^2.1045.0", + "@aws-crypto/client-node": "^3.1.1", + "aws-sdk": "2.1136.0", "body-parser": "^1.19.0", "boxen": "^5.1.2", "cors": "^2.8.5", @@ -102,21 +103,34 @@ "url": "https://github.com/jagregory/cognito-local.git" }, "release": { - "branches": ["master"], + "branches": [ + "master" + ], "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", "@semantic-release/changelog", "@semantic-release/npm", - ["@semantic-release/exec", { - "publishCmd": "./scripts/dockerBuildPush.sh ${nextRelease.version}" - }], - ["@semantic-release/github", { - "addReleases": "top" - }], - ["@semantic-release/git", { - "assets": ["CHANGELOG.md"] - }] + [ + "@semantic-release/exec", + { + "publishCmd": "./scripts/dockerBuildPush.sh ${nextRelease.version}" + } + ], + [ + "@semantic-release/github", + { + "addReleases": "top" + } + ], + [ + "@semantic-release/git", + { + "assets": [ + "CHANGELOG.md" + ] + } + ] ] } } diff --git a/src/__tests__/mockTriggers.ts b/src/__tests__/mockTriggers.ts index dbb7872c..2c0d0d20 100644 --- a/src/__tests__/mockTriggers.ts +++ b/src/__tests__/mockTriggers.ts @@ -2,6 +2,7 @@ import { Triggers } from "../services"; export const newMockTriggers = (): jest.Mocked => ({ customMessage: jest.fn(), + customEmailSender: jest.fn(), enabled: jest.fn(), postAuthentication: jest.fn(), postConfirmation: jest.fn(), diff --git a/src/server/config.ts b/src/server/config.ts index adf8c68e..ac9a5b18 100644 --- a/src/server/config.ts +++ b/src/server/config.ts @@ -4,6 +4,7 @@ import { FunctionConfig } from "../services/lambda"; import { UserPool } from "../services/userPoolService"; import { TokenConfig } from "../services/tokenGenerator"; import mergeWith from "lodash.mergewith"; +import { KMSConfig } from "../services/crypto"; export type UserPoolDefaults = Omit< UserPool, @@ -14,6 +15,7 @@ export interface Config { LambdaClient: AWS.Lambda.ClientConfiguration; TriggerFunctions: FunctionConfig; UserPoolDefaults: UserPoolDefaults; + KMSConfig?: AWS.KMS.ClientConfiguration & KMSConfig; TokenConfig: TokenConfig; } @@ -33,6 +35,13 @@ export const DefaultConfig: Config = { // TODO: this needs to match the actual host/port we started the server on IssuerDomain: "http://localhost:9229", }, + KMSConfig: { + credentials: { + accessKeyId: "local", + secretAccessKey: "local", + }, + region: "local", + }, }; export const loadConfig = async ( diff --git a/src/server/defaults.ts b/src/server/defaults.ts index 64fb66a8..92f63d23 100644 --- a/src/server/defaults.ts +++ b/src/server/defaults.ts @@ -17,6 +17,7 @@ import { UserPoolServiceFactoryImpl } from "../services/userPoolService"; import { Router } from "./Router"; import { loadConfig } from "./config"; import { createServer, Server } from "./server"; +import { CryptoService } from "../services/crypto"; export const createDefaultServer = async ( logger: pino.Logger @@ -58,7 +59,8 @@ export const createDefaultServer = async ( new LambdaService( config.TriggerFunctions, new AWS.Lambda(config.LambdaClient) - ) + ), + new CryptoService(config.KMSConfig) ); return createServer( diff --git a/src/services/crypto.ts b/src/services/crypto.ts new file mode 100644 index 00000000..f02c2919 --- /dev/null +++ b/src/services/crypto.ts @@ -0,0 +1,58 @@ +import { + buildClient, + CommitmentPolicy, + KmsKeyringNode, +} from "@aws-crypto/client-node"; +import { KMS } from "aws-sdk"; +import { Context } from "./context"; + +export interface KMSConfig { + KMSKeyId?: string; + KMSKeyAlias?: string; +} + +const { encrypt } = buildClient(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT); + +export class CryptoService { + _keyringNode?: KmsKeyringNode; + config?: KMSConfig & AWS.KMS.ClientConfiguration; + + constructor(config?: KMSConfig) { + this.config = config; + } + + get keyringNode(): KmsKeyringNode { + if (this._keyringNode) { + return this._keyringNode; + } + + if (!this.config || !this.config.KMSKeyAlias || !this.config.KMSKeyId) { + throw new Error( + "KMSConfig.KMSKeyAlias and KMSConfig.KMSKeyId is required when using a CustomEmailSender trigger." + ); + } + + const { KMSKeyId, KMSKeyAlias, ...clientConfig } = this.config; + + const generatorKeyId = KMSKeyAlias; + const keyIds = [KMSKeyId]; + + return (this._keyringNode = new KmsKeyringNode({ + generatorKeyId, + keyIds, + clientProvider: () => new KMS(clientConfig), + })); + } + + async encrypt(ctx: Context, plaintext: string): Promise { + ctx.logger.debug({ plaintext }, "encrypting code"); + + const { result } = await encrypt(this.keyringNode, plaintext); + + const encryptedCode = result.toString("base64"); + + ctx.logger.debug({ encryptedCode }, "code succesfully encrypted"); + + return encryptedCode; + } +} diff --git a/src/services/lambda.test.ts b/src/services/lambda.test.ts index cbbf50b6..db97c050 100644 --- a/src/services/lambda.test.ts +++ b/src/services/lambda.test.ts @@ -6,6 +6,7 @@ import { import { LambdaService } from "./lambda"; import * as AWS from "aws-sdk"; import { version } from "aws-sdk/package.json"; +import { CryptoService } from "./crypto"; describe("Lambda function invoker", () => { let mockLambdaClient: jest.Mocked; @@ -534,5 +535,64 @@ describe("Lambda function invoker", () => { }); }); }); + + describe.each([ + "CustomEmailSender_SignUp", + "CustomEmailSender_ResendCode", + "CustomEmailSender_ForgotPassword", + "CustomEmailSender_UpdateUserAttribute", + "CustomEmailSender_VerifyUserAttribute", + "CustomEmailSender_AdminCreateUser", + ] as const)("%s", (source) => { + it("invokes the lambda function with the code parameter", async () => { + const response = Promise.resolve({ + StatusCode: 200, + Payload: '{ "some": "json" }', + }); + + mockLambdaClient.invoke.mockReturnValue({ + promise: () => response, + } as any); + + const lambda = new LambdaService( + { + CustomEmailSender: "MyLambdaName", + }, + mockLambdaClient + ); + + await lambda.invoke(TestContext, "CustomEmailSender", { + code: "code", + clientId: "clientId", + clientMetadata: { + client: "metadata", + }, + triggerSource: source, + userAttributes: {}, + username: "username", + userPoolId: "userPoolId", + }); + + expect(mockLambdaClient.invoke).toHaveBeenCalledWith({ + FunctionName: "MyLambdaName", + InvocationType: "RequestResponse", + Payload: expect.jsonMatching({ + version: "0", + callerContext: { awsSdkVersion: version, clientId: "clientId" }, + region: "local", + userPoolId: "userPoolId", + triggerSource: source, + userName: "username", + request: { + type: "customEmailSenderRequestV1", + code: "code", + userAttributes: {}, + clientMetadata: { client: "metadata" }, + }, + response: {}, + }), + }); + }); + }); }); }); diff --git a/src/services/lambda.ts b/src/services/lambda.ts index b4001b3b..16d92406 100644 --- a/src/services/lambda.ts +++ b/src/services/lambda.ts @@ -41,6 +41,20 @@ interface EventCommonParameters { userPoolId: string; } +interface CustomEmailSenderEvent + extends Omit { + clientId: string | null; + code: string; + clientMetadata: Record | undefined; + triggerSource: + | "CustomEmailSender_AdminCreateUser" + | "CustomEmailSender_ForgotPassword" + | "CustomEmailSender_ResendCode" + | "CustomEmailSender_SignUp" + | "CustomEmailSender_UpdateUserAttribute" + | "CustomEmailSender_VerifyUserAttribute"; +} + interface CustomMessageEvent extends Omit { clientId: string | null; clientMetadata: Record | undefined; @@ -130,6 +144,7 @@ export interface FunctionConfig { PreSignUp?: string; PreTokenGeneration?: string; UserMigration?: string; + CustomEmailSender?: string; } export type CustomMessageTriggerResponse = @@ -143,6 +158,8 @@ export type PostAuthenticationTriggerResponse = PostAuthenticationTriggerEvent["response"]; export type PostConfirmationTriggerResponse = PostConfirmationTriggerEvent["response"]; +export type CustomEmailSenderTriggerResponse = + CustomEmailSenderTriggerEvent["response"]; export interface Lambda { enabled(lambda: keyof FunctionConfig): boolean; @@ -176,6 +193,11 @@ export interface Lambda { lambda: "PostConfirmation", event: PostConfirmationEvent ): Promise; + invoke( + ctx: Context, + lambda: "CustomEmailSender", + event: CustomEmailSenderEvent + ): Promise; } export class LambdaService implements Lambda { @@ -196,6 +218,7 @@ export class LambdaService implements Lambda { trigger: keyof FunctionConfig, event: | CustomMessageEvent + | CustomEmailSenderEvent | PostAuthenticationEvent | PostConfirmationEvent | PreSignUpEvent @@ -251,6 +274,7 @@ export class LambdaService implements Lambda { private createLambdaEvent( event: | CustomMessageEvent + | CustomEmailSenderEvent | PostAuthenticationEvent | PostConfirmationEvent | PreSignUpEvent @@ -398,6 +422,27 @@ export class LambdaService implements Lambda { }; } + case "CustomEmailSender_SignUp": + case "CustomEmailSender_ResendCode": + case "CustomEmailSender_ForgotPassword": + case "CustomEmailSender_UpdateUserAttribute": + case "CustomEmailSender_VerifyUserAttribute": + case "CustomEmailSender_AdminCreateUser": + return { + version, + region, + userPoolId: event.userPoolId, + triggerSource: event.triggerSource, + userName: event.username, + callerContext, + request: { + type: "customEmailSenderRequestV1", + code: event.code, + userAttributes: event.userAttributes, + clientMetadata: event.clientMetadata, + }, + response: {}, + }; default: { throw new Error("Unsupported Trigger Source"); } diff --git a/src/services/messages.ts b/src/services/messages.ts index 00f592ec..ba4a6306 100644 --- a/src/services/messages.ts +++ b/src/services/messages.ts @@ -56,6 +56,21 @@ export class MessagesService implements Messages { clientMetadata: Record | undefined, deliveryDetails: DeliveryDetails ): Promise { + if ( + this.triggers.enabled("CustomEmailSender") && + source !== "Authentication" + ) { + return this.customDelivery( + ctx, + source, + clientId, + userPoolId, + user, + code, + clientMetadata + ); + } + const message = await this.create( ctx, source, @@ -100,4 +115,24 @@ export class MessagesService implements Messages { __code: code, }; } + + private async customDelivery( + ctx: Context, + source: Exclude, + clientId: string | null, + userPoolId: string, + user: User, + code: string, + clientMetadata: Record | undefined + ): Promise { + await this.triggers.customEmailSender(ctx, { + clientId: clientId ?? AWS_ADMIN_CLIENT_ID, + clientMetadata, + code, + source: `CustomEmailSender_${source}`, + userAttributes: user.Attributes, + username: user.Username, + userPoolId, + }); + } } diff --git a/src/services/triggers/customEmailSender.test.ts b/src/services/triggers/customEmailSender.test.ts new file mode 100644 index 00000000..6377d00d --- /dev/null +++ b/src/services/triggers/customEmailSender.test.ts @@ -0,0 +1,76 @@ +import { newMockLambda } from "../../__tests__/mockLambda"; +import { TestContext } from "../../__tests__/testContext"; +import { CryptoService } from "../crypto"; +import { Lambda } from "../lambda"; +import { + CustomEmailSender, + CustomEmailSenderTrigger, +} from "./customEmailSender"; + +describe.only("CustomEmailSender trigger", () => { + let mockLambda: jest.Mocked; + let mockCrypto: jest.Mocked; + let customEmailSender: CustomEmailSenderTrigger; + + beforeEach(() => { + mockLambda = newMockLambda(); + mockCrypto = { + encrypt: jest.fn(), + } as any as jest.Mocked; + + customEmailSender = CustomEmailSender({ + lambda: mockLambda, + crypto: mockCrypto, + }); + }); + + describe("when lambda invoke fails", () => { + it("returns null", async () => { + mockCrypto.encrypt.mockRejectedValue(new Error("Some Encrypt Failure")); + + const message = await customEmailSender(TestContext, { + clientId: "clientId", + clientMetadata: undefined, + code: "decryptedCode", + source: "CustomEmailSender_SignUp", + userAttributes: [], + username: "username", + userPoolId: "userPoolId", + }); + + expect(message).toBeNull(); + }); + }); + + describe("when lambda invoke succeeds", () => { + beforeEach(() => { + mockCrypto.encrypt.mockResolvedValueOnce("encryptedCode"); + }); + + it("invokes the trigger with the encrypted code", async () => { + await customEmailSender(TestContext, { + clientId: "clientId", + clientMetadata: { client: "metadata" }, + code: "decryptedCode", + source: "CustomEmailSender_ForgotPassword", + userAttributes: [{ Name: "user", Value: "hello" }], + username: "example@example.com", + userPoolId: "userPoolId", + }); + + expect(mockLambda.invoke).toHaveBeenCalledWith( + TestContext, + "CustomEmailSender", + { + code: "encryptedCode", + clientId: "clientId", + clientMetadata: { client: "metadata" }, + triggerSource: "CustomEmailSender_ForgotPassword", + userAttributes: { user: "hello" }, + username: "example@example.com", + userPoolId: "userPoolId", + } + ); + }); + }); +}); diff --git a/src/services/triggers/customEmailSender.ts b/src/services/triggers/customEmailSender.ts new file mode 100644 index 00000000..99b41a82 --- /dev/null +++ b/src/services/triggers/customEmailSender.ts @@ -0,0 +1,80 @@ +import { AttributeListType } from "aws-sdk/clients/cognitoidentityserviceprovider"; +import { CryptoService } from "../crypto"; +import { CustomEmailSenderTriggerResponse, Lambda } from "../lambda"; +import { attributesToRecord } from "../userPoolService"; +import { Trigger } from "./trigger"; + +export type CustomEmailSenderTrigger = Trigger< + { + code: string; + source: + | "CustomEmailSender_SignUp" + | "CustomEmailSender_ResendCode" + | "CustomEmailSender_ForgotPassword" + | "CustomEmailSender_UpdateUserAttribute" + | "CustomEmailSender_VerifyUserAttribute" + | "CustomEmailSender_AdminCreateUser"; + userPoolId: string; + clientId: string | null; + username: string; + userAttributes: AttributeListType; + + /** + * One or more key-value pairs that you can provide as custom input to the Lambda function that you specify for the + * custom message trigger. You can pass this data to your Lambda function by using the ClientMetadata parameter in the + * following API actions: + * + * - AdminResetUserPassword + * - AdminRespondToAuthChallenge + * - AdminUpdateUserAttributes + * - ForgotPassword + * - GetUserAttributeVerificationCode + * - ResendConfirmationCode + * - SignUp + * - UpdateUserAttributes + * + * Source: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-message.html#cognito-user-pools-lambda-trigger-syntax-custom-message + */ + clientMetadata: Record | undefined; + }, + CustomEmailSenderTriggerResponse | null +>; + +interface CustomEmailSenderServices { + lambda: Lambda; + crypto: CryptoService; +} + +export const CustomEmailSender = + ({ lambda, crypto }: CustomEmailSenderServices): CustomEmailSenderTrigger => + async ( + ctx, + { + clientId, + clientMetadata, + code, + source, + userAttributes, + username, + userPoolId, + } + ) => { + try { + const encrypted = await crypto.encrypt(ctx, code); + + await lambda.invoke(ctx, "CustomEmailSender", { + code: encrypted, + clientId, + clientMetadata, + triggerSource: source, + userAttributes: attributesToRecord(userAttributes), + username, + userPoolId, + }); + + return {}; + } catch (ex) { + ctx.logger.error(ex); + return null; + } + }; diff --git a/src/services/triggers/triggers.ts b/src/services/triggers/triggers.ts index 4872da25..6c50d2b5 100644 --- a/src/services/triggers/triggers.ts +++ b/src/services/triggers/triggers.ts @@ -1,6 +1,11 @@ import { Clock } from "../clock"; import { CognitoService } from "../cognitoService"; +import { CryptoService } from "../crypto"; import { Lambda } from "../lambda"; +import { + CustomEmailSender, + CustomEmailSenderTrigger, +} from "./customEmailSender"; import { CustomMessage, CustomMessageTrigger } from "./customMessage"; import { PostAuthentication, @@ -15,6 +20,7 @@ import { import { UserMigration, UserMigrationTrigger } from "./userMigration"; type SupportedTriggers = + | "CustomEmailSender" | "CustomMessage" | "UserMigration" | "PostAuthentication" @@ -25,6 +31,7 @@ type SupportedTriggers = export interface Triggers { enabled(trigger: SupportedTriggers): boolean; customMessage: CustomMessageTrigger; + customEmailSender: CustomEmailSenderTrigger; postAuthentication: PostAuthenticationTrigger; postConfirmation: PostConfirmationTrigger; preSignUp: PreSignUpTrigger; @@ -36,6 +43,7 @@ export class TriggersService implements Triggers { private readonly lambda: Lambda; public readonly customMessage: CustomMessageTrigger; + public readonly customEmailSender: CustomEmailSenderTrigger; public readonly postAuthentication: PostAuthenticationTrigger; public readonly postConfirmation: PostConfirmationTrigger; public readonly preSignUp: PreSignUpTrigger; @@ -45,10 +53,12 @@ export class TriggersService implements Triggers { public constructor( clock: Clock, cognitoClient: CognitoService, - lambda: Lambda + lambda: Lambda, + crypto: CryptoService ) { this.lambda = lambda; + this.customEmailSender = CustomEmailSender({ lambda, crypto }); this.customMessage = CustomMessage({ lambda }); this.postAuthentication = PostAuthentication({ lambda }); this.postConfirmation = PostConfirmation({ lambda }); diff --git a/src/targets/adminCreateUser.test.ts b/src/targets/adminCreateUser.test.ts index 7b80304b..26588c6c 100644 --- a/src/targets/adminCreateUser.test.ts +++ b/src/targets/adminCreateUser.test.ts @@ -8,6 +8,8 @@ import * as TDB from "../__tests__/testDataBuilder"; import { InvalidParameterError, UsernameExistsError } from "../errors"; import { Messages, UserPoolService } from "../services"; import { AdminCreateUser, AdminCreateUserTarget } from "./adminCreateUser"; +import { Config, DefaultConfig } from "../server/config"; +import _ from "lodash"; const originalDate = new Date(); @@ -15,13 +17,16 @@ describe("AdminCreateUser target", () => { let adminCreateUser: AdminCreateUserTarget; let mockUserPoolService: jest.Mocked; let mockMessages: jest.Mocked; + let config: Config; beforeEach(() => { mockUserPoolService = newMockUserPoolService(); mockMessages = newMockMessages(); + config = _.cloneDeep(DefaultConfig); adminCreateUser = AdminCreateUser({ cognito: newMockCognitoService(mockUserPoolService), clock: new ClockFake(originalDate), + config, messages: mockMessages, }); }); @@ -118,6 +123,8 @@ describe("AdminCreateUser target", () => { }); it("fails for user without email attribute", async () => { + config.UserPoolDefaults.UsernameAttributes = []; + await expect( adminCreateUser(TestContext, { DesiredDeliveryMediums: ["EMAIL"], @@ -302,6 +309,8 @@ describe("AdminCreateUser target", () => { }); it("fails for users without phone_number or email", async () => { + config.UserPoolDefaults.UsernameAttributes = []; + await expect( adminCreateUser(TestContext, { DesiredDeliveryMediums: ["EMAIL", "SMS"], diff --git a/src/targets/adminCreateUser.ts b/src/targets/adminCreateUser.ts index b3281737..bdfed2d8 100644 --- a/src/targets/adminCreateUser.ts +++ b/src/targets/adminCreateUser.ts @@ -30,7 +30,10 @@ export type AdminCreateUserTarget = Target< AdminCreateUserResponse >; -type AdminCreateUserServices = Pick; +type AdminCreateUserServices = Pick< + Services, + "clock" | "cognito" | "messages" | "config" +>; const selectAppropriateDeliveryMethod = ( desiredDeliveryMediums: DeliveryMediumListType, @@ -97,6 +100,7 @@ export const AdminCreateUser = clock, cognito, messages, + config, }: AdminCreateUserServices): AdminCreateUserTarget => async (ctx, req) => { const userPool = await cognito.getUserPool(ctx, req.UserPoolId); @@ -116,6 +120,14 @@ export const AdminCreateUser = const temporaryPassword = req.TemporaryPassword ?? generator.new().slice(0, 6); + const isEmailUsername = + config.UserPoolDefaults.UsernameAttributes?.includes("email"); + const hasEmailAttribute = attributesInclude("email", attributes); + + if (isEmailUsername && !hasEmailAttribute) { + attributes.push({ Name: "email", Value: req.Username }); + } + const user: User = { Username: req.Username, Password: temporaryPassword, diff --git a/src/targets/signUp.test.ts b/src/targets/signUp.test.ts index 0e278cd8..d9e77868 100644 --- a/src/targets/signUp.test.ts +++ b/src/targets/signUp.test.ts @@ -13,6 +13,8 @@ import { } from "../errors"; import { Messages, Triggers, UserPoolService } from "../services"; import { SignUp, SignUpTarget } from "./signUp"; +import { Config, DefaultConfig } from "../server/config"; +import _ from "lodash"; describe("SignUp target", () => { let signUp: SignUpTarget; @@ -21,6 +23,7 @@ describe("SignUp target", () => { let mockOtp: jest.MockedFunction<() => string>; let mockTriggers: jest.Mocked; let now: Date; + let config: Config; beforeEach(() => { now = new Date(2020, 1, 2, 3, 4, 5); @@ -29,11 +32,13 @@ describe("SignUp target", () => { mockMessages = newMockMessages(); mockOtp = jest.fn(); mockTriggers = newMockTriggers(); + config = _.cloneDeep(DefaultConfig); signUp = SignUp({ cognito: newMockCognitoService(mockUserPoolService), clock: new ClockFake(now), messages: mockMessages, otp: mockOtp, + config, triggers: mockTriggers, }); }); @@ -309,6 +314,8 @@ describe("SignUp target", () => { }); it("does not verify the user's email if the lambda returns autoVerifyEmail=true but the user does not have an email attribute", async () => { + config.UserPoolDefaults.UsernameAttributes = []; + mockUserPoolService.getUserByUsername.mockResolvedValue(null); mockTriggers.preSignUp.mockResolvedValue({ autoConfirmUser: false, @@ -336,6 +343,8 @@ describe("SignUp target", () => { }); it("verifies the user's phone_number if the lambda returns autoVerifyPhone=true and the user has an phone_number attribute", async () => { + config.UserPoolDefaults.UsernameAttributes = []; + mockUserPoolService.getUserByUsername.mockResolvedValue(null); mockTriggers.preSignUp.mockResolvedValue({ autoConfirmUser: false, @@ -367,6 +376,8 @@ describe("SignUp target", () => { }); it("does not verify the user's phone_number if the lambda returns autoVerifyPhone=true but the user does not have a phone_number attribute", async () => { + config.UserPoolDefaults.UsernameAttributes = []; + mockUserPoolService.getUserByUsername.mockResolvedValue(null); mockTriggers.preSignUp.mockResolvedValue({ autoConfirmUser: false, diff --git a/src/targets/signUp.ts b/src/targets/signUp.ts index 4101adcf..4cb1c4f2 100644 --- a/src/targets/signUp.ts +++ b/src/targets/signUp.ts @@ -22,7 +22,7 @@ export type SignUpTarget = Target; type SignUpServices = Pick< Services, - "clock" | "cognito" | "messages" | "otp" | "triggers" + "clock" | "cognito" | "messages" | "otp" | "triggers" | "config" >; const deliverWelcomeMessage = async ( @@ -64,7 +64,14 @@ const deliverWelcomeMessage = async ( }; export const SignUp = - ({ clock, cognito, messages, otp, triggers }: SignUpServices): SignUpTarget => + ({ + clock, + cognito, + messages, + otp, + triggers, + config, + }: SignUpServices): SignUpTarget => async (ctx, req) => { // TODO: This should behave differently depending on if PreventUserExistenceErrors // is enabled on the updatedUser pool. This will be the default after Feb 2020. @@ -95,7 +102,14 @@ export const SignUp = if (autoConfirmUser) { userStatus = "CONFIRMED"; } - if (attributesInclude("email", attributes) && autoVerifyEmail) { + const isEmailUsername = + config.UserPoolDefaults.UsernameAttributes?.includes("email"); + const hasEmailAttribute = attributesInclude("email", attributes); + + if (isEmailUsername && !hasEmailAttribute) { + attributes.push({ Name: "email", Value: req.Username }); + } + if ((isEmailUsername || hasEmailAttribute) && autoVerifyEmail) { attributes.push({ Name: "email_verified", Value: "true" }); } if (attributesInclude("phone_number", attributes) && autoVerifyPhone) { diff --git a/yarn.lock b/yarn.lock index f7245045..c4673189 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,146 @@ # yarn lockfile v1 +"@aws-crypto/cache-material@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/cache-material/-/cache-material-3.1.0.tgz#8369ed971feeaa710ee03cd5ccae11623e86b51a" + integrity sha512-fC59BV0YoxSSzI8bIAWLjaKrP52iOqey0NSvsZ5/kV/UwJp8VtDfD7UC5UneORQh1luRw8ZnC0kx0wHbqG/+iw== + dependencies: + "@aws-crypto/material-management" "^3.1.0" + "@aws-crypto/serialize" "^3.1.0" + "@types/lru-cache" "^5.1.0" + lru-cache "^6.0.0" + tslib "^2.2.0" + +"@aws-crypto/caching-materials-manager-node@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/caching-materials-manager-node/-/caching-materials-manager-node-3.1.0.tgz#6e41af1ee63dfea4417c51928fc2ea58bfd010ca" + integrity sha512-1cb/XVb43RRq1PYdzBPyycfH+1ASZ6DfQ2GbSLFrMgPLvhnxoyyv+Bd5QlvViIREn3xIXa1gupeGJz6BaayFXQ== + dependencies: + "@aws-crypto/cache-material" "^3.1.0" + "@aws-crypto/material-management-node" "^3.1.0" + tslib "^2.2.0" + +"@aws-crypto/client-node@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@aws-crypto/client-node/-/client-node-3.1.1.tgz#97062007ec0a86e01713ba772a40af49e0322735" + integrity sha512-WdbYBxbB5onE4LVab5q7fByNiAAmL4Y+pGCaDOl6RLLH17xHBfyQHHeG+5+Xloygh/aWR42So8LhLPhGmral3g== + dependencies: + "@aws-crypto/caching-materials-manager-node" "^3.1.0" + "@aws-crypto/decrypt-node" "^3.1.0" + "@aws-crypto/encrypt-node" "^3.1.1" + "@aws-crypto/kms-keyring-node" "^3.1.0" + "@aws-crypto/material-management-node" "^3.1.0" + "@aws-crypto/raw-aes-keyring-node" "^3.1.0" + "@aws-crypto/raw-rsa-keyring-node" "^3.1.0" + tslib "^2.2.0" + +"@aws-crypto/decrypt-node@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/decrypt-node/-/decrypt-node-3.1.0.tgz#f5d8298a50a2f73f4635770a8ed688df618595cd" + integrity sha512-F0TlNkdy11m1BCfhPQAXvdKHg82tAeOIc+tYXCL6ND/I3zh0F8oqVdr5oIuv4B6aIOgSSnAym0ctbAs8jw3pBA== + dependencies: + "@aws-crypto/material-management-node" "^3.1.0" + "@aws-crypto/serialize" "^3.1.0" + "@types/duplexify" "^3.6.0" + duplexify "^4.1.1" + readable-stream "^3.6.0" + tslib "^2.2.0" + +"@aws-crypto/encrypt-node@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@aws-crypto/encrypt-node/-/encrypt-node-3.1.1.tgz#7dcd533a008a0201d24bae6b0304a0cb87a2b7c8" + integrity sha512-LfB6LC1DhpsMCN2M24SgtR9m8CC2lTyO5w5mBWCsk+8h4BvhQXcgfruvHabGfDn4L+2Lr97nT9/THstNCuVVyg== + dependencies: + "@aws-crypto/material-management-node" "^3.1.0" + "@aws-crypto/serialize" "^3.1.0" + "@types/duplexify" "^3.6.0" + duplexify "^4.1.1" + readable-stream "^3.6.0" + tslib "^2.2.0" + +"@aws-crypto/hkdf-node@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/hkdf-node/-/hkdf-node-3.0.0.tgz#9cf3a177ad1c1f98e245af6a19289bf98833f3b8" + integrity sha512-boeNV9G3Jk6W5Q9Zcj8yGqIOoQ2PwB+yvA/xFUazlu6qTtGRTviqkVx0Bf6r68KrkvmIY/9STN0mlF9q3jzPcQ== + dependencies: + tslib "^2.2.0" + +"@aws-crypto/kms-keyring-node@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/kms-keyring-node/-/kms-keyring-node-3.1.0.tgz#64686da89192392d89036bbb03c64b99326ea77d" + integrity sha512-8SVn+Vz0HU3FXfHc6jdm4yvrAVssN7t5F9s3zzvKdb8w8u7vLpzZiLEw5TonmZD4KwBqG4YbciTX8wtXx3PUIw== + dependencies: + "@aws-crypto/kms-keyring" "^3.1.0" + "@aws-crypto/material-management-node" "^3.1.0" + aws-sdk "^2.650.0" + tslib "^2.2.0" + +"@aws-crypto/kms-keyring@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/kms-keyring/-/kms-keyring-3.1.0.tgz#406399557a0d61f2ab79abe65f3c01f5160733fb" + integrity sha512-Z7hlnLs+8tz4XeRY6ZLccJ0TC7E1YJHLj5RuirZf/80tVmk9yJuicquLzev/5n2f0a01t7U4oyO2n8ahN81Isw== + dependencies: + "@aws-crypto/material-management" "^3.1.0" + tslib "^2.2.0" + +"@aws-crypto/material-management-node@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/material-management-node/-/material-management-node-3.1.0.tgz#85dc37837a7170b3d7989fbb1ecc4583b57e598a" + integrity sha512-QX4JUqVydtskQbsKgd9JgTjzmrgYVaTOeguoV2KGz9TfqT//GDFUAL9jI6x20FdPH0A5D6BfgAAXzcUqjSWN5g== + dependencies: + "@aws-crypto/hkdf-node" "^3.0.0" + "@aws-crypto/material-management" "^3.1.0" + "@aws-crypto/serialize" "^3.1.0" + tslib "^2.2.0" + +"@aws-crypto/material-management@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/material-management/-/material-management-3.1.0.tgz#888d08c4c707f7d443afb8a9cacd5b730958a6f1" + integrity sha512-bkxu2wr+Wk2KXpN/mDaGFbx2j5UoqqACAEecWzTpP8XafW9z8rzdVqtDp/3hUeytXrS0w+UwFtZQw1A946C5Ow== + dependencies: + asn1.js "^5.3.0" + bn.js "^5.1.1" + tslib "^2.2.0" + +"@aws-crypto/raw-aes-keyring-node@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/raw-aes-keyring-node/-/raw-aes-keyring-node-3.1.0.tgz#54f8d92cc896709742bdc46f7af2f9bd8ac93b92" + integrity sha512-td1BH2OJks1PMkuHrMcwPJwVmyzsCrj1H9vqNnuw26dz9ZIdW8+e8DTv68WWUoCv43Qc6osmnGsTy7JjvGPzMQ== + dependencies: + "@aws-crypto/material-management-node" "^3.1.0" + "@aws-crypto/raw-keyring" "^3.1.0" + "@aws-crypto/serialize" "^3.1.0" + tslib "^2.2.0" + +"@aws-crypto/raw-keyring@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/raw-keyring/-/raw-keyring-3.1.0.tgz#6adef656f2fca85a42b97887804518d5098dc078" + integrity sha512-GIZvpQ7eEXeV0FOZ5Tvwzz5t4dMmigjs739Dypt6q5Er02zQUB2OVmteLJH6p33j11zLaD1AGW6Yq22gy2+NDQ== + dependencies: + "@aws-crypto/material-management" "^3.1.0" + "@aws-crypto/serialize" "^3.1.0" + tslib "^2.2.0" + +"@aws-crypto/raw-rsa-keyring-node@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/raw-rsa-keyring-node/-/raw-rsa-keyring-node-3.1.0.tgz#3a9f6d695d3b46bf819226a92bcb18fd77d2b71f" + integrity sha512-3EPnGm0l8Ui29p+jYctKaJAHv381MHvnjcPGw2ZGaVL+HAve+5WSL9JjwK8gOXoRot7ntt1KC1nBBmI+cj/G0g== + dependencies: + "@aws-crypto/material-management-node" "^3.1.0" + "@aws-crypto/raw-keyring" "^3.1.0" + tslib "^2.2.0" + +"@aws-crypto/serialize@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/serialize/-/serialize-3.1.0.tgz#3c76095e344c9064f797daed7eb099aa5611629d" + integrity sha512-Dn1cZLudJrRAmwA95iVNo5ocKCX2sFvJe+cGVWPuj54qyF2gLfKQGWq20DWsu5Y7sSemp9NYbWsHD4/sesKnfw== + dependencies: + "@aws-crypto/material-management" "^3.1.0" + asn1.js "^5.3.0" + bn.js "^5.1.1" + tslib "^2.2.0" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" @@ -672,6 +812,11 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@commitlint/cli@^15.0.0": version "15.0.0" resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-15.0.0.tgz#8e78e86ee2b6955c1a5d140e734a6c171ce367ee" @@ -839,7 +984,12 @@ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== -"@isaacs/string-locale-compare@*", "@isaacs/string-locale-compare@^1.0.1", "@isaacs/string-locale-compare@^1.1.0": +"@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@isaacs/string-locale-compare@^1.0.1", "@isaacs/string-locale-compare@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== @@ -1133,21 +1283,21 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@npmcli/arborist@*", "@npmcli/arborist@^4.0.0": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-4.3.1.tgz#a08cddce3339882f688c1dea1651f6971e781c44" - integrity sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A== +"@npmcli/arborist@^2.3.0", "@npmcli/arborist@^2.5.0", "@npmcli/arborist@^2.9.0": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-2.10.0.tgz#424c2d73a7ae59c960b0cc7f74fed043e4316c2c" + integrity sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA== dependencies: - "@isaacs/string-locale-compare" "^1.1.0" + "@isaacs/string-locale-compare" "^1.0.1" "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/map-workspaces" "^2.0.0" - "@npmcli/metavuln-calculator" "^2.0.0" + "@npmcli/map-workspaces" "^1.0.2" + "@npmcli/metavuln-calculator" "^1.1.0" "@npmcli/move-file" "^1.1.0" "@npmcli/name-from-folder" "^1.0.1" - "@npmcli/node-gyp" "^1.0.3" + "@npmcli/node-gyp" "^1.0.1" "@npmcli/package-json" "^1.0.1" - "@npmcli/run-script" "^2.0.0" - bin-links "^3.0.0" + "@npmcli/run-script" "^1.8.2" + bin-links "^2.2.1" cacache "^15.0.3" common-ancestor-path "^1.0.1" json-parse-even-better-errors "^2.3.1" @@ -1157,9 +1307,9 @@ npm-install-checks "^4.0.0" npm-package-arg "^8.1.5" npm-pick-manifest "^6.1.0" - npm-registry-fetch "^12.0.1" - pacote "^12.0.2" - parse-conflict-json "^2.0.1" + npm-registry-fetch "^11.0.0" + pacote "^11.3.5" + parse-conflict-json "^1.1.1" proc-log "^1.0.0" promise-all-reject-late "^1.0.0" promise-call-limit "^1.0.1" @@ -1171,21 +1321,21 @@ treeverse "^1.0.4" walk-up-path "^1.0.0" -"@npmcli/arborist@^2.3.0", "@npmcli/arborist@^2.5.0", "@npmcli/arborist@^2.9.0": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-2.10.0.tgz#424c2d73a7ae59c960b0cc7f74fed043e4316c2c" - integrity sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA== +"@npmcli/arborist@^4.0.0", "@npmcli/arborist@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-4.3.1.tgz#a08cddce3339882f688c1dea1651f6971e781c44" + integrity sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A== dependencies: - "@isaacs/string-locale-compare" "^1.0.1" + "@isaacs/string-locale-compare" "^1.1.0" "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/map-workspaces" "^1.0.2" - "@npmcli/metavuln-calculator" "^1.1.0" + "@npmcli/map-workspaces" "^2.0.0" + "@npmcli/metavuln-calculator" "^2.0.0" "@npmcli/move-file" "^1.1.0" "@npmcli/name-from-folder" "^1.0.1" - "@npmcli/node-gyp" "^1.0.1" + "@npmcli/node-gyp" "^1.0.3" "@npmcli/package-json" "^1.0.1" - "@npmcli/run-script" "^1.8.2" - bin-links "^2.2.1" + "@npmcli/run-script" "^2.0.0" + bin-links "^3.0.0" cacache "^15.0.3" common-ancestor-path "^1.0.1" json-parse-even-better-errors "^2.3.1" @@ -1195,9 +1345,9 @@ npm-install-checks "^4.0.0" npm-package-arg "^8.1.5" npm-pick-manifest "^6.1.0" - npm-registry-fetch "^11.0.0" - pacote "^11.3.5" - parse-conflict-json "^1.1.1" + npm-registry-fetch "^12.0.1" + pacote "^12.0.2" + parse-conflict-json "^2.0.1" proc-log "^1.0.0" promise-all-reject-late "^1.0.0" promise-call-limit "^1.0.1" @@ -1209,29 +1359,15 @@ treeverse "^1.0.4" walk-up-path "^1.0.0" -"@npmcli/ci-detect@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-2.0.0.tgz#e63c91bcd4185ac1e85720a34fc48e164ece5b89" - integrity sha512-8yQtQ9ArHh/TzdUDKQwEvwCgpDuhSWTDAbiKMl3854PcT+Dk4UmWaiawuFTLy9n5twzXOBXVflWe+90/ffXQrA== - "@npmcli/ci-detect@^1.2.0", "@npmcli/ci-detect@^1.3.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== -"@npmcli/config@*": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-4.0.0.tgz#1d12f2d9cc2f1da75b56ade60daacab560d98ab5" - integrity sha512-iywEsUhkA6GSgTS3vHLxHttU6lovSYt7wCGD0MOsjfd1YAUlz8243TXUKhcJiPfWvQYB4FnZkn30m3KmZS8GuA== - dependencies: - "@npmcli/map-workspaces" "^2.0.0" - ini "^2.0.0" - mkdirp-infer-owner "^2.0.0" - nopt "^5.0.0" - proc-log "^2.0.0" - read-package-json-fast "^2.0.3" - semver "^7.3.5" - walk-up-path "^1.0.0" +"@npmcli/ci-detect@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-2.0.0.tgz#e63c91bcd4185ac1e85720a34fc48e164ece5b89" + integrity sha512-8yQtQ9ArHh/TzdUDKQwEvwCgpDuhSWTDAbiKMl3854PcT+Dk4UmWaiawuFTLy9n5twzXOBXVflWe+90/ffXQrA== "@npmcli/config@^2.3.0": version "2.4.0" @@ -1244,6 +1380,20 @@ semver "^7.3.4" walk-up-path "^1.0.0" +"@npmcli/config@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-3.0.1.tgz#0149aa9daa84bb8dad56813b52582e43bcea1e36" + integrity sha512-kNnS/JOLdj9JgUhNn0UjDYhfRdcX8HTeYcsQ/wFdM29V2H8KXDAjcQnvJas6gsZRD5HPU6YBnWVUUJDkXQzdlA== + dependencies: + "@npmcli/map-workspaces" "^2.0.0" + ini "^2.0.0" + mkdirp-infer-owner "^2.0.0" + nopt "^5.0.0" + proc-log "^2.0.0" + read-package-json-fast "^2.0.3" + semver "^7.3.5" + walk-up-path "^1.0.0" + "@npmcli/disparity-colors@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/disparity-colors/-/disparity-colors-1.0.1.tgz#b23c864c9658f9f0318d5aa6d17986619989535c" @@ -1259,6 +1409,14 @@ "@gar/promisify" "^1.0.1" semver "^7.3.5" +"@npmcli/fs@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.0.tgz#f2a21c28386e299d1a9fae8051d35ad180e33109" + integrity sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + "@npmcli/git@^2.0.7", "@npmcli/git@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" @@ -1273,21 +1431,6 @@ semver "^7.3.5" which "^2.0.2" -"@npmcli/git@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.0.tgz#466a18980da6b646a8112a7676688ae5347deba3" - integrity sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA== - dependencies: - "@npmcli/promise-spawn" "^1.3.2" - lru-cache "^7.3.1" - mkdirp "^1.0.4" - npm-pick-manifest "^7.0.0" - proc-log "^2.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^2.0.2" - "@npmcli/installed-package-contents@^1.0.6", "@npmcli/installed-package-contents@^1.0.7": version "1.0.7" resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" @@ -1296,16 +1439,6 @@ npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -"@npmcli/map-workspaces@*", "@npmcli/map-workspaces@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.1.tgz#da8b4d2e1f4cef30efcc81e425bd11a9bf5489f2" - integrity sha512-awwkB/tSWWaCD8F0IbawBdmoPFlbXMaEPN9LyTuJcyJz404/QhB4B/vhQntpk6uxOAkM+bxR7qWMJghYg0tcYQ== - dependencies: - "@npmcli/name-from-folder" "^1.0.1" - glob "^7.2.0" - minimatch "^5.0.0" - read-package-json-fast "^2.0.3" - "@npmcli/map-workspaces@^1.0.2", "@npmcli/map-workspaces@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz#915708b55afa25e20bc2c14a766c124c2c5d4cab" @@ -1316,6 +1449,16 @@ minimatch "^3.0.4" read-package-json-fast "^2.0.1" +"@npmcli/map-workspaces@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.1.tgz#da8b4d2e1f4cef30efcc81e425bd11a9bf5489f2" + integrity sha512-awwkB/tSWWaCD8F0IbawBdmoPFlbXMaEPN9LyTuJcyJz404/QhB4B/vhQntpk6uxOAkM+bxR7qWMJghYg0tcYQ== + dependencies: + "@npmcli/name-from-folder" "^1.0.1" + glob "^7.2.0" + minimatch "^5.0.0" + read-package-json-fast "^2.0.3" + "@npmcli/metavuln-calculator@^1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz#2f95ff3c6d88b366dd70de1c3f304267c631b458" @@ -1343,6 +1486,14 @@ mkdirp "^1.0.4" rimraf "^3.0.2" +"@npmcli/move-file@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.0.tgz#417f585016081a0184cef3e38902cd917a9bbd02" + integrity sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@npmcli/name-from-folder@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a" @@ -1353,7 +1504,7 @@ resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== -"@npmcli/package-json@*", "@npmcli/package-json@^1.0.1": +"@npmcli/package-json@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-1.0.1.tgz#1ed42f00febe5293c3502fd0ef785647355f6e89" integrity sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg== @@ -1367,16 +1518,6 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-3.0.0.tgz#c37752414fe06cffbc1279b340da8098d3f9f31a" - integrity sha512-jIdmUepw+kVP2WEE/+XrBIvrSF5miDutdGBrQ8May6uHVAvpAb0m3NRHcJ0lKWbQ1BxsRFsmTrjkdY99qTTVIw== - dependencies: - "@npmcli/node-gyp" "^1.0.3" - "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^8.4.1" - read-package-json-fast "^2.0.3" - "@npmcli/run-script@^1.8.2", "@npmcli/run-script@^1.8.3", "@npmcli/run-script@^1.8.4", "@npmcli/run-script@^1.8.6": version "1.8.6" resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" @@ -1791,6 +1932,13 @@ dependencies: "@types/express" "*" +"@types/duplexify@^3.6.0": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.1.tgz#5685721cf7dc4a21b6f0e8a8efbec6b4d2fbafad" + integrity sha512-n0zoEj/fMdMOvqbHxmqnza/kXyoGgJmEpsXjpP+gEqE1Ye4yNqc7xWipKnUoMpWhMuzJQSfK2gMrwlElly7OGQ== + dependencies: + "@types/node" "*" + "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" @@ -1881,6 +2029,11 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.177.tgz#f70c0d19c30fab101cad46b52be60363c43c4578" integrity sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw== +"@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + "@types/mime@^1": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" @@ -2039,7 +2192,7 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -abbrev@*, abbrev@1, abbrev@~1.1.1: +abbrev@1, abbrev@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== @@ -2113,7 +2266,7 @@ agentkeepalive@^4.1.3: depd "^1.1.2" humanize-ms "^1.2.1" -agentkeepalive@^4.2.0: +agentkeepalive@^4.2.0, agentkeepalive@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== @@ -2245,12 +2398,12 @@ ansi-wrap@0.1.0: resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= -ansicolors@*, ansicolors@~0.3.2: +ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= -ansistyles@*, ansistyles@~0.1.3: +ansistyles@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= @@ -2291,7 +2444,7 @@ aproba@^1.0.3: resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -archy@*, archy@~1.0.0: +archy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= @@ -2397,6 +2550,16 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= +asn1.js@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -2446,15 +2609,15 @@ autolinker@~0.28.0: dependencies: gulp-header "^1.7.1" -aws-sdk@^2.1045.0: - version "2.1045.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1045.0.tgz#4b1b1677aeb3026d7702f3be13e6a16883e554f6" - integrity sha512-4ZBIp/qGJKvEjJJKMQvfAovFxrwfweXwbFmAnHAzeJyTw+RB/6HQyGL7JtV6zoHk0DsmYfBBJBvagmDMXpjg/w== +aws-sdk@2.1136.0, aws-sdk@^2.650.0: + version "2.1136.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1136.0.tgz#d103aed0313af2c254a2dbd54823af8057c7a0b9" + integrity sha512-cuXPB1lNoiK/oNTAN+Bud2Pp8/PvY7erL2DYPVN2zsk2nh9e8VG3yldf6KcEO6mm4q/FgZc4X6Zq+fOyuBY/wA== dependencies: buffer "4.9.2" events "1.1.1" ieee754 "1.1.13" - jmespath "0.15.0" + jmespath "0.16.0" querystring "0.2.0" sax "1.2.1" url "0.10.3" @@ -2640,6 +2803,16 @@ binary-extensions@^2.2.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bn.js@^4.0.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + body-parser@1.19.0, body-parser@^1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -2774,12 +2947,19 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= +builtins@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + dependencies: + semver "^7.0.0" + bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@*, cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: +cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -2803,6 +2983,30 @@ cacache@*, cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: tar "^6.0.2" unique-filename "^1.1.1" +cacache@^16.0.2: + version "16.0.7" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.0.7.tgz#74a5d9bc4c17b4c0b373c1f5d42dadf5dc06638d" + integrity sha512-a4zfQpp5vm4Ipdvbj+ZrPonikRhm6WBEd4zT1Yc1DXsmAxrPgDwWBLF/u/wTVXSFPIgOJ1U3ghSa2Xm4s3h28w== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2907,11 +3111,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@*: - version "5.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.0.tgz#bd96c6bb8e02b96e08c0c3ee2a9d90e050c7b832" - integrity sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ== - chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -2981,7 +3180,7 @@ chokidar@^3.2.2: optionalDependencies: fsevents "~2.1.2" -chownr@*, chownr@^2.0.0: +chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== @@ -3033,14 +3232,6 @@ cli-boxes@^2.2.0, cli-boxes@^2.2.1: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -cli-columns@*: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-4.0.0.tgz#9fe4d65975238d55218c41bd2ed296a7fa555646" - integrity sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ== - dependencies: - string-width "^4.2.3" - strip-ansi "^6.0.1" - cli-columns@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e" @@ -3049,6 +3240,14 @@ cli-columns@^3.1.2: string-width "^2.0.0" strip-ansi "^3.0.1" +cli-columns@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-4.0.0.tgz#9fe4d65975238d55218c41bd2ed296a7fa555646" + integrity sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ== + dependencies: + string-width "^4.2.3" + strip-ansi "^6.0.1" + cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -3063,7 +3262,7 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-table3@*, cli-table3@^0.6.0: +cli-table3@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== @@ -3072,6 +3271,15 @@ cli-table3@*, cli-table3@^0.6.0: optionalDependencies: colors "1.4.0" +cli-table3@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" + integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + cli-table@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" @@ -3197,14 +3405,6 @@ colors@1.4.0: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -columnify@*: - version "1.6.0" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - dependencies: - strip-ansi "^6.0.1" - wcwidth "^1.0.0" - columnify@~1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" @@ -3793,7 +3993,7 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexify@^4.1.2: +duplexify@^4.1.1, duplexify@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== @@ -3853,7 +4053,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -encoding@^0.1.12: +encoding@^0.1.12, encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -4427,7 +4627,7 @@ fast-url-parser@^1.1.3: dependencies: punycode "^1.3.2" -fastest-levenshtein@*, fastest-levenshtein@^1.0.12: +fastest-levenshtein@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== @@ -4704,6 +4904,20 @@ gauge@^4.0.0: strip-ansi "^6.0.1" wide-align "^1.1.5" +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -4813,7 +5027,19 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@*, glob@^7.2.0: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -4825,17 +5051,16 @@ glob@*, glob@^7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== +glob@^8.0.1: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" global-dirs@^0.1.1: version "0.1.1" @@ -4904,11 +5129,6 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@*, graceful-fs@^4.2.6, graceful-fs@^4.2.8: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== - graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" @@ -4919,6 +5139,16 @@ graceful-fs@^4.2.3: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== +graceful-fs@^4.2.6, graceful-fs@^4.2.8: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + +graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + gray-matter@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-2.1.1.tgz#3042d9adec2a1ded6a7707a9ed2380f8a17a430e" @@ -5049,13 +5279,6 @@ hook-std@^2.0.0: resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-2.0.0.tgz#ff9aafdebb6a989a354f729bb6445cf4a3a7077c" integrity sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g== -hosted-git-info@*, hosted-git-info@^4.0.2, hosted-git-info@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -5068,6 +5291,20 @@ hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" +hosted-git-info@^4.0.2, hosted-git-info@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +hosted-git-info@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.0.0.tgz#df7a06678b4ebd722139786303db80fdf302ea56" + integrity sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q== + dependencies: + lru-cache "^7.5.1" + html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -5284,28 +5521,15 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@*, ini@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -init-package-json@*: - version "3.0.0" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.0.tgz#9ccc1143426a52224cdbfa5485b1cb8a03ac34be" - integrity sha512-b0PZaZ3lF0mKsk7QcP03LhxXttVR0kb4XIafD1HXV4JIvLhifdvFgNyXr3qSA/3DZmiskFveLP1eXfXGFybG6g== - dependencies: - npm-package-arg "^9.0.0" - promzard "^0.3.0" - read "^1.0.7" - read-package-json "^4.1.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" +ini@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== init-package-json@^2.0.5: version "2.0.5" @@ -5407,7 +5631,7 @@ is-ci@^3.0.0: dependencies: ci-info "^3.1.1" -is-cidr@*, is-cidr@^4.0.2: +is-cidr@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-4.0.2.tgz#94c7585e4c6c77ceabf920f8cde51b8c0fda8814" integrity sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA== @@ -6292,10 +6516,10 @@ jest@^27.4.3: import-local "^3.0.2" jest-cli "^27.4.3" -jmespath@0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" - integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= +jmespath@0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" + integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== joycon@^3.0.0: version "3.1.1" @@ -6376,7 +6600,7 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@*, json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -6558,16 +6782,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libnpmaccess@*: - version "5.0.1" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-5.0.1.tgz#c0309abe73839dd37c52986b7abb89e46c4cf42d" - integrity sha512-luyxx6eKhjcOfDH8JQFNyuXEi1vQ/4GOtGAAk3U+G42mPNraQXXrYVUgcSdQjDK/4AGI7nrIbfUpqKttJAgY8g== - dependencies: - aproba "^2.0.0" - minipass "^3.1.1" - npm-package-arg "^8.1.2" - npm-registry-fetch "^12.0.1" - libnpmaccess@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" @@ -6578,19 +6792,15 @@ libnpmaccess@^4.0.2: npm-package-arg "^8.1.2" npm-registry-fetch "^11.0.0" -libnpmdiff@*: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-3.0.0.tgz#4beb36cf9a8b91a99c373589e99822c18a798c0e" - integrity sha512-pnwUs96QpM7KzD4vOyxTZvrjxi61y/5u/nBUKih8+eKQ9H8DiIBcV1OGaj7OKhoxJk4D5s8Aw746rE49FARavQ== +libnpmaccess@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-5.0.1.tgz#c0309abe73839dd37c52986b7abb89e46c4cf42d" + integrity sha512-luyxx6eKhjcOfDH8JQFNyuXEi1vQ/4GOtGAAk3U+G42mPNraQXXrYVUgcSdQjDK/4AGI7nrIbfUpqKttJAgY8g== dependencies: - "@npmcli/disparity-colors" "^1.0.1" - "@npmcli/installed-package-contents" "^1.0.7" - binary-extensions "^2.2.0" - diff "^5.0.0" - minimatch "^3.0.4" - npm-package-arg "^8.1.4" - pacote "^12.0.0" - tar "^6.1.0" + aproba "^2.0.0" + minipass "^3.1.1" + npm-package-arg "^8.1.2" + npm-registry-fetch "^12.0.1" libnpmdiff@^2.0.4: version "2.0.4" @@ -6606,22 +6816,19 @@ libnpmdiff@^2.0.4: pacote "^11.3.0" tar "^6.1.0" -libnpmexec@*: - version "3.0.3" - resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-3.0.3.tgz#f43ddb9c713298efa9f852399a2c26cbf31ab5c4" - integrity sha512-X5ni061keRcGMOQlwJS58x1QhdMpFW2PZzj1Lls7S2Dkyo3SdGBHTg++BfDjWBgpWS3sRy4+drWSfeeaLovoRw== +libnpmdiff@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-3.0.0.tgz#4beb36cf9a8b91a99c373589e99822c18a798c0e" + integrity sha512-pnwUs96QpM7KzD4vOyxTZvrjxi61y/5u/nBUKih8+eKQ9H8DiIBcV1OGaj7OKhoxJk4D5s8Aw746rE49FARavQ== dependencies: - "@npmcli/arborist" "^4.0.0" - "@npmcli/ci-detect" "^1.3.0" - "@npmcli/run-script" "^2.0.0" - chalk "^4.1.0" - mkdirp-infer-owner "^2.0.0" - npm-package-arg "^8.1.2" + "@npmcli/disparity-colors" "^1.0.1" + "@npmcli/installed-package-contents" "^1.0.7" + binary-extensions "^2.2.0" + diff "^5.0.0" + minimatch "^3.0.4" + npm-package-arg "^8.1.4" pacote "^12.0.0" - proc-log "^1.0.0" - read "^1.0.7" - read-package-json-fast "^2.0.2" - walk-up-path "^1.0.0" + tar "^6.1.0" libnpmexec@^2.0.1: version "2.0.1" @@ -6640,12 +6847,22 @@ libnpmexec@^2.0.1: read-package-json-fast "^2.0.2" walk-up-path "^1.0.0" -libnpmfund@*: - version "2.0.2" - resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-2.0.2.tgz#90a7aa26c8b9b4739a06e314f83decd198b3f9c6" - integrity sha512-7gznxLV71t9KsC9jyV6ILbLjfebettTzn13TVl29hwzDpiG+NkA7xZ7yT0L9e7DI8CVUVIxvvHKUl3Ny+TNQ8Q== +libnpmexec@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-3.0.3.tgz#f43ddb9c713298efa9f852399a2c26cbf31ab5c4" + integrity sha512-X5ni061keRcGMOQlwJS58x1QhdMpFW2PZzj1Lls7S2Dkyo3SdGBHTg++BfDjWBgpWS3sRy4+drWSfeeaLovoRw== dependencies: "@npmcli/arborist" "^4.0.0" + "@npmcli/ci-detect" "^1.3.0" + "@npmcli/run-script" "^2.0.0" + chalk "^4.1.0" + mkdirp-infer-owner "^2.0.0" + npm-package-arg "^8.1.2" + pacote "^12.0.0" + proc-log "^1.0.0" + read "^1.0.7" + read-package-json-fast "^2.0.2" + walk-up-path "^1.0.0" libnpmfund@^1.1.0: version "1.1.0" @@ -6654,13 +6871,12 @@ libnpmfund@^1.1.0: dependencies: "@npmcli/arborist" "^2.5.0" -libnpmhook@*: - version "7.0.1" - resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-7.0.1.tgz#f633a7cc647e8dbc689654e3734f055db13a8be9" - integrity sha512-b7UwPmuW47/vdEhVGVKV8DqO26lWvYwU+qJB18xeN0KgWzGT4hpQNRTdAZ3LR0zdvWm3VYpHix2gb9pyuMrs5Q== +libnpmfund@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-2.0.2.tgz#90a7aa26c8b9b4739a06e314f83decd198b3f9c6" + integrity sha512-7gznxLV71t9KsC9jyV6ILbLjfebettTzn13TVl29hwzDpiG+NkA7xZ7yT0L9e7DI8CVUVIxvvHKUl3Ny+TNQ8Q== dependencies: - aproba "^2.0.0" - npm-registry-fetch "^12.0.1" + "@npmcli/arborist" "^4.0.0" libnpmhook@^6.0.2: version "6.0.3" @@ -6670,10 +6886,10 @@ libnpmhook@^6.0.2: aproba "^2.0.0" npm-registry-fetch "^11.0.0" -libnpmorg@*: - version "3.0.1" - resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-3.0.1.tgz#0820a0411d544328b3fa413a88fc73ce18c4bc01" - integrity sha512-jIEmSRk98kx2gsmZSoA6Mu3gV6qlh3a2eoBrYa5qSHosQmvoRDxtA96E4f1E1ZEf+NW6fCZbQl2ThejUxtb+Tg== +libnpmhook@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-7.0.1.tgz#f633a7cc647e8dbc689654e3734f055db13a8be9" + integrity sha512-b7UwPmuW47/vdEhVGVKV8DqO26lWvYwU+qJB18xeN0KgWzGT4hpQNRTdAZ3LR0zdvWm3VYpHix2gb9pyuMrs5Q== dependencies: aproba "^2.0.0" npm-registry-fetch "^12.0.1" @@ -6686,14 +6902,13 @@ libnpmorg@^2.0.2: aproba "^2.0.0" npm-registry-fetch "^11.0.0" -libnpmpack@*: - version "3.1.0" - resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-3.1.0.tgz#de9823cf6d595f5630151d5aa44efc7aeb28b183" - integrity sha512-dO0ER8L6TPINOSyCAy/XTwsKIz42Bg+SB1XX9zCoaHimP7oqzV7O8PJGoPfEduLt8zidwu8oNW3nYrA43M6VCQ== +libnpmorg@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-3.0.1.tgz#0820a0411d544328b3fa413a88fc73ce18c4bc01" + integrity sha512-jIEmSRk98kx2gsmZSoA6Mu3gV6qlh3a2eoBrYa5qSHosQmvoRDxtA96E4f1E1ZEf+NW6fCZbQl2ThejUxtb+Tg== dependencies: - "@npmcli/run-script" "^2.0.0" - npm-package-arg "^8.1.0" - pacote "^12.0.0" + aproba "^2.0.0" + npm-registry-fetch "^12.0.1" libnpmpack@^2.0.1: version "2.0.1" @@ -6704,16 +6919,14 @@ libnpmpack@^2.0.1: npm-package-arg "^8.1.0" pacote "^11.2.6" -libnpmpublish@*: - version "5.0.1" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-5.0.1.tgz#eda2208392bb74cde9c62d0e841557643153ee72" - integrity sha512-S9HvvO8kGWWuGFvAQyw0T5NWxib21ktA1REGTB7I+GBqDjyYOjjwzJaavtTxDD8ID18dKCluOXg0PdMmRdKfHA== +libnpmpack@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-3.1.0.tgz#de9823cf6d595f5630151d5aa44efc7aeb28b183" + integrity sha512-dO0ER8L6TPINOSyCAy/XTwsKIz42Bg+SB1XX9zCoaHimP7oqzV7O8PJGoPfEduLt8zidwu8oNW3nYrA43M6VCQ== dependencies: - normalize-package-data "^3.0.2" - npm-package-arg "^8.1.2" - npm-registry-fetch "^12.0.1" - semver "^7.1.3" - ssri "^8.0.1" + "@npmcli/run-script" "^2.0.0" + npm-package-arg "^8.1.0" + pacote "^12.0.0" libnpmpublish@^4.0.1: version "4.0.2" @@ -6726,12 +6939,16 @@ libnpmpublish@^4.0.1: semver "^7.1.3" ssri "^8.0.1" -libnpmsearch@*: - version "4.0.1" - resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-4.0.1.tgz#bf6c96339aadb552c007373623322642a9078512" - integrity sha512-uSKYwVUNbI8ZOAiZIdfDL60F2MelnqVzLUdkLlAoQnK0CnlU8tsdyX+nRDCTPGqOHq0inh5DyCJKbyMxf6ibBA== +libnpmpublish@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-5.0.1.tgz#eda2208392bb74cde9c62d0e841557643153ee72" + integrity sha512-S9HvvO8kGWWuGFvAQyw0T5NWxib21ktA1REGTB7I+GBqDjyYOjjwzJaavtTxDD8ID18dKCluOXg0PdMmRdKfHA== dependencies: + normalize-package-data "^3.0.2" + npm-package-arg "^8.1.2" npm-registry-fetch "^12.0.1" + semver "^7.1.3" + ssri "^8.0.1" libnpmsearch@^3.1.1: version "3.1.2" @@ -6740,12 +6957,11 @@ libnpmsearch@^3.1.1: dependencies: npm-registry-fetch "^11.0.0" -libnpmteam@*: - version "3.0.1" - resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-3.0.1.tgz#6cde5b7b262bf384661d1fd6ff03b3cfd378c6bc" - integrity sha512-qnUs2oXMYcB8AREl41Q7IUuklY5rSFW4VeVgCwE3TF+vdnsCATW4GAc/vIUZ6gWDA3lUdjqcXHlBJi8g09RRDw== +libnpmsearch@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-4.0.1.tgz#bf6c96339aadb552c007373623322642a9078512" + integrity sha512-uSKYwVUNbI8ZOAiZIdfDL60F2MelnqVzLUdkLlAoQnK0CnlU8tsdyX+nRDCTPGqOHq0inh5DyCJKbyMxf6ibBA== dependencies: - aproba "^2.0.0" npm-registry-fetch "^12.0.1" libnpmteam@^2.0.3: @@ -6756,16 +6972,13 @@ libnpmteam@^2.0.3: aproba "^2.0.0" npm-registry-fetch "^11.0.0" -libnpmversion@*: - version "2.0.2" - resolved "https://registry.yarnpkg.com/libnpmversion/-/libnpmversion-2.0.2.tgz#9fc1b94f5a2d0ae8c6378af498f3f44248f467d6" - integrity sha512-Dg+ccHL/F8BQgEeE9n8OU3T1FXhbdAKaj5+OYYPUrcrXkMh9EhVQ8uIbxCl0FQUeQHeWW9XmfO2icZ5YcZQvbQ== +libnpmteam@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-3.0.1.tgz#6cde5b7b262bf384661d1fd6ff03b3cfd378c6bc" + integrity sha512-qnUs2oXMYcB8AREl41Q7IUuklY5rSFW4VeVgCwE3TF+vdnsCATW4GAc/vIUZ6gWDA3lUdjqcXHlBJi8g09RRDw== dependencies: - "@npmcli/git" "^2.0.7" - "@npmcli/run-script" "^2.0.0" - json-parse-even-better-errors "^2.3.1" - semver "^7.3.5" - stringify-package "^1.0.1" + aproba "^2.0.0" + npm-registry-fetch "^12.0.1" libnpmversion@^1.2.1: version "1.2.1" @@ -6778,6 +6991,17 @@ libnpmversion@^1.2.1: semver "^7.3.5" stringify-package "^1.0.1" +libnpmversion@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/libnpmversion/-/libnpmversion-2.0.2.tgz#9fc1b94f5a2d0ae8c6378af498f3f44248f467d6" + integrity sha512-Dg+ccHL/F8BQgEeE9n8OU3T1FXhbdAKaj5+OYYPUrcrXkMh9EhVQ8uIbxCl0FQUeQHeWW9XmfO2icZ5YcZQvbQ== + dependencies: + "@npmcli/git" "^2.0.7" + "@npmcli/run-script" "^2.0.0" + json-parse-even-better-errors "^2.3.1" + semver "^7.3.5" + stringify-package "^1.0.1" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -7036,6 +7260,11 @@ lru-cache@^7.3.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.4.0.tgz#2830a779b483e9723e20f26fa5278463c50599d8" integrity sha512-YOfuyWa/Ee+PXbDm40j9WXyJrzQUynVbgn4Km643UYcWNcrSfRkKL0WaiUcxcIbkXcVTgNpDqSnPXntWXT75cw== +lru-cache@^7.5.1, lru-cache@^7.7.1: + version "7.10.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.10.1.tgz#db577f42a94c168f676b638d15da8fb073448cab" + integrity sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A== + make-dir@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" @@ -7048,7 +7277,7 @@ make-error@^1, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@*, make-fetch-happen@^10.0.1, make-fetch-happen@^10.0.2: +make-fetch-happen@^10.0.1: version "10.0.3" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.0.3.tgz#94bbe675cf62a811dbab59668052388a078beaf2" integrity sha512-CzarPHynPpHjhF5in/YapnO44rSZeYX5VCMfdXa99+gLwpbfFLh20CWa6dP/taV9Net9PWJwXNKtp/4ZTCQnag== @@ -7070,6 +7299,28 @@ make-fetch-happen@*, make-fetch-happen@^10.0.1, make-fetch-happen@^10.0.2: socks-proxy-agent "^6.1.1" ssri "^8.0.1" +make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: + version "10.1.3" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.1.3.tgz#d7ecd4a22563b2c05b74735eda46569da26a46f6" + integrity sha512-s/UjmGjUHn9m52cctFhN2ITObbT+axoUhgeir8xGrOlPbKDyJsdhQzb8PGncPQQ28uduHybFJ6Iumy2OZnreXw== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.0.2" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^6.1.1" + ssri "^9.0.0" + make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" @@ -7314,6 +7565,11 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -7328,6 +7584,13 @@ minimatch@^5.0.0: dependencies: brace-expansion "^2.0.1" +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -7368,6 +7631,17 @@ minipass-fetch@^1.3.0, minipass-fetch@^1.3.2, minipass-fetch@^1.4.1: optionalDependencies: encoding "^0.1.12" +minipass-fetch@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.0.tgz#ca1754a5f857a3be99a9271277246ac0b44c3ff8" + integrity sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -7383,7 +7657,7 @@ minipass-json-stream@^1.0.1: jsonparse "^1.3.1" minipass "^3.0.0" -minipass-pipeline@*, minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== @@ -7397,7 +7671,7 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@*, minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== @@ -7420,7 +7694,7 @@ mixin-deep@^1.1.3, mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp-infer-owner@*, mkdirp-infer-owner@^2.0.0: +mkdirp-infer-owner@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== @@ -7429,11 +7703,6 @@ mkdirp-infer-owner@*, mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -mkdirp@*, mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -7441,6 +7710,11 @@ mkdirp@^0.5.1: dependencies: minimist "^1.2.5" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -7451,11 +7725,6 @@ mri@1.1.4: resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== -ms@*, ms@^2.0.0, ms@^2.1.1, ms@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -7471,6 +7740,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.0.0, ms@^2.1.1, ms@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -7537,22 +7811,6 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" -node-gyp@*, node-gyp@^8.2.0, node-gyp@^8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" - integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^9.1.0" - nopt "^5.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - node-gyp@^7.1.0, node-gyp@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" @@ -7569,6 +7827,22 @@ node-gyp@^7.1.0, node-gyp@^7.1.2: tar "^6.0.2" which "^2.0.2" +node-gyp@^8.2.0, node-gyp@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" + nopt "^5.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -7600,7 +7874,7 @@ nodemon@^2.0.3: undefsafe "^2.0.2" update-notifier "^4.0.0" -nopt@*, nopt@^5.0.0: +nopt@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== @@ -7656,7 +7930,7 @@ normalize-url@^6.0.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -npm-audit-report@*, npm-audit-report@^2.1.5: +npm-audit-report@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-2.1.5.tgz#a5b8850abe2e8452fce976c8960dd432981737b5" integrity sha512-YB8qOoEmBhUH1UJgh1xFAv7Jg1d+xoNhsDYiFQlEFThEBui0W1vIz2ZK6FVg4WZjwEdl7uBQlm1jy3MUfyHeEw== @@ -7670,7 +7944,7 @@ npm-bundled@^1.1.1: dependencies: npm-normalize-package-bin "^1.0.1" -npm-install-checks@*, npm-install-checks@^4.0.0: +npm-install-checks@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== @@ -7682,15 +7956,6 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@*, npm-package-arg@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.0.0.tgz#955a5e4735298fc23f71cb72da3574daa134340c" - integrity sha512-yhzXxeor+Zfhe5MGwPdDumz6HtNlj2pMekWB95IX3CC6uDNgde0oPKHDCLDPoJqQfd0HqAWt+y4Hs5m7CK1+9Q== - dependencies: - hosted-git-info "^4.1.0" - semver "^7.3.5" - validate-npm-package-name "^3.0.0" - npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.4, npm-package-arg@^8.1.5: version "8.1.5" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" @@ -7700,6 +7965,15 @@ npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-pack semver "^7.3.4" validate-npm-package-name "^3.0.0" +npm-package-arg@^9.0.1: + version "9.0.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.0.2.tgz#f3ef7b1b3b02e82564af2d5228b4c36567dcd389" + integrity sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g== + dependencies: + hosted-git-info "^5.0.0" + semver "^7.3.5" + validate-npm-package-name "^4.0.0" + npm-packlist@^2.1.4: version "2.2.2" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" @@ -7720,16 +7994,6 @@ npm-packlist@^3.0.0: npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@*, npm-pick-manifest@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.0.tgz#e3b18b09678a47e894f90941bef8204ea5d96c3b" - integrity sha512-njM1AcdioFaKd0JSGtLO09YA1WRwctjGQJbnHGmKS+u+uwP8oFvtZtOQWPYdxrnY5eJud3wn8OpH4sEIx6+GEQ== - dependencies: - npm-install-checks "^4.0.0" - npm-normalize-package-bin "^1.0.1" - npm-package-arg "^9.0.0" - semver "^7.3.5" - npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" @@ -7740,14 +8004,6 @@ npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: npm-package-arg "^8.1.2" semver "^7.3.4" -npm-profile@*: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-6.0.2.tgz#b2da9887d16d1f0d1ce8a9c3b37a48454a372919" - integrity sha512-0Fq8l+A10YXnnS63E3HThWjOb7+19Wsh1nOVutC2fKuowar8t/5PpINsbcm5xQ2dA28uAu+wjFfUyiEVSMz4Jw== - dependencies: - npm-registry-fetch "^13.0.0" - proc-log "^2.0.0" - npm-profile@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-5.0.4.tgz#73e5bd1d808edc2c382d7139049cc367ac43161b" @@ -7755,17 +8011,12 @@ npm-profile@^5.0.3: dependencies: npm-registry-fetch "^11.0.0" -npm-registry-fetch@*, npm-registry-fetch@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.0.0.tgz#f0cf807f661184217651e0465668e4fd255fd6a8" - integrity sha512-MmiMuV9DU5gRuAU0jia952Qq+E4h7ZoUaeltCXivhClcqfOVKqNLZEQsRUOb6a8WQY+um8x97JcUuaWFoPoBBw== +npm-profile@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-6.0.3.tgz#f4a11ce09467f00fa0832db7f27992e55fdfc94b" + integrity sha512-TVeHhnol2Iemud+Sr70/uqax5LnLJ9y361w+m5+Z7WYV2B1t6FhRDxDu72+yYYTvsgshkhnXEqbPjuD87kYXfA== dependencies: - make-fetch-happen "^10.0.2" - minipass "^3.1.6" - minipass-fetch "^1.4.1" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^9.0.0" + npm-registry-fetch "^13.0.1" proc-log "^2.0.0" npm-registry-fetch@^11.0.0: @@ -7780,7 +8031,7 @@ npm-registry-fetch@^11.0.0: minizlib "^2.0.0" npm-package-arg "^8.0.0" -npm-registry-fetch@^12.0.0, npm-registry-fetch@^12.0.1: +npm-registry-fetch@^12.0.0, npm-registry-fetch@^12.0.1, npm-registry-fetch@^12.0.2: version "12.0.2" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz#ae583bb3c902a60dae43675b5e33b5b1f6159f1e" integrity sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA== @@ -7792,6 +8043,19 @@ npm-registry-fetch@^12.0.0, npm-registry-fetch@^12.0.1: minizlib "^2.1.2" npm-package-arg "^8.1.5" +npm-registry-fetch@^13.0.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz#26dc4b26d0a545886e807748032ba2aefaaae96b" + integrity sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w== + dependencies: + make-fetch-happen "^10.0.6" + minipass "^3.1.6" + minipass-fetch "^2.0.3" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^9.0.1" + proc-log "^2.0.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -7806,7 +8070,7 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npm-user-validate@*, npm-user-validate@^1.0.1: +npm-user-validate@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.1.tgz#31428fc5475fe8416023f178c0ab47935ad8c561" integrity sha512-uQwcd/tY+h1jnEaze6cdX/LrhWhoBxfSknxentoqmIuStxUExxjWd3ULMLFPiFUrZKbOVMowH6Jq2FRWfmhcEw== @@ -7964,16 +8228,6 @@ npm@^8.3.0: which "^2.0.2" write-file-atomic "^4.0.0" -npmlog@*, npmlog@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.1.tgz#06f1344a174c06e8de9c6c70834cfba2964bba17" - integrity sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.0" - set-blocking "^2.0.0" - npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -7994,6 +8248,26 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" +npmlog@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.1.tgz#06f1344a174c06e8de9c6c70834cfba2964bba17" + integrity sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.0" + set-blocking "^2.0.0" + +npmlog@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -8097,7 +8371,7 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -opener@*, opener@^1.5.2: +opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== @@ -8238,33 +8512,6 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pacote@*: - version "13.0.2" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.0.2.tgz#3389b8338cdbec3a1fa433848cf00860f7c08ea6" - integrity sha512-3LyfvDk2BSJNFQZIcDqnLNa7IsYb6KwX3H9uZPwaHJFIX6Gv5N9QHU+s7mEs/RbN4/ta6KUT39LAi2l6EkBi5A== - dependencies: - "@npmcli/git" "^3.0.0" - "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^2.0.0" - cacache "^15.3.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.6" - mkdirp "^1.0.4" - npm-package-arg "^9.0.0" - npm-packlist "^3.0.0" - npm-pick-manifest "^7.0.0" - npm-registry-fetch "^13.0.0" - proc-log "^2.0.0" - promise-retry "^2.0.1" - read-package-json "^4.1.1" - read-package-json-fast "^2.0.3" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.1.11" - pacote@^11.1.11, pacote@^11.2.6, pacote@^11.3.0, pacote@^11.3.1, pacote@^11.3.5: version "11.3.5" resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" @@ -8290,7 +8537,7 @@ pacote@^11.1.11, pacote@^11.2.6, pacote@^11.3.0, pacote@^11.3.1, pacote@^11.3.5: ssri "^8.0.1" tar "^6.1.0" -pacote@^12.0.0, pacote@^12.0.2: +pacote@^12.0.0, pacote@^12.0.2, pacote@^12.0.3: version "12.0.3" resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.3.tgz#b6f25868deb810e7e0ddf001be88da2bcaca57c7" integrity sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow== @@ -8322,15 +8569,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-conflict-json@*, parse-conflict-json@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-2.0.1.tgz#76647dd072e6068bcaff20be6ccea68a18e1fb58" - integrity sha512-Y7nYw+QaSGBto1LB9lgwOR05Rtz5SbuTf+Oe7HJ6SYQ/DHsvRjQ8O03oWdJbvkt6GzDWospgyZbGmjDYL0sDgA== - dependencies: - json-parse-even-better-errors "^2.3.1" - just-diff "^5.0.1" - just-diff-apply "^4.0.1" - parse-conflict-json@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz#54ec175bde0f2d70abf6be79e0e042290b86701b" @@ -8340,6 +8578,15 @@ parse-conflict-json@^1.1.1: just-diff "^3.0.1" just-diff-apply "^3.0.0" +parse-conflict-json@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-2.0.1.tgz#76647dd072e6068bcaff20be6ccea68a18e1fb58" + integrity sha512-Y7nYw+QaSGBto1LB9lgwOR05Rtz5SbuTf+Oe7HJ6SYQ/DHsvRjQ8O03oWdJbvkt6GzDWospgyZbGmjDYL0sDgA== + dependencies: + json-parse-even-better-errors "^2.3.1" + just-diff "^5.0.1" + just-diff-apply "^4.0.1" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -8582,16 +8829,16 @@ pretty-format@^27.4.2: ansi-styles "^5.0.0" react-is "^17.0.1" -proc-log@*, proc-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.0.tgz#25f8cb346a5d08e27f2422b3ca6ba8379bcbf8ba" - integrity sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA== - proc-log@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" integrity sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg== +proc-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.0.tgz#25f8cb346a5d08e27f2422b3ca6ba8379bcbf8ba" + integrity sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -8693,7 +8940,7 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qrcode-terminal@*, qrcode-terminal@^0.12.0: +qrcode-terminal@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== @@ -8784,7 +9031,7 @@ read-cmd-shim@^2.0.0: resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== -read-package-json-fast@*, read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: +read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -8792,7 +9039,7 @@ read-package-json-fast@*, read-package-json-fast@^2.0.1, read-package-json-fast@ json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -read-package-json@*, read-package-json@^4.1.1: +read-package-json@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== @@ -8838,7 +9085,7 @@ read-pkg@^5.0.0, read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -read@*, read@1, read@^1.0.7, read@~1.0.1, read@~1.0.7: +read@1, read@^1.0.7, read@~1.0.1, read@~1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= @@ -8867,7 +9114,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readdir-scoped-modules@*, readdir-scoped-modules@^1.1.0: +readdir-scoped-modules@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== @@ -9095,13 +9342,6 @@ rfdc@^1.3.0: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== -rimraf@*, rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -9109,6 +9349,13 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -9248,23 +9495,30 @@ semver-regex@^3.1.2: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807" integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== -semver@*, semver@7.3.5, semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.3.5, semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.0.0: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -9602,13 +9856,20 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@*, ssri@^8.0.0, ssri@^8.0.1: +ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" +ssri@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.0.tgz#70ad90e339eb910f1a7ff1dcf4afc268326c4547" + integrity sha512-Y1Z6J8UYnexKFN1R/hxUaYoY2LVdKEzziPmVAFKiKX8fiwvCJTVzn/xYE9TEWod5OVyNfIHHuVfIEuBClL/uJQ== + dependencies: + minipass "^3.1.1" + stack-utils@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" @@ -9897,7 +10158,7 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar@*, tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -9952,7 +10213,7 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== -text-table@*, text-table@^0.2.0, text-table@~0.2.0: +text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -9996,7 +10257,7 @@ through@2, "through@>=2.2.7 <3", through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -tiny-relative-date@*, tiny-relative-date@^1.3.0: +tiny-relative-date@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== @@ -10106,7 +10367,7 @@ traverse@~0.6.6: resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= -treeverse@*, treeverse@^1.0.4: +treeverse@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-1.0.4.tgz#a6b0ebf98a1bca6846ddc7ecbc900df08cb9cd5f" integrity sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g== @@ -10161,6 +10422,11 @@ tslib@^2: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -10436,13 +10702,20 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@*, validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: +validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= dependencies: builtins "^1.0.3" +validate-npm-package-name@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== + dependencies: + builtins "^5.0.0" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -10534,13 +10807,6 @@ whatwg-url@^8.0.0, whatwg-url@^8.5.0: tr46 "^2.1.0" webidl-conversions "^6.1.0" -which@*, which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -10548,6 +10814,13 @@ which@^1.2.9: dependencies: isexe "^2.0.0" +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -10601,14 +10874,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@*, write-file-atomic@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" - integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" @@ -10619,6 +10884,14 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-file-atomic@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"