From 31f313cadc2fbe43019f3b497a11b8174aa6df14 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 28 Apr 2021 19:42:18 +0100 Subject: [PATCH 01/48] wip: initial proof-of-concept incremental static regeneration --- packages/libs/lambda-at-edge/package.json | 1 + packages/libs/lambda-at-edge/rollup.config.js | 4 +- packages/libs/lambda-at-edge/src/build.ts | 71 +- .../lambda-at-edge/src/default-handler.ts | 90 +- .../src/regeneration-handler.ts | 86 ++ packages/libs/lambda-at-edge/yarn.lock | 49 + .../nextjs-cdk-construct/package.json | 6 +- .../nextjs-cdk-construct/src/index.ts | 39 +- .../nextjs-cdk-construct/yarn.lock | 1210 +++++++++-------- 9 files changed, 995 insertions(+), 561 deletions(-) create mode 100644 packages/libs/lambda-at-edge/src/regeneration-handler.ts diff --git a/packages/libs/lambda-at-edge/package.json b/packages/libs/lambda-at-edge/package.json index 8a5058b9c1..95039c44ce 100644 --- a/packages/libs/lambda-at-edge/package.json +++ b/packages/libs/lambda-at-edge/package.json @@ -62,6 +62,7 @@ }, "dependencies": { "@aws-sdk/client-s3": "1.0.0-rc.3", + "@aws-sdk/client-sqs": "1.0.0-rc.3", "@hapi/accept": "5.0.1", "@vercel/nft": "^0.9.3", "cookie": "^0.4.1", diff --git a/packages/libs/lambda-at-edge/rollup.config.js b/packages/libs/lambda-at-edge/rollup.config.js index e397b117a9..973edb592f 100644 --- a/packages/libs/lambda-at-edge/rollup.config.js +++ b/packages/libs/lambda-at-edge/rollup.config.js @@ -47,5 +47,7 @@ export default [ { filename: "api-handler", minify: false }, { filename: "api-handler", minify: true }, { filename: "image-handler", minify: false }, - { filename: "image-handler", minify: true } + { filename: "image-handler", minify: true }, + { filename: "regeneration-handler", minify: false }, + { filename: "regeneration-handler", minify: true } ].map(generateConfig); diff --git a/packages/libs/lambda-at-edge/src/build.ts b/packages/libs/lambda-at-edge/src/build.ts index 3b80720c67..d5bac6d950 100644 --- a/packages/libs/lambda-at-edge/src/build.ts +++ b/packages/libs/lambda-at-edge/src/build.ts @@ -31,6 +31,7 @@ import { Job } from "@vercel/nft/out/node-file-trace"; export const DEFAULT_LAMBDA_CODE_DIR = "default-lambda"; export const API_LAMBDA_CODE_DIR = "api-lambda"; export const IMAGE_LAMBDA_CODE_DIR = "image-lambda"; +export const REGENERATION_LAMBDA_CODE_DIR = "regeneration-lambda"; export const ASSETS_DIR = "assets"; type BuildOptions = { @@ -230,7 +231,11 @@ class Builder { * @param shouldMinify */ async processAndCopyHandler( - handlerType: "api-handler" | "default-handler" | "image-handler", + handlerType: + | "api-handler" + | "default-handler" + | "image-handler" + | "regeneration-handler", destination: string, shouldMinify: boolean ) { @@ -243,9 +248,9 @@ class Builder { await fse.copy(source, destination); } - async buildDefaultLambda( + async copyTraces( buildManifest: OriginRequestDefaultHandlerManifest - ): Promise { + ): Promise { let copyTraces: Promise[] = []; if (this.buildOptions.useServerlessTraceTarget) { @@ -282,7 +287,13 @@ class Builder { ); } - let prerenderManifest = require(join( + await Promise.all(copyTraces); + } + + async buildDefaultLambda( + buildManifest: OriginRequestDefaultHandlerManifest + ): Promise { + const prerenderManifest = require(join( this.dotNextDir, "prerender-manifest.json" )); @@ -292,7 +303,7 @@ class Builder { ); return Promise.all([ - ...copyTraces, + this.copyTraces(buildManifest), this.processAndCopyHandler( "default-handler", join(this.outputDir, DEFAULT_LAMBDA_CODE_DIR, "index.js"), @@ -412,6 +423,48 @@ class Builder { ]); } + async buildRegenerationHandler( + buildManifest: OriginRequestDefaultHandlerManifest + ): Promise { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const prerenderManifest = require(join( + this.dotNextDir, + "prerender-manifest.json" + )); + await Promise.all([ + this.copyTraces(buildManifest), + this.processAndCopyHandler( + "regeneration-handler", + join(this.outputDir, REGENERATION_LAMBDA_CODE_DIR, "index.js"), + !!this.buildOptions.minifyHandlers + ), + fse.copy( + join(this.serverlessDir, "pages"), + join(this.outputDir, REGENERATION_LAMBDA_CODE_DIR, "pages"), + { + recursive: true, + filter: (file: string) => { + const isNotPrerenderedHTMLPage = path.extname(file) !== ".html"; + const isNotStaticPropsJSONFile = path.extname(file) !== ".json"; + const isNotApiPage = pathToPosix(file).indexOf("pages/api") === -1; + const isDirectory = fse.statSync(file).isDirectory(); + const isPrerenderedJSFile = this.isPrerenderedJSFile( + prerenderManifest, + path.relative(join(this.serverlessDir, "pages"), file) + ); + + return ( + isNotApiPage && + isNotPrerenderedHTMLPage && + isNotStaticPropsJSONFile && + (isPrerenderedJSFile || isDirectory) + ); + } + } + ) + ]); + } + /** * Build image optimization lambda (supported by Next.js 10) * @param buildManifest @@ -941,9 +994,9 @@ class Builder { path.join(dotNextDirectory, "prerender-manifest.json") ); - let prerenderManifestJSONPropFileAssets: Promise[] = []; - let prerenderManifestHTMLPageAssets: Promise[] = []; - let fallbackHTMLPageAssets: Promise[] = []; + const prerenderManifestJSONPropFileAssets: Promise[] = []; + const prerenderManifestHTMLPageAssets: Promise[] = []; + const fallbackHTMLPageAssets: Promise[] = []; // Copy locale-specific prerendered files if defined, otherwise use empty locale // which would copy to root only @@ -1119,6 +1172,7 @@ class Builder { await fse.emptyDir(join(this.outputDir, DEFAULT_LAMBDA_CODE_DIR)); await fse.emptyDir(join(this.outputDir, API_LAMBDA_CODE_DIR)); await fse.emptyDir(join(this.outputDir, IMAGE_LAMBDA_CODE_DIR)); + await fse.emptyDir(join(this.outputDir, REGENERATION_LAMBDA_CODE_DIR)); await fse.emptyDir(join(this.outputDir, ASSETS_DIR)); const { restoreUserConfig } = await createServerlessConfig( @@ -1160,6 +1214,7 @@ class Builder { } = await this.prepareBuildManifests(routesManifest, prerenderManifest); await this.buildDefaultLambda(defaultBuildManifest); + await this.buildRegenerationHandler(defaultBuildManifest); const hasAPIPages = Object.keys(apiBuildManifest.apis.nonDynamic).length > 0 || diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index 0d79be48ce..325ccf2d23 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -325,8 +325,8 @@ const handleOriginRequest = async ({ const decodedUri = decodeURI(uri); const { pages, publicFiles } = manifest; - let isPublicFile = publicFiles[decodedUri]; - let isDataReq = isDataRequest(uri); + const isPublicFile = publicFiles[decodedUri]; + const isDataReq = isDataRequest(uri); // Handle redirects // TODO: refactor redirect logic to another file since this is getting quite large @@ -602,12 +602,95 @@ const handleOriginResponse = async ({ const request = event.Records[0].cf.request; const { uri } = request; const { status } = response; + const { region, domainName } = request.origin?.s3 || {}; + const bucketName = domainName?.replace(`.s3.${region}.amazonaws.com`, ""); + if (status !== "403") { // Set 404 status code for 404.html page. We do not need normalised URI as it will always be "/404.html" if (uri.endsWith("/404.html")) { response.status = "404"; response.statusDescription = "Not Found"; + return response; + } + + const initialRevalidateSeconds = + manifest.pages.ssg.nonDynamic?.[uri.replace(".html", "")] + ?.initialRevalidateSeconds; + const lastModifiedHeaderString = + response.headers?.["last-modified"]?.[0]?.value; + const lastModifiedAt = lastModifiedHeaderString + ? new Date(lastModifiedHeaderString) + : null; + if (typeof initialRevalidateSeconds === "number" && lastModifiedAt) { + const createdAgo = + // LastModified should always be defined + (Date.now() - (lastModifiedAt.getTime() || Date.now())) / 1000; + + const timeToRevalidate = Math.floor( + initialRevalidateSeconds - createdAgo + ); + + response.headers["cache-control"] = [ + { + key: "Cache-Control", + value: + timeToRevalidate < 0 + ? "public, max-age=0, s-maxage=0, must-revalidate" + : `public, max-age=0, s-maxage=${timeToRevalidate}, must-revalidate` + } + ]; + + if (timeToRevalidate < 0) { + const { SQSClient, SendMessageCommand } = await import( + "@aws-sdk/client-sqs" + ); + const sqs = new SQSClient({ + region, + maxAttempts: 3, + retryStrategy: await buildS3RetryStrategy() + }); + await sqs.send( + new SendMessageCommand({ + QueueUrl: `https://sqs.${region}.amazonaws.com/${bucketName}.fifo`, + MessageBody: uri, + MessageAttributes: { + BucketRegion: { + DataType: "String", + StringValue: region + }, + BucketName: { + DataType: "String", + StringValue: bucketName + }, + CloudFrontEventRequest: { + DataType: "String", + StringValue: JSON.stringify(request) + }, + Manifest: { + DataType: "String", + StringValue: JSON.stringify(manifest) + }, + ...(basePath + ? { + BasePath: { + DataType: "String", + StringValue: basePath + } + } + : {}) + }, + // We only want to trigger the regeneration once for every previous + // update. This will prevent the case where this page is being + // requested again whilst its already started to regenerate. + MessageDeduplicationId: lastModifiedAt.getTime().toString(), + // Only deduplicate based on the object, i.e. we can generate + // different pages in parallel, just not the same one + MessageGroupId: uri + }) + ); + } } + return response; } @@ -616,9 +699,6 @@ const handleOriginResponse = async ({ return response; } - const { domainName, region } = request.origin!.s3!; - const bucketName = domainName.replace(`.s3.${region}.amazonaws.com`, ""); - // Lazily import only S3Client to reduce init times until actually needed const { S3Client } = await import("@aws-sdk/client-s3/S3Client"); diff --git a/packages/libs/lambda-at-edge/src/regeneration-handler.ts b/packages/libs/lambda-at-edge/src/regeneration-handler.ts new file mode 100644 index 0000000000..e9d15ce9a7 --- /dev/null +++ b/packages/libs/lambda-at-edge/src/regeneration-handler.ts @@ -0,0 +1,86 @@ +import lambdaAtEdgeCompat from "@sls-next/next-aws-cloudfront"; +import { OriginRequestDefaultHandlerManifest } from "./types"; +import { S3Client } from "@aws-sdk/client-s3"; +import { buildS3RetryStrategy } from "./s3/s3RetryStrategy"; + +export const handler: AWSLambda.SQSHandler = async (event) => { + await Promise.all( + event.Records.map(async (record) => { + const bucketName = record.messageAttributes.BucketName?.stringValue; + const bucketRegion = record.messageAttributes.BucketRegion?.stringValue; + const manifestString = record.messageAttributes.Manifest?.stringValue; + const basePath = record.messageAttributes.BasePath?.stringValue; + const cloudFrontEventRequestString = + record.messageAttributes.CloudFrontEventRequest?.stringValue; + if ( + !bucketName || + !bucketRegion || + !cloudFrontEventRequestString || + !manifestString + ) { + throw new Error( + "Expected BucketName, BucketRegion, CloudFrontEventRequest & EnableHTTPCompression message attributes" + ); + } + const cloudFrontEventRequest: AWSLambda.CloudFrontRequest = JSON.parse( + cloudFrontEventRequestString + ); + const manifest: OriginRequestDefaultHandlerManifest = JSON.parse( + manifestString + ); + + const s3 = new S3Client({ + region: cloudFrontEventRequest.origin?.s3?.region, + maxAttempts: 3, + retryStrategy: await buildS3RetryStrategy() + }); + + const { req, res } = lambdaAtEdgeCompat( + { request: cloudFrontEventRequest }, + { enableHTTPCompression: manifest.enableHTTPCompression } + ); + + const baseKey = cloudFrontEventRequest.uri + .replace(/^\//, "") + .replace(/\.(json|html)$/, "") + .replace(/^_next\/data\/[^\/]*\//, ""); + + // eslint-disable-next-line @typescript-eslint/no-var-requires + const page = require(`./pages/${baseKey}`); + + const jsonKey = `_next/data/${manifest.buildId}/${baseKey}.json`; + const htmlKey = `static-pages/${manifest.buildId}/${baseKey}.html`; + + const { renderOpts, html } = await page.renderReqToHTML( + req, + res, + "passthrough" + ); + + const s3BasePath = basePath ? `${basePath.replace(/^\//, "")}/` : ""; + const s3JsonParams = { + Bucket: bucketName, + Key: `${s3BasePath}${jsonKey}`, + Body: JSON.stringify(renderOpts.pageData), + ContentType: "application/json", + CacheControl: "public, max-age=0, s-maxage=2678400, must-revalidate" + }; + + const s3HtmlParams = { + Bucket: bucketName, + Key: `${s3BasePath}${htmlKey}`, + Body: html, + ContentType: "text/html", + CacheControl: "public, max-age=0, s-maxage=2678400, must-revalidate" + }; + + const { PutObjectCommand } = await import( + "@aws-sdk/client-s3/commands/PutObjectCommand" + ); + await Promise.all([ + s3.send(new PutObjectCommand(s3JsonParams)), + s3.send(new PutObjectCommand(s3HtmlParams)) + ]); + }) + ); +}; diff --git a/packages/libs/lambda-at-edge/yarn.lock b/packages/libs/lambda-at-edge/yarn.lock index 6fd01cab58..37ff230bb3 100644 --- a/packages/libs/lambda-at-edge/yarn.lock +++ b/packages/libs/lambda-at-edge/yarn.lock @@ -119,6 +119,46 @@ fast-xml-parser "^3.16.0" tslib "^2.0.0" +"@aws-sdk/client-sqs@1.0.0-rc.3": + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sqs/-/client-sqs-1.0.0-rc.3.tgz#aca468b52f77db00ffdf27d825022124d802da4d" + integrity sha512-qEXJ++GJ46sPboyhRUJIv03buEvmXT5lLgjUdWjZKwzHaU34GPH0B7xxlLOUWmA+JvyPaK91ESjGqLc/82GLaA== + dependencies: + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/config-resolver" "1.0.0-rc.3" + "@aws-sdk/credential-provider-node" "1.0.0-rc.3" + "@aws-sdk/fetch-http-handler" "1.0.0-rc.3" + "@aws-sdk/hash-node" "1.0.0-rc.3" + "@aws-sdk/invalid-dependency" "1.0.0-rc.3" + "@aws-sdk/md5-js" "1.0.0-rc.3" + "@aws-sdk/middleware-content-length" "1.0.0-rc.3" + "@aws-sdk/middleware-host-header" "1.0.0-rc.3" + "@aws-sdk/middleware-logger" "1.0.0-rc.3" + "@aws-sdk/middleware-retry" "1.0.0-rc.3" + "@aws-sdk/middleware-sdk-sqs" "1.0.0-rc.3" + "@aws-sdk/middleware-serde" "1.0.0-rc.3" + "@aws-sdk/middleware-signing" "1.0.0-rc.3" + "@aws-sdk/middleware-stack" "1.0.0-rc.3" + "@aws-sdk/middleware-user-agent" "1.0.0-rc.3" + "@aws-sdk/node-config-provider" "1.0.0-rc.3" + "@aws-sdk/node-http-handler" "1.0.0-rc.3" + "@aws-sdk/protocol-http" "1.0.0-rc.3" + "@aws-sdk/smithy-client" "1.0.0-rc.3" + "@aws-sdk/types" "1.0.0-rc.3" + "@aws-sdk/url-parser-browser" "1.0.0-rc.3" + "@aws-sdk/url-parser-node" "1.0.0-rc.3" + "@aws-sdk/util-base64-browser" "1.0.0-rc.3" + "@aws-sdk/util-base64-node" "1.0.0-rc.3" + "@aws-sdk/util-body-length-browser" "1.0.0-rc.3" + "@aws-sdk/util-body-length-node" "1.0.0-rc.3" + "@aws-sdk/util-user-agent-browser" "1.0.0-rc.3" + "@aws-sdk/util-user-agent-node" "1.0.0-rc.3" + "@aws-sdk/util-utf8-browser" "1.0.0-rc.3" + "@aws-sdk/util-utf8-node" "1.0.0-rc.3" + fast-xml-parser "^3.16.0" + tslib "^2.0.0" + "@aws-sdk/config-resolver@1.0.0-rc.3": version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-1.0.0-rc.3.tgz#0eb877cdabffb75ba3ed89f14e86301faeec12d2" @@ -382,6 +422,15 @@ "@aws-sdk/util-arn-parser" "1.0.0-rc.3" tslib "^1.8.0" +"@aws-sdk/middleware-sdk-sqs@1.0.0-rc.3": + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-1.0.0-rc.3.tgz#5f02a97b0f34a4848ef8769e1e21d09d178d3cd8" + integrity sha512-d3kL0IDQtXf/kP3RXMH6+AsjYS69tPC+9r9O28ri/qPDQFUdeHVFxybneAA/5JWikDM6tZ4htgkm+Tm4PUm5hA== + dependencies: + "@aws-sdk/types" "1.0.0-rc.3" + "@aws-sdk/util-hex-encoding" "1.0.0-rc.3" + tslib "^1.8.0" + "@aws-sdk/middleware-serde@1.0.0-rc.3": version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-1.0.0-rc.3.tgz#81307310c51d50ec8425bee9fb08d35a7458dcfc" diff --git a/packages/serverless-components/nextjs-cdk-construct/package.json b/packages/serverless-components/nextjs-cdk-construct/package.json index c293af225b..191c2facac 100644 --- a/packages/serverless-components/nextjs-cdk-construct/package.json +++ b/packages/serverless-components/nextjs-cdk-construct/package.json @@ -42,7 +42,9 @@ "@aws-cdk/aws-route53-targets": "^1.75.0", "@aws-cdk/aws-s3": "^1.75.0", "@aws-cdk/aws-s3-deployment": "^1.75.0", - "@aws-cdk/core": "^1.75.0" + "@aws-cdk/core": "^1.75.0", + "@aws-cdk/aws-lambda-event-sources": "^1.75.0", + "@aws-cdk/aws-sqs": "^1.75.0" }, "devDependencies": { "@aws-cdk/assert": "^1.75.0", @@ -57,6 +59,8 @@ "@aws-cdk/aws-s3": "^1.75.0", "@aws-cdk/aws-s3-deployment": "^1.75.0", "@aws-cdk/core": "^1.75.0", + "@aws-cdk/aws-lambda-event-sources": "^1.75.0", + "@aws-cdk/aws-sqs": "^1.75.0", "@types/fs-extra": "^9.0.1", "typescript": "^3.9.6" } diff --git a/packages/serverless-components/nextjs-cdk-construct/src/index.ts b/packages/serverless-components/nextjs-cdk-construct/src/index.ts index e3f74c9c1b..0521b5c6a4 100644 --- a/packages/serverless-components/nextjs-cdk-construct/src/index.ts +++ b/packages/serverless-components/nextjs-cdk-construct/src/index.ts @@ -6,6 +6,8 @@ import * as s3Deploy from "@aws-cdk/aws-s3-deployment"; import * as cloudfront from "@aws-cdk/aws-cloudfront"; import * as origins from "@aws-cdk/aws-cloudfront-origins"; import { ARecord, RecordTarget } from "@aws-cdk/aws-route53"; +import * as sqs from "@aws-cdk/aws-sqs"; +import * as lambdaEventSources from "@aws-cdk/aws-lambda-event-sources"; import { OriginRequestImageHandlerManifest, OriginRequestApiHandlerManifest, @@ -60,6 +62,10 @@ export class NextJSLambdaEdge extends cdk.Construct { public aRecord?: ARecord; + public regenerationQueue: sqs.Queue; + + public regenerationFunction: lambda.Function; + constructor(scope: cdk.Construct, id: string, private props: Props) { super(scope, id); this.apiBuildManifest = this.readApiBuildManifest(); @@ -78,6 +84,31 @@ export class NextJSLambdaEdge extends cdk.Construct { ...(props.s3Props || {}) }); + this.regenerationQueue = new sqs.Queue(this, "RegenerationQueue", { + // We call the queue the same name as the bucket so that we can easily + // reference it from within the lambda@edge, given we can't use env vars + // in a lambda@edge + queueName: `${this.bucket.bucketName}.fifo`, + fifo: true, + removalPolicy: cdk.RemovalPolicy.DESTROY + }); + + this.regenerationFunction = new lambda.Function( + this, + "RegenerationFunction", + { + handler: "index.handler", + runtime: lambda.Runtime.NODEJS_14_X, + code: lambda.Code.fromAsset( + path.join(this.props.serverlessBuildOutDir, "regeneration-lambda") + ) + } + ); + + this.regenerationFunction.addEventSource( + new lambdaEventSources.SqsEventSource(this.regenerationQueue) + ); + this.edgeLambdaRole = new Role(this, "NextEdgeLambdaRole", { assumedBy: new CompositePrincipal( new ServicePrincipal("lambda.amazonaws.com"), @@ -111,6 +142,9 @@ export class NextJSLambdaEdge extends cdk.Construct { timeout: toLambdaOption("defaultLambda", props.timeout) }); + this.bucket.grantRead(this.defaultNextLambda); + this.bucket.grantReadWrite(this.regenerationFunction); + this.regenerationQueue.grantSendMessages(this.defaultNextLambda); this.defaultNextLambda.currentVersion.addAlias("live"); const apis = this.apiBuildManifest?.apis; @@ -375,10 +409,11 @@ export class NextJSLambdaEdge extends cdk.Construct { }); if (props.domain) { - props.domain.domainNames.forEach((domainName, index) => { + const domain = props.domain; + domain.domainNames.forEach((domainName, index) => { this.aRecord = new ARecord(this, `AliasRecord_${index}`, { recordName: domainName, - zone: props.domain!.hostedZone, // not sure why ! is needed here + zone: domain.hostedZone, target: RecordTarget.fromAlias( new CloudFrontTarget(this.distribution) ) diff --git a/packages/serverless-components/nextjs-cdk-construct/yarn.lock b/packages/serverless-components/nextjs-cdk-construct/yarn.lock index 49984840da..7868a564cd 100644 --- a/packages/serverless-components/nextjs-cdk-construct/yarn.lock +++ b/packages/serverless-components/nextjs-cdk-construct/yarn.lock @@ -3,482 +3,584 @@ "@aws-cdk/assert@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/assert/-/assert-1.87.1.tgz#947f56c438e1f125e770c947d828372ee7ccb601" - integrity sha512-X1Cv1LBdkdHQXtgrw8rRSW2PuAmODq1mKUtnGVgyNf0hGGhHvU/N0Y//SG6Rw6iMxA4orj7IKQXUTiGchsqiSQ== - dependencies: - "@aws-cdk/cloud-assembly-schema" "1.87.1" - "@aws-cdk/cloudformation-diff" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/assets@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/assets/-/assets-1.87.1.tgz#c3d6fbd24bab54001998895636aa932798d92726" - integrity sha512-JPSJ+/Ofu6gLq/mHM8nV8LYqdHmXPVv46M1yOniY5i/s+hWHTBS4gPxZ/F69dVvfVlV2ibLsd1bXRvuLH2Zsfw== - dependencies: - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-apigateway@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-apigateway/-/aws-apigateway-1.87.1.tgz#1c174c9380b444f219babb98185f515c8a7384aa" - integrity sha512-QKhfBxxDEQNgiwv3JVckvrvJj+TPBfeuN/sCSM769EHMZZmyxYa4Ln6te1cKpcNv1aSxUeqBb45YsgiUJn8wOg== - dependencies: - "@aws-cdk/aws-certificatemanager" "1.87.1" - "@aws-cdk/aws-cloudwatch" "1.87.1" - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/aws-elasticloadbalancingv2" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-lambda" "1.87.1" - "@aws-cdk/aws-logs" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/aws-s3-assets" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-apigatewayv2@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-apigatewayv2/-/aws-apigatewayv2-1.87.1.tgz#a8b6f0f9fd42d0e0d57d2bac4950422eae9de928" - integrity sha512-/RHcoOojeTDm2d8cDOi+t9Co27MGW82J624IIwNgfAIMpyLMiFHjcZNnpHY7hEjlQf5PnTP4lMcZYAvWS0mFfA== - dependencies: - "@aws-cdk/aws-certificatemanager" "1.87.1" - "@aws-cdk/aws-cloudwatch" "1.87.1" - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-applicationautoscaling@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-applicationautoscaling/-/aws-applicationautoscaling-1.87.1.tgz#43d476b384d790ad0a5f227675dcfc6998ff47c1" - integrity sha512-HqYMHYHDzGmYMR6yevHIjQlBzYPUy+kgfp43WsVn/uJQNirIlfGt+Qi9Q0pMnQqTNlwncKgYlI+IqRDeNtfNBg== - dependencies: - "@aws-cdk/aws-autoscaling-common" "1.87.1" - "@aws-cdk/aws-cloudwatch" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-autoscaling-common@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling-common/-/aws-autoscaling-common-1.87.1.tgz#650d17d3e335f47d690db87ef5e99469fe099bff" - integrity sha512-O9pHrIMtb64tFWPLUnSoatNA9RUwr4+vm6GcpJ0uWs1igkNtKn/lQg0etOVStQa01VQIF+Zs5n4Xo0QOXUQrZg== - dependencies: - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-certificatemanager@1.87.1", "@aws-cdk/aws-certificatemanager@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-certificatemanager/-/aws-certificatemanager-1.87.1.tgz#70b962a25b312ff713954d13ce7932e62da3b29f" - integrity sha512-MD2tPosafkR2M/PjdwB+elkIUYNg3um8WLKhmv1OvXYPYRQi+/P0AH8DnjNY5bZWL0a3br1C0s5jPXEIHiGaMg== - dependencies: - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-lambda" "1.87.1" - "@aws-cdk/aws-route53" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-cloudformation@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudformation/-/aws-cloudformation-1.87.1.tgz#e2a0a6d90db00781bdc67a188def4b1583cbe509" - integrity sha512-cN3MmAj7rf1btSanY3RArxYZH0eBhB5uQOWTsrre6CoKuS3qoiyn73lBB1JhTwz8t49tIFGLudIkI1fYdDNjlg== - dependencies: - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-lambda" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/aws-sns" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - constructs "^3.2.0" + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/assert/-/assert-1.100.0.tgz#80fe6cac2ebb36af366378810edcb676dfbbe411" + integrity sha512-R9tw8l0rI/If6ncZZv8297u/cxTk1F6YzSRnl6YuQWudO2eL3a7ldplQ9TttPoEuZsET5tUe0aSWzu9vUo+4yg== + dependencies: + "@aws-cdk/cloudformation-diff" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/assets@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/assets/-/assets-1.100.0.tgz#7911072a9314730168c6b5d81ed927dfd0ff6558" + integrity sha512-/svAGcK+YPYpFECDZQRUgSfVDowwjx6nFek7cmQ08rivjjsHdg+bVIIHvuOGA1cjIjmNzuufTTgIzaMTrzGdZQ== + dependencies: + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-apigateway@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-apigateway/-/aws-apigateway-1.100.0.tgz#844e1f6763893c01a9675e2363c8083cdf550b74" + integrity sha512-P0NN3AAWSjoEKGDgzbzGzQrGqdlsOXGavtStocZddbk2vFMBoWKQHRHtGL6hrU43Dv5k5VObEX0snJuVpFcHNQ== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.100.0" + "@aws-cdk/aws-cloudwatch" "1.100.0" + "@aws-cdk/aws-cognito" "1.100.0" + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-logs" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/aws-s3-assets" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-applicationautoscaling@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-applicationautoscaling/-/aws-applicationautoscaling-1.100.0.tgz#efadddce1e87fdd5002fbeeb55007d5c328d8276" + integrity sha512-XL424vT5WxNzqyh+i39/E+0o+j/dqi+AS8SSP6cE4QKG98QDslh3pa/vsEc71ub7GCJHkWtl8uO2zcrN8c22yg== + dependencies: + "@aws-cdk/aws-autoscaling-common" "1.100.0" + "@aws-cdk/aws-cloudwatch" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-autoscaling-common@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-autoscaling-common/-/aws-autoscaling-common-1.100.0.tgz#2a260dec624b575be76958feeba8d0abb9306b3d" + integrity sha512-JoFi2iTwtY/AHB5DfAfWhRBABNqbMPBB1WOCLo5n9seoiXPN94b+45YZewtC2uzq3tgsrouRgvF0n3wcCbnXIw== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-certificatemanager@1.100.0", "@aws-cdk/aws-certificatemanager@^1.75.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-certificatemanager/-/aws-certificatemanager-1.100.0.tgz#1306c5f2a55ad195708e0bcfe5310fd79f041e92" + integrity sha512-QDTtfeJLo3PY39/r9IYsSrScrb3C9wUUPlYoGiZP0zmLLvu3v2pGJKxwJrwx78pMBjUQJNbRiDODYyivb0/Ilg== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-route53" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-cloudformation@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudformation/-/aws-cloudformation-1.100.0.tgz#f688d60b1e2ab8270dc7198c42ff89997c64397d" + integrity sha512-SzH5lqI6q2SAH9Ocidxlcx3Zk2C6g1rx+XZ/ieNuXdWiHIzjldLqw5qfUUGqR1Q52OQE4m0a4lb/4KJUTnXr0A== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/aws-sns" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" "@aws-cdk/aws-cloudfront-origins@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudfront-origins/-/aws-cloudfront-origins-1.87.1.tgz#07b792e674a58188f04c2c36cb4e2c9e79edd4be" - integrity sha512-fCObnePlt66paLFYPefNZWgLlUPlr3NuxtSyAlMML6xZzBe1fJVfWDzd5lC5DOcVHGsPs9wzq8ObwgVIe6YvxQ== - dependencies: - "@aws-cdk/aws-cloudfront" "1.87.1" - "@aws-cdk/aws-elasticloadbalancingv2" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-cloudfront@1.87.1", "@aws-cdk/aws-cloudfront@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudfront/-/aws-cloudfront-1.87.1.tgz#31079797a790d1df0daca4f2d6e82f6cbbc184e6" - integrity sha512-snwBt1jus7+cpy+Kiiy7hVmbHkef6Oxaqz98OiLoPM3WHHGSO/VX5BHeRRRlbzPisHas/EscWUr6kh/G0Njttw== - dependencies: - "@aws-cdk/aws-certificatemanager" "1.87.1" - "@aws-cdk/aws-cloudwatch" "1.87.1" - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-kms" "1.87.1" - "@aws-cdk/aws-lambda" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/aws-ssm" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-cloudwatch@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudwatch/-/aws-cloudwatch-1.87.1.tgz#6b4fe829ebdf257439e4798fe62fb23f65c9bd38" - integrity sha512-/d4cS5/99bQ5WNzFvPv9ap2trnj6Hb94n/vveICA23oaM1oE4kx9SnMT8EmftVEVfMp/oYXGVyZKBsN4ZdDh7g== - dependencies: - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-codeguruprofiler@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codeguruprofiler/-/aws-codeguruprofiler-1.87.1.tgz#8d634f800752ff4c4d5ab612d25ea45580f53aa9" - integrity sha512-38LuPRmB1J+NQ5ijA0/vGYJA07kVkWkZzKzWhIsKjWHAfCrumVQ36yWRQrZT3a+EhC61NtB/lO9au8sy6c3o3A== - dependencies: - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-cognito@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cognito/-/aws-cognito-1.87.1.tgz#f27e26937878818457594e3b0c23783abeb399f0" - integrity sha512-f9YBkDu8VdAsyKKlyfu4pRT3zX0pI10nffzYRR1lRXj41PGgXdJacJRm8Ng8jxlHTiK0Uum0Rg5QUvEYOxX5xQ== - dependencies: - "@aws-cdk/aws-certificatemanager" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-lambda" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/custom-resources" "1.87.1" - constructs "^3.2.0" + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudfront-origins/-/aws-cloudfront-origins-1.100.0.tgz#bfd326b6b585bdc3edf128986afbbb8573817972" + integrity sha512-8chCPqiBuD4zD9/cURAGd6MU/+qHjjMPc57J2RABhs5Q9ZM/nwyWRrWTs9dq5kRFQ03UozMrK4GPmX15xiIWVA== + dependencies: + "@aws-cdk/aws-cloudfront" "1.100.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-cloudfront@1.100.0", "@aws-cdk/aws-cloudfront@^1.75.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudfront/-/aws-cloudfront-1.100.0.tgz#b927929ecf4532836ea87a5a80143fd41ef349c2" + integrity sha512-70ulJs4zaJ+jtQ4OwxWEgKiNxVKLRUYETBxJTE337tzwFE1X/lrXhRUoew87q6sxOYC/AVF2BAxZhwxZjThYAw== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.100.0" + "@aws-cdk/aws-cloudwatch" "1.100.0" + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/aws-ssm" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-cloudwatch@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cloudwatch/-/aws-cloudwatch-1.100.0.tgz#cdb6e871416b505abc40b785bb083388e396d2c4" + integrity sha512-41q/T8ip7BLEQdLO6BKK0Es5LTa7azgebllxVk886AyrZ1LaxTDAnyNJYBBWpEh5W+xvEroU/NLYwxLCUB0Aaw== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-codeguruprofiler@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-codeguruprofiler/-/aws-codeguruprofiler-1.100.0.tgz#68a3a02128f049e7497ab7df439aab41ee7960be" + integrity sha512-61rALx0Zqov5eMvkOPlW2+vtxRFEd0ZbUvUiwKoDBywXXjL05pmdQrfGzEnhLU3PX0+Jxr+7bfCsA6ff/onxVA== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-cognito@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-cognito/-/aws-cognito-1.100.0.tgz#9359b06084bc88eb3e3f86660f544c0604a516fa" + integrity sha512-Vuw4ac6dLc+gJz96WgxTsj3kkeuZdkIFHCMH/OkTYHeviCHFHiX6n7jlqCWVIfwzmzaPDqo4d4j7WlvpzpZ5NA== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/custom-resources" "1.100.0" + constructs "^3.3.69" punycode "^2.1.1" -"@aws-cdk/aws-ec2@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ec2/-/aws-ec2-1.87.1.tgz#2f2fc0ceff92918e37d50806afed3bdb616779de" - integrity sha512-HGIbxH3kwhtQiA+bCR0Pjfx1u3siNotRwPeakOeWtVsSB0mbcPHIpYDL8pHyILcSEjw6gLshP6GLmZJJOQ7cHg== - dependencies: - "@aws-cdk/aws-cloudwatch" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-kms" "1.87.1" - "@aws-cdk/aws-logs" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/aws-s3-assets" "1.87.1" - "@aws-cdk/aws-ssm" "1.87.1" - "@aws-cdk/cloud-assembly-schema" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - "@aws-cdk/region-info" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-ecr-assets@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecr-assets/-/aws-ecr-assets-1.87.1.tgz#2dc645058ec5286ca5be974f2e4fff73a82a6f8c" - integrity sha512-+EdHkmJcddi4BtOjfaB01zwOJMXI1ZWM/N0y5uHm/EgGckVXbcSMS3lDDBASx/fY6vWblkABG6d+46vXmV9tAg== - dependencies: - "@aws-cdk/assets" "1.87.1" - "@aws-cdk/aws-ecr" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - constructs "^3.2.0" +"@aws-cdk/aws-dynamodb@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-dynamodb/-/aws-dynamodb-1.100.0.tgz#296a614f759f47b946801fc3999d72ebfeac2383" + integrity sha512-ArDhOiuEljtrLz11QQWnsCSRk0TUhFbAFX6wg5goD41W2ep42HlhkWriRzwH4Sq0M6+zvBfBfGVQAqIUfrI6LA== + dependencies: + "@aws-cdk/aws-applicationautoscaling" "1.100.0" + "@aws-cdk/aws-cloudwatch" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/custom-resources" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-ec2@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ec2/-/aws-ec2-1.100.0.tgz#4d0e41a5a219e4295365f9c2e8572f013a65eaa1" + integrity sha512-TFD8aA+xoMI6nlolSjE2NkjZRq529Qzb4lCgmzjAx64Ar7cAF4PK5x3E0gDQaJm5zCWYmJAxh3ps73Z1hqmQqw== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/aws-logs" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/aws-s3-assets" "1.100.0" + "@aws-cdk/aws-ssm" "1.100.0" + "@aws-cdk/cloud-assembly-schema" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + "@aws-cdk/region-info" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-ecr-assets@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecr-assets/-/aws-ecr-assets-1.100.0.tgz#e411698310a1185e0222a36403be31f65d00d232" + integrity sha512-gT4RD/6z0+wRNrJaUoBxD3izpEjPeYPTrwj5dkhOZ15MyjlJGvdDj8qep9tRtgR1POAAorXFAxPodv37PKpXXw== + dependencies: + "@aws-cdk/assets" "1.100.0" + "@aws-cdk/aws-ecr" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" minimatch "^3.0.4" -"@aws-cdk/aws-ecr@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecr/-/aws-ecr-1.87.1.tgz#7ec21cc74e9564f03bd1c2e415a77c0b0bf890cc" - integrity sha512-xFCVBoyvBsLKLudOkY4V8T3LDW8OGm/AKElgVar7OtmD75jjd8Y3QKAas+L27ONauPJ78ECyxcd2nzXRBigX7g== - dependencies: - "@aws-cdk/aws-events" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-efs@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-efs/-/aws-efs-1.87.1.tgz#af3aa7d29ae35fea3337ea2ca462c22d752931c9" - integrity sha512-RQq3qnSMsLJrFzUECBgpCDgOxPPe/6XLFtNDL749UUqpbRDHqcJQqSs0a1ecWLxQUafJ1bd/DCiIJ7SvRXJ+2A== - dependencies: - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/aws-kms" "1.87.1" - "@aws-cdk/cloud-assembly-schema" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-elasticloadbalancing@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-elasticloadbalancing/-/aws-elasticloadbalancing-1.87.1.tgz#09b03f6d4326b633289faaa5f0581f583a584f8f" - integrity sha512-UtWmJk3S5ciiou8KWdXTrM+Q3NhpZwMDlFhecdqc36+EZk1c+qFjaUwl1TRqhoYykY3ksfiewiqYRQ3tasnqWA== - dependencies: - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-elasticloadbalancingv2@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-elasticloadbalancingv2/-/aws-elasticloadbalancingv2-1.87.1.tgz#edad05188e40b5954df6f958d2482a648ca11a2a" - integrity sha512-AaoChHUrb1/NtPN8oJXTkxvttvefewF3TNCAb7L5BZuCdfIesC9Pi+NVqjR3uDTezSZLccemDO8d01dDagTqBA== - dependencies: - "@aws-cdk/aws-certificatemanager" "1.87.1" - "@aws-cdk/aws-cloudwatch" "1.87.1" - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-lambda" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/cloud-assembly-schema" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - "@aws-cdk/region-info" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-events@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-events/-/aws-events-1.87.1.tgz#7016acdf7a3f9a42fd28604752765208bbe2c93a" - integrity sha512-P2IJtCwX0tM7iz6YApK7iAWboPrbUmlzB7fnEbmhZ183TzWXZdFFOCn/ONHl9VDcAvqr2BfaCC+yi1fKVx+Kjg== - dependencies: - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-iam@1.87.1", "@aws-cdk/aws-iam@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-iam/-/aws-iam-1.87.1.tgz#80d1d32c1e094cf964acddd7c2dbef27f9bb0657" - integrity sha512-wA0wdyQ3tgR/4db26gJF1STY5uzbo80OwK4RRnFAB0/vc26NlEg8cfuQUl8Ekuw+IzwFmsk8MP0t1yzBTZd+BA== - dependencies: - "@aws-cdk/core" "1.87.1" - "@aws-cdk/region-info" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-kms@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-kms/-/aws-kms-1.87.1.tgz#2702e9ac508e7d10bfac2e8e4f84701e65f3eb4c" - integrity sha512-mB7QRW43bCdITPqp2LOH/fd7bxZ6d1Xs3Mqkk8MifOqlWde6icTRVvvMSMdu46QYsh1fuD0eOJFj0OLHAhal8Q== - dependencies: - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-lambda@1.87.1", "@aws-cdk/aws-lambda@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-lambda/-/aws-lambda-1.87.1.tgz#4637c7e14a77f110026ae2f40a54d40fcfcfe38b" - integrity sha512-i7KK+t6o9WhdbP6Tmb+KKcCMMPLUnJ2xxFMLARzznSH926Pv+nZ7R8EaznI9sBK8xRifYUMtCGy5hoOMNAiJdQ== - dependencies: - "@aws-cdk/aws-applicationautoscaling" "1.87.1" - "@aws-cdk/aws-cloudwatch" "1.87.1" - "@aws-cdk/aws-codeguruprofiler" "1.87.1" - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/aws-ecr" "1.87.1" - "@aws-cdk/aws-ecr-assets" "1.87.1" - "@aws-cdk/aws-efs" "1.87.1" - "@aws-cdk/aws-events" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-kms" "1.87.1" - "@aws-cdk/aws-logs" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/aws-s3-assets" "1.87.1" - "@aws-cdk/aws-sqs" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-logs@1.87.1", "@aws-cdk/aws-logs@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-logs/-/aws-logs-1.87.1.tgz#6a89248a132e60fa1a84df80ce9778643fc40e48" - integrity sha512-UqJWpKrGULPoGDfERfk2VUj8QjVUhrNern2zsJ3NOlQWlAu9DgVNPubyfOwPbL37ScbeduPzhu9atJVB72qUKA== - dependencies: - "@aws-cdk/aws-cloudwatch" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-kms" "1.87.1" - "@aws-cdk/aws-s3-assets" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" +"@aws-cdk/aws-ecr@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ecr/-/aws-ecr-1.100.0.tgz#941388c31e02757bb7686cb55eade359ae2390b8" + integrity sha512-m2FNehy5as9SDetK5dzjy2YajCO8usn8DzM1+qy34hcZLadMfbuhyFCslxQE0aWPHq24ARAMiMsMqAvxU/Kz6w== + dependencies: + "@aws-cdk/aws-events" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-efs@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-efs/-/aws-efs-1.100.0.tgz#50f4b978e040a4e1bd6a75b81d412d3f311be031" + integrity sha512-UOWc2k+uS8mZ71uck8/r+kPAxz+r0athUZuFcpJWd6yGLBU1GczVm6mWYW0NEgP4IwS+l+MgTaA10URnKktC9Q== + dependencies: + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/cloud-assembly-schema" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-elasticloadbalancing@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-elasticloadbalancing/-/aws-elasticloadbalancing-1.100.0.tgz#e66487a0ed8f6745b42e67261c79b8a6d58b5199" + integrity sha512-YXpRbgBDVQf8XIlXU00sUjgFNWTMww1SQQYH2spXj94EvRxMginNFkQ2bel5a/F14zL2LNjRZhho8W8F4v4D0A== + dependencies: + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-elasticloadbalancingv2@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-elasticloadbalancingv2/-/aws-elasticloadbalancingv2-1.100.0.tgz#f4eef6c3af279aaa93c1cb263f8d59c14d7f9d35" + integrity sha512-0RDBEh7if0k7bSD0SQ8uaV0JkyyBEuZUxJx+NHNcp2B0T4r6frsh1CEngBAjSI5NUIRRq6M6jFxlKbSEGEUcXw== + dependencies: + "@aws-cdk/aws-certificatemanager" "1.100.0" + "@aws-cdk/aws-cloudwatch" "1.100.0" + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/cloud-assembly-schema" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + "@aws-cdk/region-info" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-events@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-events/-/aws-events-1.100.0.tgz#49ec4a3be24f6f32db3284b5b0c7862e61388c82" + integrity sha512-NjdtLlDz17u30Q7VQIDSxr4/TUaTv/Dhns0zvUGdvBhmpnw0TnNglhCMzcwZ+YhVCpFz0IgvyHGDbCnYe7BayA== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-globalaccelerator@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-globalaccelerator/-/aws-globalaccelerator-1.100.0.tgz#5b7d7450b8f24ade743b8b264cadb5f72e852377" + integrity sha512-JO2/zE0DXYNgUbD1JewXRET+P/2+UhQRW7GvJIxmpFxnMjtnA1Vdd7bMSmsJoih0gvuNKfuwU6wKXO4MK4xG9Q== + dependencies: + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/custom-resources" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-iam@1.100.0", "@aws-cdk/aws-iam@^1.75.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-iam/-/aws-iam-1.100.0.tgz#b0397504f0d55d36be967949b426956ca176081e" + integrity sha512-RM3E56QeCsUyvYhjlKBnpK8tgqdyjS7Z9dnf9u7bAZSBNAtDR4y3sIeMX201T5t11+biZt42pGHc4A3NbTra9A== + dependencies: + "@aws-cdk/core" "1.100.0" + "@aws-cdk/region-info" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-kinesis@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-kinesis/-/aws-kinesis-1.100.0.tgz#5e30b10d1ae3005951482970047140017f95178b" + integrity sha512-vo4wz+TqCIgg+nZa6Llz12infxN0WKuqGLjLRO0uX4uy9sgvct5tgvTL1M6F1sujI/Ahx3vtlJ9LTLCwNgSFkg== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/aws-logs" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-kms@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-kms/-/aws-kms-1.100.0.tgz#24c86466d3b58ba844eefc9bd1c1e1439ef685c6" + integrity sha512-uT0XR7/5qhKfdGRGtZw8Qq6KdPDxf439Uv3qnf7djK1mORSmpM1RKGOoWjmwEpFotq3+nvbxNAarCO9fURzasw== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-lambda-event-sources@^1.75.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-lambda-event-sources/-/aws-lambda-event-sources-1.100.0.tgz#9ed29f429a01e0e08a0444a9701855de8ee608f4" + integrity sha512-ym71s1fH25vQCkWgZGK39WIYNbpJ4hQpQ1xxSnEXUkrhMQd+jtCg7OlC/65YlRdZyPLpY0Uo3QkBIWXgmn3mQg== + dependencies: + "@aws-cdk/aws-apigateway" "1.100.0" + "@aws-cdk/aws-dynamodb" "1.100.0" + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-events" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kinesis" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/aws-s3-notifications" "1.100.0" + "@aws-cdk/aws-secretsmanager" "1.100.0" + "@aws-cdk/aws-sns" "1.100.0" + "@aws-cdk/aws-sns-subscriptions" "1.100.0" + "@aws-cdk/aws-sqs" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-lambda@1.100.0", "@aws-cdk/aws-lambda@^1.75.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-lambda/-/aws-lambda-1.100.0.tgz#d4a77a8fd5511e4e0136de34030a22510808fe98" + integrity sha512-v+CwVunBqL/kmhNtu4UrZtP45PnvhZNUEu72DGwyrTyd6vGn7CnOF9l8uO9G2YfI5oSvQGFkdAT6NBLQzfTZ4Q== + dependencies: + "@aws-cdk/aws-applicationautoscaling" "1.100.0" + "@aws-cdk/aws-cloudwatch" "1.100.0" + "@aws-cdk/aws-codeguruprofiler" "1.100.0" + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-ecr" "1.100.0" + "@aws-cdk/aws-ecr-assets" "1.100.0" + "@aws-cdk/aws-efs" "1.100.0" + "@aws-cdk/aws-events" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/aws-logs" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/aws-s3-assets" "1.100.0" + "@aws-cdk/aws-signer" "1.100.0" + "@aws-cdk/aws-sqs" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-logs@1.100.0", "@aws-cdk/aws-logs@^1.75.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-logs/-/aws-logs-1.100.0.tgz#585b601b0e4646460101fa2b45ae848dd74852ca" + integrity sha512-7uEM9REPv510cb3GnkSH6tgdha9MiTgFgm/IQY701+6rV3peLDEevgwWXOhnmVMx0DC7SrFZ0bij6V+pXXSVvA== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/aws-s3-assets" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" "@aws-cdk/aws-route53-targets@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-route53-targets/-/aws-route53-targets-1.87.1.tgz#de7cb3747891bfbc227b016d3e61d0e8f87f06a3" - integrity sha512-uYwUh6A3LPko7yIwo3ARzB4aJFQlLY5ppT7N3ZCFvV8fLF3YZZv1vOdRYyT52xMM0RaftAf3dt2gwxg7Cvr12Q== - dependencies: - "@aws-cdk/aws-apigateway" "1.87.1" - "@aws-cdk/aws-apigatewayv2" "1.87.1" - "@aws-cdk/aws-cloudfront" "1.87.1" - "@aws-cdk/aws-cognito" "1.87.1" - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/aws-elasticloadbalancing" "1.87.1" - "@aws-cdk/aws-elasticloadbalancingv2" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-route53" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/region-info" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-route53@1.87.1", "@aws-cdk/aws-route53@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-route53/-/aws-route53-1.87.1.tgz#d0e22f619878119ebe9384181f01e97cf413d231" - integrity sha512-dYyYbExXfZ4LsGMRKKaQMBBnEfgiviDISMq9nH8q5XzsGSthQJdy9k9lehePPUlyo99B1wWSXvMjL66kouuulA== - dependencies: - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/aws-logs" "1.87.1" - "@aws-cdk/cloud-assembly-schema" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/custom-resources" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-s3-assets@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3-assets/-/aws-s3-assets-1.87.1.tgz#a2f24499ab7ab93e78b9dc18dde3f2df396d17e2" - integrity sha512-t8EwLiLwbfEATG0jucX9LjCo0D+QbPmswLBMaVEeNb3BXdqv+WOhprl/7cR8IZlQZE/saMIFl0zUXBqzqOJUJA== - dependencies: - "@aws-cdk/assets" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-kms" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - constructs "^3.2.0" + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-route53-targets/-/aws-route53-targets-1.100.0.tgz#b2b489953dd0d2baae986c6fb2cf4cb48f5843af" + integrity sha512-NAC3fND9qi0uLmPXdJM7WdTQ+BP983YbId64oAHPDkylpDdiD70fQ6h5USfvMc+TLDueINwvWoIO9+MaFMw2Og== + dependencies: + "@aws-cdk/aws-apigateway" "1.100.0" + "@aws-cdk/aws-cloudfront" "1.100.0" + "@aws-cdk/aws-cognito" "1.100.0" + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-elasticloadbalancing" "1.100.0" + "@aws-cdk/aws-elasticloadbalancingv2" "1.100.0" + "@aws-cdk/aws-globalaccelerator" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-route53" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/region-info" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-route53@1.100.0", "@aws-cdk/aws-route53@^1.75.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-route53/-/aws-route53-1.100.0.tgz#a1817fd39b89a4e66bb1eb10419cc23f43a092cc" + integrity sha512-Qo4HrYVWN3+6DYnv+hHnKzpD6w2xpWC2O++my0FnRbAXbWeUn/OE3G0qaurQm8IR/hp8uKvcobvSQ5lizZUHyA== + dependencies: + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-logs" "1.100.0" + "@aws-cdk/cloud-assembly-schema" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/custom-resources" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-s3-assets@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3-assets/-/aws-s3-assets-1.100.0.tgz#4b5ff682cae15a5c9dbe874ce97e55f9c787013f" + integrity sha512-rupwiCuwTQUamJi/2M+pZlu2qJv9K68bp1LnxlvUYAKjlDmAYsf5F7HYnU92rIhE5oeHCIdabgWdz+Gc+hjfUg== + dependencies: + "@aws-cdk/assets" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" "@aws-cdk/aws-s3-deployment@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3-deployment/-/aws-s3-deployment-1.87.1.tgz#d0bf09d41dba8545e69bdd6e5c6533d2a3bc7c03" - integrity sha512-YiUuZoEhBxy/fwtD76KpAFj40O1IMUfnx5c4EBQvF99BqZs0vL6UzOwiUROO2RFuvJs6ulKSSb1xNJfn2k1aNA== - dependencies: - "@aws-cdk/aws-cloudfront" "1.87.1" - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-lambda" "1.87.1" - "@aws-cdk/aws-s3" "1.87.1" - "@aws-cdk/aws-s3-assets" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/lambda-layer-awscli" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-s3@1.87.1", "@aws-cdk/aws-s3@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3/-/aws-s3-1.87.1.tgz#f3cc4e71be1772001a1e27f81bc4e8cbf309ef11" - integrity sha512-ooNf3Afw5upEpickbqu7vflhXnY0CMdiTwuD3ko7u5KghU1TXzmtQAtuZZ/7GlDJR3HrvXULPte3WMKlJoGJDg== - dependencies: - "@aws-cdk/aws-events" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-kms" "1.87.1" - "@aws-cdk/core" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-sns@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sns/-/aws-sns-1.87.1.tgz#f0b25b5fb02b86568f7ecd3225e9357ed67d2cc5" - integrity sha512-4IXantX2x63ZryU7x5uvtdUmn5qPMGKm3QKxXRkYZ12aipwLE22bwhU7XFdgAfLiSCcSsXNjV4PgNYI+oXSWzw== - dependencies: - "@aws-cdk/aws-cloudwatch" "1.87.1" - "@aws-cdk/aws-events" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-kms" "1.87.1" - "@aws-cdk/aws-sqs" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-sqs@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sqs/-/aws-sqs-1.87.1.tgz#722e268e501a47b78cfb448661f81389839d7b00" - integrity sha512-PCoToe/Q5ghzkfUm39RsifdcGD8cGGaMx3wptMIxIGeKqxeotGH6uihXFHHm6SPU7U+T6UCPL3SM2IrEFe6aBw== - dependencies: - "@aws-cdk/aws-cloudwatch" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-kms" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/aws-ssm@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ssm/-/aws-ssm-1.87.1.tgz#ea962154334c9112bf8768165d6844b210f459ca" - integrity sha512-uQEBX6/yYVxKB8nDYe3bTnUDg6ACqZdFnn4gZFNL8hPtZnIRsOFkJefiV2l1DxXxHv3hupSaZZLo92H5xWoNiQ== - dependencies: - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-kms" "1.87.1" - "@aws-cdk/cloud-assembly-schema" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/cfnspec@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/cfnspec/-/cfnspec-1.87.1.tgz#86b26be37e00dde11187ae4ce7f8131f3906e018" - integrity sha512-7bD49ah8+2TT1/Jl/DF5YcSqXMn6qL6JMs+edmC2nx6drkXdmtKIT4K4uk7m81bljSreIgyuk1OoXASXoJ9VWw== + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3-deployment/-/aws-s3-deployment-1.100.0.tgz#f6848a2e5aeaabdef196cf207fe9735e3f2cf791" + integrity sha512-Gf6i1ETV+TRqzPu5k3T13yveOVniFCDjFdBayDQW5Z2bR5/c42qozMkxiAqxU2WRJg2Fmv5MACCAPJ0XBs3BhQ== + dependencies: + "@aws-cdk/aws-cloudfront" "1.100.0" + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/aws-s3-assets" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/lambda-layer-awscli" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-s3-notifications@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3-notifications/-/aws-s3-notifications-1.100.0.tgz#626d3e7bc6a04497d3e2d7826d2d1e1b05392130" + integrity sha512-+URSZvMosZNKbVFh0XgFobd5jZzYA5c3CAoS0BGs1Dyl1HZ0q3tNa7Bhf0sSw9eO3Nl2AdpYFAkyeefL1nxH8w== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-s3" "1.100.0" + "@aws-cdk/aws-sns" "1.100.0" + "@aws-cdk/aws-sqs" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-s3@1.100.0", "@aws-cdk/aws-s3@^1.75.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-s3/-/aws-s3-1.100.0.tgz#072fa0a3e6e3a8dd5cd4e087dd9ec128bd94c8ae" + integrity sha512-gbdRpgnl2mw2Gl3LVmJaTVdQaCqbXYDN9P0DCAl4zXACOdNsHHP8jNYcJfh8wDDWDpJTLm/V2sKHOY01e1xH+w== + dependencies: + "@aws-cdk/aws-events" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-sam@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sam/-/aws-sam-1.100.0.tgz#554eff4d0c47816014a7a2ab47d7f4e2414f5bdb" + integrity sha512-gkuCwfOb+o53IDSuQDvIlJJkDcIN/F/MC5hNuEZCisfqmIsytrHvWyIwta6QkzlKkZw4sQovNZyotcafcRwKhg== + dependencies: + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-secretsmanager@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-secretsmanager/-/aws-secretsmanager-1.100.0.tgz#8e5467076d5347b0da79591217f432bf9e9eccfe" + integrity sha512-9HK8oD/JnvfewhKAl8ZJ3vVlNdU+q8gKhc3F1OPr5jgmzKIRjPhwfnNSOyaiEDm/wEBKWpFfKkikR/x8hwmeaQ== + dependencies: + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-sam" "1.100.0" + "@aws-cdk/core" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-signer@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-signer/-/aws-signer-1.100.0.tgz#0d3d508272f74155f45c58b7641a6543d1f44ace" + integrity sha512-a4BnLpt+tju3D4jTs4ib9+x2bzSsOpoFUn51ps8ZIYE/sKJih8uc66tFlnM19fVjSK2+9Tqz50CAVEYtGXJOug== + dependencies: + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-sns-subscriptions@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sns-subscriptions/-/aws-sns-subscriptions-1.100.0.tgz#3798d91d0f668dcfe805e90a97a2dba8ed6cec16" + integrity sha512-P27imwoF4QyEbfxIVtBrZB5D/YReu7Ao15J/y6Br+NVPto/YgLeqMY7PhZfLfvmB6EhFCuMa7zvBQ6wXxoe6cA== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-sns" "1.100.0" + "@aws-cdk/aws-sqs" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-sns@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sns/-/aws-sns-1.100.0.tgz#7360c7c309f7a15ccf4c57158a5e8aba44ee5c03" + integrity sha512-0kYI3sK2ceqbT3Bjb8OAaiUAxwZf3S76W94j5H9uWxrbV6PQHyhj4zqvQt1Q3CubJw8BjYeYcN+/okQX7v1h2g== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.100.0" + "@aws-cdk/aws-events" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/aws-sqs" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-sqs@1.100.0", "@aws-cdk/aws-sqs@^1.75.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-sqs/-/aws-sqs-1.100.0.tgz#ea39480298f247c1b71d27ccdf88b9f29fff4ec4" + integrity sha512-hhWUTmXRQBBxM85l9ufmim18XJofIF4bNPRLCOPMgi6SCDof8rMDoK0UwC2R7jjyv6vDTcV/cZ8AZ4L7029r4g== + dependencies: + "@aws-cdk/aws-cloudwatch" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/aws-ssm@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-ssm/-/aws-ssm-1.100.0.tgz#9782ecc3b75dd7730dfb95dcf7c5331b8aaa3d9e" + integrity sha512-DMnf2kzGl93qa2OfXCzNWmoUT14Sw/AW1SCb6H0IflP90Le2JffwE/5lf80SHMz6M2BMyaWS7wIQKf02VEX4pQ== + dependencies: + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-kms" "1.100.0" + "@aws-cdk/cloud-assembly-schema" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/cfnspec@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cfnspec/-/cfnspec-1.100.0.tgz#67b3f27fe2eebaad1c610da641cdf5c5d74bc260" + integrity sha512-g1AstaSSXy2SK11TyPOy3ioDqtitW+cNt/g9dOZERkKB7y7WQDErYYwatfBlVYbvVXAaKHA2tmh+evztY5iAqw== dependencies: md5 "^2.3.0" -"@aws-cdk/cloud-assembly-schema@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.87.1.tgz#9936941c0659781e42ca6fb9903e206db776dcea" - integrity sha512-v9OIifMbExngoJnKxQw7Fbnl3ykUPbTjoIkP52RrCP5QoD3fSdbZ6jQKTXIMzmgRf3RIolXWIzEZD8hKeE4GKg== +"@aws-cdk/cloud-assembly-schema@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.100.0.tgz#ecb101995c8528bba677247068c031fa2da9406b" + integrity sha512-/khO7i5nHi08Es+Pxu9iIKSbAPaoF3tyWoNoRNHUxT8d/dHGqSwe6xWV5TccK2M4nHqDiDR1jSl2g/nXoKBJWQ== dependencies: jsonschema "^1.4.0" - semver "^7.3.2" + semver "^7.3.5" -"@aws-cdk/cloudformation-diff@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/cloudformation-diff/-/cloudformation-diff-1.87.1.tgz#7078048e06672b56c97150d47989e0ce3dc485bc" - integrity sha512-qWuitGav73o4HX3ZaiE3jwG+x8FOJxZsYIZc7y0mXurDQQ/8TY/c10eemTyIGXRAfSNRcUJIfIkLrt051fV1zQ== +"@aws-cdk/cloudformation-diff@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cloudformation-diff/-/cloudformation-diff-1.100.0.tgz#93df55cd599339e908e982f1423511c2d9a60800" + integrity sha512-AetWwfHItrNU79rZITZaI8N8rkvQ4MjG96Mr6QddXZmtatnBB9VA1GYHk6cPW5quHiVzem8sLw3K5UrnkQjk+A== dependencies: - "@aws-cdk/cfnspec" "1.87.1" + "@aws-cdk/cfnspec" "1.100.0" colors "^1.4.0" diff "^5.0.0" fast-deep-equal "^3.1.3" - string-width "^4.2.0" - table "^6.0.7" + string-width "^4.2.2" + table "^6.1.0" -"@aws-cdk/core@1.87.1", "@aws-cdk/core@^1.75.0": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/core/-/core-1.87.1.tgz#8b686b014edcfc117e06e2c9e03cefe3171c19ca" - integrity sha512-zfXl5AjRGxfXU23HfTxuxW+NNm9cLMy/NguLF6/prRGv9TBWHH5GTwNafMLbT3FyFjedL7IWVl9Af1XlMli4AA== +"@aws-cdk/core@1.100.0", "@aws-cdk/core@^1.75.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/core/-/core-1.100.0.tgz#f8de9d03b0c85f4b077e48e023fb467e970f51b2" + integrity sha512-QnjFTqi5WX5k6qIakM0rVpNPYFIrGNIuJddph0wF1P0bb3a31YKLYO7lAHdPQXH3kIlO7+TjpRaalGhqT/8wJA== dependencies: - "@aws-cdk/cloud-assembly-schema" "1.87.1" - "@aws-cdk/cx-api" "1.87.1" - "@aws-cdk/region-info" "1.87.1" + "@aws-cdk/cloud-assembly-schema" "1.100.0" + "@aws-cdk/cx-api" "1.100.0" + "@aws-cdk/region-info" "1.100.0" "@balena/dockerignore" "^1.0.2" - constructs "^3.2.0" + constructs "^3.3.69" fs-extra "^9.1.0" ignore "^5.1.8" minimatch "^3.0.4" -"@aws-cdk/custom-resources@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/custom-resources/-/custom-resources-1.87.1.tgz#8520cf75d766b7dc2c249b3dd173414833d315b2" - integrity sha512-D0Esq65dCzYrlaCt459ZkPalK9xta1C5HZ6OJt72x2GOMo4xfPrSTeAKp+XT5hX8T4VV40+uIL0maHRBEN+6Nw== - dependencies: - "@aws-cdk/aws-cloudformation" "1.87.1" - "@aws-cdk/aws-ec2" "1.87.1" - "@aws-cdk/aws-iam" "1.87.1" - "@aws-cdk/aws-lambda" "1.87.1" - "@aws-cdk/aws-logs" "1.87.1" - "@aws-cdk/aws-sns" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/cx-api@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/cx-api/-/cx-api-1.87.1.tgz#27be6f760332849149941af072f43809bd941b95" - integrity sha512-yZeo1rw/DUaw0EKwTq4VptWSNHZHgN+2fTFcbcSWdkNYC+yfXQ1FMAMkJKXDR1ZZsrB8M4f45HsM7LEoTPfZjQ== - dependencies: - "@aws-cdk/cloud-assembly-schema" "1.87.1" - semver "^7.3.2" - -"@aws-cdk/lambda-layer-awscli@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/lambda-layer-awscli/-/lambda-layer-awscli-1.87.1.tgz#a05c79874af919162e74fd43381f28c48fa3cda7" - integrity sha512-johSMuUYlFIxRumpY0KFTcu3xb4r5R+0oIqPQxD9lahnqPlrkji50SY9Y7A7e3/4Lr0qyRfKZB3Zyw8cQH6WJA== - dependencies: - "@aws-cdk/aws-lambda" "1.87.1" - "@aws-cdk/core" "1.87.1" - constructs "^3.2.0" - -"@aws-cdk/region-info@1.87.1": - version "1.87.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/region-info/-/region-info-1.87.1.tgz#7a290e809c8cefc0d2573de70518603725ca6dd7" - integrity sha512-ZqDWZTtGNOx8SWtWsXM/CIMEzkkz2e3sC/UjIm8G1lS39rk/16IuNZR+YKilSdovzSQKiVBWxHXCuNFD3jikdA== +"@aws-cdk/custom-resources@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/custom-resources/-/custom-resources-1.100.0.tgz#9e7b8f376d003dde1c43393b1cbaa81edd0a5319" + integrity sha512-8rXip/IG3USkyejjkvbD0++j76PEmFM/wfbdEDLoQT3IWmH7dflXVekZP7rHhyFT4sMXehmpey4YJW9gDdK/5w== + dependencies: + "@aws-cdk/aws-cloudformation" "1.100.0" + "@aws-cdk/aws-ec2" "1.100.0" + "@aws-cdk/aws-iam" "1.100.0" + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/aws-logs" "1.100.0" + "@aws-cdk/aws-sns" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/cx-api@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cx-api/-/cx-api-1.100.0.tgz#08c996168afce8c5ebbb2a6c08fb6661acb06777" + integrity sha512-ZyWnRwgjSk3/djFztm//KLkDC5TbxWxNTbiu2xjXNP7fW8AXn7ONQWKMEbMOTE7qEZZeVUDEDPLAIUzYEfusLA== + dependencies: + "@aws-cdk/cloud-assembly-schema" "1.100.0" + semver "^7.3.5" + +"@aws-cdk/lambda-layer-awscli@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/lambda-layer-awscli/-/lambda-layer-awscli-1.100.0.tgz#dd83582bd4651b90712147a1456d00ddc7e86c9a" + integrity sha512-UfcqC8gYMdIo2Llx3WYeRxXCPjs8/Gxu43dvLW09zVOopJu/CXxF8nN0lmKa49XLE1uTPYxldO2frEscTW4vkA== + dependencies: + "@aws-cdk/aws-lambda" "1.100.0" + "@aws-cdk/core" "1.100.0" + constructs "^3.3.69" + +"@aws-cdk/region-info@1.100.0": + version "1.100.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/region-info/-/region-info-1.100.0.tgz#267714f8d2d0df46519ba4c41a7696f2ed5ec9fe" + integrity sha512-pmlnSSbnGH2YPoSbAPW45Rqv1LDLVs3tyub4HXLeCdFSctYhDA5F7pZ6zVoGH4FTjrSebou1Xqkn/lYfbDEQJw== "@aws-crypto/crc32@^1.0.0": version "1.0.0" @@ -995,9 +1097,9 @@ integrity sha512-pKKR2SXG8IHbWcmVgFwLUrHqqqFOEuf5JiQmP7dEBjUXqavzDnqFUY7g9PGuM8928IQqL7IXrRsK7R+VbLgodQ== "@aws-sdk/types@^3.1.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.4.0.tgz#614327d882e7de8db0338de7fc1a139908aead59" - integrity sha512-IXXnTujY2NtC/5vCz7+6Ks7uG+0FS+G4jggta6t4Yj/HWZleQe81wvix6NV1PGKiMMHYVu/yYgVGUs/2sq6ztw== + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.13.1.tgz#f69efe2053b0fa5dfd4046cb80dc176ad645c016" + integrity sha512-4eHboRz3I8f0C85Ta1dJ1v1Y9T1zH9xpC4/DufSIfQcD1Imc2U2LM22Qgbz8/PoP4kyhp2nJpQpW0APD91ILfw== "@aws-sdk/url-parser-browser@1.0.0-rc.3": version "1.0.0-rc.3" @@ -1070,11 +1172,11 @@ tslib "^1.8.0" "@aws-sdk/util-locate-window@^3.0.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.4.0.tgz#13ac23f00a03cef65bd02eadea45de262e85c04b" - integrity sha512-S2ngjd5ZaHEJYAJpbLpbszyJqweJ1NXRPxNIKGIZ+NWkKpKSIz35dRvh3cLMepFhBIxGwelhWnIPWuex3lsG6A== + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.13.1.tgz#45c6df057be89c3f42ffd2e43c87a7837a3fa1ac" + integrity sha512-u1neaf5yO5FdnYF+UHsyDpHzHgMfX87nVDMyOyVvViIIhwDb2+bzzhUbex1rPtTEUfZUtgABV03UZrifGrB15g== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" "@aws-sdk/util-uri-escape@1.0.0-rc.3": version "1.0.0-rc.3" @@ -1107,11 +1209,11 @@ tslib "^1.8.0" "@aws-sdk/util-utf8-browser@^3.0.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.4.0.tgz#e34e66b186f9df16de4d0fa6ad98c7e31de47b32" - integrity sha512-oQMCPYdn8+NA96c7PT6ZzvQ/TDpi2Q7wZ5cb8x14WFeGd7AnSR7o4KbSgdi2DE2cYBJbVz+fsHvscTaf6caOyw== + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.13.1.tgz#eae1f3d8063566d813c0df4adf5f487bd128b56f" + integrity sha512-+1FmtFOvDOYfoJnC6DEgjpcPKUERZA8VZ7JenY6SsEqVneWzHf4YVE2+KZM0DT9leLzgZBW/DKJWjeKxykaBEg== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" "@aws-sdk/util-utf8-node@1.0.0-rc.3": version "1.0.0-rc.3" @@ -1142,16 +1244,16 @@ "@hapi/hoek" "9.x.x" "@hapi/boom@9.x.x": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.1.tgz#89e6f0e01637c2a4228da0d113e8157c93677b04" - integrity sha512-VNR8eDbBrOxBgbkddRYIe7+8DZ+vSbV6qlmaN2x7eWjsUjy2VmQgChkOKcVZIeupEZYj+I0dqNg430OhwzagjA== + version "9.1.2" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.2.tgz#48bd41d67437164a2d636e3b5bc954f8c8dc5e38" + integrity sha512-uJEJtiNHzKw80JpngDGBCGAmWjBtzxDCz17A9NO2zCi8LLBlb5Frpq4pXwyN+2JQMod4pKz5BALwyneCgDg89Q== dependencies: "@hapi/hoek" "9.x.x" "@hapi/hoek@9.x.x": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa" - integrity sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw== + version "9.2.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131" + integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug== "@nodelib/fs.scandir@2.1.4": version "2.1.4" @@ -1179,23 +1281,23 @@ uid "" "@types/fs-extra@^9.0.1": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.6.tgz#488e56b77299899a608b8269719c1d133027a6ab" - integrity sha512-ecNRHw4clCkowNOBJH1e77nvbPxHYnWIXMv1IAoG/9+MYGkgoyr3Ppxr7XYFNL41V422EDhyV4/4SSK8L2mlig== + version "9.0.11" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.11.tgz#8cc99e103499eab9f347dbc6ca4e99fb8d2c2b87" + integrity sha512-mZsifGG4QeQ7hlkhO56u7zt/ycBgGxSVsFI/6lGTU34VtwkiqrrSDgw0+ygs8kFGWcXnFQWMrzF2h7TtDFNixA== dependencies: "@types/node" "*" "@types/node@*": - version "14.14.22" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" - integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== + version "15.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.1.tgz#ef34dea0881028d11398be5bf4e856743e3dc35a" + integrity sha512-TMkXt0Ck1y0KKsGr9gJtWGjttxlZnnvDtphxUOSd0bfaR6Q1jle+sPvrzNR1urqYTWMinoKvjKfXUGsumaO1PA== "@vercel/nft@^0.9.3": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.9.5.tgz#bf795944a4764ca49ca1a642f17ab32f9ac701d2" - integrity sha512-EhSFOYwqvH3KZyK1pKyFj/DRoCZ2KFu8sRaVaJ+KGlU4kroAWm8okeA2EtIY11+/fMX3YQkNno7kf5H4FZrDvg== + version "0.9.6" + resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.9.6.tgz#c25ac94f3bff7c2e44d257fb4f40890b3879bd25" + integrity sha512-+6GfIjkwp53NfFC3SkBdlNqjVUkPH7OG/+bFmBvPhDXXr4lR3vWSIWPaJzfCsm6yUDj9oLf1I6fFp5OSJIwkYA== dependencies: - acorn "^7.1.1" + acorn "^7.4.1" acorn-class-fields "^0.3.2" acorn-export-ns-from "^0.1.0" acorn-import-meta "^1.1.0" @@ -1251,15 +1353,15 @@ acorn-static-class-features@^0.2.1: dependencies: acorn-private-class-elements "^0.2.7" -acorn@^7.1.1: +acorn@^7.4.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -ajv@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" - integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== +ajv@^8.0.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.2.0.tgz#c89d3380a784ce81b2085f48811c4c101df4c602" + integrity sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -1312,9 +1414,9 @@ at-least-node@^1.0.0: integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== bindings@^1.4.0: version "1.5.0" @@ -1385,10 +1487,10 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -constructs@^3.2.0: - version "3.2.117" - resolved "https://registry.yarnpkg.com/constructs/-/constructs-3.2.117.tgz#d6f29d822f99530f4cb5c79089dc2e1bd0d0e9d3" - integrity sha512-zYDlALAHWdopUzMGr3aZPlPR8f+OEYr1+QZCkLqi/eyUjbOmlPQ6xwrlDoOaJNgpMf727T9Yo+hokCjIRsZweQ== +constructs@^3.3.69: + version "3.3.75" + resolved "https://registry.yarnpkg.com/constructs/-/constructs-3.3.75.tgz#222516951fd6b8380cb6fea3c171eeca0bf980a4" + integrity sha512-q10foASSSfDWmS99OQLfnWDXCzqLvoORISAVWPFg0AmIGlBv2ZdDOtXxLqrJARPxVlOldmW2JzWzdRI+4+0/ZA== cookie@^0.4.1: version "0.4.1" @@ -1540,14 +1642,14 @@ fast-glob@^3.2.5: picomatch "^2.2.1" fast-xml-parser@^3.16.0: - version "3.17.6" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.17.6.tgz#4f5df8cf927c3e59a10362abcfb7335c34bc5c5f" - integrity sha512-40WHI/5d2MOzf1sD2bSaTXlPn1lueJLAX6j1xH5dSAr6tNeut8B9ktEL6sjAK9yVON4uNj9//axOdBJUuruCzw== + version "3.19.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" + integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== fastq@^1.6.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e" - integrity sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA== + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== dependencies: reusify "^1.0.4" @@ -1612,14 +1714,14 @@ get-stream@^5.0.0: pump "^3.0.0" get-stream@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" - integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== glob-parent@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" @@ -1636,9 +1738,9 @@ glob@^7.1.3: path-is-absolute "^1.0.0" graceful-fs@^4.1.15, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== has-unicode@^2.0.0: version "2.0.1" @@ -1816,6 +1918,16 @@ klaw@^3.0.0: dependencies: graceful-fs "^4.1.9" +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -1851,10 +1963,10 @@ lodash.once@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash@^4.17.20: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= lru-cache@^6.0.0: version "6.0.0" @@ -1883,12 +1995,12 @@ merge2@^1.3.0: integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: braces "^3.0.1" - picomatch "^2.0.5" + picomatch "^2.2.3" mime@1.6.0: version "1.6.0" @@ -1993,9 +2105,9 @@ nopt@^4.0.1: osenv "^0.1.4" npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" @@ -2094,10 +2206,10 @@ path-to-regexp@^6.1.0: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38" integrity sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg== -picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.2.1, picomatch@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" + integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== process-nextick-args@~2.0.0: version "2.0.1" @@ -2127,6 +2239,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -2143,9 +2260,9 @@ rc@^1.2.7: strip-json-comments "~2.0.1" react-native-get-random-values@^1.4.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.5.1.tgz#f335a37c09a4892deaf40187e73a888e14e82d60" - integrity sha512-L76sTcz3jdFmc7Gn41SHOxCioYY3m4rtuWEUI6X8IeWVmkflHXrSyAObOW4eNTM5qytH+45pgMCVKJzfB/Ik4A== + version "1.7.0" + resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.7.0.tgz#86d9d1960828b606392dba4540bf760605448530" + integrity sha512-zDhmpWUekGRFb9I+MQkxllHcqXN9HBSsgPwBQfrZ1KZYpzDspWLZ6/yLMMZrtq4pVqNR7C7N96L3SuLpXv1nhQ== dependencies: fast-base64-decode "^1.0.0" @@ -2192,9 +2309,11 @@ rollup-pluginutils@^2.8.2: estree-walker "^0.6.1" run-parallel@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" - integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" safe-buffer@^5.0.1, safe-buffer@^5.1.2: version "5.2.1" @@ -2221,10 +2340,10 @@ semver@^5.3.0, semver@^5.6.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^7.3.2: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== +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" @@ -2305,10 +2424,10 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== +string-width@^4.2.0, string-width@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" @@ -2352,15 +2471,18 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -table@^6.0.7: - version "6.0.7" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" - integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== +table@^6.1.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.6.0.tgz#905654b79df98d9e9a973de1dd58682532c40e8e" + integrity sha512-iZMtp5tUvcnAdtHpZTWLPF0M7AgiQsURR2DwmxnJwSy8I3+cY+ozzVvYha3BOLG2TB+L0CqjIz+91htuj6yCXg== dependencies: - ajv "^7.0.2" - lodash "^4.17.20" + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.flatten "^4.4.0" + lodash.truncate "^4.4.2" slice-ansi "^4.0.0" string-width "^4.2.0" + strip-ansi "^6.0.0" tar@^4: version "4.4.13" @@ -2393,14 +2515,14 @@ tslib@^1.11.1, tslib@^1.8.0: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== typescript@^3.9.6: - version "3.9.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + version "3.9.9" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" + integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== universalify@^2.0.0: version "2.0.0" From 35cf5ff349d336a6298913b4e38639e59bacfc1e Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 28 Apr 2021 21:00:33 +0100 Subject: [PATCH 02/48] fix: dont ts build the regeneration handler --- packages/libs/lambda-at-edge/tsconfig.build.json | 3 ++- packages/libs/lambda-at-edge/tsconfig.bundle.json | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/libs/lambda-at-edge/tsconfig.build.json b/packages/libs/lambda-at-edge/tsconfig.build.json index 1fd14c744c..253dd4a1c1 100644 --- a/packages/libs/lambda-at-edge/tsconfig.build.json +++ b/packages/libs/lambda-at-edge/tsconfig.build.json @@ -9,6 +9,7 @@ "node_modules", "./src/api-handler.ts", "./src/default-handler.ts", - "./src/image-handler.ts" + "./src/image-handler.ts", + "./src/regeneration-handler.ts", ] } diff --git a/packages/libs/lambda-at-edge/tsconfig.bundle.json b/packages/libs/lambda-at-edge/tsconfig.bundle.json index 31a682a900..c511fa8091 100644 --- a/packages/libs/lambda-at-edge/tsconfig.bundle.json +++ b/packages/libs/lambda-at-edge/tsconfig.bundle.json @@ -11,5 +11,10 @@ "allowJs": true, "resolveJsonModule": true }, - "include": ["./src/default-handler.ts", "./src/api-handler.ts", "./src/image-handler.ts"] -} \ No newline at end of file + "include": [ + "./src/default-handler.ts", + "./src/api-handler.ts", + "./src/image-handler.ts", + "./src/regeneration-handler.ts", + ] +} From 65ba6373c80e186cedf157d3e3c8e7ba80500dda Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 28 Apr 2021 22:54:27 +0100 Subject: [PATCH 03/48] fix: dynamic paths should regenerate --- packages/libs/lambda-at-edge/src/build.ts | 14 +------------- .../libs/lambda-at-edge/src/default-handler.ts | 1 - .../lambda-at-edge/src/regeneration-handler.ts | 10 ++++++---- .../nextjs-cdk-construct/src/index.ts | 1 + 4 files changed, 8 insertions(+), 18 deletions(-) diff --git a/packages/libs/lambda-at-edge/src/build.ts b/packages/libs/lambda-at-edge/src/build.ts index d5bac6d950..1e03ddf039 100644 --- a/packages/libs/lambda-at-edge/src/build.ts +++ b/packages/libs/lambda-at-edge/src/build.ts @@ -426,11 +426,6 @@ class Builder { async buildRegenerationHandler( buildManifest: OriginRequestDefaultHandlerManifest ): Promise { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const prerenderManifest = require(join( - this.dotNextDir, - "prerender-manifest.json" - )); await Promise.all([ this.copyTraces(buildManifest), this.processAndCopyHandler( @@ -442,22 +437,15 @@ class Builder { join(this.serverlessDir, "pages"), join(this.outputDir, REGENERATION_LAMBDA_CODE_DIR, "pages"), { - recursive: true, filter: (file: string) => { const isNotPrerenderedHTMLPage = path.extname(file) !== ".html"; const isNotStaticPropsJSONFile = path.extname(file) !== ".json"; const isNotApiPage = pathToPosix(file).indexOf("pages/api") === -1; - const isDirectory = fse.statSync(file).isDirectory(); - const isPrerenderedJSFile = this.isPrerenderedJSFile( - prerenderManifest, - path.relative(join(this.serverlessDir, "pages"), file) - ); return ( - isNotApiPage && isNotPrerenderedHTMLPage && isNotStaticPropsJSONFile && - (isPrerenderedJSFile || isDirectory) + isNotApiPage ); } } diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index 325ccf2d23..0ab828b6cd 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -623,7 +623,6 @@ const handleOriginResponse = async ({ : null; if (typeof initialRevalidateSeconds === "number" && lastModifiedAt) { const createdAgo = - // LastModified should always be defined (Date.now() - (lastModifiedAt.getTime() || Date.now())) / 1000; const timeToRevalidate = Math.floor( diff --git a/packages/libs/lambda-at-edge/src/regeneration-handler.ts b/packages/libs/lambda-at-edge/src/regeneration-handler.ts index e9d15ce9a7..dc2a85f37b 100644 --- a/packages/libs/lambda-at-edge/src/regeneration-handler.ts +++ b/packages/libs/lambda-at-edge/src/regeneration-handler.ts @@ -41,15 +41,17 @@ export const handler: AWSLambda.SQSHandler = async (event) => { ); const baseKey = cloudFrontEventRequest.uri - .replace(/^\//, "") .replace(/\.(json|html)$/, "") .replace(/^_next\/data\/[^\/]*\//, ""); + const ssgRoute = manifest.pages.ssg.nonDynamic[baseKey]; + const srcPath = ssgRoute.srcRoute || baseKey; + // eslint-disable-next-line @typescript-eslint/no-var-requires - const page = require(`./pages/${baseKey}`); + const page = require(`./pages${srcPath}`); - const jsonKey = `_next/data/${manifest.buildId}/${baseKey}.json`; - const htmlKey = `static-pages/${manifest.buildId}/${baseKey}.html`; + const jsonKey = `_next/data/${manifest.buildId}${baseKey}.json`; + const htmlKey = `static-pages/${manifest.buildId}${baseKey}.html`; const { renderOpts, html } = await page.renderReqToHTML( req, diff --git a/packages/serverless-components/nextjs-cdk-construct/src/index.ts b/packages/serverless-components/nextjs-cdk-construct/src/index.ts index 0521b5c6a4..183eccde1f 100644 --- a/packages/serverless-components/nextjs-cdk-construct/src/index.ts +++ b/packages/serverless-components/nextjs-cdk-construct/src/index.ts @@ -99,6 +99,7 @@ export class NextJSLambdaEdge extends cdk.Construct { { handler: "index.handler", runtime: lambda.Runtime.NODEJS_14_X, + timeout: Duration.minutes(1), code: lambda.Code.fromAsset( path.join(this.props.serverlessBuildOutDir, "regeneration-lambda") ) From 0ee2f553011ec376353d4865ed570d120a1dd702 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 29 Apr 2021 10:11:36 +0100 Subject: [PATCH 04/48] add Expires header to the regenerated S3 objects --- packages/libs/lambda-at-edge/src/default-handler.ts | 3 +++ packages/libs/lambda-at-edge/src/regeneration-handler.ts | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index 0ab828b6cd..caa1551756 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -622,6 +622,9 @@ const handleOriginResponse = async ({ ? new Date(lastModifiedHeaderString) : null; if (typeof initialRevalidateSeconds === "number" && lastModifiedAt) { + /** + * TODO: Refactor to use the returned `Expired` header. + */ const createdAgo = (Date.now() - (lastModifiedAt.getTime() || Date.now())) / 1000; diff --git a/packages/libs/lambda-at-edge/src/regeneration-handler.ts b/packages/libs/lambda-at-edge/src/regeneration-handler.ts index dc2a85f37b..078865267a 100644 --- a/packages/libs/lambda-at-edge/src/regeneration-handler.ts +++ b/packages/libs/lambda-at-edge/src/regeneration-handler.ts @@ -59,12 +59,14 @@ export const handler: AWSLambda.SQSHandler = async (event) => { "passthrough" ); + const expires = new Date(Date.now() + renderOpts.revalidate * 1000); const s3BasePath = basePath ? `${basePath.replace(/^\//, "")}/` : ""; const s3JsonParams = { Bucket: bucketName, Key: `${s3BasePath}${jsonKey}`, Body: JSON.stringify(renderOpts.pageData), ContentType: "application/json", + Expires: expires, CacheControl: "public, max-age=0, s-maxage=2678400, must-revalidate" }; @@ -73,6 +75,7 @@ export const handler: AWSLambda.SQSHandler = async (event) => { Key: `${s3BasePath}${htmlKey}`, Body: html, ContentType: "text/html", + Expires: expires, CacheControl: "public, max-age=0, s-maxage=2678400, must-revalidate" }; From fc8bd3895d53ea1f6953484ed348ec7033ce407f Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 29 Apr 2021 17:58:56 +0100 Subject: [PATCH 05/48] use expires header rather than last-modified and a small code tidy --- .../lambda-at-edge/src/default-handler.ts | 94 +++++-------------- .../libs/lambda-at-edge/src/image-handler.ts | 7 +- .../src/lib/getStaticRegenerationResponse.ts | 52 ++++++++++ .../src/lib/triggerStaticRegeneration.ts | 70 ++++++++++++++ .../src/regeneration-handler.ts | 4 +- .../src/s3/s3BucketNameFromEventRequest.ts | 6 ++ packages/libs/lambda-at-edge/yarn.lock | 12 +-- yarn.lock | 49 ++++++++++ 8 files changed, 212 insertions(+), 82 deletions(-) create mode 100644 packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts create mode 100644 packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts create mode 100644 packages/libs/lambda-at-edge/src/s3/s3BucketNameFromEventRequest.ts diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index 81f0344176..a5b4e43a2c 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -44,6 +44,9 @@ import { getLocalePrefixFromUri } from "./routing/locale-utils"; import { removeBlacklistedHeaders } from "./headers/removeBlacklistedHeaders"; +import { getStaticRegenerationResponse } from "./lib/getStaticRegenerationResponse"; +import { s3BucketNameFromEventRequest } from "./s3/s3BucketNameFromEventRequest"; +import { triggerStaticRegeneration } from "./lib/triggerStaticRegeneration"; const basePath = RoutesManifestJson.basePath; @@ -590,7 +593,6 @@ const handleOriginRequest = async ({ const handleOriginResponse = async ({ event, manifest, - prerenderManifest, routesManifest }: { event: OriginResponseEvent; @@ -602,8 +604,7 @@ const handleOriginResponse = async ({ const request = event.Records[0].cf.request; const { uri } = request; const { status } = response; - const { region, domainName } = request.origin?.s3 || {}; - const bucketName = domainName?.replace(`.s3.${region}.amazonaws.com`, ""); + const bucketName = s3BucketNameFromEventRequest(request); if (status !== "403") { // Set 404 status code for 404.html page. We do not need normalised URI as it will always be "/404.html" @@ -613,83 +614,32 @@ const handleOriginResponse = async ({ return response; } - const initialRevalidateSeconds = - manifest.pages.ssg.nonDynamic?.[uri.replace(".html", "")] - ?.initialRevalidateSeconds; - const lastModifiedHeaderString = - response.headers?.["last-modified"]?.[0]?.value; - const lastModifiedAt = lastModifiedHeaderString - ? new Date(lastModifiedHeaderString) - : null; - if (typeof initialRevalidateSeconds === "number" && lastModifiedAt) { - /** - * TODO: Refactor to use the returned `Expired` header. - */ - const createdAgo = - (Date.now() - (lastModifiedAt.getTime() || Date.now())) / 1000; - - const timeToRevalidate = Math.floor( - initialRevalidateSeconds - createdAgo - ); + const staticRegenerationResponse = getStaticRegenerationResponse({ + requestedOriginUri: uri, + expiresHeader: response.headers.expires?.[0]?.value || "", + manifest + }); + if (staticRegenerationResponse) { response.headers["cache-control"] = [ { key: "Cache-Control", - value: - timeToRevalidate < 0 - ? "public, max-age=0, s-maxage=0, must-revalidate" - : `public, max-age=0, s-maxage=${timeToRevalidate}, must-revalidate` + value: staticRegenerationResponse.cacheControl } ]; - if (timeToRevalidate < 0) { - const { SQSClient, SendMessageCommand } = await import( - "@aws-sdk/client-sqs" - ); - const sqs = new SQSClient({ - region, - maxAttempts: 3, - retryStrategy: await buildS3RetryStrategy() + // We don't want the `expires` header to be sent to the client we manage + // the cache at the edge using the s-maxage directive in the cache-control + // header + delete response.headers.expires; + + if (staticRegenerationResponse.secondsRemainingUntilRevalidation === 0) { + await triggerStaticRegeneration({ + basePath, + manifest, + request, + response }); - await sqs.send( - new SendMessageCommand({ - QueueUrl: `https://sqs.${region}.amazonaws.com/${bucketName}.fifo`, - MessageBody: uri, - MessageAttributes: { - BucketRegion: { - DataType: "String", - StringValue: region - }, - BucketName: { - DataType: "String", - StringValue: bucketName - }, - CloudFrontEventRequest: { - DataType: "String", - StringValue: JSON.stringify(request) - }, - Manifest: { - DataType: "String", - StringValue: JSON.stringify(manifest) - }, - ...(basePath - ? { - BasePath: { - DataType: "String", - StringValue: basePath - } - } - : {}) - }, - // We only want to trigger the regeneration once for every previous - // update. This will prevent the case where this page is being - // requested again whilst its already started to regenerate. - MessageDeduplicationId: lastModifiedAt.getTime().toString(), - // Only deduplicate based on the object, i.e. we can generate - // different pages in parallel, just not the same one - MessageGroupId: uri - }) - ); } } diff --git a/packages/libs/lambda-at-edge/src/image-handler.ts b/packages/libs/lambda-at-edge/src/image-handler.ts index 1a5eb6f3bd..872412f9e6 100644 --- a/packages/libs/lambda-at-edge/src/image-handler.ts +++ b/packages/libs/lambda-at-edge/src/image-handler.ts @@ -20,6 +20,7 @@ import { } from "./routing/redirector"; import { getUnauthenticatedResponse } from "./auth/authenticator"; import { removeBlacklistedHeaders } from "./headers/removeBlacklistedHeaders"; +import { s3BucketNameFromEventRequest } from "./s3/s3BucketNameFromEventRequest"; const basePath = RoutesManifestJson.basePath; @@ -88,11 +89,11 @@ export const handler = async ( true ); - const { domainName, region } = request.origin!.s3!; - const bucketName = domainName.replace(`.s3.${region}.amazonaws.com`, ""); + const { region } = request.origin!.s3!; + const bucketName = s3BucketNameFromEventRequest(request); await imageOptimizer( - { basePath: basePath, bucketName: bucketName, region: region }, + { basePath: basePath, bucketName: bucketName || "", region: region }, imagesManifest, req, res, diff --git a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts new file mode 100644 index 0000000000..33dc018836 --- /dev/null +++ b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts @@ -0,0 +1,52 @@ +import { OriginRequestDefaultHandlerManifest } from "../types"; + +interface StaticRegenerationResponseOptions { + // URI of the origin object + requestedOriginUri: string; + // Header as set on the origin object + expiresHeader: string; + manifest: OriginRequestDefaultHandlerManifest; +} + +interface StaticRegenerationResponseValue { + // Cache-Control header + cacheControl: string; + secondsRemainingUntilRevalidation: number; +} + +/** + * Function called within an origin response as part of the Incremental Static + * Regeneration logic. Returns required headers for the response, or false if + * this response is not compatible with ISR. + */ +const getStaticRegenerationResponse = ( + options: StaticRegenerationResponseOptions +): StaticRegenerationResponseValue | false => { + const initialRevalidateSeconds = + options.manifest.pages.ssg.nonDynamic?.[ + options.requestedOriginUri.replace(".html", "") + ]?.initialRevalidateSeconds; + + // If this page did not write a revalidate value at build time it is not an + // ISR page + if (typeof initialRevalidateSeconds !== "number") { + return false; + } + + const expiresAt = new Date(options.expiresHeader); + + // isNaN will resolve true on initial load of this page (as the expiresHeader + // won't be set), in which case we trigger a regeneration now + const secondsRemainingUntilRevalidation = isNaN(expiresAt.getTime()) + ? 0 + : // Never return a negative amount of seconds if revalidation could have + // happened sooner + Math.floor(Math.max(0, (expiresAt.getTime() - Date.now()) / 1000)); + + return { + secondsRemainingUntilRevalidation, + cacheControl: `public, max-age=0, s-maxage=${secondsRemainingUntilRevalidation}, must-revalidate` + }; +}; + +export { getStaticRegenerationResponse }; diff --git a/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts b/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts new file mode 100644 index 0000000000..bdd3cce93e --- /dev/null +++ b/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts @@ -0,0 +1,70 @@ +import { s3BucketNameFromEventRequest } from "../s3/s3BucketNameFromEventRequest"; +import { buildS3RetryStrategy } from "../s3/s3RetryStrategy"; +import { OriginRequestDefaultHandlerManifest } from "../types"; + +interface TriggerStaticRegenerationOptions { + request: AWSLambda.CloudFrontRequest; + response: AWSLambda.CloudFrontResponse; + manifest: OriginRequestDefaultHandlerManifest; + basePath: string | undefined; +} + +export const triggerStaticRegeneration = async ( + options: TriggerStaticRegenerationOptions +): Promise => { + const { region } = options.request.origin?.s3 || {}; + const bucketName = s3BucketNameFromEventRequest(options.request); + + const { SQSClient, SendMessageCommand } = await import("@aws-sdk/client-sqs"); + const sqs = new SQSClient({ + region, + maxAttempts: 3, + retryStrategy: await buildS3RetryStrategy() + }); + + const lastModifiedAt = new Date( + options.response.headers["last-modified"]?.[0].value + ) + .getTime() + .toString(); + + await sqs.send( + new SendMessageCommand({ + QueueUrl: `https://sqs.${region}.amazonaws.com/${bucketName}.fifo`, + MessageBody: options.request.uri, // This is not used, however it is a required property + MessageAttributes: { + BucketRegion: { + DataType: "String", + StringValue: region + }, + BucketName: { + DataType: "String", + StringValue: bucketName + }, + CloudFrontEventRequest: { + DataType: "String", + StringValue: JSON.stringify(options.request) + }, + Manifest: { + DataType: "String", + StringValue: JSON.stringify(options.manifest) + }, + ...(options.basePath + ? { + BasePath: { + DataType: "String", + StringValue: options.basePath + } + } + : {}) + }, + // We only want to trigger the regeneration once for every previous + // update. This will prevent the case where this page is being + // requested again whilst its already started to regenerate. + MessageDeduplicationId: lastModifiedAt, + // Only deduplicate based on the object, i.e. we can generate + // different pages in parallel, just not the same one + MessageGroupId: options.request.uri + }) + ); +}; diff --git a/packages/libs/lambda-at-edge/src/regeneration-handler.ts b/packages/libs/lambda-at-edge/src/regeneration-handler.ts index 078865267a..2323addb0f 100644 --- a/packages/libs/lambda-at-edge/src/regeneration-handler.ts +++ b/packages/libs/lambda-at-edge/src/regeneration-handler.ts @@ -59,7 +59,9 @@ export const handler: AWSLambda.SQSHandler = async (event) => { "passthrough" ); - const expires = new Date(Date.now() + renderOpts.revalidate * 1000); + const revalidate = + renderOpts.revalidate ?? ssgRoute.initialRevalidateSeconds; + const expires = new Date(Date.now() + revalidate * 1000); const s3BasePath = basePath ? `${basePath.replace(/^\//, "")}/` : ""; const s3JsonParams = { Bucket: bucketName, diff --git a/packages/libs/lambda-at-edge/src/s3/s3BucketNameFromEventRequest.ts b/packages/libs/lambda-at-edge/src/s3/s3BucketNameFromEventRequest.ts new file mode 100644 index 0000000000..42d7679672 --- /dev/null +++ b/packages/libs/lambda-at-edge/src/s3/s3BucketNameFromEventRequest.ts @@ -0,0 +1,6 @@ +export const s3BucketNameFromEventRequest = ( + request: AWSLambda.CloudFrontRequest +): string | undefined => { + const { region, domainName } = request.origin?.s3 || {}; + return domainName?.replace(`.s3.${region}.amazonaws.com`, ""); +}; diff --git a/packages/libs/lambda-at-edge/yarn.lock b/packages/libs/lambda-at-edge/yarn.lock index 37ff230bb3..53080ad7df 100644 --- a/packages/libs/lambda-at-edge/yarn.lock +++ b/packages/libs/lambda-at-edge/yarn.lock @@ -1501,9 +1501,9 @@ fast-base64-decode@^1.0.0: integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== fast-xml-parser@^3.16.0: - version "3.17.4" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.17.4.tgz#d668495fb3e4bbcf7970f3c24ac0019d82e76477" - integrity sha512-qudnQuyYBgnvzf5Lj/yxMcf4L9NcVWihXJg7CiU1L+oUCq8MUnFEfH2/nXR/W5uq+yvUN1h7z6s7vs2v1WkL1A== + version "3.19.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" + integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== fetch-mock-jest@^1.5.1: version "1.5.1" @@ -2399,9 +2399,9 @@ rc@^1.2.7: strip-json-comments "~2.0.1" react-native-get-random-values@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.5.0.tgz#91cda18f0e66e3d9d7660ba80c61c914030c1e05" - integrity sha512-LK+Wb8dEimJkd/dub7qziDmr9Tw4chhpzVeQ6JDo4czgfG4VXbptRyOMdu8503RiMF6y9pTH6ZUTkrrpprqT7w== + version "1.7.0" + resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.7.0.tgz#86d9d1960828b606392dba4540bf760605448530" + integrity sha512-zDhmpWUekGRFb9I+MQkxllHcqXN9HBSsgPwBQfrZ1KZYpzDspWLZ6/yLMMZrtq4pVqNR7C7N96L3SuLpXv1nhQ== dependencies: fast-base64-decode "^1.0.0" diff --git a/yarn.lock b/yarn.lock index a7ffab8124..de50934504 100644 --- a/yarn.lock +++ b/yarn.lock @@ -178,6 +178,46 @@ fast-xml-parser "^3.16.0" tslib "^2.0.0" +"@aws-sdk/client-sqs@1.0.0-rc.3": + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sqs/-/client-sqs-1.0.0-rc.3.tgz#aca468b52f77db00ffdf27d825022124d802da4d" + integrity sha512-qEXJ++GJ46sPboyhRUJIv03buEvmXT5lLgjUdWjZKwzHaU34GPH0B7xxlLOUWmA+JvyPaK91ESjGqLc/82GLaA== + dependencies: + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/config-resolver" "1.0.0-rc.3" + "@aws-sdk/credential-provider-node" "1.0.0-rc.3" + "@aws-sdk/fetch-http-handler" "1.0.0-rc.3" + "@aws-sdk/hash-node" "1.0.0-rc.3" + "@aws-sdk/invalid-dependency" "1.0.0-rc.3" + "@aws-sdk/md5-js" "1.0.0-rc.3" + "@aws-sdk/middleware-content-length" "1.0.0-rc.3" + "@aws-sdk/middleware-host-header" "1.0.0-rc.3" + "@aws-sdk/middleware-logger" "1.0.0-rc.3" + "@aws-sdk/middleware-retry" "1.0.0-rc.3" + "@aws-sdk/middleware-sdk-sqs" "1.0.0-rc.3" + "@aws-sdk/middleware-serde" "1.0.0-rc.3" + "@aws-sdk/middleware-signing" "1.0.0-rc.3" + "@aws-sdk/middleware-stack" "1.0.0-rc.3" + "@aws-sdk/middleware-user-agent" "1.0.0-rc.3" + "@aws-sdk/node-config-provider" "1.0.0-rc.3" + "@aws-sdk/node-http-handler" "1.0.0-rc.3" + "@aws-sdk/protocol-http" "1.0.0-rc.3" + "@aws-sdk/smithy-client" "1.0.0-rc.3" + "@aws-sdk/types" "1.0.0-rc.3" + "@aws-sdk/url-parser-browser" "1.0.0-rc.3" + "@aws-sdk/url-parser-node" "1.0.0-rc.3" + "@aws-sdk/util-base64-browser" "1.0.0-rc.3" + "@aws-sdk/util-base64-node" "1.0.0-rc.3" + "@aws-sdk/util-body-length-browser" "1.0.0-rc.3" + "@aws-sdk/util-body-length-node" "1.0.0-rc.3" + "@aws-sdk/util-user-agent-browser" "1.0.0-rc.3" + "@aws-sdk/util-user-agent-node" "1.0.0-rc.3" + "@aws-sdk/util-utf8-browser" "1.0.0-rc.3" + "@aws-sdk/util-utf8-node" "1.0.0-rc.3" + fast-xml-parser "^3.16.0" + tslib "^2.0.0" + "@aws-sdk/config-resolver@1.0.0-rc.3": version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-1.0.0-rc.3.tgz#0eb877cdabffb75ba3ed89f14e86301faeec12d2" @@ -441,6 +481,15 @@ "@aws-sdk/util-arn-parser" "1.0.0-rc.3" tslib "^1.8.0" +"@aws-sdk/middleware-sdk-sqs@1.0.0-rc.3": + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-1.0.0-rc.3.tgz#5f02a97b0f34a4848ef8769e1e21d09d178d3cd8" + integrity sha512-d3kL0IDQtXf/kP3RXMH6+AsjYS69tPC+9r9O28ri/qPDQFUdeHVFxybneAA/5JWikDM6tZ4htgkm+Tm4PUm5hA== + dependencies: + "@aws-sdk/types" "1.0.0-rc.3" + "@aws-sdk/util-hex-encoding" "1.0.0-rc.3" + tslib "^1.8.0" + "@aws-sdk/middleware-serde@1.0.0-rc.3": version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-1.0.0-rc.3.tgz#81307310c51d50ec8425bee9fb08d35a7458dcfc" From 8a0d5ffc261027df530e079baa2015ad8ad29dfd Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 29 Apr 2021 20:21:51 +0100 Subject: [PATCH 06/48] revalidation relies on the expires header --- .../lambda-at-edge/src/default-handler.ts | 39 +++------- .../src/lib/getStaticRegenerationResponse.ts | 31 +++++++- .../src/regeneration-handler.ts | 51 +++---------- .../libs/lambda-at-edge/src/s3/s3StorePage.ts | 73 +++++++++++++++++++ 4 files changed, 123 insertions(+), 71 deletions(-) create mode 100644 packages/libs/lambda-at-edge/src/s3/s3StorePage.ts diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index a5b4e43a2c..ad344f7ac7 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -47,6 +47,7 @@ import { removeBlacklistedHeaders } from "./headers/removeBlacklistedHeaders"; import { getStaticRegenerationResponse } from "./lib/getStaticRegenerationResponse"; import { s3BucketNameFromEventRequest } from "./s3/s3BucketNameFromEventRequest"; import { triggerStaticRegeneration } from "./lib/triggerStaticRegeneration"; +import { s3StorePage } from "./s3/s3StorePage"; const basePath = RoutesManifestJson.basePath; @@ -617,6 +618,7 @@ const handleOriginResponse = async ({ const staticRegenerationResponse = getStaticRegenerationResponse({ requestedOriginUri: uri, expiresHeader: response.headers.expires?.[0]?.value || "", + lastModifiedHeader: response.headers["last-modified"]?.[0]?.value || "", manifest }); @@ -694,33 +696,16 @@ const handleOriginResponse = async ({ "passthrough" ); if (isSSG) { - const baseKey = uri - .replace(/^\//, "") - .replace(/\.(json|html)$/, "") - .replace(/^_next\/data\/[^\/]*\//, ""); - const jsonKey = `_next/data/${manifest.buildId}/${baseKey}.json`; - const htmlKey = `static-pages/${manifest.buildId}/${baseKey}.html`; - const s3JsonParams = { - Bucket: bucketName, - Key: `${s3BasePath}${jsonKey}`, - Body: JSON.stringify(renderOpts.pageData), - ContentType: "application/json", - CacheControl: "public, max-age=0, s-maxage=2678400, must-revalidate" - }; - const s3HtmlParams = { - Bucket: bucketName, - Key: `${s3BasePath}${htmlKey}`, - Body: html, - ContentType: "text/html", - CacheControl: "public, max-age=0, s-maxage=2678400, must-revalidate" - }; - const { PutObjectCommand } = await import( - "@aws-sdk/client-s3/commands/PutObjectCommand" - ); - await Promise.all([ - s3.send(new PutObjectCommand(s3JsonParams)), - s3.send(new PutObjectCommand(s3HtmlParams)) - ]); + await s3StorePage({ + html, + uri, + basePath, + bucketName: bucketName || "", + buildId: manifest.buildId, + pageData: renderOpts.pageData, + region: request.origin?.s3?.region || "", + revalidate: renderOpts.revalidate + }); } const outHeaders: OutgoingHttpHeaders = {}; Object.entries(response.headers).map(([name, headers]) => { diff --git a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts index 33dc018836..1753a3ebea 100644 --- a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts +++ b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts @@ -5,6 +5,7 @@ interface StaticRegenerationResponseOptions { requestedOriginUri: string; // Header as set on the origin object expiresHeader: string; + lastModifiedHeader: string; manifest: OriginRequestDefaultHandlerManifest; } @@ -14,6 +15,15 @@ interface StaticRegenerationResponseValue { secondsRemainingUntilRevalidation: number; } +const firstRegenerateExpiryDate = ( + lastModifiedHeader: string, + initialRevalidateSeconds: number +) => { + return new Date( + new Date(lastModifiedHeader).getTime() + initialRevalidateSeconds * 1000 + ); +}; + /** * Function called within an origin response as part of the Incremental Static * Regeneration logic. Returns required headers for the response, or false if @@ -27,13 +37,26 @@ const getStaticRegenerationResponse = ( options.requestedOriginUri.replace(".html", "") ]?.initialRevalidateSeconds; - // If this page did not write a revalidate value at build time it is not an - // ISR page - if (typeof initialRevalidateSeconds !== "number") { + // ISR pages that were either previously regenerated or generated + // post-initial-build, will have an `Expires` header set. However ISR pages + // that have not been regenerated but at build-time resolved a revalidate + // property will not have an `Expires` header and therefore we check using the + // manifest. + if ( + !options.expiresHeader && + !( + options.lastModifiedHeader && typeof initialRevalidateSeconds === "number" + ) + ) { return false; } - const expiresAt = new Date(options.expiresHeader); + const expiresAt = options.expiresHeader + ? new Date(options.expiresHeader) + : firstRegenerateExpiryDate( + options.lastModifiedHeader, + initialRevalidateSeconds as number + ); // isNaN will resolve true on initial load of this page (as the expiresHeader // won't be set), in which case we trigger a regeneration now diff --git a/packages/libs/lambda-at-edge/src/regeneration-handler.ts b/packages/libs/lambda-at-edge/src/regeneration-handler.ts index 2323addb0f..971ed171ca 100644 --- a/packages/libs/lambda-at-edge/src/regeneration-handler.ts +++ b/packages/libs/lambda-at-edge/src/regeneration-handler.ts @@ -1,7 +1,6 @@ import lambdaAtEdgeCompat from "@sls-next/next-aws-cloudfront"; import { OriginRequestDefaultHandlerManifest } from "./types"; -import { S3Client } from "@aws-sdk/client-s3"; -import { buildS3RetryStrategy } from "./s3/s3RetryStrategy"; +import { s3StorePage } from "./s3/s3StorePage"; export const handler: AWSLambda.SQSHandler = async (event) => { await Promise.all( @@ -29,12 +28,6 @@ export const handler: AWSLambda.SQSHandler = async (event) => { manifestString ); - const s3 = new S3Client({ - region: cloudFrontEventRequest.origin?.s3?.region, - maxAttempts: 3, - retryStrategy: await buildS3RetryStrategy() - }); - const { req, res } = lambdaAtEdgeCompat( { request: cloudFrontEventRequest }, { enableHTTPCompression: manifest.enableHTTPCompression } @@ -50,44 +43,22 @@ export const handler: AWSLambda.SQSHandler = async (event) => { // eslint-disable-next-line @typescript-eslint/no-var-requires const page = require(`./pages${srcPath}`); - const jsonKey = `_next/data/${manifest.buildId}${baseKey}.json`; - const htmlKey = `static-pages/${manifest.buildId}${baseKey}.html`; - const { renderOpts, html } = await page.renderReqToHTML( req, res, "passthrough" ); - const revalidate = - renderOpts.revalidate ?? ssgRoute.initialRevalidateSeconds; - const expires = new Date(Date.now() + revalidate * 1000); - const s3BasePath = basePath ? `${basePath.replace(/^\//, "")}/` : ""; - const s3JsonParams = { - Bucket: bucketName, - Key: `${s3BasePath}${jsonKey}`, - Body: JSON.stringify(renderOpts.pageData), - ContentType: "application/json", - Expires: expires, - CacheControl: "public, max-age=0, s-maxage=2678400, must-revalidate" - }; - - const s3HtmlParams = { - Bucket: bucketName, - Key: `${s3BasePath}${htmlKey}`, - Body: html, - ContentType: "text/html", - Expires: expires, - CacheControl: "public, max-age=0, s-maxage=2678400, must-revalidate" - }; - - const { PutObjectCommand } = await import( - "@aws-sdk/client-s3/commands/PutObjectCommand" - ); - await Promise.all([ - s3.send(new PutObjectCommand(s3JsonParams)), - s3.send(new PutObjectCommand(s3HtmlParams)) - ]); + await s3StorePage({ + html, + uri: cloudFrontEventRequest.uri, + basePath, + bucketName: bucketName || "", + buildId: manifest.buildId, + pageData: renderOpts.pageData, + region: cloudFrontEventRequest.origin?.s3?.region || "", + revalidate: renderOpts.revalidate + }); }) ); }; diff --git a/packages/libs/lambda-at-edge/src/s3/s3StorePage.ts b/packages/libs/lambda-at-edge/src/s3/s3StorePage.ts new file mode 100644 index 0000000000..86987ed584 --- /dev/null +++ b/packages/libs/lambda-at-edge/src/s3/s3StorePage.ts @@ -0,0 +1,73 @@ +import { buildS3RetryStrategy } from "./s3RetryStrategy"; + +interface S3StorePageOptions { + basePath: string | undefined; + uri: string; + revalidate?: number | undefined; + bucketName: string; + html: string; + buildId: string; + region: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + pageData: Record; +} + +/** + * There are multiple occasions where a static/SSG page will be generated after + * the initial build. This function accepts a generated page, stores it and + * applies the appropriate headers (e.g. setting an 'Expires' header for + * regeneration). + */ +export const s3StorePage = async ( + options: S3StorePageOptions +): Promise => { + const { S3Client } = await import("@aws-sdk/client-s3/S3Client"); + + const s3 = new S3Client({ + region: options.region, + maxAttempts: 3, + retryStrategy: await buildS3RetryStrategy() + }); + + const s3BasePath = options.basePath + ? `${options.basePath.replace(/^\//, "")}/` + : ""; + const baseKey = options.uri + .replace(/^\//, "") + .replace(/\.(json|html)$/, "") + .replace(/^_next\/data\/[^\/]*\//, ""); + const jsonKey = `_next/data/${options.buildId}/${baseKey}.json`; + const htmlKey = `static-pages/${options.buildId}/${baseKey}.html`; + const cacheControl = options.revalidate + ? undefined + : "public, max-age=0, s-maxage=2678400, must-revalidate"; + const expires = options.revalidate + ? new Date(new Date().getTime() + 1000 * options.revalidate) + : undefined; + + const s3JsonParams = { + Bucket: options.bucketName, + Key: `${s3BasePath}${jsonKey}`, + Body: JSON.stringify(options.pageData), + ContentType: "application/json", + CacheControl: cacheControl, + Expires: expires + }; + + const s3HtmlParams = { + Bucket: options.bucketName, + Key: `${s3BasePath}${htmlKey}`, + Body: options.html, + ContentType: "text/html", + CacheControl: cacheControl, + Expires: expires + }; + + const { PutObjectCommand } = await import( + "@aws-sdk/client-s3/commands/PutObjectCommand" + ); + await Promise.all([ + s3.send(new PutObjectCommand(s3JsonParams)), + s3.send(new PutObjectCommand(s3HtmlParams)) + ]); +}; From 67cda68a8d129fd3c5c4a6a36973756da5ff02f7 Mon Sep 17 00:00:00 2001 From: Henry Date: Fri, 30 Apr 2021 13:31:05 +0100 Subject: [PATCH 07/48] fix fallback isr fallback behaviour --- .../lambda-at-edge/src/default-handler.ts | 33 ++++++++++++------- .../src/lib/cleanRequestUriForRouter.ts | 16 +++++++++ .../src/lib/getStaticRegenerationResponse.ts | 4 +-- .../src/regeneration-handler.ts | 25 ++++++++++++-- .../libs/lambda-at-edge/src/s3/s3StorePage.ts | 7 +++- .../nextjs-cdk-construct/src/index.ts | 2 +- 6 files changed, 70 insertions(+), 17 deletions(-) create mode 100644 packages/libs/lambda-at-edge/src/lib/cleanRequestUriForRouter.ts diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index ad344f7ac7..4eeb20fa72 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -48,6 +48,7 @@ import { getStaticRegenerationResponse } from "./lib/getStaticRegenerationRespon import { s3BucketNameFromEventRequest } from "./s3/s3BucketNameFromEventRequest"; import { triggerStaticRegeneration } from "./lib/triggerStaticRegeneration"; import { s3StorePage } from "./s3/s3StorePage"; +import { cleanRequestUriForRouter } from "./lib/cleanRequestUriForRouter"; const basePath = RoutesManifestJson.basePath; @@ -677,12 +678,7 @@ const handleOriginResponse = async ({ // eslint-disable-next-line const page = require(`./${pagePath}`); // Reconstruct original uri for next/router - if (uri.endsWith(".html")) { - request.uri = uri.slice(0, uri.length - 5); - if (manifest.trailingSlash) { - request.uri += "/"; - } - } + request.uri = cleanRequestUriForRouter(request.uri, manifest.trailingSlash); const { req, res, responsePromise } = lambdaAtEdgeCompat( event.Records[0].cf, { @@ -695,8 +691,9 @@ const handleOriginResponse = async ({ res, "passthrough" ); + let cacheControl = "public, max-age=0, s-maxage=2678400, must-revalidate"; if (isSSG) { - await s3StorePage({ + const { expires } = await s3StorePage({ html, uri, basePath, @@ -706,16 +703,30 @@ const handleOriginResponse = async ({ region: request.origin?.s3?.region || "", revalidate: renderOpts.revalidate }); + + const isrResponse = expires + ? getStaticRegenerationResponse({ + expiresHeader: expires.toJSON(), + manifest, + requestedOriginUri: uri, + lastModifiedHeader: undefined + }) + : null; + + cacheControl = (isrResponse && isrResponse.cacheControl) || cacheControl; } const outHeaders: OutgoingHttpHeaders = {}; Object.entries(response.headers).map(([name, headers]) => { outHeaders[name] = headers.map(({ value }) => value); }); res.writeHead(200, outHeaders); - res.setHeader( - "Cache-Control", - "public, max-age=0, s-maxage=2678400, must-revalidate" - ); + + if (cacheControl) { + res.setHeader("Cache-Control", cacheControl); + } else { + res.removeHeader("Cache-Control"); + } + if (isDataRequest(uri)) { res.setHeader("Content-Type", "application/json"); res.end(JSON.stringify(renderOpts.pageData)); diff --git a/packages/libs/lambda-at-edge/src/lib/cleanRequestUriForRouter.ts b/packages/libs/lambda-at-edge/src/lib/cleanRequestUriForRouter.ts new file mode 100644 index 0000000000..e1ef033bba --- /dev/null +++ b/packages/libs/lambda-at-edge/src/lib/cleanRequestUriForRouter.ts @@ -0,0 +1,16 @@ +/** + * Removes html and adds the trailing slash if needed. This is used when + * regenerating an SSG page. + */ +export const cleanRequestUriForRouter = ( + uri: string, + trailingSlash?: boolean +): string => { + if (uri.endsWith(".html")) { + uri = uri.slice(0, uri.length - 5); + if (trailingSlash) { + uri += "/"; + } + } + return uri; +}; diff --git a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts index 1753a3ebea..ff06c859dc 100644 --- a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts +++ b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts @@ -5,7 +5,7 @@ interface StaticRegenerationResponseOptions { requestedOriginUri: string; // Header as set on the origin object expiresHeader: string; - lastModifiedHeader: string; + lastModifiedHeader: string | undefined; manifest: OriginRequestDefaultHandlerManifest; } @@ -54,7 +54,7 @@ const getStaticRegenerationResponse = ( const expiresAt = options.expiresHeader ? new Date(options.expiresHeader) : firstRegenerateExpiryDate( - options.lastModifiedHeader, + options.lastModifiedHeader as string, initialRevalidateSeconds as number ); diff --git a/packages/libs/lambda-at-edge/src/regeneration-handler.ts b/packages/libs/lambda-at-edge/src/regeneration-handler.ts index 971ed171ca..3d4b5bd9e8 100644 --- a/packages/libs/lambda-at-edge/src/regeneration-handler.ts +++ b/packages/libs/lambda-at-edge/src/regeneration-handler.ts @@ -1,6 +1,7 @@ import lambdaAtEdgeCompat from "@sls-next/next-aws-cloudfront"; import { OriginRequestDefaultHandlerManifest } from "./types"; import { s3StorePage } from "./s3/s3StorePage"; +import { cleanRequestUriForRouter } from "./lib/cleanRequestUriForRouter"; export const handler: AWSLambda.SQSHandler = async (event) => { await Promise.all( @@ -28,6 +29,10 @@ export const handler: AWSLambda.SQSHandler = async (event) => { manifestString ); + cloudFrontEventRequest.uri = cleanRequestUriForRouter( + cloudFrontEventRequest.uri, + manifest.trailingSlash + ); const { req, res } = lambdaAtEdgeCompat( { request: cloudFrontEventRequest }, { enableHTTPCompression: manifest.enableHTTPCompression } @@ -37,8 +42,24 @@ export const handler: AWSLambda.SQSHandler = async (event) => { .replace(/\.(json|html)$/, "") .replace(/^_next\/data\/[^\/]*\//, ""); - const ssgRoute = manifest.pages.ssg.nonDynamic[baseKey]; - const srcPath = ssgRoute.srcRoute || baseKey; + let srcRoute = manifest.pages.ssg.nonDynamic[baseKey]?.srcRoute; + if (!srcRoute) { + const matchedDynamicRoute = Object.entries( + manifest.pages.ssg.dynamic + ).find(([, dynamicSsgRoute]) => { + return new RegExp(dynamicSsgRoute.routeRegex).test( + cloudFrontEventRequest.uri + ); + }); + + if (matchedDynamicRoute) { + [srcRoute] = matchedDynamicRoute; + } + } + + // We probably should not get to this point without `srcRoute` being + // defined + const srcPath = srcRoute || baseKey; // eslint-disable-next-line @typescript-eslint/no-var-requires const page = require(`./pages${srcPath}`); diff --git a/packages/libs/lambda-at-edge/src/s3/s3StorePage.ts b/packages/libs/lambda-at-edge/src/s3/s3StorePage.ts index 86987ed584..73bb204719 100644 --- a/packages/libs/lambda-at-edge/src/s3/s3StorePage.ts +++ b/packages/libs/lambda-at-edge/src/s3/s3StorePage.ts @@ -20,7 +20,7 @@ interface S3StorePageOptions { */ export const s3StorePage = async ( options: S3StorePageOptions -): Promise => { +): Promise<{ cacheControl: string | undefined; expires: Date | undefined }> => { const { S3Client } = await import("@aws-sdk/client-s3/S3Client"); const s3 = new S3Client({ @@ -70,4 +70,9 @@ export const s3StorePage = async ( s3.send(new PutObjectCommand(s3JsonParams)), s3.send(new PutObjectCommand(s3HtmlParams)) ]); + + return { + cacheControl, + expires + }; }; diff --git a/packages/serverless-components/nextjs-cdk-construct/src/index.ts b/packages/serverless-components/nextjs-cdk-construct/src/index.ts index 7833d09c98..5e977e8109 100644 --- a/packages/serverless-components/nextjs-cdk-construct/src/index.ts +++ b/packages/serverless-components/nextjs-cdk-construct/src/index.ts @@ -143,7 +143,7 @@ export class NextJSLambdaEdge extends cdk.Construct { timeout: toLambdaOption("defaultLambda", props.timeout) }); - this.bucket.grantRead(this.defaultNextLambda); + this.bucket.grantReadWrite(this.defaultNextLambda); this.bucket.grantReadWrite(this.regenerationFunction); this.regenerationQueue.grantSendMessages(this.defaultNextLambda); this.defaultNextLambda.currentVersion.addAlias("live"); From 26ed898980d40c28c16099e8805e731c672db0ce Mon Sep 17 00:00:00 2001 From: Henry Date: Fri, 30 Apr 2021 14:51:05 +0100 Subject: [PATCH 08/48] update cdk snapshot --- .../__snapshots__/snapshots.test.ts.snap | 529 +++++++++++++----- .../regeneration-lambda/index.js | 3 + 2 files changed, 384 insertions(+), 148 deletions(-) create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/regeneration-lambda/index.js diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap b/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap index df233e7a6a..2576271616 100644 --- a/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap @@ -3,6 +3,18 @@ exports[`CDK Construct Snapshots creates boilerplate next app 1`] = ` Object { "Parameters": Object { + "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313ArtifactHash099A8DD1": Object { + "Description": "Artifact hash for asset \\"0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313\\"", + "Type": "String", + }, + "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3BucketF4667C02": Object { + "Description": "S3 bucket for asset \\"0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313\\"", + "Type": "String", + }, + "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3VersionKeyC4818F9D": Object { + "Description": "S3 key for asset version \\"0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313\\"", + "Type": "String", + }, "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748ArtifactHashE2D1074E": Object { "Description": "Artifact hash for asset \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", "Type": "String", @@ -493,6 +505,18 @@ Object { ], }, }, + "Description": Object { + "Fn::Join": Array [ + "", + Array [ + "Lambda function for auto-deleting objects in ", + Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + " S3 bucket.", + ], + ], + }, "Handler": "__entrypoint__.handler", "MemorySize": 128, "Role": Object { @@ -1190,6 +1214,7 @@ Object { }, "StackNextApiLambda8BE78FBE": Object { "DependsOn": Array [ + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", "StackNextEdgeLambdaRole02C429A6", ], "Properties": Object { @@ -1243,7 +1268,7 @@ Object { }, "Type": "AWS::Lambda::Function", }, - "StackNextApiLambdaCurrentVersion09578A6A82abd7c4731937bb8d06c77c511a0f1f": Object { + "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0": Object { "DeletionPolicy": "Delete", "Properties": Object { "FunctionName": Object { @@ -1260,7 +1285,7 @@ Object { }, "FunctionVersion": Object { "Fn::GetAtt": Array [ - "StackNextApiLambdaCurrentVersion09578A6A82abd7c4731937bb8d06c77c511a0f1f", + "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", "Version", ], }, @@ -1276,7 +1301,7 @@ Object { "MaximumRetryAttempts": 1, "Qualifier": Object { "Fn::GetAtt": Array [ - "StackNextApiLambdaCurrentVersion09578A6A82abd7c4731937bb8d06c77c511a0f1f", + "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", "Version", ], }, @@ -1336,13 +1361,86 @@ Object { }, "Type": "AWS::IAM::Role", }, + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + "s3:DeleteObject*", + "s3:PutObject*", + "s3:Abort*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "StackRegenerationQueue2F4428B8", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", + "Roles": Array [ + Object { + "Ref": "StackNextEdgeLambdaRole02C429A6", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, "StackNextImageCache169F453D": Object { "Properties": Object { "CachePolicyConfig": Object { "DefaultTTL": 86400, "MaxTTL": 31536000, "MinTTL": 0, - "Name": "StackNextImageCache78CE64D5", + "Name": Object { + "Fn::Join": Array [ + "", + Array [ + "StackNextImageCache78CE64D5-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, "ParametersInCacheKeyAndForwardedToOrigin": Object { "CookiesConfig": Object { "CookieBehavior": "none", @@ -1365,6 +1463,7 @@ Object { }, "StackNextImageLambda2847952D": Object { "DependsOn": Array [ + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", "StackNextEdgeLambdaRole02C429A6", ], "Properties": Object { @@ -1425,7 +1524,7 @@ Object { }, "FunctionVersion": Object { "Fn::GetAtt": Array [ - "StackNextImageLambdaCurrentVersionDEC920BCbbf2bd116d8722fe4e3be87fa33cb530", + "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", "Version", ], }, @@ -1433,7 +1532,7 @@ Object { }, "Type": "AWS::Lambda::Alias", }, - "StackNextImageLambdaCurrentVersionDEC920BCbbf2bd116d8722fe4e3be87fa33cb530": Object { + "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0": Object { "DeletionPolicy": "Delete", "Properties": Object { "FunctionName": Object { @@ -1451,7 +1550,7 @@ Object { "MaximumRetryAttempts": 1, "Qualifier": Object { "Fn::GetAtt": Array [ - "StackNextImageLambdaCurrentVersionDEC920BCbbf2bd116d8722fe4e3be87fa33cb530", + "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", "Version", ], }, @@ -1508,7 +1607,7 @@ Object { Object { "EventType": "origin-request", "LambdaFunctionARN": Object { - "Ref": "StackNextImageLambdaCurrentVersionDEC920BCbbf2bd116d8722fe4e3be87fa33cb530", + "Ref": "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", }, }, ], @@ -1539,13 +1638,13 @@ Object { "EventType": "origin-request", "IncludeBody": true, "LambdaFunctionARN": Object { - "Ref": "StackNextLambdaCurrentVersion21F01F872bc3e35b6261e19f63c9943962d7ff65", + "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", }, }, Object { "EventType": "origin-response", "LambdaFunctionARN": Object { - "Ref": "StackNextLambdaCurrentVersion21F01F872bc3e35b6261e19f63c9943962d7ff65", + "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", }, }, ], @@ -1615,7 +1714,7 @@ Object { "EventType": "origin-request", "IncludeBody": true, "LambdaFunctionARN": Object { - "Ref": "StackNextApiLambdaCurrentVersion09578A6A82abd7c4731937bb8d06c77c511a0f1f", + "Ref": "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", }, }, ], @@ -1644,13 +1743,13 @@ Object { "EventType": "origin-request", "IncludeBody": true, "LambdaFunctionARN": Object { - "Ref": "StackNextLambdaCurrentVersion21F01F872bc3e35b6261e19f63c9943962d7ff65", + "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", }, }, Object { "EventType": "origin-response", "LambdaFunctionARN": Object { - "Ref": "StackNextLambdaCurrentVersion21F01F872bc3e35b6261e19f63c9943962d7ff65", + "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", }, }, ], @@ -1853,7 +1952,17 @@ Object { "DefaultTTL": 0, "MaxTTL": 31536000, "MinTTL": 0, - "Name": "StackNextLambdaCache86499DCE", + "Name": Object { + "Fn::Join": Array [ + "", + Array [ + "StackNextLambdaCache86499DCE-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, "ParametersInCacheKeyAndForwardedToOrigin": Object { "CookiesConfig": Object { "CookieBehavior": "all", @@ -1871,7 +1980,7 @@ Object { }, "Type": "AWS::CloudFront::CachePolicy", }, - "StackNextLambdaCurrentVersion21F01F872bc3e35b6261e19f63c9943962d7ff65": Object { + "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05": Object { "DeletionPolicy": "Delete", "Properties": Object { "FunctionName": Object { @@ -1888,7 +1997,7 @@ Object { }, "FunctionVersion": Object { "Fn::GetAtt": Array [ - "StackNextLambdaCurrentVersion21F01F872bc3e35b6261e19f63c9943962d7ff65", + "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", "Version", ], }, @@ -1898,6 +2007,7 @@ Object { }, "StackNextLambdaF64DCE99": Object { "DependsOn": Array [ + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", "StackNextEdgeLambdaRole02C429A6", ], "Properties": Object { @@ -1980,7 +2090,17 @@ Object { "DefaultTTL": 2592000, "MaxTTL": 2592000, "MinTTL": 2592000, - "Name": "StackNextStaticsCacheBB90E053", + "Name": Object { + "Fn::Join": Array [ + "", + Array [ + "StackNextStaticsCacheBB90E053-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, "ParametersInCacheKeyAndForwardedToOrigin": Object { "CookiesConfig": Object { "CookieBehavior": "none", @@ -2088,11 +2208,7 @@ Object { ], }, Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - ], + "Action": "s3:GetObject", "Effect": "Allow", "Principal": Object { "CanonicalUser": Object { @@ -2102,35 +2218,23 @@ Object { ], }, }, - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", ], - }, - ], + ], + }, }, Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - ], + "Action": "s3:GetObject", "Effect": "Allow", "Principal": Object { "CanonicalUser": Object { @@ -2140,35 +2244,23 @@ Object { ], }, }, - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", ], - }, - ], + ], + }, }, Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - ], + "Action": "s3:GetObject", "Effect": "Allow", "Principal": Object { "CanonicalUser": Object { @@ -2178,35 +2270,23 @@ Object { ], }, }, - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", ], - }, - ], + ], + }, }, Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - ], + "Action": "s3:GetObject", "Effect": "Allow", "Principal": Object { "CanonicalUser": Object { @@ -2216,82 +2296,196 @@ Object { ], }, }, - "Resource": Array [ - Object { + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", + "StackNextJSDistributionOrigin5S3OriginF7CEDF65", + "S3CanonicalUserId", ], }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", ], - }, - ], + ], + }, }, Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - ], + "Action": "s3:GetObject", "Effect": "Allow", "Principal": Object { "CanonicalUser": Object { "Fn::GetAtt": Array [ - "StackNextJSDistributionOrigin5S3OriginF7CEDF65", + "StackNextJSDistributionOrigin6S3Origin922D99DB", "S3CanonicalUserId", ], }, }, - "Resource": Array [ + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::S3::BucketPolicy", + }, + "StackRegenerationFunctionCAB79AA6": Object { + "DependsOn": Array [ + "StackRegenerationFunctionServiceRoleDefaultPolicyC7FB67BD", + "StackRegenerationFunctionServiceRole15AFC289", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3BucketF4667C02", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3VersionKeyC4818F9D", + }, + ], + }, ], }, Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3VersionKeyC4818F9D", + }, + ], + }, ], }, ], + ], + }, + }, + "Handler": "index.handler", + "Role": Object { + "Fn::GetAtt": Array [ + "StackRegenerationFunctionServiceRole15AFC289", + "Arn", + ], + }, + "Runtime": "nodejs14.x", + "Timeout": 60, + }, + "Type": "AWS::Lambda::Function", + }, + "StackRegenerationFunctionServiceRole15AFC289": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "lambda.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "ManagedPolicyArns": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + ], + ], + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "StackRegenerationFunctionServiceRoleDefaultPolicyC7FB67BD": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:ReceiveMessage", + "sqs:ChangeMessageVisibility", + "sqs:GetQueueUrl", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "StackRegenerationQueue2F4428B8", + "Arn", + ], + }, }, Object { "Action": Array [ "s3:GetObject*", "s3:GetBucket*", "s3:List*", + "s3:DeleteObject*", + "s3:PutObject*", + "s3:Abort*", ], "Effect": "Allow", - "Principal": Object { - "CanonicalUser": Object { - "Fn::GetAtt": Array [ - "StackNextJSDistributionOrigin6S3Origin922D99DB", - "S3CanonicalUserId", - ], - }, - }, "Resource": Array [ Object { "Fn::GetAtt": Array [ @@ -2318,8 +2512,47 @@ Object { ], "Version": "2012-10-17", }, + "PolicyName": "StackRegenerationFunctionServiceRoleDefaultPolicyC7FB67BD", + "Roles": Array [ + Object { + "Ref": "StackRegenerationFunctionServiceRole15AFC289", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "StackRegenerationFunctionSqsEventSourceStackRegenerationQueueA0F3D7FC227F9DB2": Object { + "Properties": Object { + "EventSourceArn": Object { + "Fn::GetAtt": Array [ + "StackRegenerationQueue2F4428B8", + "Arn", + ], + }, + "FunctionName": Object { + "Ref": "StackRegenerationFunctionCAB79AA6", + }, }, - "Type": "AWS::S3::BucketPolicy", + "Type": "AWS::Lambda::EventSourceMapping", + }, + "StackRegenerationQueue2F4428B8": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "FifoQueue": true, + "QueueName": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + ".fifo", + ], + ], + }, + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", }, }, } diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/regeneration-lambda/index.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/regeneration-lambda/index.js new file mode 100644 index 0000000000..a4da533215 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/regeneration-lambda/index.js @@ -0,0 +1,3 @@ +exports.handler = async () => ({ + statusCode: 200 +}); From ef7d03b872ffde3d6b3da24b0fa77c31537ce38d Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 2 May 2021 12:19:27 +0100 Subject: [PATCH 09/48] remove sqs and use lambda async invocation --- .../next-app/pages/revalidated-ssg-page.tsx | 27 ++++ packages/libs/lambda-at-edge/package.json | 2 +- packages/libs/lambda-at-edge/src/build.ts | 6 +- .../lambda-at-edge/src/default-handler.ts | 1 - .../src/lib/triggerStaticRegeneration.ts | 69 ++++------ .../src/regeneration-handler.ts | 123 ++++++++---------- packages/libs/lambda-at-edge/src/types.ts | 7 + packages/libs/lambda-at-edge/yarn.lock | 48 +++---- .../nextjs-cdk-construct/src/index.ts | 23 +--- 9 files changed, 137 insertions(+), 169 deletions(-) create mode 100644 packages/e2e-tests/next-app/pages/revalidated-ssg-page.tsx diff --git a/packages/e2e-tests/next-app/pages/revalidated-ssg-page.tsx b/packages/e2e-tests/next-app/pages/revalidated-ssg-page.tsx new file mode 100644 index 0000000000..e8cd1c6732 --- /dev/null +++ b/packages/e2e-tests/next-app/pages/revalidated-ssg-page.tsx @@ -0,0 +1,27 @@ +import React from "react"; +import { GetStaticPropsResult } from "next"; + +type SSGPageProps = { + date: string; +}; + +export default function RevalidatedSSGPage(props: SSGPageProps): JSX.Element { + return ( + +
+

{`The date is ${props.date}!`}

+
+
+ ); +} + +export async function getStaticProps(): Promise< + GetStaticPropsResult +> { + return { + revalidate: 10, + props: { + date: new Date().toLocaleString() + } + }; +} diff --git a/packages/libs/lambda-at-edge/package.json b/packages/libs/lambda-at-edge/package.json index 47f1d6ff33..377d0b780e 100644 --- a/packages/libs/lambda-at-edge/package.json +++ b/packages/libs/lambda-at-edge/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@aws-sdk/client-s3": "1.0.0-rc.3", - "@aws-sdk/client-sqs": "1.0.0-rc.3", + "@aws-sdk/client-lambda": "1.0.0-rc.3", "@hapi/accept": "5.0.1", "@vercel/nft": "^0.9.3", "cookie": "^0.4.1", diff --git a/packages/libs/lambda-at-edge/src/build.ts b/packages/libs/lambda-at-edge/src/build.ts index 4542d795e3..9879a4c7ab 100644 --- a/packages/libs/lambda-at-edge/src/build.ts +++ b/packages/libs/lambda-at-edge/src/build.ts @@ -430,9 +430,13 @@ class Builder { ): Promise { await Promise.all([ this.copyTraces(buildManifest), + fse.writeJson( + join(this.outputDir, REGENERATION_LAMBDA_CODE_DIR, "manifest.json"), + buildManifest + ), this.processAndCopyHandler( "regeneration-handler", - join(this.outputDir, REGENERATION_LAMBDA_CODE_DIR, "index.js"), + join(this.outputDir, REGENERATION_LAMBDA_CODE_DIR), !!this.buildOptions.minifyHandlers ), fse.copy( diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index 4eeb20fa72..745aa630f5 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -639,7 +639,6 @@ const handleOriginResponse = async ({ if (staticRegenerationResponse.secondsRemainingUntilRevalidation === 0) { await triggerStaticRegeneration({ basePath, - manifest, request, response }); diff --git a/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts b/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts index bdd3cce93e..bd7f28b739 100644 --- a/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts +++ b/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts @@ -1,11 +1,10 @@ import { s3BucketNameFromEventRequest } from "../s3/s3BucketNameFromEventRequest"; import { buildS3RetryStrategy } from "../s3/s3RetryStrategy"; -import { OriginRequestDefaultHandlerManifest } from "../types"; +import { RegenerationEvent } from "../types"; interface TriggerStaticRegenerationOptions { request: AWSLambda.CloudFrontRequest; response: AWSLambda.CloudFrontResponse; - manifest: OriginRequestDefaultHandlerManifest; basePath: string | undefined; } @@ -15,56 +14,34 @@ export const triggerStaticRegeneration = async ( const { region } = options.request.origin?.s3 || {}; const bucketName = s3BucketNameFromEventRequest(options.request); - const { SQSClient, SendMessageCommand } = await import("@aws-sdk/client-sqs"); - const sqs = new SQSClient({ + if (!bucketName) { + throw new Error("Expected bucket name to be defined"); + } + + if (!region) { + throw new Error("Expected region to be defined"); + } + + const { LambdaClient, InvokeAsyncCommand } = await import( + "@aws-sdk/client-lambda" + ); + const lambda = new LambdaClient({ region, maxAttempts: 3, retryStrategy: await buildS3RetryStrategy() }); - const lastModifiedAt = new Date( - options.response.headers["last-modified"]?.[0].value - ) - .getTime() - .toString(); + const regenerationEvent: RegenerationEvent = { + region, + bucketName, + cloudFrontEventRequest: options.request, + basePath: options.basePath + }; - await sqs.send( - new SendMessageCommand({ - QueueUrl: `https://sqs.${region}.amazonaws.com/${bucketName}.fifo`, - MessageBody: options.request.uri, // This is not used, however it is a required property - MessageAttributes: { - BucketRegion: { - DataType: "String", - StringValue: region - }, - BucketName: { - DataType: "String", - StringValue: bucketName - }, - CloudFrontEventRequest: { - DataType: "String", - StringValue: JSON.stringify(options.request) - }, - Manifest: { - DataType: "String", - StringValue: JSON.stringify(options.manifest) - }, - ...(options.basePath - ? { - BasePath: { - DataType: "String", - StringValue: options.basePath - } - } - : {}) - }, - // We only want to trigger the regeneration once for every previous - // update. This will prevent the case where this page is being - // requested again whilst its already started to regenerate. - MessageDeduplicationId: lastModifiedAt, - // Only deduplicate based on the object, i.e. we can generate - // different pages in parallel, just not the same one - MessageGroupId: options.request.uri + await lambda.send( + new InvokeAsyncCommand({ + FunctionName: bucketName, + InvokeArgs: JSON.stringify(regenerationEvent) }) ); }; diff --git a/packages/libs/lambda-at-edge/src/regeneration-handler.ts b/packages/libs/lambda-at-edge/src/regeneration-handler.ts index 3d4b5bd9e8..ccde2889fa 100644 --- a/packages/libs/lambda-at-edge/src/regeneration-handler.ts +++ b/packages/libs/lambda-at-edge/src/regeneration-handler.ts @@ -1,85 +1,64 @@ import lambdaAtEdgeCompat from "@sls-next/next-aws-cloudfront"; -import { OriginRequestDefaultHandlerManifest } from "./types"; +// @ts-ignore +import Manifest from "./manifest.json"; +import { + OriginRequestDefaultHandlerManifest, + RegenerationEvent +} from "./types"; import { s3StorePage } from "./s3/s3StorePage"; import { cleanRequestUriForRouter } from "./lib/cleanRequestUriForRouter"; -export const handler: AWSLambda.SQSHandler = async (event) => { - await Promise.all( - event.Records.map(async (record) => { - const bucketName = record.messageAttributes.BucketName?.stringValue; - const bucketRegion = record.messageAttributes.BucketRegion?.stringValue; - const manifestString = record.messageAttributes.Manifest?.stringValue; - const basePath = record.messageAttributes.BasePath?.stringValue; - const cloudFrontEventRequestString = - record.messageAttributes.CloudFrontEventRequest?.stringValue; - if ( - !bucketName || - !bucketRegion || - !cloudFrontEventRequestString || - !manifestString - ) { - throw new Error( - "Expected BucketName, BucketRegion, CloudFrontEventRequest & EnableHTTPCompression message attributes" - ); - } - const cloudFrontEventRequest: AWSLambda.CloudFrontRequest = JSON.parse( - cloudFrontEventRequestString - ); - const manifest: OriginRequestDefaultHandlerManifest = JSON.parse( - manifestString - ); - - cloudFrontEventRequest.uri = cleanRequestUriForRouter( - cloudFrontEventRequest.uri, - manifest.trailingSlash - ); - const { req, res } = lambdaAtEdgeCompat( - { request: cloudFrontEventRequest }, - { enableHTTPCompression: manifest.enableHTTPCompression } - ); - - const baseKey = cloudFrontEventRequest.uri - .replace(/\.(json|html)$/, "") - .replace(/^_next\/data\/[^\/]*\//, ""); +export const handler: AWSLambda.Handler = async (event) => { + const manifest: OriginRequestDefaultHandlerManifest = Manifest; + event.cloudFrontEventRequest.uri = cleanRequestUriForRouter( + event.cloudFrontEventRequest.uri, + manifest.trailingSlash + ); + const { req, res } = lambdaAtEdgeCompat( + { request: event.cloudFrontEventRequest }, + { enableHTTPCompression: manifest.enableHTTPCompression } + ); - let srcRoute = manifest.pages.ssg.nonDynamic[baseKey]?.srcRoute; - if (!srcRoute) { - const matchedDynamicRoute = Object.entries( - manifest.pages.ssg.dynamic - ).find(([, dynamicSsgRoute]) => { - return new RegExp(dynamicSsgRoute.routeRegex).test( - cloudFrontEventRequest.uri - ); - }); + const baseKey = event.cloudFrontEventRequest.uri + .replace(/\.(json|html)$/, "") + .replace(/^_next\/data\/[^\/]*\//, ""); - if (matchedDynamicRoute) { - [srcRoute] = matchedDynamicRoute; - } + let srcRoute = manifest.pages.ssg.nonDynamic[baseKey]?.srcRoute; + if (!srcRoute) { + const matchedDynamicRoute = Object.entries(manifest.pages.ssg.dynamic).find( + ([, dynamicSsgRoute]) => { + return new RegExp(dynamicSsgRoute.routeRegex).test( + event.cloudFrontEventRequest.uri + ); } + ); - // We probably should not get to this point without `srcRoute` being - // defined - const srcPath = srcRoute || baseKey; + if (matchedDynamicRoute) { + [srcRoute] = matchedDynamicRoute; + } + } - // eslint-disable-next-line @typescript-eslint/no-var-requires - const page = require(`./pages${srcPath}`); + // We probably should not get to this point without `srcRoute` being + // defined + const srcPath = srcRoute || baseKey; - const { renderOpts, html } = await page.renderReqToHTML( - req, - res, - "passthrough" - ); + // eslint-disable-next-line @typescript-eslint/no-var-requires + const page = require(`./pages${srcPath}`); - await s3StorePage({ - html, - uri: cloudFrontEventRequest.uri, - basePath, - bucketName: bucketName || "", - buildId: manifest.buildId, - pageData: renderOpts.pageData, - region: cloudFrontEventRequest.origin?.s3?.region || "", - revalidate: renderOpts.revalidate - }); - }) + const { renderOpts, html } = await page.renderReqToHTML( + req, + res, + "passthrough" ); + + await s3StorePage({ + html, + uri: event.cloudFrontEventRequest.uri, + basePath: event.basePath, + bucketName: event.bucketName, + buildId: manifest.buildId, + pageData: renderOpts.pageData, + region: event.cloudFrontEventRequest.origin?.s3?.region || "", + revalidate: renderOpts.revalidate + }); }; diff --git a/packages/libs/lambda-at-edge/src/types.ts b/packages/libs/lambda-at-edge/src/types.ts index 7d64949ddb..5513fa3784 100644 --- a/packages/libs/lambda-at-edge/src/types.ts +++ b/packages/libs/lambda-at-edge/src/types.ts @@ -108,6 +108,13 @@ export type OriginResponseEvent = { ]; }; +export interface RegenerationEvent { + basePath: string | undefined; + region: string; + bucketName: string; + cloudFrontEventRequest: AWSLambda.CloudFrontRequest; +} + export type PreRenderedManifest = { version: 2; routes: { diff --git a/packages/libs/lambda-at-edge/yarn.lock b/packages/libs/lambda-at-edge/yarn.lock index b546b22093..268df19be1 100644 --- a/packages/libs/lambda-at-edge/yarn.lock +++ b/packages/libs/lambda-at-edge/yarn.lock @@ -68,36 +68,24 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/client-s3@1.0.0-rc.3": +"@aws-sdk/client-lambda@1.0.0-rc.3": version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-1.0.0-rc.3.tgz#88ba3fe10308ffc0fe9bdd334071130ccd43eae7" - integrity sha512-/IYV2zoGo8SIId0VsJ/lSI6hkP0nSNvibjQtTIOu/E0edoeHtotXtuJ3SLpsuwGGm8mZtMuq1R6W1q0G/o/DrA== + resolved "https://registry.yarnpkg.com/@aws-sdk/client-lambda/-/client-lambda-1.0.0-rc.3.tgz#b23568f86a29933bbaa2e4d1a10774eec0f9d72e" + integrity sha512-8x0y/SUAGrfHmtQ+4Z8foYyl6fzxGpVHEPycOyYqkSj8GrYSDk3Q0AMWIzszmM/+7kdMAndloGpz2/Xci/q+tg== dependencies: "@aws-crypto/sha256-browser" "^1.0.0" "@aws-crypto/sha256-js" "^1.0.0" "@aws-sdk/config-resolver" "1.0.0-rc.3" "@aws-sdk/credential-provider-node" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-browser" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-config-resolver" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-node" "1.0.0-rc.3" "@aws-sdk/fetch-http-handler" "1.0.0-rc.3" - "@aws-sdk/hash-blob-browser" "1.0.0-rc.3" "@aws-sdk/hash-node" "1.0.0-rc.3" - "@aws-sdk/hash-stream-node" "1.0.0-rc.3" "@aws-sdk/invalid-dependency" "1.0.0-rc.3" - "@aws-sdk/md5-js" "1.0.0-rc.3" - "@aws-sdk/middleware-apply-body-checksum" "1.0.0-rc.3" - "@aws-sdk/middleware-bucket-endpoint" "1.0.0-rc.3" "@aws-sdk/middleware-content-length" "1.0.0-rc.3" - "@aws-sdk/middleware-expect-continue" "1.0.0-rc.3" "@aws-sdk/middleware-host-header" "1.0.0-rc.3" - "@aws-sdk/middleware-location-constraint" "1.0.0-rc.3" "@aws-sdk/middleware-logger" "1.0.0-rc.3" "@aws-sdk/middleware-retry" "1.0.0-rc.3" - "@aws-sdk/middleware-sdk-s3" "1.0.0-rc.3" "@aws-sdk/middleware-serde" "1.0.0-rc.3" "@aws-sdk/middleware-signing" "1.0.0-rc.3" - "@aws-sdk/middleware-ssec" "1.0.0-rc.3" "@aws-sdk/middleware-stack" "1.0.0-rc.3" "@aws-sdk/middleware-user-agent" "1.0.0-rc.3" "@aws-sdk/node-config-provider" "1.0.0-rc.3" @@ -115,30 +103,38 @@ "@aws-sdk/util-user-agent-node" "1.0.0-rc.3" "@aws-sdk/util-utf8-browser" "1.0.0-rc.3" "@aws-sdk/util-utf8-node" "1.0.0-rc.3" - "@aws-sdk/xml-builder" "1.0.0-rc.3" - fast-xml-parser "^3.16.0" tslib "^2.0.0" -"@aws-sdk/client-sqs@1.0.0-rc.3": +"@aws-sdk/client-s3@1.0.0-rc.3": version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sqs/-/client-sqs-1.0.0-rc.3.tgz#aca468b52f77db00ffdf27d825022124d802da4d" - integrity sha512-qEXJ++GJ46sPboyhRUJIv03buEvmXT5lLgjUdWjZKwzHaU34GPH0B7xxlLOUWmA+JvyPaK91ESjGqLc/82GLaA== + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-1.0.0-rc.3.tgz#88ba3fe10308ffc0fe9bdd334071130ccd43eae7" + integrity sha512-/IYV2zoGo8SIId0VsJ/lSI6hkP0nSNvibjQtTIOu/E0edoeHtotXtuJ3SLpsuwGGm8mZtMuq1R6W1q0G/o/DrA== dependencies: "@aws-crypto/sha256-browser" "^1.0.0" "@aws-crypto/sha256-js" "^1.0.0" "@aws-sdk/config-resolver" "1.0.0-rc.3" "@aws-sdk/credential-provider-node" "1.0.0-rc.3" + "@aws-sdk/eventstream-serde-browser" "1.0.0-rc.3" + "@aws-sdk/eventstream-serde-config-resolver" "1.0.0-rc.3" + "@aws-sdk/eventstream-serde-node" "1.0.0-rc.3" "@aws-sdk/fetch-http-handler" "1.0.0-rc.3" + "@aws-sdk/hash-blob-browser" "1.0.0-rc.3" "@aws-sdk/hash-node" "1.0.0-rc.3" + "@aws-sdk/hash-stream-node" "1.0.0-rc.3" "@aws-sdk/invalid-dependency" "1.0.0-rc.3" "@aws-sdk/md5-js" "1.0.0-rc.3" + "@aws-sdk/middleware-apply-body-checksum" "1.0.0-rc.3" + "@aws-sdk/middleware-bucket-endpoint" "1.0.0-rc.3" "@aws-sdk/middleware-content-length" "1.0.0-rc.3" + "@aws-sdk/middleware-expect-continue" "1.0.0-rc.3" "@aws-sdk/middleware-host-header" "1.0.0-rc.3" + "@aws-sdk/middleware-location-constraint" "1.0.0-rc.3" "@aws-sdk/middleware-logger" "1.0.0-rc.3" "@aws-sdk/middleware-retry" "1.0.0-rc.3" - "@aws-sdk/middleware-sdk-sqs" "1.0.0-rc.3" + "@aws-sdk/middleware-sdk-s3" "1.0.0-rc.3" "@aws-sdk/middleware-serde" "1.0.0-rc.3" "@aws-sdk/middleware-signing" "1.0.0-rc.3" + "@aws-sdk/middleware-ssec" "1.0.0-rc.3" "@aws-sdk/middleware-stack" "1.0.0-rc.3" "@aws-sdk/middleware-user-agent" "1.0.0-rc.3" "@aws-sdk/node-config-provider" "1.0.0-rc.3" @@ -156,6 +152,7 @@ "@aws-sdk/util-user-agent-node" "1.0.0-rc.3" "@aws-sdk/util-utf8-browser" "1.0.0-rc.3" "@aws-sdk/util-utf8-node" "1.0.0-rc.3" + "@aws-sdk/xml-builder" "1.0.0-rc.3" fast-xml-parser "^3.16.0" tslib "^2.0.0" @@ -422,15 +419,6 @@ "@aws-sdk/util-arn-parser" "1.0.0-rc.3" tslib "^1.8.0" -"@aws-sdk/middleware-sdk-sqs@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-1.0.0-rc.3.tgz#5f02a97b0f34a4848ef8769e1e21d09d178d3cd8" - integrity sha512-d3kL0IDQtXf/kP3RXMH6+AsjYS69tPC+9r9O28ri/qPDQFUdeHVFxybneAA/5JWikDM6tZ4htgkm+Tm4PUm5hA== - dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-hex-encoding" "1.0.0-rc.3" - tslib "^1.8.0" - "@aws-sdk/middleware-serde@1.0.0-rc.3": version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-1.0.0-rc.3.tgz#81307310c51d50ec8425bee9fb08d35a7458dcfc" diff --git a/packages/serverless-components/nextjs-cdk-construct/src/index.ts b/packages/serverless-components/nextjs-cdk-construct/src/index.ts index 3a9e4eeb3b..b0ab30d8cd 100644 --- a/packages/serverless-components/nextjs-cdk-construct/src/index.ts +++ b/packages/serverless-components/nextjs-cdk-construct/src/index.ts @@ -6,8 +6,6 @@ import * as s3Deploy from "@aws-cdk/aws-s3-deployment"; import * as cloudfront from "@aws-cdk/aws-cloudfront"; import * as origins from "@aws-cdk/aws-cloudfront-origins"; import { ARecord, RecordTarget } from "@aws-cdk/aws-route53"; -import * as sqs from "@aws-cdk/aws-sqs"; -import * as lambdaEventSources from "@aws-cdk/aws-lambda-event-sources"; import { OriginRequestImageHandlerManifest, OriginRequestApiHandlerManifest, @@ -62,8 +60,6 @@ export class NextJSLambdaEdge extends cdk.Construct { public aRecord?: ARecord; - public regenerationQueue: sqs.Queue; - public regenerationFunction: lambda.Function; constructor(scope: cdk.Construct, id: string, private props: Props) { @@ -84,19 +80,14 @@ export class NextJSLambdaEdge extends cdk.Construct { ...(props.s3Props || {}) }); - this.regenerationQueue = new sqs.Queue(this, "RegenerationQueue", { - // We call the queue the same name as the bucket so that we can easily - // reference it from within the lambda@edge, given we can't use env vars - // in a lambda@edge - queueName: `${this.bucket.bucketName}.fifo`, - fifo: true, - removalPolicy: cdk.RemovalPolicy.DESTROY - }); - this.regenerationFunction = new lambda.Function( this, "RegenerationFunction", { + // We call the lambda the same name as the bucket so that we can easily + // reference it from within the lambda@edge, given we can't use env vars + // in a lambda@edge + functionName: this.bucket.bucketName, handler: "index.handler", runtime: lambda.Runtime.NODEJS_14_X, timeout: Duration.minutes(1), @@ -106,10 +97,6 @@ export class NextJSLambdaEdge extends cdk.Construct { } ); - this.regenerationFunction.addEventSource( - new lambdaEventSources.SqsEventSource(this.regenerationQueue) - ); - this.edgeLambdaRole = new Role(this, "NextEdgeLambdaRole", { assumedBy: new CompositePrincipal( new ServicePrincipal("lambda.amazonaws.com"), @@ -145,7 +132,7 @@ export class NextJSLambdaEdge extends cdk.Construct { this.bucket.grantReadWrite(this.defaultNextLambda); this.bucket.grantReadWrite(this.regenerationFunction); - this.regenerationQueue.grantSendMessages(this.defaultNextLambda); + this.regenerationFunction.grantInvoke(this.defaultNextLambda); this.defaultNextLambda.currentVersion.addAlias("live"); const apis = this.apiBuildManifest?.apis; From f4548b317fa371b43bd4c98b12f6335b81dbf746 Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 2 May 2021 15:57:36 +0100 Subject: [PATCH 10/48] adds e2e test and serverless infrastructure --- .../next-app-dynamic-routes/package.json | 2 +- .../package.json | 2 +- .../next-app-with-base-path/package.json | 2 +- .../package.json | 2 +- .../next-app-with-locales/package.json | 2 +- .../next-app-with-trailing-slash/package.json | 2 +- packages/e2e-tests/next-app/cypress.json | 1 - .../cypress/integration/redirects.test.ts | 2 +- .../integration/static-regeneration.test.ts | 46 ++++ packages/e2e-tests/next-app/package.json | 2 +- .../next-app/pages/revalidated-ssg-page.tsx | 4 +- packages/e2e-tests/next-app/yarn.lock | 202 +++++++++-------- .../prev-next-app-dynamic-routes/package.json | 2 +- .../prev-next-app-with-base-path/package.json | 2 +- .../package.json | 2 +- packages/e2e-tests/prev-next-app/package.json | 2 +- .../test-utils/cypress/custom-commands.ts | 10 +- packages/e2e-tests/test-utils/package.json | 2 +- packages/e2e-tests/test-utils/yarn.lock | 206 ++++++++++-------- .../nextjs-component/src/component.ts | 51 ++++- .../nextjs-component/src/constants.ts | 2 + .../nextjs-component/types.d.ts | 34 ++- 22 files changed, 373 insertions(+), 209 deletions(-) create mode 100644 packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts diff --git a/packages/e2e-tests/next-app-dynamic-routes/package.json b/packages/e2e-tests/next-app-dynamic-routes/package.json index e9916b5319..c3e6149080 100644 --- a/packages/e2e-tests/next-app-dynamic-routes/package.json +++ b/packages/e2e-tests/next-app-dynamic-routes/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/next-app-using-serverless-trace/package.json b/packages/e2e-tests/next-app-using-serverless-trace/package.json index ef6d5e8abb..ca218202a4 100644 --- a/packages/e2e-tests/next-app-using-serverless-trace/package.json +++ b/packages/e2e-tests/next-app-using-serverless-trace/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/next-app-with-base-path/package.json b/packages/e2e-tests/next-app-with-base-path/package.json index e8925425c9..69bc46fdfa 100644 --- a/packages/e2e-tests/next-app-with-base-path/package.json +++ b/packages/e2e-tests/next-app-with-base-path/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/next-app-with-locales-using-serverless-trace/package.json b/packages/e2e-tests/next-app-with-locales-using-serverless-trace/package.json index 678bcab308..0db36448dd 100644 --- a/packages/e2e-tests/next-app-with-locales-using-serverless-trace/package.json +++ b/packages/e2e-tests/next-app-with-locales-using-serverless-trace/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/next-app-with-locales/package.json b/packages/e2e-tests/next-app-with-locales/package.json index 4a8118f6d6..84004f83b9 100644 --- a/packages/e2e-tests/next-app-with-locales/package.json +++ b/packages/e2e-tests/next-app-with-locales/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/next-app-with-trailing-slash/package.json b/packages/e2e-tests/next-app-with-trailing-slash/package.json index 11056b9923..6212a8884b 100644 --- a/packages/e2e-tests/next-app-with-trailing-slash/package.json +++ b/packages/e2e-tests/next-app-with-trailing-slash/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/next-app/cypress.json b/packages/e2e-tests/next-app/cypress.json index aeb3c3152b..f1fc07f07e 100644 --- a/packages/e2e-tests/next-app/cypress.json +++ b/packages/e2e-tests/next-app/cypress.json @@ -3,7 +3,6 @@ "supportFile": "cypress/support/index.ts", "responseTimeout": 15000, "requestTimeout": 15000, - "experimentalNetworkStubbing": true, "experimentalFetchPolyfill": true, "retries": 4 } diff --git a/packages/e2e-tests/next-app/cypress/integration/redirects.test.ts b/packages/e2e-tests/next-app/cypress/integration/redirects.test.ts index f3f4544c77..01c683ee63 100644 --- a/packages/e2e-tests/next-app/cypress/integration/redirects.test.ts +++ b/packages/e2e-tests/next-app/cypress/integration/redirects.test.ts @@ -42,7 +42,7 @@ describe("Redirects Tests", () => { { path: "//example.com/", expectedPath: "/example.com", - expectedStatus: 404 + expectedStatus: 308 } ].forEach(({ path, expectedPath, expectedStatus }) => { it(`does not redirect page ${path}`, () => { diff --git a/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts b/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts new file mode 100644 index 0000000000..d4d1515048 --- /dev/null +++ b/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts @@ -0,0 +1,46 @@ +describe("ISR Tests", () => { + before(() => { + cy.ensureAllRoutesNotErrored(); + }); + + // We don't want this test to retry as the cache will not be expired between + // runs + describe("SSG page", { retries: 0 }, () => { + it(`serves the cached re-rendered page after 2 reloads`, () => { + // The initial load will have expired in the cache + cy.ensureRouteNotCached("/revalidated-ssg-page"); + cy.visit("/revalidated-ssg-page"); + cy.location("pathname").should("eq", "/revalidated-ssg-page"); + + cy.get("[data-cy=date-text]") + .invoke("text") + .then((text1) => { + // When we reload again the page still should not be cached as this + // should be the first time its being served from the origin + cy.ensureRouteNotCached("/revalidated-ssg-page"); + cy.reload(); + cy.get("[data-cy=date-text]") + .invoke("text") + .then((text2) => { + // Check that the date text has changed since the initial page + // load + expect(text1).not.to.be.eq(text2); + // The new date should be greater than the original + expect(new Date(text2).getTime()).to.be.greaterThan( + new Date(text1).getTime() + ); + // Make sure the next load is cached + cy.ensureRouteCached("/revalidated-ssg-page"); + // Be sure that the regeneration has run and uploaded the file + cy.wait(2000); + cy.reload(); + }); + }); + + // Wait for the cache to expire after the 10s + cy.wait(8000); + cy.ensureRouteNotCached("/revalidated-ssg-page"); + cy.reload(); + }); + }); +}); diff --git a/packages/e2e-tests/next-app/package.json b/packages/e2e-tests/next-app/package.json index 1870f02123..3e13a67826 100644 --- a/packages/e2e-tests/next-app/package.json +++ b/packages/e2e-tests/next-app/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/next-app/pages/revalidated-ssg-page.tsx b/packages/e2e-tests/next-app/pages/revalidated-ssg-page.tsx index e8cd1c6732..a493718c90 100644 --- a/packages/e2e-tests/next-app/pages/revalidated-ssg-page.tsx +++ b/packages/e2e-tests/next-app/pages/revalidated-ssg-page.tsx @@ -9,7 +9,7 @@ export default function RevalidatedSSGPage(props: SSGPageProps): JSX.Element { return (
-

{`The date is ${props.date}!`}

+

{props.date}

); @@ -21,7 +21,7 @@ export async function getStaticProps(): Promise< return { revalidate: 10, props: { - date: new Date().toLocaleString() + date: new Date().toJSON() } }; } diff --git a/packages/e2e-tests/next-app/yarn.lock b/packages/e2e-tests/next-app/yarn.lock index f3565cd8dd..560b6214e6 100644 --- a/packages/e2e-tests/next-app/yarn.lock +++ b/packages/e2e-tests/next-app/yarn.lock @@ -1401,6 +1401,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.43" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.43.tgz#26bcbb0595b305400e8ceaf9a127a7f905ae49c8" + integrity sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1414,10 +1419,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@^2.3.2": version "2.3.2" @@ -1762,10 +1767,10 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -2120,7 +2125,7 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2645,10 +2650,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2821,7 +2826,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -2831,11 +2836,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3068,45 +3068,46 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -3144,6 +3145,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3151,6 +3157,13 @@ debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3524,10 +3537,10 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -3567,10 +3580,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3868,15 +3881,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -4015,12 +4028,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -4295,7 +4308,12 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5, ini@~1.3.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== + +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -4368,12 +4386,12 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4455,13 +4473,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-number@^3.0.0: version "3.0.0" @@ -4482,10 +4500,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4924,6 +4942,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -5229,11 +5252,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5251,7 +5269,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -5931,10 +5949,10 @@ prebuild-install@^5.3.5: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -6044,10 +6062,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -6960,6 +6978,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7311,6 +7336,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" diff --git a/packages/e2e-tests/prev-next-app-dynamic-routes/package.json b/packages/e2e-tests/prev-next-app-dynamic-routes/package.json index 551c4e2463..0f4b2128c8 100644 --- a/packages/e2e-tests/prev-next-app-dynamic-routes/package.json +++ b/packages/e2e-tests/prev-next-app-dynamic-routes/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/prev-next-app-with-base-path/package.json b/packages/e2e-tests/prev-next-app-with-base-path/package.json index c78d280bfa..3a3c3500b0 100644 --- a/packages/e2e-tests/prev-next-app-with-base-path/package.json +++ b/packages/e2e-tests/prev-next-app-with-base-path/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/prev-next-app-with-trailing-slash/package.json b/packages/e2e-tests/prev-next-app-with-trailing-slash/package.json index d4a82336e9..cc07c1cdf3 100644 --- a/packages/e2e-tests/prev-next-app-with-trailing-slash/package.json +++ b/packages/e2e-tests/prev-next-app-with-trailing-slash/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/prev-next-app/package.json b/packages/e2e-tests/prev-next-app/package.json index 8690e862e0..196bc3017f 100644 --- a/packages/e2e-tests/prev-next-app/package.json +++ b/packages/e2e-tests/prev-next-app/package.json @@ -36,7 +36,7 @@ "aws-sdk": "2.758.0", "babel-plugin-istanbul": "6.0.0", "babel-plugin-transform-class-properties": "6.24.1", - "cypress": "5.1.0", + "cypress": "7.2.0", "istanbul-lib-coverage": "3.0.0", "nyc": "15.1.0", "ts-node": "9.0.0", diff --git a/packages/e2e-tests/test-utils/cypress/custom-commands.ts b/packages/e2e-tests/test-utils/cypress/custom-commands.ts index 69daabb59d..6d8c854786 100644 --- a/packages/e2e-tests/test-utils/cypress/custom-commands.ts +++ b/packages/e2e-tests/test-utils/cypress/custom-commands.ts @@ -51,7 +51,7 @@ declare namespace Cypress { } Cypress.Commands.add("ensureAllRoutesNotErrored", () => { - cy.route2("**", (req) => { + cy.intercept("**", (req) => { req.reply((res) => { if (res.statusCode >= 400) { throw new Error(`Response has errored with status ${res.statusCode}`); @@ -61,7 +61,7 @@ Cypress.Commands.add("ensureAllRoutesNotErrored", () => { }); Cypress.Commands.add("ensureRouteNotCached", (path: string | RegExp) => { - cy.route2(path, (req) => { + cy.intercept(path, (req) => { req.reply((res) => { if (res.statusCode >= 400) { throw new Error(`Response has errored with status ${res.statusCode}`); @@ -75,7 +75,7 @@ Cypress.Commands.add("ensureRouteNotCached", (path: string | RegExp) => { }); Cypress.Commands.add("ensureRouteCached", (path: string | RegExp) => { - cy.route2(path, (req) => { + cy.intercept(path, (req) => { req.reply((res) => { if (res.statusCode >= 400) { throw new Error(`Response has errored with status ${res.statusCode}`); @@ -89,7 +89,7 @@ Cypress.Commands.add("ensureRouteCached", (path: string | RegExp) => { }); Cypress.Commands.add("ensureRouteNotErrored", (path: string | RegExp) => { - cy.route2(path, (req) => { + cy.intercept(path, (req) => { req.reply((res) => { if (res.statusCode >= 400) { throw new Error(`Response has errored with status ${res.statusCode}`); @@ -101,7 +101,7 @@ Cypress.Commands.add("ensureRouteNotErrored", (path: string | RegExp) => { Cypress.Commands.add( "ensureRouteHasStatusCode", (path: string | RegExp, status: number) => { - cy.route2(path, (req) => { + cy.intercept(path, (req) => { req.reply((res) => { if (res.statusCode !== status) { throw new Error( diff --git a/packages/e2e-tests/test-utils/package.json b/packages/e2e-tests/test-utils/package.json index c48713cd4b..8b1b38af82 100644 --- a/packages/e2e-tests/test-utils/package.json +++ b/packages/e2e-tests/test-utils/package.json @@ -15,7 +15,7 @@ "@types/node-fetch": "2.5.7", "@types/uuid": "8.3.0", "aws-sdk": "2.758.0", - "cypress": "5.1.0", + "cypress": "7.2.0", "ts-node": "9.0.0", "typescript": "4.0.2", "uuid": "8.3.0", diff --git a/packages/e2e-tests/test-utils/yarn.lock b/packages/e2e-tests/test-utils/yarn.lock index c4b07038a2..973aa84409 100644 --- a/packages/e2e-tests/test-utils/yarn.lock +++ b/packages/e2e-tests/test-utils/yarn.lock @@ -71,7 +71,12 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== -"@types/sinonjs__fake-timers@^6.0.1": +"@types/node@^14.14.31": + version "14.14.43" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.43.tgz#26bcbb0595b305400e8ceaf9a127a7f905ae49c8" + integrity sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ== + +"@types/sinonjs__fake-timers@^6.0.2": version "6.0.2" resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== @@ -140,10 +145,10 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== arg@^4.1.0: version "4.1.3" @@ -219,7 +224,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -299,10 +304,10 @@ check-more-types@^2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cli-cursor@^1.0.2: version "1.0.2" @@ -386,10 +391,10 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== common-tags@^1.8.0: version "1.8.0" @@ -425,45 +430,46 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -481,6 +487,18 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -495,13 +513,6 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== - dependencies: - ms "2.1.2" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -547,20 +558,20 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -664,15 +675,15 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs.realpath@^1.0.0: version "1.0.0" @@ -717,12 +728,12 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.4" @@ -796,17 +807,17 @@ inherits@2, inherits@^2.0.3, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -is-ci@^2.0.0: +ini@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -825,13 +836,13 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-observable@^1.1.0: version "1.1.0" @@ -840,10 +851,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-promise@^2.1.0: version "2.2.2" @@ -978,10 +989,10 @@ lodash.once@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@^1.0.2: version "1.0.2" @@ -1057,11 +1068,6 @@ mkdirp@^0.5.4: dependencies: minimist "^1.2.5" -moment@^2.27.0: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -1155,10 +1161,10 @@ pify@^2.2.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pretty-bytes@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" - integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -1198,10 +1204,10 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== readable-stream@^2.2.2: version "2.3.7" @@ -1411,6 +1417,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -1479,6 +1492,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" diff --git a/packages/serverless-components/nextjs-component/src/component.ts b/packages/serverless-components/nextjs-component/src/component.ts index 8b9339fcfc..12888c72ad 100644 --- a/packages/serverless-components/nextjs-component/src/component.ts +++ b/packages/serverless-components/nextjs-component/src/component.ts @@ -19,7 +19,8 @@ import obtainDomains from "./lib/obtainDomains"; import { DEFAULT_LAMBDA_CODE_DIR, API_LAMBDA_CODE_DIR, - IMAGE_LAMBDA_CODE_DIR + IMAGE_LAMBDA_CODE_DIR, + REGENERATION_LAMBDA_CODE_DIR } from "./constants"; import type { BuildOptions, @@ -315,13 +316,15 @@ class NextjsComponent extends Component { cloudFront, defaultEdgeLambda, apiEdgeLambda, - imageEdgeLambda + imageEdgeLambda, + regenerationLambda ] = await Promise.all([ this.load("@serverless/aws-s3"), this.load("@sls-next/aws-cloudfront"), this.load("@sls-next/aws-lambda", "defaultEdgeLambda"), this.load("@sls-next/aws-lambda", "apiEdgeLambda"), - this.load("@sls-next/aws-lambda", "imageEdgeLambda") + this.load("@sls-next/aws-lambda", "imageEdgeLambda"), + this.load("@sls-next/aws-lambda", "regenerationLambda") ]); const bucketOutputs = await bucket({ @@ -462,6 +465,13 @@ class NextjsComponent extends Component { Effect: "Allow", Resource: `arn:aws:s3:::${bucketOutputs.name}/*`, Action: ["s3:GetObject", "s3:PutObject"] + }, + { + Effect: "Allow", + // The regeneration lambda has the same name as the bucket, so this + // policy statement allow invocation of the regeneration lambda + Resource: `arn:aws:lambda:*:*:function:${bucketOutputs.name}`, + Action: ["lambda:InvokeFunction"] } ] }; @@ -474,6 +484,41 @@ class NextjsComponent extends Component { } } + const regenerationLambdaInput: LambdaInput = { + description: inputs.description + ? `${inputs.description} (API)` + : "Next.js Regeneration Lambda", + handler: inputs.handler || "index.handler", + code: join(nextConfigPath, REGENERATION_LAMBDA_CODE_DIR), + role: inputs.roleArn + ? { + arn: inputs.roleArn + } + : { + service: ["lambda.amazonaws.com"], + policy + }, + memory: readLambdaInputValue( + "memory", + "regenerationLambda", + 512 + ) as number, + timeout: readLambdaInputValue( + "timeout", + "regenerationLambda", + 10 + ) as number, + runtime: readLambdaInputValue( + "runtime", + "regenerationLambda", + "nodejs12.x" + ) as string, + name: bucketOutputs.name + }; + + await regenerationLambda(regenerationLambdaInput); + await regenerationLambda.publishVersion(); + if (hasAPIPages) { const apiEdgeLambdaInput: LambdaInput = { description: inputs.description diff --git a/packages/serverless-components/nextjs-component/src/constants.ts b/packages/serverless-components/nextjs-component/src/constants.ts index 84ae570ca0..b494d2fd79 100644 --- a/packages/serverless-components/nextjs-component/src/constants.ts +++ b/packages/serverless-components/nextjs-component/src/constants.ts @@ -1,4 +1,6 @@ export const BUILD_DIR = ".serverless_nextjs"; export const DEFAULT_LAMBDA_CODE_DIR = ".serverless_nextjs/default-lambda"; export const API_LAMBDA_CODE_DIR = ".serverless_nextjs/api-lambda"; +export const REGENERATION_LAMBDA_CODE_DIR = + ".serverless_nextjs/regeneration-lambda"; export const IMAGE_LAMBDA_CODE_DIR = ".serverless_nextjs/image-lambda"; diff --git a/packages/serverless-components/nextjs-component/types.d.ts b/packages/serverless-components/nextjs-component/types.d.ts index 97ad35717b..28fe471ada 100644 --- a/packages/serverless-components/nextjs-component/types.d.ts +++ b/packages/serverless-components/nextjs-component/types.d.ts @@ -11,16 +11,36 @@ export type ServerlessComponentInputs = { publicDirectoryCache?: PublicDirectoryCache; memory?: | number - | { defaultLambda?: number; apiLambda?: number; imageLambda?: number }; + | { + defaultLambda?: number; + apiLambda?: number; + imageLambda?: number; + regenerationLambda?: string; + }; timeout?: | number - | { defaultLambda?: number; apiLambda?: number; imageLambda?: number }; + | { + defaultLambda?: number; + apiLambda?: number; + imageLambda?: number; + regenerationLambda?: string; + }; name?: | string - | { defaultLambda?: string; apiLambda?: string; imageLambda?: string }; + | { + defaultLambda?: string; + apiLambda?: string; + imageLambda?: string; + regenerationLambda?: string; + }; runtime?: | string - | { defaultLambda?: string; apiLambda?: string; imageLambda?: string }; + | { + defaultLambda?: string; + apiLambda?: string; + imageLambda?: string; + regenerationLambda?: string; + }; handler?: string; description?: string; policy?: string; @@ -51,7 +71,11 @@ export type BuildOptions = { baseDir?: string; }; -export type LambdaType = "defaultLambda" | "apiLambda" | "imageLambda"; +export type LambdaType = + | "defaultLambda" + | "apiLambda" + | "imageLambda" + | "regenerationLambda"; export type LambdaInput = { description: string; From b52d7623aee1ee038f43b710976a77d805b7250a Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 2 May 2021 15:59:30 +0100 Subject: [PATCH 11/48] remove uneeded isNaN check --- .../src/lib/getStaticRegenerationResponse.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts index ff06c859dc..1c5eae97e8 100644 --- a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts +++ b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts @@ -58,13 +58,9 @@ const getStaticRegenerationResponse = ( initialRevalidateSeconds as number ); - // isNaN will resolve true on initial load of this page (as the expiresHeader - // won't be set), in which case we trigger a regeneration now - const secondsRemainingUntilRevalidation = isNaN(expiresAt.getTime()) - ? 0 - : // Never return a negative amount of seconds if revalidation could have - // happened sooner - Math.floor(Math.max(0, (expiresAt.getTime() - Date.now()) / 1000)); + const secondsRemainingUntilRevalidation = Math.floor( + Math.max(0, (expiresAt.getTime() - Date.now()) / 1000) + ); return { secondsRemainingUntilRevalidation, From 3dc480fd54459275a282a7c75ec393a09ae45a92 Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 2 May 2021 16:00:42 +0100 Subject: [PATCH 12/48] remove prerenderManifest variable from handler --- packages/libs/lambda-at-edge/src/default-handler.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index 745aa630f5..fc7c7ccc4d 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -260,7 +260,6 @@ export const handler = async ( response = await handleOriginResponse({ event, manifest, - prerenderManifest, routesManifest }); } else { @@ -599,7 +598,6 @@ const handleOriginResponse = async ({ }: { event: OriginResponseEvent; manifest: OriginRequestDefaultHandlerManifest; - prerenderManifest: PrerenderManifestType; routesManifest: RoutesManifest; }) => { const response = event.Records[0].cf.response; From 127698ba09aeb272b4f8b945c7c851a61187e96c Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 2 May 2021 18:40:48 +0100 Subject: [PATCH 13/48] add e2e test for isr page with getStaticPaths --- .../integration/static-regeneration.test.ts | 74 ++++++++++--------- .../pages/revalidated-ssg-pages/[id].tsx | 62 ++++++++++++++++ packages/e2e-tests/next-app/serverless.yml | 2 +- 3 files changed, 104 insertions(+), 34 deletions(-) create mode 100644 packages/e2e-tests/next-app/pages/revalidated-ssg-pages/[id].tsx diff --git a/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts b/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts index d4d1515048..b30a41e7bf 100644 --- a/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts +++ b/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts @@ -6,41 +6,49 @@ describe("ISR Tests", () => { // We don't want this test to retry as the cache will not be expired between // runs describe("SSG page", { retries: 0 }, () => { - it(`serves the cached re-rendered page after 2 reloads`, () => { - // The initial load will have expired in the cache - cy.ensureRouteNotCached("/revalidated-ssg-page"); - cy.visit("/revalidated-ssg-page"); - cy.location("pathname").should("eq", "/revalidated-ssg-page"); + [ + "/revalidated-ssg-page", + // Pre-rendered ISR page + "/revalidated-ssg-pages/101", + // Blocking dynamic generated page + "/revalidated-ssg-pages/105" + ].forEach((path) => { + it(`serves the cached re-rendered page "${path}" after 2 reloads`, () => { + // The initial load will have expired in the cache + cy.ensureRouteNotCached(path); + cy.visit(path); + cy.location("pathname").should("eq", path); - cy.get("[data-cy=date-text]") - .invoke("text") - .then((text1) => { - // When we reload again the page still should not be cached as this - // should be the first time its being served from the origin - cy.ensureRouteNotCached("/revalidated-ssg-page"); - cy.reload(); - cy.get("[data-cy=date-text]") - .invoke("text") - .then((text2) => { - // Check that the date text has changed since the initial page - // load - expect(text1).not.to.be.eq(text2); - // The new date should be greater than the original - expect(new Date(text2).getTime()).to.be.greaterThan( - new Date(text1).getTime() - ); - // Make sure the next load is cached - cy.ensureRouteCached("/revalidated-ssg-page"); - // Be sure that the regeneration has run and uploaded the file - cy.wait(2000); - cy.reload(); - }); - }); + cy.get("[data-cy=date-text]") + .invoke("text") + .then((text1) => { + // When we reload again the page still should not be cached as this + // should be the first time its being served from the origin + cy.ensureRouteNotCached(path); + cy.reload(); + cy.get("[data-cy=date-text]") + .invoke("text") + .then((text2) => { + // Check that the date text has changed since the initial page + // load + expect(text1).not.to.be.eq(text2); + // The new date should be greater than the original + expect(new Date(text2).getTime()).to.be.greaterThan( + new Date(text1).getTime() + ); + // Make sure the next load is cached + cy.ensureRouteCached(path); + // Be sure that the regeneration has run and uploaded the file + cy.wait(2000); + cy.reload(); + }); + }); - // Wait for the cache to expire after the 10s - cy.wait(8000); - cy.ensureRouteNotCached("/revalidated-ssg-page"); - cy.reload(); + // Wait for the cache to expire after the 10s + cy.wait(8000); + cy.ensureRouteNotCached(path); + cy.reload(); + }); }); }); }); diff --git a/packages/e2e-tests/next-app/pages/revalidated-ssg-pages/[id].tsx b/packages/e2e-tests/next-app/pages/revalidated-ssg-pages/[id].tsx new file mode 100644 index 0000000000..a09f3e9d26 --- /dev/null +++ b/packages/e2e-tests/next-app/pages/revalidated-ssg-pages/[id].tsx @@ -0,0 +1,62 @@ +import React from "react"; +import { + GetStaticPaths, + GetStaticPropsContext, + GetStaticPropsResult +} from "next"; + +const sampleUserData = [ + { id: 101, name: "Alice" }, + { id: 102, name: "Bob" }, + { id: 103, name: "Caroline" }, + { id: 104, name: "Dave" } +]; + +const newUser = { id: 105, name: "Henry" }; + +type SSGPageProps = { + date: string; + user?: typeof sampleUserData[number]; +}; + +export default function RevalidatedSSGPage(props: SSGPageProps): JSX.Element { + return ( + +
+

{props.date}

+

{props.user?.id ?? "No user found"}

+
+
+ ); +} + +export const getStaticPaths: GetStaticPaths = async () => { + // To simulate new data becoming available in a data source we only make the + // `newUser` available when rendering on AWS, rather than at build time. + const runningOnAws = !!process.env.AWS_LAMBDA_FUNCTION_NAME; + const paths = sampleUserData.map((user) => ({ + params: { id: user.id.toString() } + })); + + if (runningOnAws) { + paths.push({ params: { id: newUser.id.toString() } }); + } + + return { paths, fallback: "blocking" }; +}; + +export async function getStaticProps( + context: GetStaticPropsContext<{ id: string }> +): Promise> { + const users = [...sampleUserData, newUser]; + const user = users.find( + ({ id }) => context.params?.id.toString() === id.toString() + ); + return { + revalidate: 10, + props: { + date: new Date().toJSON(), + user + } + }; +} diff --git a/packages/e2e-tests/next-app/serverless.yml b/packages/e2e-tests/next-app/serverless.yml index 8bd97da887..acb87c287e 100644 --- a/packages/e2e-tests/next-app/serverless.yml +++ b/packages/e2e-tests/next-app/serverless.yml @@ -1,4 +1,4 @@ -next-app: +my-next-app: component: "../../serverless-components/nextjs-component" inputs: build: From 7eb5bb4a64dffb977dc94b149c5d806eb763e095 Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 2 May 2021 18:41:10 +0100 Subject: [PATCH 14/48] revert serverless change --- packages/e2e-tests/next-app/serverless.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/next-app/serverless.yml b/packages/e2e-tests/next-app/serverless.yml index acb87c287e..8bd97da887 100644 --- a/packages/e2e-tests/next-app/serverless.yml +++ b/packages/e2e-tests/next-app/serverless.yml @@ -1,4 +1,4 @@ -my-next-app: +next-app: component: "../../serverless-components/nextjs-component" inputs: build: From a3eb6359a5e4eee60764576890f29ac7c07a1ae3 Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 4 May 2021 12:59:54 +0100 Subject: [PATCH 15/48] add tests to regeneration handler --- .../src/regeneration-handler.ts | 2 +- .../default-build-manifest.json | 131 +++++++++++++++++ .../regeneration-handler.test.ts | 135 ++++++++++++++++++ 3 files changed, 267 insertions(+), 1 deletion(-) create mode 100644 packages/libs/lambda-at-edge/tests/regeneration-handler/default-build-manifest.json create mode 100644 packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts diff --git a/packages/libs/lambda-at-edge/src/regeneration-handler.ts b/packages/libs/lambda-at-edge/src/regeneration-handler.ts index ccde2889fa..4d0bf06ace 100644 --- a/packages/libs/lambda-at-edge/src/regeneration-handler.ts +++ b/packages/libs/lambda-at-edge/src/regeneration-handler.ts @@ -8,7 +8,7 @@ import { import { s3StorePage } from "./s3/s3StorePage"; import { cleanRequestUriForRouter } from "./lib/cleanRequestUriForRouter"; -export const handler: AWSLambda.Handler = async (event) => { +export const handler = async (event: RegenerationEvent): Promise => { const manifest: OriginRequestDefaultHandlerManifest = Manifest; event.cloudFrontEventRequest.uri = cleanRequestUriForRouter( event.cloudFrontEventRequest.uri, diff --git a/packages/libs/lambda-at-edge/tests/regeneration-handler/default-build-manifest.json b/packages/libs/lambda-at-edge/tests/regeneration-handler/default-build-manifest.json new file mode 100644 index 0000000000..fc86f4017e --- /dev/null +++ b/packages/libs/lambda-at-edge/tests/regeneration-handler/default-build-manifest.json @@ -0,0 +1,131 @@ +{ + "buildId": "build-id", + "pages": { + "ssr": { + "dynamic": { + "/:root": { + "file": "pages/[root].js", + "regex": "^/([^/]+?)(?:/)?$" + }, + "/blog/:id": { + "file": "pages/blog/[id].js", + "regex": "^/blog/([^/]+?)(?:/)?$" + }, + "/customers/:customer": { + "file": "pages/customers/[customer].js", + "regex": "^/customers/([^/]+?)(?:/)?$" + }, + "/customers/:customer/profile": { + "file": "pages/customers/[customer]/profile.js", + "regex": "^/customers/([^/]+?)/profile(?:/)?$" + }, + "/customers/:customer/:post": { + "file": "pages/customers/[customer]/[post].js", + "regex": "^/customers/([^/]+?)/([^/]+?)(?:/)?$" + }, + "/fallback-blocking/:slug": { + "file": "pages/fallback-blocking/[slug].js", + "regex": "^/fallback-blocking/([^/]+?)(?:/)?$" + }, + "/tests/prerender-manifest-fallback/:fallback": { + "file": "pages/tests/prerender-manifest-fallback/[fallback].js", + "regex": "^/tests/prerender-manifest-fallback/([^/]+?)(?:/)?$" + } + }, + "catchAll": { + "/customers/:catchAll*": { + "file": "pages/customers/[...catchAll].js", + "regex": "^/customers(?:/((?:[^/#?]+?)(?:/(?:[^/#?]+?))*))?[/#?]?$" + } + }, + "nonDynamic": { + "/": "pages/index.js", + "/customers": "pages/customers/index.js", + "/customers/new": "pages/customers/new.js", + "/api/getCustomers": "pages/api/getCustomers.js", + "/_error": "pages/_error.js", + "/erroredPage": "pages/erroredPage.js", + "/404": "pages/404.html", + "/preview": "pages/preview.js", + "/async-page": "pages/async-page.js" + } + }, + "html": { + "nonDynamic": { + "/": "pages/index.html", + "/terms": "pages/terms.html" + }, + "dynamic": { + "/users/:user": { + "file": "pages/users/[user].html", + "regex": "^/users/([^/]+?)(?:/)?$" + }, + "/users/:user*": { + "file": "pages/users/[...user].html", + "regex": "^/users(?:/((?:[^/#?]+?)(?:/(?:[^/#?]+?))*))?[/#?]?$" + }, + "/fallback/:slug": { + "file": "pages/fallback/[slug].js", + "regex": "^\\/fallback(?:\\/([^\\/#\\?]+?))[\\/#\\?]?$" + }, + "/:username/:id": { + "file": "pages/[username]/[id].html", + "regex": "^/([^/]+?)/([^/]+?)(?:/)?$" + } + } + }, + "ssg": { + "nonDynamic": { + "/404": { + "initialRevalidateSeconds": false, + "srcRoute": null, + "dataRoute": "/_next/data/test-build-id/404.json" + }, + "/": { + "initialRevalidateSeconds": false, + "srcRoute": null, + "dataRoute": "/_next/data/test-build-id/index.json" + }, + "/tests/prerender-manifest/example-static-page": { + "initialRevalidateSeconds": false, + "srcRoute": "/tests/prerender-manifest/[staticPageName]", + "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest/example-static-page.json" + }, + "/preview": { + "initialRevalidateSeconds": false, + "srcRoute": null, + "dataRoute": "/_next/data/build-id/preview.json" + } + }, + "dynamic": { + "/fallback-blocking/[slug]": { + "routeRegex": "^/fallback-blocking/(?:([^/]+?))/?$", + "dataRoute": "/_next/data/test-build-id/fallback-blocking/[slug].json", + "fallback": null, + "dataRouteRegex": "^/_next/data/test-build-id/fallback-blocking/(?:([^/]+?)).json/?$" + }, + "/tests/prerender-manifest/[staticPageName]": { + "routeRegex": "^/tests/prerender-manifest/(?:([^/]+?))/?$", + "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest/[staticPageName].json", + "fallback": false, + "dataRouteRegex": "^/_next/data/test-build-id/tests/prerender-manifest/(?:([^/]+?)).json/?$" + }, + "/tests/prerender-manifest-fallback/[fallback]": { + "routeRegex": "^/tests/prerender-manifest-fallback/(?:([^/]+?))/?$", + "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest-fallback/[staticPageName].json", + "fallback": "/tests/prerender-manifest-fallback/[fallback].html", + "dataRouteRegex": "^/_next/data/test-build-id/tests/prerender-manifest-fallback/(?:([^/]+?)).json/?$" + } + } + } + }, + "publicFiles": { + "/favicon.ico": "favicon.ico", + "/manifest.json": "manifest.json", + "/file with spaces.json": "file with spaces.json" + }, + "trailingSlash": false, + "domainRedirects": { + "example.com": "https://www.example.com" + } +} diff --git a/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts b/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts new file mode 100644 index 0000000000..e07242c430 --- /dev/null +++ b/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts @@ -0,0 +1,135 @@ +import { createCloudFrontEvent } from "../test-utils"; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +jest.mock("node-fetch", () => require("fetch-mock-jest").sandbox()); + +jest.mock("jsonwebtoken", () => ({ + verify: jest.fn() +})); + +jest.mock( + "../../src/prerender-manifest.json", + () => require("./prerender-manifest.json"), + { + virtual: true + } +); + +jest.mock( + "../../src/images-manifest.json", + () => require("./images-manifest.json"), + { + virtual: true + } +); + +const mockPageRequire = (mockPagePath: string): void => { + jest.mock( + `../../src/${mockPagePath}`, + () => require(`../shared-fixtures/built-artifact/${mockPagePath}`), + { + virtual: true + } + ); +}; + +describe("Regeneration Handler", () => { + let consoleWarnSpy: jest.SpyInstance; + + beforeEach(() => { + consoleWarnSpy = jest.spyOn(console, "error").mockReturnValue(); + + jest.mock( + "../../src/manifest.json", + () => require("./default-build-manifest.json"), + { + virtual: true + } + ); + + jest.mock(`../../src/s3/s3StorePage`); + }); + + afterEach(() => { + consoleWarnSpy.mockRestore(); + }); + + it.each` + basePath + ${"/custom"} + ${undefined} + `( + "should generate correct page when basePath = $basePath", + async ({ basePath }) => { + mockPageRequire("pages/customers/index"); + // eslint-disable-next-line @typescript-eslint/no-var-requires + const regenerationHandler = require("../../src/regeneration-handler") + .handler; + + // eslint-disable-next-line @typescript-eslint/no-var-requires + const s3StorePage = require("../../src/s3/s3StorePage").s3StorePage; + + const event = createCloudFrontEvent({ + uri: "/customers/index.html", + host: "mydistribution.cloudfront.net", + config: { + eventType: "origin-request" + } as AWSLambda.CloudFrontEvent["config"], + querystring: undefined, + requestHeaders: {} + }); + + await regenerationHandler({ + basePath, + bucketName: "my-bucket", + cloudFrontEventRequest: event.Records[0].cf.request, + region: "us-east-1" + }); + + expect(s3StorePage).toBeCalledTimes(1); + expect(s3StorePage).toBeCalledWith( + expect.objectContaining({ + basePath, + uri: "/customers/index", + pageData: { page: "pages/customers/index.js" } + }) + ); + } + ); + + it("should generate correct page when path exists in nonDynamic routes", async () => { + mockPageRequire("pages/preview"); + // eslint-disable-next-line @typescript-eslint/no-var-requires + const regenerationHandler = require("../../src/regeneration-handler") + .handler; + + // eslint-disable-next-line @typescript-eslint/no-var-requires + const s3StorePage = require("../../src/s3/s3StorePage").s3StorePage; + + const event = createCloudFrontEvent({ + uri: "/preview.html", + host: "mydistribution.cloudfront.net", + config: { + eventType: "origin-request" + } as AWSLambda.CloudFrontEvent["config"], + querystring: undefined, + requestHeaders: {} + }); + + await regenerationHandler({ + basePath: undefined, + bucketName: "my-bucket", + cloudFrontEventRequest: event.Records[0].cf.request, + region: "us-east-1" + }); + + expect(s3StorePage).toBeCalledTimes(1); + expect(s3StorePage).toBeCalledWith( + expect.objectContaining({ + basePath: undefined, + uri: "/preview", + pageData: { page: "pages/preview.js" } + }) + ); + }); +}); From 30d0e5113b3fa2f6871aebdb70ae93b450d9c31c Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 4 May 2021 13:26:36 +0100 Subject: [PATCH 16/48] add tests for getStaticRegenerationResponse --- .../src/lib/getStaticRegenerationResponse.ts | 5 +- .../lib/getStaticRegenerationResponse.test.ts | 83 ++++++++++++++ .../lib/initial-revalidate-manifest.json | 107 ++++++++++++++++++ .../lib/no-initial-revalidate-manifest.json | 107 ++++++++++++++++++ 4 files changed, 300 insertions(+), 2 deletions(-) create mode 100644 packages/libs/lambda-at-edge/tests/lib/getStaticRegenerationResponse.test.ts create mode 100644 packages/libs/lambda-at-edge/tests/lib/initial-revalidate-manifest.json create mode 100644 packages/libs/lambda-at-edge/tests/lib/no-initial-revalidate-manifest.json diff --git a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts index 1c5eae97e8..c748fa8d2d 100644 --- a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts +++ b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts @@ -1,4 +1,5 @@ import { OriginRequestDefaultHandlerManifest } from "../types"; +import { cleanRequestUriForRouter } from "./cleanRequestUriForRouter"; interface StaticRegenerationResponseOptions { // URI of the origin object @@ -34,7 +35,7 @@ const getStaticRegenerationResponse = ( ): StaticRegenerationResponseValue | false => { const initialRevalidateSeconds = options.manifest.pages.ssg.nonDynamic?.[ - options.requestedOriginUri.replace(".html", "") + cleanRequestUriForRouter(options.requestedOriginUri) ]?.initialRevalidateSeconds; // ISR pages that were either previously regenerated or generated @@ -58,7 +59,7 @@ const getStaticRegenerationResponse = ( initialRevalidateSeconds as number ); - const secondsRemainingUntilRevalidation = Math.floor( + const secondsRemainingUntilRevalidation = Math.ceil( Math.max(0, (expiresAt.getTime() - Date.now()) / 1000) ); diff --git a/packages/libs/lambda-at-edge/tests/lib/getStaticRegenerationResponse.test.ts b/packages/libs/lambda-at-edge/tests/lib/getStaticRegenerationResponse.test.ts new file mode 100644 index 0000000000..73d03b8f0d --- /dev/null +++ b/packages/libs/lambda-at-edge/tests/lib/getStaticRegenerationResponse.test.ts @@ -0,0 +1,83 @@ +import { OriginRequestDefaultHandlerManifest } from "../../src"; +import { getStaticRegenerationResponse } from "../../src/lib/getStaticRegenerationResponse"; +import initialRevalidateManifest from "./initial-revalidate-manifest.json"; +import noInitialRevalidateManifest from "./no-initial-revalidate-manifest.json"; + +describe("getStaticRegenerationResponse()", () => { + it("should return a cache header at the amount defined as the initialRevalidateSeconds relative to the lastModifiedHeader when no Expires header is passed", async () => { + const date = new Date().toJSON(); + const staticRegeneratedResponse = getStaticRegenerationResponse({ + expiresHeader: "", + lastModifiedHeader: date, + manifest: initialRevalidateManifest as OriginRequestDefaultHandlerManifest, + requestedOriginUri: "/preview.html" + }); + + if (!staticRegeneratedResponse) { + throw new Error("Expected staticRegeneratedResponse to be truthy"); + } + + expect(staticRegeneratedResponse.cacheControl).toBe( + `public, max-age=0, s-maxage=10, must-revalidate` + ); + }); + + it("should return a cache header at for the time relative to now and the expires header", async () => { + const date = new Date(Date.now() + 5000).toJSON(); + const staticRegeneratedResponse = getStaticRegenerationResponse({ + expiresHeader: date, + lastModifiedHeader: "", + manifest: initialRevalidateManifest as OriginRequestDefaultHandlerManifest, + requestedOriginUri: "/preview.html" + }); + + if (!staticRegeneratedResponse) { + throw new Error("Expected staticRegeneratedResponse to be truthy"); + } + + expect(staticRegeneratedResponse.cacheControl).toBe( + `public, max-age=0, s-maxage=5, must-revalidate` + ); + }); + + it("should prioritise using the Expires header if both Expires header and last modified are present", async () => { + const lastModifiedHeader = new Date().toJSON(); + const expiresHeader = new Date(Date.now() + 2000).toJSON(); + const staticRegeneratedResponse = getStaticRegenerationResponse({ + expiresHeader: expiresHeader, + lastModifiedHeader: lastModifiedHeader, + manifest: initialRevalidateManifest as OriginRequestDefaultHandlerManifest, + requestedOriginUri: "/preview.html" + }); + + if (!staticRegeneratedResponse) { + throw new Error("Expected staticRegeneratedResponse to be truthy"); + } + + expect(staticRegeneratedResponse.cacheControl).toBe( + `public, max-age=0, s-maxage=2, must-revalidate` + ); + }); + + it("should return false when no headers are passed", async () => { + const staticRegeneratedResponse = getStaticRegenerationResponse({ + expiresHeader: "", + lastModifiedHeader: "", + manifest: initialRevalidateManifest as OriginRequestDefaultHandlerManifest, + requestedOriginUri: "/preview.html" + }); + + expect(staticRegeneratedResponse).toBe(false); + }); + + it("should return false when no Expires header is passed, and there is no initial validation seconds in manifest", async () => { + const staticRegeneratedResponse = getStaticRegenerationResponse({ + expiresHeader: "", + lastModifiedHeader: new Date().toJSON(), + manifest: noInitialRevalidateManifest as OriginRequestDefaultHandlerManifest, + requestedOriginUri: "/preview.html" + }); + + expect(staticRegeneratedResponse).toBe(false); + }); +}); diff --git a/packages/libs/lambda-at-edge/tests/lib/initial-revalidate-manifest.json b/packages/libs/lambda-at-edge/tests/lib/initial-revalidate-manifest.json new file mode 100644 index 0000000000..62eaf0360a --- /dev/null +++ b/packages/libs/lambda-at-edge/tests/lib/initial-revalidate-manifest.json @@ -0,0 +1,107 @@ +{ + "buildId": "build-id2", + "logLambdaExecutionTimes": false, + "enableHTTPCompression": false, + "pages": { + "ssr": { + "dynamic": { + "/:root": { + "file": "pages/[root].js", + "regex": "^/([^/]+?)(?:/)?$" + }, + "/blog/:id": { + "file": "pages/blog/[id].js", + "regex": "^/blog/([^/]+?)(?:/)?$" + }, + "/customers/:customer": { + "file": "pages/customers/[customer].js", + "regex": "^/customers/([^/]+?)(?:/)?$" + }, + "/customers/:customer/profile": { + "file": "pages/customers/[customer]/profile.js", + "regex": "^/customers/([^/]+?)/profile(?:/)?$" + }, + "/customers/:customer/:post": { + "file": "pages/customers/[customer]/[post].js", + "regex": "^/customers/([^/]+?)/([^/]+?)(?:/)?$" + } + }, + "catchAll": { + "/customers/:catchAll*": { + "file": "pages/customers/[...catchAll].js", + "regex": "^/customers(?:/((?:[^/#?]+?)(?:/(?:[^/#?]+?))*))?[/#?]?$" + } + }, + "nonDynamic": { + "/": "pages/index.js", + "/customers": "pages/customers/index.js", + "/customers/new": "pages/customers/new.js", + "/api/getCustomers": "pages/api/getCustomers.js", + "/_error": "pages/_error.js", + "/404": "pages/404.html" + } + }, + "html": { + "nonDynamic": { + "/": "pages/index.html", + "/terms": "pages/terms.html", + "/404": "pages/404.html" + }, + "dynamic": { + "/users/:user": { + "file": "pages/users/[user].html", + "regex": "^/users/([^/]+?)(?:/)?$" + }, + "/users/:user*": { + "file": "pages/users/[...user].html", + "regex": "^/users(?:/((?:[^/#?]+?)(?:/(?:[^/#?]+?))*))?[/#?]?$" + }, + "/:username/:id": { + "file": "pages/[username]/[id].html", + "regex": "^/([^/]+?)/([^/]+?)(?:/)?$" + } + } + }, + "ssg": { + "nonDynamic": { + "/": { + "initialRevalidateSeconds": 10, + "srcRoute": null, + "dataRoute": "/_next/data/test-build-id/index.json" + }, + "/tests/prerender-manifest/example-static-page": { + "initialRevalidateSeconds": 10, + "srcRoute": "/tests/prerender-manifest/[staticPageName]", + "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest/example-static-page.json" + }, + "/preview": { + "initialRevalidateSeconds": 10, + "srcRoute": null, + "dataRoute": "/_next/data/build-id/preview.json" + } + }, + "dynamic": { + "/tests/prerender-manifest/[staticPageName]": { + "routeRegex": "^/tests/prerender-manifest/(?:([^/]+?))/?$", + "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest/[staticPageName].json", + "fallback": false, + "dataRouteRegex": "^/_next/data/test-build-id/tests/prerender-manifest/(?:([^/]+?)).json/?$" + }, + "/tests/prerender-manifest-fallback/[fallback]": { + "routeRegex": "^/tests/prerender-manifest-fallback/(?:([^/]+?))/?$", + "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest-fallback/[staticPageName].json", + "fallback": "/tests/prerender-manifest-fallback/[fallback].html", + "dataRouteRegex": "^/_next/data/test-build-id/tests/prerender-manifest-fallback/(?:([^/]+?)).json/?$" + } + } + } + }, + "publicFiles": { + "/favicon.ico": "favicon.ico", + "/manifest.json": "manifest.json" + }, + "trailingSlash": false, + "domainRedirects": { + "example.com": "https://www.example.com" + } +} diff --git a/packages/libs/lambda-at-edge/tests/lib/no-initial-revalidate-manifest.json b/packages/libs/lambda-at-edge/tests/lib/no-initial-revalidate-manifest.json new file mode 100644 index 0000000000..606e5e62e0 --- /dev/null +++ b/packages/libs/lambda-at-edge/tests/lib/no-initial-revalidate-manifest.json @@ -0,0 +1,107 @@ +{ + "buildId": "build-id2", + "logLambdaExecutionTimes": false, + "enableHTTPCompression": false, + "pages": { + "ssr": { + "dynamic": { + "/:root": { + "file": "pages/[root].js", + "regex": "^/([^/]+?)(?:/)?$" + }, + "/blog/:id": { + "file": "pages/blog/[id].js", + "regex": "^/blog/([^/]+?)(?:/)?$" + }, + "/customers/:customer": { + "file": "pages/customers/[customer].js", + "regex": "^/customers/([^/]+?)(?:/)?$" + }, + "/customers/:customer/profile": { + "file": "pages/customers/[customer]/profile.js", + "regex": "^/customers/([^/]+?)/profile(?:/)?$" + }, + "/customers/:customer/:post": { + "file": "pages/customers/[customer]/[post].js", + "regex": "^/customers/([^/]+?)/([^/]+?)(?:/)?$" + } + }, + "catchAll": { + "/customers/:catchAll*": { + "file": "pages/customers/[...catchAll].js", + "regex": "^/customers(?:/((?:[^/#?]+?)(?:/(?:[^/#?]+?))*))?[/#?]?$" + } + }, + "nonDynamic": { + "/": "pages/index.js", + "/customers": "pages/customers/index.js", + "/customers/new": "pages/customers/new.js", + "/api/getCustomers": "pages/api/getCustomers.js", + "/_error": "pages/_error.js", + "/404": "pages/404.html" + } + }, + "html": { + "nonDynamic": { + "/": "pages/index.html", + "/terms": "pages/terms.html", + "/404": "pages/404.html" + }, + "dynamic": { + "/users/:user": { + "file": "pages/users/[user].html", + "regex": "^/users/([^/]+?)(?:/)?$" + }, + "/users/:user*": { + "file": "pages/users/[...user].html", + "regex": "^/users(?:/((?:[^/#?]+?)(?:/(?:[^/#?]+?))*))?[/#?]?$" + }, + "/:username/:id": { + "file": "pages/[username]/[id].html", + "regex": "^/([^/]+?)/([^/]+?)(?:/)?$" + } + } + }, + "ssg": { + "nonDynamic": { + "/": { + "initialRevalidateSeconds": false, + "srcRoute": null, + "dataRoute": "/_next/data/test-build-id/index.json" + }, + "/tests/prerender-manifest/example-static-page": { + "initialRevalidateSeconds": false, + "srcRoute": "/tests/prerender-manifest/[staticPageName]", + "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest/example-static-page.json" + }, + "/preview": { + "initialRevalidateSeconds": false, + "srcRoute": null, + "dataRoute": "/_next/data/build-id/preview.json" + } + }, + "dynamic": { + "/tests/prerender-manifest/[staticPageName]": { + "routeRegex": "^/tests/prerender-manifest/(?:([^/]+?))/?$", + "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest/[staticPageName].json", + "fallback": false, + "dataRouteRegex": "^/_next/data/test-build-id/tests/prerender-manifest/(?:([^/]+?)).json/?$" + }, + "/tests/prerender-manifest-fallback/[fallback]": { + "routeRegex": "^/tests/prerender-manifest-fallback/(?:([^/]+?))/?$", + "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest-fallback/[staticPageName].json", + "fallback": "/tests/prerender-manifest-fallback/[fallback].html", + "dataRouteRegex": "^/_next/data/test-build-id/tests/prerender-manifest-fallback/(?:([^/]+?)).json/?$" + } + } + } + }, + "publicFiles": { + "/favicon.ico": "favicon.ico", + "/manifest.json": "manifest.json" + }, + "trailingSlash": false, + "domainRedirects": { + "example.com": "https://www.example.com" + } +} From c03105f739f57d3ca21b774346c2684da4ac18fb Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 4 May 2021 15:23:06 +0100 Subject: [PATCH 17/48] create the regeneration lambd ain the same region as the bucket --- packages/libs/lambda-at-edge/package.json | 8 +- packages/libs/lambda-at-edge/yarn.lock | 1213 +++++++++-------- .../nextjs-component/src/component.ts | 1 + .../nextjs-component/types.d.ts | 1 + 4 files changed, 677 insertions(+), 546 deletions(-) diff --git a/packages/libs/lambda-at-edge/package.json b/packages/libs/lambda-at-edge/package.json index 377d0b780e..dfea94dc1a 100644 --- a/packages/libs/lambda-at-edge/package.json +++ b/packages/libs/lambda-at-edge/package.json @@ -54,15 +54,15 @@ "rollup": "^2.46.0", "rollup-plugin-node-externals": "^2.2.0", "rollup-plugin-terser": "^7.0.2", - "rollup-plugin-typescript2": "^0.27.2", + "rollup-plugin-typescript2": "^0.30.0", "sharp": "^0.26.3", "ts-loader": "^7.0.5", "ts-node": "^9.0.0", - "typescript": "^3.9.6" + "typescript": "^4.2.4" }, "dependencies": { - "@aws-sdk/client-s3": "1.0.0-rc.3", - "@aws-sdk/client-lambda": "1.0.0-rc.3", + "@aws-sdk/client-lambda": "3.14.0", + "@aws-sdk/client-s3": "3.14.0", "@hapi/accept": "5.0.1", "@vercel/nft": "^0.9.3", "cookie": "^0.4.1", diff --git a/packages/libs/lambda-at-edge/yarn.lock b/packages/libs/lambda-at-edge/yarn.lock index 268df19be1..350769e19a 100644 --- a/packages/libs/lambda-at-edge/yarn.lock +++ b/packages/libs/lambda-at-edge/yarn.lock @@ -45,583 +45,691 @@ dependencies: tslib "^1.11.1" -"@aws-sdk/abort-controller@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-1.0.0-rc.3.tgz#c4cde5f1a1c0d3b6e6c5ddc04a0e423cb8bcc1f1" - integrity sha512-+os/c2PDtDzaeAMqH3f03EDwMAesxy3O5lFcT2vr43iiQkXRnYwaWFD4QPwDQGzKDjksPKSa6iag4OjzGf0ezA== +"@aws-sdk/abort-controller@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.13.1.tgz#5b6eaefa72dbafebf026367b0266737b458aacbe" + integrity sha512-iK32oE9hZw3aC6Jgbr8kHGxo1Mq7ayY1dxLB2R59W0YUMB/EEQ2Z0tJaxOsLNfeNBGMvxzQXHxnjP8wUbOGCkA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/chunked-blob-reader-native@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-1.0.0-rc.3.tgz#5a863d61f84ca0ff32e440f4c214e1929af05978" - integrity sha512-ouuN4cBmwfVPVVQeBhKm18BHkBK/ZVn0VDE4WXVMqu3WjNBxulKYCvJ7mkxi1oWWzp+RGa1TwIQuancB1IHrdA== +"@aws-sdk/chunked-blob-reader-native@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.13.1.tgz#df5634b7ad7750e238a5e3af29bf6bbcd2c94811" + integrity sha512-PJYLDW5Uc78iwHVJmiGMIRIAwohaewOJGsnnwTGQBsOqTHDM0ywwO3rlObkuuLiWaFA/4w1cYdvWaMI7Iwf+qg== dependencies: - "@aws-sdk/util-base64-browser" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/util-base64-browser" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/chunked-blob-reader@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-1.0.0-rc.3.tgz#f704a8c6133931bbde3ee015936dc136763dd992" - integrity sha512-d4B6mOYxZqo+y2op5BwEsG0wxewyNhVmyvfdQfhaJowNjhZpQ6vhYkh3umOarLwyC72dNScKBQYLnOsf5chtDg== +"@aws-sdk/chunked-blob-reader@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.13.1.tgz#cb391e7dd460c3a424e4c96a3ff15a165bd268f0" + integrity sha512-vZ292PZUkO7lYba5qz6xcOAwnY9YvjFJM+CEzUsyr7pTBIs/1c9LMZqEMPB9OKKNRmWbB5VwaS2eJQK0KRtr5Q== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/client-lambda@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-lambda/-/client-lambda-1.0.0-rc.3.tgz#b23568f86a29933bbaa2e4d1a10774eec0f9d72e" - integrity sha512-8x0y/SUAGrfHmtQ+4Z8foYyl6fzxGpVHEPycOyYqkSj8GrYSDk3Q0AMWIzszmM/+7kdMAndloGpz2/Xci/q+tg== +"@aws-sdk/client-lambda@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-lambda/-/client-lambda-3.14.0.tgz#688af6f5afc047d466993b04cc8264d7dbcc6d36" + integrity sha512-zixG2l1lmUr3nec+YFLIRVkmgMZz+0Slixk6IpZmhkqJFOp7CkjdMoz5Y5K4ljjaG6j4y2XpHNichuP8ZnHWxA== dependencies: "@aws-crypto/sha256-browser" "^1.0.0" "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "1.0.0-rc.3" - "@aws-sdk/credential-provider-node" "1.0.0-rc.3" - "@aws-sdk/fetch-http-handler" "1.0.0-rc.3" - "@aws-sdk/hash-node" "1.0.0-rc.3" - "@aws-sdk/invalid-dependency" "1.0.0-rc.3" - "@aws-sdk/middleware-content-length" "1.0.0-rc.3" - "@aws-sdk/middleware-host-header" "1.0.0-rc.3" - "@aws-sdk/middleware-logger" "1.0.0-rc.3" - "@aws-sdk/middleware-retry" "1.0.0-rc.3" - "@aws-sdk/middleware-serde" "1.0.0-rc.3" - "@aws-sdk/middleware-signing" "1.0.0-rc.3" - "@aws-sdk/middleware-stack" "1.0.0-rc.3" - "@aws-sdk/middleware-user-agent" "1.0.0-rc.3" - "@aws-sdk/node-config-provider" "1.0.0-rc.3" - "@aws-sdk/node-http-handler" "1.0.0-rc.3" - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/smithy-client" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/url-parser-browser" "1.0.0-rc.3" - "@aws-sdk/url-parser-node" "1.0.0-rc.3" - "@aws-sdk/util-base64-browser" "1.0.0-rc.3" - "@aws-sdk/util-base64-node" "1.0.0-rc.3" - "@aws-sdk/util-body-length-browser" "1.0.0-rc.3" - "@aws-sdk/util-body-length-node" "1.0.0-rc.3" - "@aws-sdk/util-user-agent-browser" "1.0.0-rc.3" - "@aws-sdk/util-user-agent-node" "1.0.0-rc.3" - "@aws-sdk/util-utf8-browser" "1.0.0-rc.3" - "@aws-sdk/util-utf8-node" "1.0.0-rc.3" - tslib "^2.0.0" - -"@aws-sdk/client-s3@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-1.0.0-rc.3.tgz#88ba3fe10308ffc0fe9bdd334071130ccd43eae7" - integrity sha512-/IYV2zoGo8SIId0VsJ/lSI6hkP0nSNvibjQtTIOu/E0edoeHtotXtuJ3SLpsuwGGm8mZtMuq1R6W1q0G/o/DrA== + "@aws-sdk/client-sts" "3.14.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/credential-provider-node" "3.14.0" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + "@aws-sdk/util-waiter" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/client-s3@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.14.0.tgz#c587a45ec599f8250e05ef7985704129c0990817" + integrity sha512-YAlSg60BgYDQzSTusWOH38OYKF8EOj4BFotrWxeFDAvDg40N/n1hYVEe/uOWjPTTQUXj7td4DBPxTr4r3QBY0g== dependencies: "@aws-crypto/sha256-browser" "^1.0.0" "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "1.0.0-rc.3" - "@aws-sdk/credential-provider-node" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-browser" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-config-resolver" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-node" "1.0.0-rc.3" - "@aws-sdk/fetch-http-handler" "1.0.0-rc.3" - "@aws-sdk/hash-blob-browser" "1.0.0-rc.3" - "@aws-sdk/hash-node" "1.0.0-rc.3" - "@aws-sdk/hash-stream-node" "1.0.0-rc.3" - "@aws-sdk/invalid-dependency" "1.0.0-rc.3" - "@aws-sdk/md5-js" "1.0.0-rc.3" - "@aws-sdk/middleware-apply-body-checksum" "1.0.0-rc.3" - "@aws-sdk/middleware-bucket-endpoint" "1.0.0-rc.3" - "@aws-sdk/middleware-content-length" "1.0.0-rc.3" - "@aws-sdk/middleware-expect-continue" "1.0.0-rc.3" - "@aws-sdk/middleware-host-header" "1.0.0-rc.3" - "@aws-sdk/middleware-location-constraint" "1.0.0-rc.3" - "@aws-sdk/middleware-logger" "1.0.0-rc.3" - "@aws-sdk/middleware-retry" "1.0.0-rc.3" - "@aws-sdk/middleware-sdk-s3" "1.0.0-rc.3" - "@aws-sdk/middleware-serde" "1.0.0-rc.3" - "@aws-sdk/middleware-signing" "1.0.0-rc.3" - "@aws-sdk/middleware-ssec" "1.0.0-rc.3" - "@aws-sdk/middleware-stack" "1.0.0-rc.3" - "@aws-sdk/middleware-user-agent" "1.0.0-rc.3" - "@aws-sdk/node-config-provider" "1.0.0-rc.3" - "@aws-sdk/node-http-handler" "1.0.0-rc.3" - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/smithy-client" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/url-parser-browser" "1.0.0-rc.3" - "@aws-sdk/url-parser-node" "1.0.0-rc.3" - "@aws-sdk/util-base64-browser" "1.0.0-rc.3" - "@aws-sdk/util-base64-node" "1.0.0-rc.3" - "@aws-sdk/util-body-length-browser" "1.0.0-rc.3" - "@aws-sdk/util-body-length-node" "1.0.0-rc.3" - "@aws-sdk/util-user-agent-browser" "1.0.0-rc.3" - "@aws-sdk/util-user-agent-node" "1.0.0-rc.3" - "@aws-sdk/util-utf8-browser" "1.0.0-rc.3" - "@aws-sdk/util-utf8-node" "1.0.0-rc.3" - "@aws-sdk/xml-builder" "1.0.0-rc.3" - fast-xml-parser "^3.16.0" - tslib "^2.0.0" - -"@aws-sdk/config-resolver@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-1.0.0-rc.3.tgz#0eb877cdabffb75ba3ed89f14e86301faeec12d2" - integrity sha512-twz204J+R5SFUOWe7VPYoF9yZA3HsMujnZKkm7QTunKUYRrrZcG1x6KeArIpk1mKFlrtm1tcab5BqUDUKgm23A== + "@aws-sdk/client-sts" "3.14.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/credential-provider-node" "3.14.0" + "@aws-sdk/eventstream-serde-browser" "3.13.1" + "@aws-sdk/eventstream-serde-config-resolver" "3.13.1" + "@aws-sdk/eventstream-serde-node" "3.13.1" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-blob-browser" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/hash-stream-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/md5-js" "3.13.1" + "@aws-sdk/middleware-apply-body-checksum" "3.13.1" + "@aws-sdk/middleware-bucket-endpoint" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-expect-continue" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-location-constraint" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-sdk-s3" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/middleware-ssec" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + "@aws-sdk/util-waiter" "3.13.1" + "@aws-sdk/xml-builder" "3.14.0" + fast-xml-parser "3.19.0" + tslib "^2.0.0" + +"@aws-sdk/client-sso@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.14.0.tgz#da57cf40a501272238ea58e1560a6f3f9fb81c25" + integrity sha512-uPg6AvCA5Xp2fzepmG5MDuBqcpeZZGhWmCWIqM+JwmcxU0bw/imHWuHLD4mVFw3yFL7NVfXu89wUyUTa383RZw== dependencies: - "@aws-sdk/signature-v4" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/credential-provider-env@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-1.0.0-rc.3.tgz#9e7f21d1aa1d54e6a7f3f87626d2a46896ca7294" - integrity sha512-QG9YUDy1qjghL6MsXIE4wxXuTDeBsNWcXYIMpuvn5bJSVDmcSmXwVFMyCiYvDlN57zbomWaNvYiq9TS50aw0Ng== +"@aws-sdk/client-sts@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.14.0.tgz#ef27a4ae4ae799c9fe9ed08ea3207880415663e3" + integrity sha512-R6z/o8zSe1kYPC/aC3VxYjat3UF1f4BwAShF9JFwi5YUpgD42WzOLuoQ5tjGdvj8cYsq4m9pIOGOPSrEGZZs0Q== dependencies: - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/credential-provider-node" "3.14.0" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-sdk-sts" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + fast-xml-parser "3.19.0" + tslib "^2.0.0" -"@aws-sdk/credential-provider-imds@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-1.0.0-rc.3.tgz#d5709e1ef009b7c87387e0c377c8840a7a27b9db" - integrity sha512-vMRAlXdU4ZUeLGgtXh+MCzyZrdoXA8tJldR5n0glbODAym1Ap6ZQ9Y/apQvaHiMxyTd/PCcPg0cwSmhlnwdhTg== +"@aws-sdk/config-resolver@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.14.0.tgz#2f8c71595e01d1f7d1b479f1f09ac8e581afd68c" + integrity sha512-ZuwxcQro817xq6qE9HJaWRm+cJGCXHU2ZVrSNEmU+E79gJVw2Bo+99Pk9iug4w2+lObpgqfxaCvvsobbDoMo6A== dependencies: - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/signature-v4" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/credential-provider-ini@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-1.0.0-rc.3.tgz#23301a8cf39b004b4ba866d58469f766b819218e" - integrity sha512-3/dvnmtnjGSoBn9MSTtO6/Vpd0RxwA1oOeHlFhswr4ZDMI3Nn8almvUhjtC+wkKKSG+ushkEJaDDPy6P+7xqRA== +"@aws-sdk/credential-provider-env@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.13.1.tgz#255e7824c080b5522e6230cf5626a6aa4bf04f16" + integrity sha512-tPGjnwkif/ndC1kQ5fv2F2486kUHBoACKKNN1O6CslReDtfFd+Z8kFOkrFtpFufOTRcjc5e4bmaEOG69EGwUUA== dependencies: - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/shared-ini-file-loader" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/credential-provider-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-1.0.0-rc.3.tgz#9f6ebecec5f1622ed1b9172c9ae43b147dbc75a9" - integrity sha512-UbtN7dMjyUgYyYKSQLAMmx1aGT9HD00bf0suvn9H4lo5piWuJ/30CoBqIl/l2l+6z0AdK2DcGoF5yuLyJSX0ww== - dependencies: - "@aws-sdk/credential-provider-env" "1.0.0-rc.3" - "@aws-sdk/credential-provider-imds" "1.0.0-rc.3" - "@aws-sdk/credential-provider-ini" "1.0.0-rc.3" - "@aws-sdk/credential-provider-process" "1.0.0-rc.3" - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" +"@aws-sdk/credential-provider-imds@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.13.1.tgz#d16a85ee1052e1419841162db818115938ef5b02" + integrity sha512-TH2mhvw7V1N3DkqTHmtTwGEWx+y9iP4hST3qzrTYAP72SV6z1ElEZxVvKwOsH97ak1NRgG0DNxgVRIODolQ6Ug== + dependencies: + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/credential-provider-process@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-1.0.0-rc.3.tgz#8752ee9efb696d24c84cbd1da64ed76b93269820" - integrity sha512-gz98CXgAwtsW1CkK9F8SOW1EEHFFHsl3QCBs1i4CErYr08i/2sa1LHOjxyIJ9RMRM0WNPBCLH4btvpajOGtXBA== +"@aws-sdk/credential-provider-ini@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.13.1.tgz#ffbd2ff4424c451e58cb7f3e88d5088ab83e6ad5" + integrity sha512-+j/9wjDj4Kqf/2Am/qeJbKLYRTcQM1QjULGmQ7uJcvKIg4Orr7XJr8aBhbJgSw2ee7x5WYbun7oBJkNiL1uSCQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.13.1" + "@aws-sdk/credential-provider-imds" "3.13.1" + "@aws-sdk/credential-provider-web-identity" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-node@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.14.0.tgz#e64755067f7f20075667ddcc0edfcfa4c63ddd91" + integrity sha512-fJUaF5x4YTUmFjzMU/bap8dU+124lUuwz1ugl64VK6qLW78/mGJwZmsmAEc/TbQIm5brv0X7VTgr6z5xUa5YEQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.13.1" + "@aws-sdk/credential-provider-imds" "3.13.1" + "@aws-sdk/credential-provider-ini" "3.13.1" + "@aws-sdk/credential-provider-process" "3.13.1" + "@aws-sdk/credential-provider-sso" "3.14.0" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-process@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.13.1.tgz#0594c1d4ef525dbe7c477daa30c59c057943208b" + integrity sha512-lvO6hO7at5NHqiCpPDsjvIk8Oj/VK+kgVnFaEufSEw0IL/4avX5llIj2tj3JkqIa6guT7elR6yk70VCwI28ekA== dependencies: - "@aws-sdk/credential-provider-ini" "1.0.0-rc.3" - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/shared-ini-file-loader" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/credential-provider-ini" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/eventstream-marshaller@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-1.0.0-rc.3.tgz#ce4a190365ae949f6ad0639ab2285ce21d28046e" - integrity sha512-LBWqTd+VRVBdmBYm/K3ueBHLNOCUlj0uLQOExfvKFTugQ1t3i5JoZKLYNbTJyid8sMmbyq1y/nfM+kAHXguwAQ== +"@aws-sdk/credential-provider-sso@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.14.0.tgz#7f3c13b12ae2ee329dd85ebb5084e2c7fa8cd5e4" + integrity sha512-PCODdi10TrUUmRgziChUfcCXFvLw1NYdk+sF+JhXwQphlDjK1IKuIYadOqgUEBgNS/y0mX91Gj062CIPzpQ33Q== + dependencies: + "@aws-sdk/client-sso" "3.14.0" + "@aws-sdk/credential-provider-ini" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-web-identity@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.13.1.tgz#7bb3edb13fb071f47f6f8ec9eac7adaec011323c" + integrity sha512-6sJcigee7PUBl4AIva6QfkudpvJ3sZ0MIf5dGCFeElx3j1F5mX15lRt9ZuF31LQ/B5Jc3xBD6rILMH/nQ7Es7A== + dependencies: + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/eventstream-marshaller@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.13.1.tgz#b9d67472f03611a1d8b40878f35cac56a0cabf6a" + integrity sha512-LnucJoP5mRR+uNbXlg8yxVmwQOffWjM1YyBj9q3c2oVYl1mBhdqWL+73kS8iwsXV2YE3wh0Z6seo5B+OpDVJfg== dependencies: "@aws-crypto/crc32" "^1.0.0" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-hex-encoding" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-hex-encoding" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/eventstream-serde-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-1.0.0-rc.3.tgz#ea9229e17317c457dd11206565a04dc1bbccb579" - integrity sha512-dMWtrnaOBLxEFvEtX7r66Pxh+XipRdDYHHNTSsg3Vaj+cDcCUkur2tplhKaBQY9bElfGB2Rb2R7XsfIxt9PZ0w== +"@aws-sdk/eventstream-serde-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.13.1.tgz#84ea52dccb8f2fa3314ba19fafc69ec1b5b060ea" + integrity sha512-lzKDB96LToVLAHVWP2+mhnvuuN2oS/BB9B016wmt7II+DPcqLTdJ4QZ7bTioDGqQ3vLl2xUk8aq3Mrxq8wBDhw== dependencies: - "@aws-sdk/eventstream-marshaller" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-universal" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/eventstream-marshaller" "3.13.1" + "@aws-sdk/eventstream-serde-universal" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/eventstream-serde-config-resolver@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-1.0.0-rc.3.tgz#198f81974c4e5396d090c3d48826c6f5e2486819" - integrity sha512-hnp8DwEK64p2mwMDyBIgGq7yOaxDe3H1O7xoNmKb/owqQAcV8BxhhbrJYrsXNSeE/lO2zckPcL1imzuKHudTfA== +"@aws-sdk/eventstream-serde-config-resolver@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.13.1.tgz#24113ef8c095cf6bae09a1239c0104c091aab25d" + integrity sha512-GtI5czL44t5iNcInwJ4wLScxAwNdf0a7yLYEI4bqr0oEqTZ8hLWAzDtoi4yGsRhvgDRzjxLkRcu/HQWXYGq9GA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/eventstream-serde-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-1.0.0-rc.3.tgz#cb0d74f24b43cd14963a0ee8252cc47260ddf483" - integrity sha512-QTIygM8qoVfDv6paFTdyvuAdgUSm/VDFa36OZd+IXSgzoYYrI/psutpYCyt/27oiPH+rFPrOofs9A1mXIWWMhg== +"@aws-sdk/eventstream-serde-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.13.1.tgz#1b7ecb8cf7b1569eb0a3eb22b07cb97d7d26c95f" + integrity sha512-X46ybOppja1Gq4Wv/Laiq3Zs7N7zMl3xM4Iv7vmc1PCbuNEXXHbKbs2w3PH32C7w0yYP795rOJO2LJiBniSFgA== dependencies: - "@aws-sdk/eventstream-marshaller" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-universal" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/eventstream-marshaller" "3.13.1" + "@aws-sdk/eventstream-serde-universal" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/eventstream-serde-universal@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-1.0.0-rc.3.tgz#b05d04171ae00b6f33ea1412979f78c1840ea410" - integrity sha512-YAQMuEI+J0LEf8tOISYSihkEiEH2YpQpvXkLlWyybmWEa1XjmGaZS5V1HP/xf5cA/HPtIsApCz2VYTY50A/Lxw== +"@aws-sdk/eventstream-serde-universal@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.13.1.tgz#ed13c0213dc16c7b3d93a0cea3f513aedfb658ff" + integrity sha512-R3D5uoZxv4QG9yJvo/PQsj+lfpQoxmOSSzBdzbFJfr0FPt3NE2pbOHSfOeMZnLJWRJ6sp58LqhJdVK+GCtfqog== dependencies: - "@aws-sdk/eventstream-marshaller" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/eventstream-marshaller" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/fetch-http-handler@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-1.0.0-rc.3.tgz#4ab211faf75c4b1d14dc36b85311519f4723fe97" - integrity sha512-1xd4DuW8Su7qHKg9wipVGhscvLsVRhZi9pRLxh13lIKEIt+ryxXzrex1YoxDUnDH3ZI7YhdeLhZIonlgaNT+Gw== +"@aws-sdk/fetch-http-handler@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.13.1.tgz#51add87f1fa0f4ea5ba6c88426ee1a54965533f4" + integrity sha512-tG6Vti5gE/IjlpP572m/He55f/F8z/PlwN15cgNiQJrwpilpOW3isApSag+zAsKyek/cNsmCFCb0hJq0F9TumQ== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/querystring-builder" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-base64-browser" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/querystring-builder" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/hash-blob-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-1.0.0-rc.3.tgz#2d1dcd1750b366817a0692424403edc808dc3cb8" - integrity sha512-2lgiclNMd3hiNBjoSh7UuzSY9ucpVF7Z6AmSmERWqN5Sm69u1q8p0RgyyWnKd0JZRelPlB8gBXk4EzxBPSTSLA== +"@aws-sdk/hash-blob-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.13.1.tgz#0247ce480be817bb9463f72c98ef1f9b6ad6aa8e" + integrity sha512-RiOwJK8vZb1kWzY6871PDbX4aHRRtvKgE8Jc9YViNBWV2XjHvCizxscXNtdX+MisWoodKxJLvpLvYbhjNhrJMA== dependencies: - "@aws-sdk/chunked-blob-reader" "1.0.0-rc.3" - "@aws-sdk/chunked-blob-reader-native" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/chunked-blob-reader" "3.13.1" + "@aws-sdk/chunked-blob-reader-native" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/hash-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-1.0.0-rc.3.tgz#f46571f597dd8a301362dfef4c5dfd343116f9a4" - integrity sha512-Q3DikdeGA6pih2ftZajlNaHxsNUaKEXneZdxyoaSKyMppEni3eK2Z2ZjzyjDuXflYLkNtj4ylscure+uIKAApg== +"@aws-sdk/hash-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.13.1.tgz#79bc857380dd702a441bdedf3255552344c31d2c" + integrity sha512-jOxl5z8aIHQ3W5p+lcnJSkcn+qG96PH196P7KBszGlUEAgUUPc+DNoodlP+DK5T4o6tFQU31S+qRIYU/73+pLg== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-buffer-from" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-buffer-from" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/hash-stream-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-1.0.0-rc.3.tgz#8b4f668e5d482c509dfe402812b2a2f2a9e36b1b" - integrity sha512-ry78JhVXHIUdH/aokQ/YBxQ+26zC5VOgK2XLq9eDdxBTz2sefjwzk3Qs5eY1GZKfyUlKMwdRpCibo9FlPVPJeg== +"@aws-sdk/hash-stream-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.13.1.tgz#c2574d7aba22c35bc81c7d659d3ce893d1dcdf96" + integrity sha512-KHyoTHVM0ei9m+sRrj57uNmwxtO8sBIh/fSQ2e6RtJk7gjBEDkU4dgwPF0FaS9j5VRhTVBPlCMUaHrNGkuAJtQ== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/invalid-dependency@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-1.0.0-rc.3.tgz#857a44dcb666ec3be55ccde6f2912eff7dfddcad" - integrity sha512-Fl71S5Igd5Mi81QklxhhEWzwKbm+QP1kUYoc5nVK2sE+iLqdF9jwg7/ONBN8jISjTD8GPIW7NWL2SQNINNryMw== +"@aws-sdk/invalid-dependency@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.13.1.tgz#2af7427695e9440087294c8651cfeef5e4067ee5" + integrity sha512-Cfjcxe09h8jfunNUh5+uygVCOiYo8E1EnuOsqs5+LYUViMnST04/GjIk9499XHBKbh3akwPyBSFxZrOmHUh61Q== dependencies: - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/is-array-buffer@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-1.0.0-rc.3.tgz#47e47b7e5eb7e0ac9e7fa24f56a78550fbae63bc" - integrity sha512-tHFTBiXAgBZmAKaJIL2e2QPR9kA1tZTUJMqKaybWjhXckvb29EgUOLcdK+W2kMSqKIGqEINbAaV7S11ydBtYIg== +"@aws-sdk/is-array-buffer@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.13.1.tgz#bde5c5435b3fbd1e8ad26ef6bb3eabcd11799a9e" + integrity sha512-W1pzDpk5iAaJAZnCHHBwFSU7HW6IbQn71DKe3nnbmTbY56QdKdSZ23r+6uWxtz1xetbEd5JdzWs+AD+Ji1pC7Q== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/md5-js@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-1.0.0-rc.3.tgz#c9ecabe2a7fccf017f6cfcb972c1cdb579da8f9c" - integrity sha512-UfHtEs5IWl39yU4X/95605bFMKErWRd+uPgtqEtCWDDGyw4uwUUrkyrhTfJKuUFvTj9ov0Lb03x5QPNDybAelQ== +"@aws-sdk/md5-js@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.13.1.tgz#2fc803f9ad1828c35e73d120e821e197aa89e008" + integrity sha512-+SLzPLoog2y8lz9bw3kitwDhrFf3AIHRtdheUfBMfEPbc1ngHNrp8RFUZApDYUj/80yqj73ux3fgptShtWqBKA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-utf8-browser" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-apply-body-checksum@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-1.0.0-rc.3.tgz#1ba3053e65a06fa093b72c45bd28f6053d12028c" - integrity sha512-f8CMcb1mxPWHJvLxegpjF1fwoa/vFjIaRIrXgUoPMhFNICRZPGnzim2o2mGyjWcS39VkM6G7vpmosNv2zc4EJg== +"@aws-sdk/middleware-apply-body-checksum@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.13.1.tgz#de97ec9f92733d4806cd50fac7a3ee8fc2fcd01c" + integrity sha512-0G9bGQ951n9KyqwMithX41ucZ0jUkps/mAq6z6AchrUfb1m0NEo6CRMiM6KIl+7ZxLZodiynyq8mRPpRnO0mSA== dependencies: - "@aws-sdk/is-array-buffer" "1.0.0-rc.3" - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/is-array-buffer" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-bucket-endpoint@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-1.0.0-rc.3.tgz#3dc26338bb8b631adb93c2ef2bce4bdddf29e01d" - integrity sha512-bC7Fx78spMF+5sQhjncOHdjEamNGIIZx6KBWN5Z2JkTTfrEoN24VtM6wWXkNRn3EtN7usWBaGT1bCx3/Vk+R0A== +"@aws-sdk/middleware-bucket-endpoint@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.13.1.tgz#30712b7ffc2df8e8f38cd87dd5163b72e4bf01c9" + integrity sha512-LT6vaOBo2uQGMVsG7QMBGVS8SncZwcuA5WvcUC4npxWnV3JQtpILwA9pceBE/dcVxwB6VyX8b7Tci2e2gioTtg== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-arn-parser" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-arn-parser" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-content-length@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-1.0.0-rc.3.tgz#0410e78a508ec4ef8cb8987433ed621a7cfa7946" - integrity sha512-eQfeMwneYxxF6NMF5AokilQHm3HMUbtBVmybdrrM+vs027DRQBDqcZ2GXwVI93kcS4GaibNnzX804rG2xA2UwA== +"@aws-sdk/middleware-content-length@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.13.1.tgz#009d9b24901247915308e54b0b550bde87eda98c" + integrity sha512-eAEbPrrbwPHNiO1+INyncbcV5orjXZza3RVkqYinWj6j4tUOxwLqSpbHHhVgRulN+MD+H6YX+x307jaDT4fQfg== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-expect-continue@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-1.0.0-rc.3.tgz#54eb6e68b7e791febbee44fe107886ead02c47d0" - integrity sha512-rDs68vBn0sSWl3z1ecXSw7n+MeiSW//r6NSAWAmBE58BDjHSfwQ+aB3izpSHDGIiGZO4aasnwZAP7NjzYvxiWQ== +"@aws-sdk/middleware-expect-continue@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.13.1.tgz#001ce393ae3fc1f451071c2aaa68ccbddf28ae2c" + integrity sha512-wi8e9UgETIG60BUhlUL0du8Akj1CK0v90QK7hpXZvqJNLzVgAGKvDTnxZVrhxY6SPiNB263/ORq+WemlrtOp6Q== dependencies: - "@aws-sdk/middleware-header-default" "1.0.0-rc.3" - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/middleware-header-default" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-header-default@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-header-default/-/middleware-header-default-1.0.0-rc.3.tgz#3a6186aa0d0575626f07b92b774aa15b73b54230" - integrity sha512-h0zQFCaBzu7SoRRlKYws76C8q8hY/Ja7G6E69X7fGbrcmNFMjm4aZq0eipKvOIg7cGbrcFnyOnWqLlWaL76nwA== +"@aws-sdk/middleware-header-default@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-header-default/-/middleware-header-default-3.13.1.tgz#0f46b0f84ba36f2e6c9cfc9559b9f279d35ac6d1" + integrity sha512-MOLWAFbEkFWsKE0KE982Z3rbbz5QV2udx8G5jak+3qQz/YpA9770qJqy19DJNLZclWq2EUE1r8lmgVomZD+qfg== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-host-header@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-1.0.0-rc.3.tgz#d7dca9b683bacc0f985b4f1e86cef938d88ad52d" - integrity sha512-44aOjB9yd2TCDj8c9sr+8+rhQ63kkuIAcMdbt3P/fXKUWwTAW+bcvknaynya3hLa8B75tEQ112xVBb+HoDR//g== +"@aws-sdk/middleware-host-header@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.13.1.tgz#d4332878da3f0c4b4b607064ab80683a63710bf6" + integrity sha512-kwa0OLJ+wx2f3Xm1So/ld4ZDq6N7rcXdRZ8qSddCfSRYulxZaew5KdljXxqK9kBglpUE8EKzz1NZjlABc+iEYw== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-location-constraint@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-1.0.0-rc.3.tgz#22781315b246f426acde32e894acb3e59cb9d5bf" - integrity sha512-VdW0/g8SVckRQsz55DrPIzyrF+Qgat3qt+qE9c6Gk7u6XaF05BlG7rbjsStd3Eml+FsKG1KOO3RgDCWvgESmNw== +"@aws-sdk/middleware-location-constraint@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.13.1.tgz#81096ff99f52d7a852c701a339fe11947d9129ed" + integrity sha512-Kzu4E6KpoI0NsgxvvgZ1BfOyNnjEX3xPLCuYHjhP4fUicdbXEOllZJ8oNaxhrUjfyqliAVYu03st3mZzipH6ww== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-logger@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-1.0.0-rc.3.tgz#a786bb90d3a5a184f9b8331ee90f05f3210b04b7" - integrity sha512-M1IfI6//hFgMKQXqXdXGNMf/qU4pkwzR9+Wz6TZ6iELtZaXce00ZzTK1szmO1pkWRVeXsCwr4fsbhj7OD4zZ8g== +"@aws-sdk/middleware-logger@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.13.1.tgz#943dd7a0877c339803251783f66e54f395a079ae" + integrity sha512-lgIoYKvoQrRzy06Cfv9hCY5ZmQYoNUlpIKcwpQOqRe7vmtVIanU5m5EjHrTfAKDNbanXvs/vmCB5oDgafzbXFQ== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-retry@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-1.0.0-rc.3.tgz#8b06fd8c49b3a3e7279551309e418533fac73d9b" - integrity sha512-Y8JhZPJM10H1KDobUP7aYM6ghBdVT4QM+04iAQBfYZPCc0ksyN+PKZLi97kxOrbg+a4HL593CG2UVnY4WI2tBQ== +"@aws-sdk/middleware-retry@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.13.1.tgz#2b1ba129ed9e28a34f1937e19c4edd6699e97072" + integrity sha512-AUKQ1Fi2/VUhGaSOSpqkiMY4/ma0ozvQMqCFaKciZA7ZJOq9ptBWr/E/FTd/See1vpiyRTcc9/hbFxW1ClQnqQ== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/service-error-classification" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - react-native-get-random-values "^1.4.0" - tslib "^1.8.0" - uuid "^3.0.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/service-error-classification" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + uuid "^8.3.2" -"@aws-sdk/middleware-sdk-s3@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-1.0.0-rc.3.tgz#1c9a26476887c464b5e52da116a752dc8975dddd" - integrity sha512-TDICHo5wONd4GUgLEtSjlygKRzXBfxkPQcNEGB2Mnbi+xbDa4FNd6XszkOrNMzxtmqD53ub/iDQewcBr9U9HJQ== +"@aws-sdk/middleware-sdk-s3@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.13.1.tgz#e73fbf4b476d269831f21b31b6e2bea2e39af00e" + integrity sha512-l/FcJ3inlfHdPBayY1RGuOb7GDAuMN46NYeM4eAhslSCrxCoVFXfIgLNFTfHRi6Y14KB6iSwMlUpFIXFrWwdWg== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/util-arn-parser" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-arn-parser" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-serde@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-1.0.0-rc.3.tgz#81307310c51d50ec8425bee9fb08d35a7458dcfc" - integrity sha512-3IK4Hz8YV4+AIGJLjDu3QTKjfHGVIPrY5x4ubFzbGVc6EC9y69y+Yh3425ca3xeAVQFnORQn/707LiNKLlsD8g== +"@aws-sdk/middleware-sdk-sts@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.13.1.tgz#cae44c531154ba79b306d05dad9a119563eb7b56" + integrity sha512-/l2camoPKOHGRzYUELzidtykuGYWrx2ZBmQ1g4JNGjq9ngTtyhGpDxSz6ySOYY/Hln313/+D0Dy6vAvPbOvgRQ== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/signature-v4" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-signing@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-1.0.0-rc.3.tgz#34bad68f17052c298a09905728a35f8906fe55dc" - integrity sha512-RqIQwPaHvyY38rmIR+A9b3EwIaPPAKA4rmaTGAT1jeS7H65tXJeKc7aAXJWvDn9E1Fj56mOHTOd86FgP45MrUg== +"@aws-sdk/middleware-serde@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.13.1.tgz#446be010d02af1f6f008e16ad19e2bf5770b2c6a" + integrity sha512-5C/PPY0SY2NpLVggu5XJAdQw1IqZpcRQBBa3+EpDFoMxUDzgtY2wNOm/IKTX2yYklDnQtyDsP8Z7Cma+Vj2BLA== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/signature-v4" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-ssec@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-1.0.0-rc.3.tgz#45e77e8c1e998fe42bc290c7d4c65c84952e6f3b" - integrity sha512-sqv/TELHxAvpqOi7uhfCwLGVyOb1ihehfnSeqsyh2HPphg529ssmDUCF6jsi5maMc3lM/eHQ8LDPSXU9H58wwQ== +"@aws-sdk/middleware-signing@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.13.1.tgz#0532b174fa133ac13c19e61f02a5766d97574bf1" + integrity sha512-0KQPH4EywfnabDjbOSFQ9Nkw7790dBa34v2319bnaurCDRBDcGOB44KJQc8Mlu6ixFRzprnwj4+5qZI7IedWpg== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/signature-v4" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-stack@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-1.0.0-rc.3.tgz#e46193e696f15275e548e0cdbe1ca734e9e1c6b9" - integrity sha512-DV5RPf0rNsZVOtZA+nEDyWhfKUazUjWQppzXGjvCUSLaaPTINPUXf/go5M4S/62mn/9gxCftN5SShMP5yw1sNQ== +"@aws-sdk/middleware-ssec@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.13.1.tgz#6f4482d3b0ed15118fb9d5a8e049e0a84a579718" + integrity sha512-SYXV0G0uaTPI8t0Qq9aIMMoDJfTr5QdrWc2KAH0y973G7cpB9MPa4d90xQ+4AxLde246FiQS5ExD7N8bXvvA1g== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-user-agent@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-1.0.0-rc.3.tgz#de42837456482cd06596c0c5cebb80480d630e33" - integrity sha512-Zrp3kETrrWgJLlnjkSuetOH5cN5URqLd6WQmhZlEm0isvr+2RyDDOA4wP6JjmMhCmrG02/8/b4pMOPH/vUm/LQ== +"@aws-sdk/middleware-stack@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.13.1.tgz#b5ecb2d9bec33821900a98bf9c8e37fcc14cd98d" + integrity sha512-ScXJ3w6bp00Em1po1MzcPNJxj8/qct26IBjFEiy2+usetkq3F8zJlRZN053bWMxma3YoyfgQrkuxZiHGaguJbg== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/node-config-provider@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-1.0.0-rc.3.tgz#b79fd5e95e4ca543b8d6aa2bf59b9ce2cc89c96a" - integrity sha512-1i0fjunUMYP479hAq7D8RugfMmC3KCUzvZA2xtjFQcE31d7YrlfGstwBq/kvNcIcw+yc3r7SC54KzwgqfSSvzA== +"@aws-sdk/middleware-user-agent@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.14.0.tgz#88095c1ee4e73540a99ddb9a4cc0a78b7dda216d" + integrity sha512-ZmYfKuK/RfEWzX8Xvg9sGU16zAozNu0mxj2hDB6Lu+253D69AbUO4QAAFLJVwIUr4YgZIThss6icOuebPx2zdA== dependencies: - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/shared-ini-file-loader" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/node-http-handler@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-1.0.0-rc.3.tgz#da316daa5bcf536099e43d57cb136b8c2553a17f" - integrity sha512-hK0NM3PxGVCgKLZoAb8bXFQlOA1JGd2DwfjDdAn4XfIhEH4QfbuFZxjkQhNcDwkKIqzCmlYTbgJvWKRbbFkEXg== +"@aws-sdk/node-config-provider@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.13.1.tgz#940389d21a7914a27aa09886af2d3f65aeaca49b" + integrity sha512-lRfGW7zcJ3Ly6N4fxGc7b+bSa6/LBWwUReVM8c4TI0VrX+1xPBH/DX0APBRxmzBCyjzL+Ls3fo5WLxMLZHNceA== dependencies: - "@aws-sdk/abort-controller" "1.0.0-rc.3" - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/querystring-builder" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/property-provider@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-1.0.0-rc.3.tgz#4dce009bcc55d8779f721100462b8d6ac489606c" - integrity sha512-WrYlUVaq63k0fYdnIJziphfdTITaTlW0b1qrRzFsqKPRN1AnQenzFs27ZHaaecmFfGg3q1Y2fci3cpyNUBTruQ== +"@aws-sdk/node-http-handler@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.13.1.tgz#96129f5b1e31346766d97e236768e73a3bfbfd3b" + integrity sha512-DksP+IkUM3yqmhcFp4pLd+apYYq1cFQ+o+2FYAaXenGGZ6wiXmBamtF9mt7DIb9tpeSt5kmOh7dTiHQIY24gDg== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/abort-controller" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/querystring-builder" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/protocol-http@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-1.0.0-rc.3.tgz#7759e6f96df292c01daaff42f2b921180df17c5d" - integrity sha512-paOSLmXvce84BRCx+JIYGpsVCtn3GCGvzLywaPCHeES2OekwD86PJQskCDAlshRPOy/LCdxYVdMt7FrEBuyQrg== +"@aws-sdk/property-provider@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.13.1.tgz#6bf32c35068a5e0d0e511064a036fcfef71856b5" + integrity sha512-uQ8dvpWYxY007rTwqr1COvqD+Z9NAUJjBfP+IYv8j1Dyc9o1Odkkj7Cm3fFFo021hlyCbcYtE3AnppVlAWyaCA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/querystring-builder@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-1.0.0-rc.3.tgz#d24135a0523a8d9645d874deeb0ba5a6f6c15428" - integrity sha512-PWTaV+0r/7FlPNjjKJQ/WyT4oRx4tG5efOuzQobb4/Bw2AFqVCzE2DMGx1V8YKqdq3QFckvRuoFDVqftyhF/Jw== +"@aws-sdk/protocol-http@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.13.1.tgz#0ae5f09302f7a0bc47ac80c48e1dfebb43d40c04" + integrity sha512-iTy0TS6KTxNl6dfEj272Q4pxYcEfaljNFhlUBlvAZK04abbhzzlqwtGyGitEv+wSJ6R2e1Gmk6KWUQ2F1CoCng== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-uri-escape" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/querystring-parser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-1.0.0-rc.3.tgz#9fdd79eb0a06846f25da5f97477e8d8f1255785a" - integrity sha512-TkA/4wM76WzsiMOs0Lxqk33rP+J0YtCjmpGzS+x4oqNbdVYQBpYtbwqN+9nsrOeieCFRWq9QWl6QM4IyJT9gRA== +"@aws-sdk/querystring-builder@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.13.1.tgz#9d9c9af7778c63f9406be1dbdc1487441e858bc7" + integrity sha512-t/AKKzFpS1bwGuHw1nU8IpUmptbaXYWuiZnp6quFvtZjWQV1BKTDG1SEXzY1dowEpv+FNxUp6RdPakIaPInlAA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-uri-escape" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/service-error-classification@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-1.0.0-rc.3.tgz#711f6769cabc7fbdac9f0d5270968824762fa29f" - integrity sha512-qE/gPzAoQF3DJEPyQk5iQyTZEbVx53a41T+UHEYKYMaGXuAJfoBKnsucDNxgAYXSwcp+3Wp7XA1TUfcygEiZ/Q== +"@aws-sdk/querystring-parser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.13.1.tgz#3021b86f84f8424fa9386e9fa05d6cca94acf57a" + integrity sha512-FKSEUkZ+csopOVP/LUb8YSu07G/n8tj4sVp3FdX6OPv+HBD0ukfbl4mzyBHJlOgWhzDihxzKL8iHoUuC2FfY3w== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/shared-ini-file-loader@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-1.0.0-rc.3.tgz#05aa96572d78f0c4c5edcc7f42ed14076d1b16ea" - integrity sha512-wynHRRZENIZUS714NX9cu9BDbxAL7DzOJvPYAj2tgC3bJNt0jkbQxNTePpolwWx7QNwFfQgDbK76LPkIo30dJQ== +"@aws-sdk/service-error-classification@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.13.1.tgz#df19a35251cc43b625bfc8e758d8ecf3d14fb083" + integrity sha512-eVH00KOSTV23RWWY7JMuc2s7jBfiWP/UR82n3knYYtTztcm9pFIIkNhphUnOThWROzNqlW+Dif8ztb85oK5K+Q== + +"@aws-sdk/shared-ini-file-loader@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.13.1.tgz#36a45b7a468607b69b893227550c4246114aa52a" + integrity sha512-zB+niFj0iIZu2aXmKv2Xhk404Lw6gawTZPjzR4vLuTmn563yhSUSw5hJN+v/O/bR1b3JV4NPubyIQT6CKx1YUA== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/signature-v4@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-1.0.0-rc.3.tgz#7ccc61f17d8f083dcbce5e30843c60f8b0388d67" - integrity sha512-ARfmXLW4NMmQF5/3xGiasi6nrlvddZauJOgG9t2STTog8gijn+y+V7wh26A7e4vgv1hyE0RdonylbakUH1R4Nw== +"@aws-sdk/signature-v4@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.13.1.tgz#4c5647a670ef0c11a85c9c24e5e16fe7ea6a1901" + integrity sha512-j+WCkQCUNhJbeRYW7KTsXd3gxk5CUeZF0LLVOT7HGvxzBhWJkpNGlsFD6ENR5iVpAlmK2yrTLJn7sma7Fgci+Q== dependencies: - "@aws-sdk/is-array-buffer" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-hex-encoding" "1.0.0-rc.3" - "@aws-sdk/util-uri-escape" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/is-array-buffer" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-hex-encoding" "3.13.1" + "@aws-sdk/util-uri-escape" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/smithy-client@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-1.0.0-rc.3.tgz#b96e97fa6b8bb3de8ecd918d842b2fb972fa0ac6" - integrity sha512-mlzpr5NLkaoPdTVrr3HIxuNbVJtq9IIrgfVXjqCNixOqJDRG46qiXubfaSsf4giwP8CE6zK9cDkvVDKyV0dl8A== +"@aws-sdk/smithy-client@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.13.1.tgz#2204089c4af4d2f8985ce2adbef9533b0c9c8c5f" + integrity sha512-DFo9LriBq0b8wQpO6DNnwQ0ISxTLn4tBHNsdXj0vHKKwg6h8IcveUNyLGGDdQejL8FLqOKJfe1NRvkY2UQFsrg== dependencies: - "@aws-sdk/middleware-stack" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/types@1.0.0-rc.3", "@aws-sdk/types@^1.0.0-rc.1": +"@aws-sdk/types@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.13.1.tgz#f69efe2053b0fa5dfd4046cb80dc176ad645c016" + integrity sha512-4eHboRz3I8f0C85Ta1dJ1v1Y9T1zH9xpC4/DufSIfQcD1Imc2U2LM22Qgbz8/PoP4kyhp2nJpQpW0APD91ILfw== + +"@aws-sdk/types@^1.0.0-rc.1": version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-1.0.0-rc.3.tgz#98466080e07244d8f7406cc61ae7918d02b339a2" integrity sha512-pKKR2SXG8IHbWcmVgFwLUrHqqqFOEuf5JiQmP7dEBjUXqavzDnqFUY7g9PGuM8928IQqL7IXrRsK7R+VbLgodQ== -"@aws-sdk/url-parser-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser-browser/-/url-parser-browser-1.0.0-rc.3.tgz#d9e1da2acdfb7f2486a68e951dd185dd7b0764e8" - integrity sha512-bTCB4K1nxX3juaOSRdjUC+nq1KZX1Ipy5pMQoDiRWYCgMgUAcqeWuxlclF3dc8vuhYUWa2A86D5lT3zrP0Gqag== +"@aws-sdk/url-parser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.13.1.tgz#4ab73867f1fadf9f1ce58ec6bf4f6cae4efec81b" + integrity sha512-kw9n96GbZ+vuh/KblpcJ1F++hWE7VCQ+cHN5CSxNnN67s/SFk4BLzSeaPup6EUkUI+wIiJMOWW56kIMrcSta5w== dependencies: - "@aws-sdk/querystring-parser" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" - -"@aws-sdk/url-parser-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser-node/-/url-parser-node-1.0.0-rc.3.tgz#0cdd48fa068a1cf243b46b4eb4c927f38499f63d" - integrity sha512-W2No+drp3jCjkr1edSReGNLyXF+a34qHOcy8cJ6ZtPe5eLzCroZ33+w1gJ01r5UboWwzo8Qyz7QPxD5J0zPVzw== - dependencies: - "@aws-sdk/querystring-parser" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" - url "^0.11.0" + "@aws-sdk/querystring-parser" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/util-arn-parser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-1.0.0-rc.3.tgz#738e945d2dfd009d78c4c07e3773d41c1c525262" - integrity sha512-mIXiyBYDAQa9EdaKKU4oQsWAvSWVXAumCH89N5VQfrlRCuaqRUdmE83CJx69wcLFbrZCZmCJD2gcPVG5Ywa+NQ== +"@aws-sdk/util-arn-parser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.13.1.tgz#e9917a35b1b6c5ad0be8340d163c69b1c3fcc524" + integrity sha512-/Y0BEnh1WiVyZQaDMWfqQaRPzEEMrvs0/UTTyknj43dhXoiNDXVyrFUtLw71Oi77WBxk7p/Wbg0m7TVJt3yceQ== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/util-base64-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-1.0.0-rc.3.tgz#49cb2a1c9f177327b66eb2a150e643334dd3ce0d" - integrity sha512-peqOSoOCTGlZVX9gC+4SxaSXQqSsjzNfKxKLZwcP/HhHIPU/I+tbnRbH4a2Cx29DsopTngu0GKLuPJEL67bvog== +"@aws-sdk/util-base64-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-3.13.1.tgz#6244d329ed9c560e1f4a161f698367cc3e863919" + integrity sha512-bev/PmmRLxTzGkmx88KFhJEL78koIvhYdKFmWtmSJz+trQEk37u6aulWQZF6dpiMGCKYcBfI5h3LsxE75pObTQ== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/util-base64-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-1.0.0-rc.3.tgz#ef68e130e7b42b673f93af4a68b46c1542702e64" - integrity sha512-gz/JScFQ9MMdI59VdJTbgZrnNdTPXOJKesMwoEMH8nMb6/Wi3+KL2NH/GC92hxhuE/JbA1vdrelvCFOED8E1Jg== +"@aws-sdk/util-base64-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-3.13.1.tgz#0fdcea2ac7913a69448ed87d227a1107db9e3c8f" + integrity sha512-z3bh+Luue39gIFOm56FSXOEZJq23J/IUM0Gj28dkdC0hpqdohP2NfcGUBhBlK8CFKBLB5GM1vVKo99T1/OQ/5g== dependencies: - "@aws-sdk/util-buffer-from" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/util-buffer-from" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/util-body-length-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-1.0.0-rc.3.tgz#f3052599445e06081002788693ada1fb99ea4a51" - integrity sha512-xvMrCo+5DshN4Fu3zar2RxaqPJ/QRAEOChyWEGUqjE+9/cow+uWsqBX3FdeY84mV6dkdcAJLQvP8aVH+v+w+lw== +"@aws-sdk/util-body-length-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.13.1.tgz#7063c658b1875a208d8c9f39bdd1c7409efce10e" + integrity sha512-qqbBRP1YCuCJ8jCQpP4kbSPrdwJxniccmzsyjkKmaOQoOil69FFNhdwzjrMFhahnsLYD9JUdEsJmHegPbIbUtA== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/util-body-length-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-1.0.0-rc.3.tgz#e7068c9feff896a3720f71eab5ca44c76e587764" - integrity sha512-q7n3IP5s9TIMao9sK4an+xxBubHqWXoeqCQ5haeDmqQTBiZQYcyQQq61YJRghj2/53SH5MMS1ACncw3kvnO92g== +"@aws-sdk/util-body-length-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.13.1.tgz#4722fad01f4feb6a3ab47344c2482446d7aa2d01" + integrity sha512-btSynL8nZmzXPImm/oAaE9aBl1feAZsGv1jR+7+CSM2P5emTEBF4/EuYX34KZTzW7BjSzeDeRK0SHK0IWAB4bw== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/util-buffer-from@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-1.0.0-rc.3.tgz#6a18955cb422b5649c9675d64bc2defa6e1175ac" - integrity sha512-43FzXSA3356C/QRCKZSmGTVwH4BgObNJDvF4z5dwwrfqU+tXjnUdnFo5hLsHq+fwjtWuXLkAyi+vz07x3MphvA== +"@aws-sdk/util-buffer-from@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.13.1.tgz#fc1fc6d46edff7ea0f370c8389313b58ef8923b7" + integrity sha512-D/LT7a9wwB5Zo4CPWJwP/qdUhs8MYSs+tvyyF2Ox9v8AaUV+w8ukJY9/1/i1cS5bGH7aAjueTiAFSMt8ejVNCg== dependencies: - "@aws-sdk/is-array-buffer" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/is-array-buffer" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/util-hex-encoding@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-1.0.0-rc.3.tgz#4229f2495f3a5ef32c8c7ada7ab14bd6f983d269" - integrity sha512-GXHBBGdAH2HPn18RFMsvXAvBtO8pG0I2PlGHfKhn+ym+UT1lHHYpCd3/PawUVUYnFZrqIj+j48IjFFJ3XMPXyQ== +"@aws-sdk/util-hex-encoding@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.13.1.tgz#2406c832b1aae60c8abd1dafcae442e6085aebca" + integrity sha512-NGIqG+L5B6xENgv25BH77F9EeTkN+3tO8sFBeTMjoS7rD3uVP1uLp/RHQENjn/EG/KtgjcNyglngDuS0ZKFOOQ== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" "@aws-sdk/util-locate-window@^1.0.0-rc.1": version "1.0.0-rc.3" @@ -630,50 +738,68 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/util-uri-escape@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-1.0.0-rc.3.tgz#53b7ba5c353cef31f0d1f10c06d8dfc2118a3371" - integrity sha512-PW1Uh5nJ32VKysV6DxyO40gONJR8s0QFeS55apyPUeCYCrdEjwsNvftDWbRJIcVpvkRSrbDezWc5CJC0S8WXjQ== +"@aws-sdk/util-uri-escape@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.13.1.tgz#5585a53fdc245b717beb7d785f39660eee219e77" + integrity sha512-zejPAiPoS5Zja9nelZUJMdIwiXHKmubgumIV4USB+kgSR4f8BlSj/amM0NdGgZMjyVtuIvdiVHZssM/yK8G1Jg== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/util-user-agent-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-1.0.0-rc.3.tgz#2b8d7a79c7e79099fe9a41976d4eeb39f5d83c21" - integrity sha512-ev7bjF6QejDTi/UTvBLfiUETrXtuBf5sJl8ocWRUcrCnje5DW5lat2LaC7KWeRppQ4NA//ldavF5ngAxsn8TzA== +"@aws-sdk/util-user-agent-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.13.1.tgz#8975041dbaf0c62f9f1f870c24d25ee337ac0c5b" + integrity sha512-j9EL/fWIi5FivsXvjpXjROZEn44LNHY8oUkcFM4C4K8V6dmBK7kwX1svzCAfagwGyrahHkI2F3Isv0zI3FA6DQ== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + bowser "^2.11.0" + tslib "^2.0.0" -"@aws-sdk/util-user-agent-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-1.0.0-rc.3.tgz#f9a7337b80e4118a12c4cc4f83512e9b5e48cb4e" - integrity sha512-5ELevKFFsHcyPSOrQ3mgdaNZ+Fr1I4J+/8aKoOiBO1Pnp15/xlVS4GkRiE0uUmAvBbUh1sByMvTo7ITeOBvlxA== +"@aws-sdk/util-user-agent-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.13.1.tgz#ac9dcb043d45b4425dbd308c1cea4b05a695a85c" + integrity sha512-ztECuZn1T0GeRYvmGRlgjs2J/C+BYx2QlImP0Z3xDYeYQnBt8n2dSljutQfF941QaHiB4Ay/NIdfzczZVO7xBA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/util-utf8-browser@1.0.0-rc.3", "@aws-sdk/util-utf8-browser@^1.0.0-rc.1": +"@aws-sdk/util-utf8-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.13.1.tgz#eae1f3d8063566d813c0df4adf5f487bd128b56f" + integrity sha512-+1FmtFOvDOYfoJnC6DEgjpcPKUERZA8VZ7JenY6SsEqVneWzHf4YVE2+KZM0DT9leLzgZBW/DKJWjeKxykaBEg== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/util-utf8-browser@^1.0.0-rc.1": version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-1.0.0-rc.3.tgz#ca2f1ee3c3774203675455e6cf6a52256d40849d" integrity sha512-ypEJ2zsfm844dPSnES5lvS80Jb6hQ7D9iu0TUKQfIVu0LernJaAiSM05UEbktN+bEAoQBi9S64l8JjHVKFWu1Q== dependencies: tslib "^1.8.0" -"@aws-sdk/util-utf8-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-1.0.0-rc.3.tgz#d6841823b949f4209fdcc405c5ad5d4b483e6e60" - integrity sha512-80BWIgYzdw/cKxUrXf+7IKp07saLfCl7p4Q+zitcTrng9bSbPhjntXBS+dOFrBU2fBUynfI2K+9k5taJRKgOTQ== +"@aws-sdk/util-utf8-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.13.1.tgz#72c454d5dd57f9a404ad1cdc317940840de0fb46" + integrity sha512-2SVqcqQQah7cYny6mUmx9UlVIYiaCULnWqOvPkpAKLS3uDFhhFrjvdrQkJXjajR4r7xb73cGn+f2iRXrEqmopw== dependencies: - "@aws-sdk/util-buffer-from" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/util-buffer-from" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/xml-builder@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-1.0.0-rc.3.tgz#2b0b6b4c182b96245889f4c8e2004eef847401f4" - integrity sha512-WdW/bZLVMNrEdG++m4B4QmZ6KnYsF3V68CDkZKg8IgDOMON4YOqUPBYDHNR8Wtdd1JQFLMDzrcqnXQqLb5dWgA== +"@aws-sdk/util-waiter@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.13.1.tgz#3c8bdc11bd2e3124dd806040479470b76cfe2b2a" + integrity sha512-TpzY3X3QqlD5XaoI4ISjUjz6zjrpsUuxGaiubjbWjXsduW9C9K6jJveTk4FM1KEi4CDPe60J4ypHCE9+G29mfg== dependencies: - tslib "^1.8.0" + "@aws-sdk/abort-controller" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/xml-builder@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.14.0.tgz#3f7040da919d596b3a456830229146e330c5ed70" + integrity sha512-TGyodkTPezFTR7vfHiPsynavfeDwbXNTK4r3OYeAt0+tdm3RM6PoUqpkMYLyQgyA+G48uyMunACi/O12H3cwKQ== + dependencies: + tslib "^2.0.0" "@babel/code-frame@^7.10.4": version "7.10.4" @@ -918,6 +1044,14 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rollup/pluginutils@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.0.tgz#0dcc61c780e39257554feb7f77207dceca13c838" + integrity sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + "@types/aws-lambda@^8.10.57": version "8.10.61" resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.61.tgz#7471e08843dbdcf09b2494ac5b34c4d1a391e6d0" @@ -1165,6 +1299,11 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1483,12 +1622,7 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -fast-base64-decode@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" - integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== - -fast-xml-parser@^3.16.0: +fast-xml-parser@3.19.0: version "3.19.0" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== @@ -1760,6 +1894,13 @@ is-core-module@^2.1.0: dependencies: has "^1.0.3" +is-core-module@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" + integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw== + dependencies: + has "^1.0.3" + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -2349,17 +2490,12 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -querystring@0.2.0, querystring@^0.2.0: +querystring@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= @@ -2386,13 +2522,6 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-native-get-random-values@^1.4.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.7.0.tgz#86d9d1960828b606392dba4540bf760605448530" - integrity sha512-zDhmpWUekGRFb9I+MQkxllHcqXN9HBSsgPwBQfrZ1KZYpzDspWLZ6/yLMMZrtq4pVqNR7C7N96L3SuLpXv1nhQ== - dependencies: - fast-base64-decode "^1.0.0" - readable-stream@^2.0.1, readable-stream@^2.0.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -2425,7 +2554,15 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@1.17.0, resolve@^1.17.0: +resolve@1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +resolve@^1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -2464,16 +2601,16 @@ rollup-plugin-terser@^7.0.2: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup-plugin-typescript2@^0.27.2: - version "0.27.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.2.tgz#871a7f5d2a774f9cef50d25da868eec72acc2ed8" - integrity sha512-zarMH2F8oT/NO6p20gl/jkts+WxyzOlhOIUwUU/EDx5e6ewdDPS/flwLj5XFuijUCr64bZwqKuRVwCPdXXYefQ== +rollup-plugin-typescript2@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.30.0.tgz#1cc99ac2309bf4b9d0a3ebdbc2002aecd56083d3" + integrity sha512-NUFszIQyhgDdhRS9ya/VEmsnpTe+GERDMmFo0Y+kf8ds51Xy57nPNGglJY+W6x1vcouA7Au7nsTgsLFj2I0PxQ== dependencies: - "@rollup/pluginutils" "^3.1.0" + "@rollup/pluginutils" "^4.1.0" find-cache-dir "^3.3.1" fs-extra "8.1.0" - resolve "1.17.0" - tslib "2.0.1" + resolve "1.20.0" + tslib "2.1.0" rollup-pluginutils@^2.8.2: version "2.8.2" @@ -2821,20 +2958,20 @@ ts-node@^9.0.0: source-map-support "^0.5.17" yn "3.1.1" -tslib@2.0.1, tslib@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" - integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== +tslib@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== -tslib@^1.11.1: +tslib@^1.11.1, tslib@^1.8.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^1.8.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== +tslib@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== tunnel-agent@^0.6.0: version "0.6.0" @@ -2843,10 +2980,10 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -typescript@^3.9.6: - version "3.9.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== +typescript@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" + integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== universalify@^0.1.0: version "0.1.2" @@ -2858,23 +2995,15 @@ universalify@^1.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== webidl-conversions@^4.0.2: version "4.0.2" diff --git a/packages/serverless-components/nextjs-component/src/component.ts b/packages/serverless-components/nextjs-component/src/component.ts index 12888c72ad..3cbc85e5a5 100644 --- a/packages/serverless-components/nextjs-component/src/component.ts +++ b/packages/serverless-components/nextjs-component/src/component.ts @@ -485,6 +485,7 @@ class NextjsComponent extends Component { } const regenerationLambdaInput: LambdaInput = { + region: bucketRegion, description: inputs.description ? `${inputs.description} (API)` : "Next.js Regeneration Lambda", diff --git a/packages/serverless-components/nextjs-component/types.d.ts b/packages/serverless-components/nextjs-component/types.d.ts index 28fe471ada..07dc56eb90 100644 --- a/packages/serverless-components/nextjs-component/types.d.ts +++ b/packages/serverless-components/nextjs-component/types.d.ts @@ -81,6 +81,7 @@ export type LambdaInput = { description: string; handler: string; code: string; + region: string; role: Record; memory: number; timeout: number; From 6adf8903aeffc2fae1eefca6c42364fe27c3ca38 Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 4 May 2021 19:10:19 +0100 Subject: [PATCH 18/48] revery async lambda changes and use SQS --- packages/libs/lambda-at-edge/package.json | 2 +- .../lambda-at-edge/src/default-handler.ts | 19 +++- .../src/lib/getStaticRegenerationResponse.ts | 14 ++- .../src/lib/triggerStaticRegeneration.ts | 42 +++++--- .../src/regeneration-handler.ts | 97 ++++++++++--------- packages/libs/lambda-at-edge/yarn.lock | 49 ++++++---- .../nextjs-cdk-construct/src/index.ts | 24 ++++- .../nextjs-component/types.d.ts | 2 +- 8 files changed, 163 insertions(+), 86 deletions(-) diff --git a/packages/libs/lambda-at-edge/package.json b/packages/libs/lambda-at-edge/package.json index dfea94dc1a..345f808e13 100644 --- a/packages/libs/lambda-at-edge/package.json +++ b/packages/libs/lambda-at-edge/package.json @@ -61,7 +61,7 @@ "typescript": "^4.2.4" }, "dependencies": { - "@aws-sdk/client-lambda": "3.14.0", + "@aws-sdk/client-sqs": "3.14.0", "@aws-sdk/client-s3": "3.14.0", "@hapi/accept": "5.0.1", "@vercel/nft": "^0.9.3", diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index fc7c7ccc4d..5bd1cbc327 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -44,7 +44,10 @@ import { getLocalePrefixFromUri } from "./routing/locale-utils"; import { removeBlacklistedHeaders } from "./headers/removeBlacklistedHeaders"; -import { getStaticRegenerationResponse } from "./lib/getStaticRegenerationResponse"; +import { + getStaticRegenerationResponse, + getThrottledStaticRegenerationCachePolicy +} from "./lib/getStaticRegenerationResponse"; import { s3BucketNameFromEventRequest } from "./s3/s3BucketNameFromEventRequest"; import { triggerStaticRegeneration } from "./lib/triggerStaticRegeneration"; import { s3StorePage } from "./s3/s3StorePage"; @@ -635,11 +638,23 @@ const handleOriginResponse = async ({ delete response.headers.expires; if (staticRegenerationResponse.secondsRemainingUntilRevalidation === 0) { - await triggerStaticRegeneration({ + const { throttle } = await triggerStaticRegeneration({ basePath, request, response }); + + // Occasionally we will get rate-limited by the Queue (in the event we + // send it too many messages) and so we we use the cache to reduce + // requests to the queue for a short period. + if (throttle) { + response.headers["cache-control"] = [ + { + key: "Cache-Control", + value: getThrottledStaticRegenerationCachePolicy(1).cacheControl + } + ]; + } } } diff --git a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts index c748fa8d2d..051384887b 100644 --- a/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts +++ b/packages/libs/lambda-at-edge/src/lib/getStaticRegenerationResponse.ts @@ -69,4 +69,16 @@ const getStaticRegenerationResponse = ( }; }; -export { getStaticRegenerationResponse }; +const getThrottledStaticRegenerationCachePolicy = ( + expiresInSeconds: number +): StaticRegenerationResponseValue => { + return { + secondsRemainingUntilRevalidation: expiresInSeconds, + cacheControl: `public, max-age=0, s-maxage=${expiresInSeconds}, must-revalidate` + }; +}; + +export { + getStaticRegenerationResponse, + getThrottledStaticRegenerationCachePolicy +}; diff --git a/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts b/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts index bd7f28b739..fd18ffab93 100644 --- a/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts +++ b/packages/libs/lambda-at-edge/src/lib/triggerStaticRegeneration.ts @@ -10,7 +10,7 @@ interface TriggerStaticRegenerationOptions { export const triggerStaticRegeneration = async ( options: TriggerStaticRegenerationOptions -): Promise => { +): Promise<{ throttle: boolean }> => { const { region } = options.request.origin?.s3 || {}; const bucketName = s3BucketNameFromEventRequest(options.request); @@ -22,12 +22,10 @@ export const triggerStaticRegeneration = async ( throw new Error("Expected region to be defined"); } - const { LambdaClient, InvokeAsyncCommand } = await import( - "@aws-sdk/client-lambda" - ); - const lambda = new LambdaClient({ + const { SQSClient, SendMessageCommand } = await import("@aws-sdk/client-sqs"); + const sqs = new SQSClient({ region, - maxAttempts: 3, + maxAttempts: 1, retryStrategy: await buildS3RetryStrategy() }); @@ -38,10 +36,30 @@ export const triggerStaticRegeneration = async ( basePath: options.basePath }; - await lambda.send( - new InvokeAsyncCommand({ - FunctionName: bucketName, - InvokeArgs: JSON.stringify(regenerationEvent) - }) - ); + try { + await sqs.send( + new SendMessageCommand({ + QueueUrl: `https://sqs.${region}.amazonaws.com/${bucketName}.fifo`, + MessageBody: JSON.stringify(regenerationEvent), // This is not used, however it is a required property + // We only want to trigger the regeneration once for every previous + // update. This will prevent the case where this page is being + // requested again whilst its already started to regenerate. + MessageDeduplicationId: + options.response.headers["etag"]?.[0].value || + new Date(options.response.headers["last-modified"]?.[0].value) + .getTime() + .toString(), + // Only deduplicate based on the object, i.e. we can generate + // different pages in parallel, just not the same one + MessageGroupId: options.request.uri + }) + ); + return { throttle: false }; + } catch (error) { + if (error.code === "RequestThrottled") { + return { throttle: true }; + } else { + throw error; + } + } }; diff --git a/packages/libs/lambda-at-edge/src/regeneration-handler.ts b/packages/libs/lambda-at-edge/src/regeneration-handler.ts index 4d0bf06ace..d393792615 100644 --- a/packages/libs/lambda-at-edge/src/regeneration-handler.ts +++ b/packages/libs/lambda-at-edge/src/regeneration-handler.ts @@ -8,57 +8,64 @@ import { import { s3StorePage } from "./s3/s3StorePage"; import { cleanRequestUriForRouter } from "./lib/cleanRequestUriForRouter"; -export const handler = async (event: RegenerationEvent): Promise => { - const manifest: OriginRequestDefaultHandlerManifest = Manifest; - event.cloudFrontEventRequest.uri = cleanRequestUriForRouter( - event.cloudFrontEventRequest.uri, - manifest.trailingSlash - ); - const { req, res } = lambdaAtEdgeCompat( - { request: event.cloudFrontEventRequest }, - { enableHTTPCompression: manifest.enableHTTPCompression } - ); +export const handler = async (event: AWSLambda.SQSEvent): Promise => { + await Promise.all( + event.Records.map(async (record) => { + const regenerationEvent: RegenerationEvent = JSON.parse(record.body); + + const manifest: OriginRequestDefaultHandlerManifest = Manifest; + regenerationEvent.cloudFrontEventRequest.uri = cleanRequestUriForRouter( + regenerationEvent.cloudFrontEventRequest.uri, + manifest.trailingSlash + ); + const { req, res } = lambdaAtEdgeCompat( + { request: regenerationEvent.cloudFrontEventRequest }, + { enableHTTPCompression: manifest.enableHTTPCompression } + ); - const baseKey = event.cloudFrontEventRequest.uri - .replace(/\.(json|html)$/, "") - .replace(/^_next\/data\/[^\/]*\//, ""); + const baseKey = regenerationEvent.cloudFrontEventRequest.uri + .replace(/\.(json|html)$/, "") + .replace(/^_next\/data\/[^\/]*\//, ""); - let srcRoute = manifest.pages.ssg.nonDynamic[baseKey]?.srcRoute; - if (!srcRoute) { - const matchedDynamicRoute = Object.entries(manifest.pages.ssg.dynamic).find( - ([, dynamicSsgRoute]) => { - return new RegExp(dynamicSsgRoute.routeRegex).test( - event.cloudFrontEventRequest.uri - ); + let srcRoute = manifest.pages.ssg.nonDynamic[baseKey]?.srcRoute; + if (!srcRoute) { + const matchedDynamicRoute = Object.entries( + manifest.pages.ssg.dynamic + ).find(([, dynamicSsgRoute]) => { + return new RegExp(dynamicSsgRoute.routeRegex).test( + regenerationEvent.cloudFrontEventRequest.uri + ); + }); + + if (matchedDynamicRoute) { + [srcRoute] = matchedDynamicRoute; + } } - ); - if (matchedDynamicRoute) { - [srcRoute] = matchedDynamicRoute; - } - } + // We probably should not get to this point without `srcRoute` being + // defined + const srcPath = srcRoute || baseKey; - // We probably should not get to this point without `srcRoute` being - // defined - const srcPath = srcRoute || baseKey; + // eslint-disable-next-line @typescript-eslint/no-var-requires + const page = require(`./pages${srcPath}`); - // eslint-disable-next-line @typescript-eslint/no-var-requires - const page = require(`./pages${srcPath}`); + const { renderOpts, html } = await page.renderReqToHTML( + req, + res, + "passthrough" + ); - const { renderOpts, html } = await page.renderReqToHTML( - req, - res, - "passthrough" + await s3StorePage({ + html, + uri: regenerationEvent.cloudFrontEventRequest.uri, + basePath: regenerationEvent.basePath, + bucketName: regenerationEvent.bucketName, + buildId: manifest.buildId, + pageData: renderOpts.pageData, + region: + regenerationEvent.cloudFrontEventRequest.origin?.s3?.region || "", + revalidate: renderOpts.revalidate + }); + }) ); - - await s3StorePage({ - html, - uri: event.cloudFrontEventRequest.uri, - basePath: event.basePath, - bucketName: event.bucketName, - buildId: manifest.buildId, - pageData: renderOpts.pageData, - region: event.cloudFrontEventRequest.origin?.s3?.region || "", - revalidate: renderOpts.revalidate - }); }; diff --git a/packages/libs/lambda-at-edge/yarn.lock b/packages/libs/lambda-at-edge/yarn.lock index 350769e19a..fe3092fbf8 100644 --- a/packages/libs/lambda-at-edge/yarn.lock +++ b/packages/libs/lambda-at-edge/yarn.lock @@ -68,25 +68,37 @@ dependencies: tslib "^2.0.0" -"@aws-sdk/client-lambda@3.14.0": +"@aws-sdk/client-s3@3.14.0": version "3.14.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-lambda/-/client-lambda-3.14.0.tgz#688af6f5afc047d466993b04cc8264d7dbcc6d36" - integrity sha512-zixG2l1lmUr3nec+YFLIRVkmgMZz+0Slixk6IpZmhkqJFOp7CkjdMoz5Y5K4ljjaG6j4y2XpHNichuP8ZnHWxA== + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.14.0.tgz#c587a45ec599f8250e05ef7985704129c0990817" + integrity sha512-YAlSg60BgYDQzSTusWOH38OYKF8EOj4BFotrWxeFDAvDg40N/n1hYVEe/uOWjPTTQUXj7td4DBPxTr4r3QBY0g== dependencies: "@aws-crypto/sha256-browser" "^1.0.0" "@aws-crypto/sha256-js" "^1.0.0" "@aws-sdk/client-sts" "3.14.0" "@aws-sdk/config-resolver" "3.14.0" "@aws-sdk/credential-provider-node" "3.14.0" + "@aws-sdk/eventstream-serde-browser" "3.13.1" + "@aws-sdk/eventstream-serde-config-resolver" "3.13.1" + "@aws-sdk/eventstream-serde-node" "3.13.1" "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-blob-browser" "3.13.1" "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/hash-stream-node" "3.13.1" "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/md5-js" "3.13.1" + "@aws-sdk/middleware-apply-body-checksum" "3.13.1" + "@aws-sdk/middleware-bucket-endpoint" "3.13.1" "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-expect-continue" "3.13.1" "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-location-constraint" "3.13.1" "@aws-sdk/middleware-logger" "3.13.1" "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-sdk-s3" "3.13.1" "@aws-sdk/middleware-serde" "3.13.1" "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/middleware-ssec" "3.13.1" "@aws-sdk/middleware-stack" "3.13.1" "@aws-sdk/middleware-user-agent" "3.14.0" "@aws-sdk/node-config-provider" "3.13.1" @@ -104,39 +116,31 @@ "@aws-sdk/util-utf8-browser" "3.13.1" "@aws-sdk/util-utf8-node" "3.13.1" "@aws-sdk/util-waiter" "3.13.1" + "@aws-sdk/xml-builder" "3.14.0" + fast-xml-parser "3.19.0" tslib "^2.0.0" -"@aws-sdk/client-s3@3.14.0": +"@aws-sdk/client-sqs@3.14.0": version "3.14.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.14.0.tgz#c587a45ec599f8250e05ef7985704129c0990817" - integrity sha512-YAlSg60BgYDQzSTusWOH38OYKF8EOj4BFotrWxeFDAvDg40N/n1hYVEe/uOWjPTTQUXj7td4DBPxTr4r3QBY0g== + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sqs/-/client-sqs-3.14.0.tgz#72fea092013209db58c083730da34ce0bd1da259" + integrity sha512-wH+hBMLzlAeAZy6hrwaezhRUEHrDxwsFgahPB9rFpy96paQHzBswPE/YR2+UP6Ob/Mt1/xNwMXFgmr6vvKMDxw== dependencies: "@aws-crypto/sha256-browser" "^1.0.0" "@aws-crypto/sha256-js" "^1.0.0" "@aws-sdk/client-sts" "3.14.0" "@aws-sdk/config-resolver" "3.14.0" "@aws-sdk/credential-provider-node" "3.14.0" - "@aws-sdk/eventstream-serde-browser" "3.13.1" - "@aws-sdk/eventstream-serde-config-resolver" "3.13.1" - "@aws-sdk/eventstream-serde-node" "3.13.1" "@aws-sdk/fetch-http-handler" "3.13.1" - "@aws-sdk/hash-blob-browser" "3.13.1" "@aws-sdk/hash-node" "3.13.1" - "@aws-sdk/hash-stream-node" "3.13.1" "@aws-sdk/invalid-dependency" "3.13.1" "@aws-sdk/md5-js" "3.13.1" - "@aws-sdk/middleware-apply-body-checksum" "3.13.1" - "@aws-sdk/middleware-bucket-endpoint" "3.13.1" "@aws-sdk/middleware-content-length" "3.13.1" - "@aws-sdk/middleware-expect-continue" "3.13.1" "@aws-sdk/middleware-host-header" "3.13.1" - "@aws-sdk/middleware-location-constraint" "3.13.1" "@aws-sdk/middleware-logger" "3.13.1" "@aws-sdk/middleware-retry" "3.13.1" - "@aws-sdk/middleware-sdk-s3" "3.13.1" + "@aws-sdk/middleware-sdk-sqs" "3.13.1" "@aws-sdk/middleware-serde" "3.13.1" "@aws-sdk/middleware-signing" "3.13.1" - "@aws-sdk/middleware-ssec" "3.13.1" "@aws-sdk/middleware-stack" "3.13.1" "@aws-sdk/middleware-user-agent" "3.14.0" "@aws-sdk/node-config-provider" "3.13.1" @@ -153,8 +157,6 @@ "@aws-sdk/util-user-agent-node" "3.13.1" "@aws-sdk/util-utf8-browser" "3.13.1" "@aws-sdk/util-utf8-node" "3.13.1" - "@aws-sdk/util-waiter" "3.13.1" - "@aws-sdk/xml-builder" "3.14.0" fast-xml-parser "3.19.0" tslib "^2.0.0" @@ -520,6 +522,15 @@ "@aws-sdk/util-arn-parser" "3.13.1" tslib "^2.0.0" +"@aws-sdk/middleware-sdk-sqs@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.13.1.tgz#08efc455f2c2ef3497dbb186174280b4d83520f0" + integrity sha512-Slg0mkLSvFuAO6b70NiwZsKy8DsurU4RvXfFObCk4PDwDArOJgDEZPjFKYM1i5Ao0pzZd09xGtv9+64fIhynVg== + dependencies: + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-hex-encoding" "3.13.1" + tslib "^2.0.0" + "@aws-sdk/middleware-sdk-sts@3.13.1": version "3.13.1" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.13.1.tgz#cae44c531154ba79b306d05dad9a119563eb7b56" diff --git a/packages/serverless-components/nextjs-cdk-construct/src/index.ts b/packages/serverless-components/nextjs-cdk-construct/src/index.ts index b0ab30d8cd..17a0b1eec2 100644 --- a/packages/serverless-components/nextjs-cdk-construct/src/index.ts +++ b/packages/serverless-components/nextjs-cdk-construct/src/index.ts @@ -6,6 +6,8 @@ import * as s3Deploy from "@aws-cdk/aws-s3-deployment"; import * as cloudfront from "@aws-cdk/aws-cloudfront"; import * as origins from "@aws-cdk/aws-cloudfront-origins"; import { ARecord, RecordTarget } from "@aws-cdk/aws-route53"; +import * as sqs from "@aws-cdk/aws-sqs"; +import * as lambdaEventSources from "@aws-cdk/aws-lambda-event-sources"; import { OriginRequestImageHandlerManifest, OriginRequestApiHandlerManifest, @@ -60,6 +62,8 @@ export class NextJSLambdaEdge extends cdk.Construct { public aRecord?: ARecord; + public regenerationQueue: sqs.Queue; + public regenerationFunction: lambda.Function; constructor(scope: cdk.Construct, id: string, private props: Props) { @@ -80,23 +84,32 @@ export class NextJSLambdaEdge extends cdk.Construct { ...(props.s3Props || {}) }); + this.regenerationQueue = new sqs.Queue(this, "RegenerationQueue", { + // We call the queue the same name as the bucket so that we can easily + // reference it from within the lambda@edge, given we can't use env vars + // in a lambda@edge + queueName: `${this.bucket.bucketName}.fifo`, + fifo: true, + removalPolicy: cdk.RemovalPolicy.DESTROY + }); + this.regenerationFunction = new lambda.Function( this, "RegenerationFunction", { - // We call the lambda the same name as the bucket so that we can easily - // reference it from within the lambda@edge, given we can't use env vars - // in a lambda@edge - functionName: this.bucket.bucketName, handler: "index.handler", runtime: lambda.Runtime.NODEJS_14_X, - timeout: Duration.minutes(1), + timeout: Duration.seconds(30), code: lambda.Code.fromAsset( path.join(this.props.serverlessBuildOutDir, "regeneration-lambda") ) } ); + this.regenerationFunction.addEventSource( + new lambdaEventSources.SqsEventSource(this.regenerationQueue) + ); + this.edgeLambdaRole = new Role(this, "NextEdgeLambdaRole", { assumedBy: new CompositePrincipal( new ServicePrincipal("lambda.amazonaws.com"), @@ -132,6 +145,7 @@ export class NextJSLambdaEdge extends cdk.Construct { this.bucket.grantReadWrite(this.defaultNextLambda); this.bucket.grantReadWrite(this.regenerationFunction); + this.regenerationQueue.grantSendMessages(this.defaultNextLambda); this.regenerationFunction.grantInvoke(this.defaultNextLambda); this.defaultNextLambda.currentVersion.addAlias("live"); diff --git a/packages/serverless-components/nextjs-component/types.d.ts b/packages/serverless-components/nextjs-component/types.d.ts index 07dc56eb90..ebf7b07a8a 100644 --- a/packages/serverless-components/nextjs-component/types.d.ts +++ b/packages/serverless-components/nextjs-component/types.d.ts @@ -81,7 +81,7 @@ export type LambdaInput = { description: string; handler: string; code: string; - region: string; + region?: string; role: Record; memory: number; timeout: number; From 9dbfb27b3fb4ff3453fd8df89a1d0e1120e440fa Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 4 May 2021 21:05:22 +0100 Subject: [PATCH 19/48] add sqs creation to serverless components --- .../serverless-components/aws-sqs/README.md | 60 + .../aws-sqs/package.json | 24 + .../aws-sqs/serverless.js | 149 +++ .../serverless-components/aws-sqs/utils.js | 126 ++ .../serverless-components/aws-sqs/yarn.lock | 4 + .../nextjs-component/package.json | 1 + .../nextjs-component/src/component.ts | 53 +- .../nextjs-component/yarn.lock | 1088 ++++++++++++++++- 8 files changed, 1474 insertions(+), 31 deletions(-) create mode 100644 packages/serverless-components/aws-sqs/README.md create mode 100644 packages/serverless-components/aws-sqs/package.json create mode 100644 packages/serverless-components/aws-sqs/serverless.js create mode 100644 packages/serverless-components/aws-sqs/utils.js create mode 100644 packages/serverless-components/aws-sqs/yarn.lock diff --git a/packages/serverless-components/aws-sqs/README.md b/packages/serverless-components/aws-sqs/README.md new file mode 100644 index 0000000000..bc0df3a463 --- /dev/null +++ b/packages/serverless-components/aws-sqs/README.md @@ -0,0 +1,60 @@ +# aws-sqs + +Deploy SQS queues to AWS in seconds with [Serverless Components](https://github.com/serverless/components). + +  + +1. [Install](#1-install) +2. [Create](#2-create) +3. [Configure](#3-configure) +4. [Deploy](#4-deploy) + +  + +### 1. Install + +```console +$ npm install -g serverless +``` + +### 2. Create + +```console +$ mkdir my-function && cd my-function +``` + +the directory should look something like this: + +``` +|- code + |- handler.js + |- package.json # optional +|- serverless.yml +|- .env # your AWS api keys +``` + +``` +# .env +AWS_ACCESS_KEY_ID=XXX +AWS_SECRET_ACCESS_KEY=XXX +``` + +### 3. Configure + +```yml +# serverless.yml + +myQueue: + component: "@serverless/aws-sqs" +``` + +### 4. Deploy + +```console +$ serverless +``` + +### Credits + +This package was originally implemented by [DaySmart](https://github.com/DaySmart/aws-sqs). +I decided to fork it and bring it into this monorepo because it wasn't being maintained anymore diff --git a/packages/serverless-components/aws-sqs/package.json b/packages/serverless-components/aws-sqs/package.json new file mode 100644 index 0000000000..ec5b28cd84 --- /dev/null +++ b/packages/serverless-components/aws-sqs/package.json @@ -0,0 +1,24 @@ +{ + "name": "@sls-next/aws-sqs", + "version": "1.1.1-alpha.1", + "main": "serverless.js", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "AWS", + "SQS", + "Next.js", + "Serverless" + ], + "author": "Daniel Conde Marin ", + "license": "MIT", + "bugs": { + "url": "https://github.com/serverless-nextjs/serverless-next.js/issues" + }, + "homepage": "https://github.com/serverless-nextjs/serverless-next.js#readme", + "peerDependencies": { + "@serverless/core": "^1.1.2", + "aws-sdk": "^2.702.0" + } +} diff --git a/packages/serverless-components/aws-sqs/serverless.js b/packages/serverless-components/aws-sqs/serverless.js new file mode 100644 index 0000000000..a50a9bac76 --- /dev/null +++ b/packages/serverless-components/aws-sqs/serverless.js @@ -0,0 +1,149 @@ +const aws = require("aws-sdk"); +const { isEmpty, mergeDeepRight, pick } = require("ramda"); +const { Component } = require("@serverless/core"); +const { + createQueue, + deleteQueue, + getDefaults, + getQueue, + getAccountId, + getArn, + getUrl, + setAttributes +} = require("./utils"); + +const outputsList = ["arn", "url"]; + +const defaults = { + name: "serverless", + region: "us-east-1" +}; + +class AwsSqsQueue extends Component { + async default(inputs = {}) { + const config = mergeDeepRight(getDefaults({ defaults }), inputs); + const accountId = await getAccountId(aws); + + const arn = getArn({ + aws, + accountId, + name: config.name, + region: config.region + }); + + const queueUrl = getUrl({ + aws, + accountId, + name: config.name, + region: config.region + }); + + config.arn = arn; + config.url = queueUrl; + + this.context.status(`Deploying`); + + const sqs = new aws.SQS({ + region: config.region, + credentials: this.context.credentials.aws + }); + + const prevInstance = await getQueue({ + sqs, + queueUrl: this.state.url || queueUrl + }); + + if (isEmpty(prevInstance)) { + this.context.status(`Creating`); + await createQueue({ + sqs, + config: config + }); + } else { + if (this.state.url === queueUrl) { + this.context.status(`Updating`); + await setAttributes(sqs, queueUrl, config); + } else { + this.context.debug(`The QueueUrl has changed`); + this.context.debug(`Deleting previous queue`); + + await deleteQueue({ sqs, queueUrl: this.state.url }); + + this.context.debug(`Creating new queue`); + + await createQueue({ + sqs, + config: config + }); + } + } + + this.state.name = config.name; + this.state.arn = config.arn; + this.state.url = config.url; + this.state.region = config.region; + await this.save(); + + const outputs = pick(outputsList, config); + return outputs; + } + + async addEventSource(functionArn) { + const lambda = new aws.Lambda({ + region: this.state.region, + credentials: this.context.credentials.aws + }); + + const existing = await lambda + .listEventSourceMappings({ + EventSourceArn: this.state.arn, + FunctionName: functionArn + }) + .promise(); + + const mappings = existing.EventSourceMappings || []; + + if (mappings.length) { + return; + } + + await lambda + .createEventSourceMapping({ + EventSourceArn: this.state.arn, + FunctionName: functionArn + }) + .promise(); + } + + async remove(inputs = {}) { + const config = mergeDeepRight(defaults, inputs); + config.name = inputs.name || this.state.name || defaults.name; + + const sqs = new aws.SQS({ + region: config.region, + credentials: this.context.credentials.aws + }); + + const accountId = await getAccountId(aws); + + const queueUrl = + this.state.url || + getUrl({ + aws, + accountId, + name: config.name, + region: config.region + }); + + this.context.status(`Removing`); + + await deleteQueue({ sqs, queueUrl }); + + this.state = {}; + await this.save(); + + return {}; + } +} + +module.exports = AwsSqsQueue; diff --git a/packages/serverless-components/aws-sqs/utils.js b/packages/serverless-components/aws-sqs/utils.js new file mode 100644 index 0000000000..a49b3518ed --- /dev/null +++ b/packages/serverless-components/aws-sqs/utils.js @@ -0,0 +1,126 @@ +const { clone } = require("ramda"); + +const getDefaults = ({ defaults }) => { + const response = clone(defaults); + + return response; +}; + +const getQueue = async ({ sqs, queueUrl }) => { + let queueAttributes = {}; + try { + const response = await sqs + .getQueueAttributes({ QueueUrl: queueUrl }) + .promise(); + queueAttributes = response.Attributes; + } catch (error) { + if (error.code !== "AWS.SimpleQueueService.NonExistentQueue") { + throw error; + } + } + return queueAttributes; +}; + +const getAccountId = async (aws) => { + const STS = new aws.STS(); + const res = await STS.getCallerIdentity({}).promise(); + return res.Account; +}; + +const getUrl = ({ name, region, accountId }) => { + return `https://sqs.${region}.amazonaws.com/${accountId}/${name}`; +}; + +const getArn = ({ name, region, accountId }) => { + return `arn:aws:sqs:${region}:${accountId}:${name}`; +}; + +const createAttributeMap = (config) => { + const attributeMap = {}; + if (typeof config.visibilityTimeout !== "undefined") + attributeMap.VisibilityTimeout = config.visibilityTimeout.toString(); + if (typeof config.maximumMessageSize !== "undefined") + attributeMap.MaximumMessageSize = config.maximumMessageSize.toString(); + if (typeof config.messageRetentionPeriod !== "undefined") + attributeMap.MessageRetentionPeriod = config.messageRetentionPeriod.toString(); + if (typeof config.delaySeconds !== "undefined") + attributeMap.DelaySeconds = config.delaySeconds.toString(); + if (typeof config.receiveMessageWaitTimeSeconds !== "undefined") + attributeMap.ReceiveMessageWaitTimeSeconds = config.receiveMessageWaitTimeSeconds.toString(); + if (typeof config.redrivePolicy !== "undefined") + attributeMap.RedrivePolicy = JSON.stringify(config.redrivePolicy) || ""; + if (typeof config.policy !== "undefined") + attributeMap.Policy = JSON.stringify(config.policy) || ""; + if (typeof config.kmsMasterKeyId !== "undefined") + attributeMap.KmsMasterKeyId = JSON.stringify(config.kmsMasterKeyId) || ""; + if (typeof config.kmsDataKeyReusePeriodSeconds !== "undefined") + attributeMap.KmsDataKeyReusePeriodSeconds = + JSON.stringify(config.kmsDataKeyReusePeriodSeconds) || "300"; + + if (config.fifoQueue) { + if (typeof config.kmsDataKeyReusePeriodSeconds !== "undefined") { + attributeMap.ContentBasedDeduplication = + JSON.stringify(config.contentBasedDeduplication) || "false"; + } + } + + return attributeMap; +}; + +const createQueue = async ({ sqs, config }) => { + const params = { + QueueName: config.name, + Attributes: createAttributeMap(config) + }; + + if (config.fifoQueue) { + params.Attributes.FifoQueue = "true"; + } + + if (config.tags) { + params.tags = config.tags; + } + const { QueueArn: arn } = await sqs.createQueue(params).promise(); + return { arn }; +}; + +const getAttributes = async (sqs, queueUrl) => { + const params = { + QueueUrl: queueUrl, + AttributeNames: ["All"] + }; + const { Attributes: queueAttributes } = await sqs + .getQueueAttributes(params) + .promise(); + return queueAttributes; +}; + +const setAttributes = async (sqs, queueUrl, config) => { + const params = { + QueueUrl: queueUrl, + Attributes: createAttributeMap(config) + }; + await sqs.setQueueAttributes(params).promise(); +}; + +const deleteQueue = async ({ sqs, queueUrl }) => { + try { + await sqs.deleteQueue({ QueueUrl: queueUrl }).promise(); + } catch (error) { + if (error.code !== "AWS.SimpleQueueService.NonExistentQueue") { + throw error; + } + } +}; + +module.exports = { + createQueue, + deleteQueue, + getAccountId, + getArn, + getUrl, + getDefaults, + getQueue, + getAttributes, + setAttributes +}; diff --git a/packages/serverless-components/aws-sqs/yarn.lock b/packages/serverless-components/aws-sqs/yarn.lock new file mode 100644 index 0000000000..fb57ccd13a --- /dev/null +++ b/packages/serverless-components/aws-sqs/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/packages/serverless-components/nextjs-component/package.json b/packages/serverless-components/nextjs-component/package.json index 4f1a8f6f94..320dac7abe 100644 --- a/packages/serverless-components/nextjs-component/package.json +++ b/packages/serverless-components/nextjs-component/package.json @@ -34,6 +34,7 @@ "@serverless/aws-s3": "^4.2.0", "@serverless/core": "^1.1.2", "@sls-next/aws-cloudfront": "link:../aws-cloudfront", + "@sls-next/aws-sqs": "link:../aws-sqs", "@sls-next/aws-lambda": "link:../aws-lambda", "@sls-next/cloudfront": "link:../../libs/cloudfront", "@sls-next/domain": "link:../domain", diff --git a/packages/serverless-components/nextjs-component/src/component.ts b/packages/serverless-components/nextjs-component/src/component.ts index 3cbc85e5a5..d2b1798263 100644 --- a/packages/serverless-components/nextjs-component/src/component.ts +++ b/packages/serverless-components/nextjs-component/src/component.ts @@ -314,6 +314,7 @@ class NextjsComponent extends Component { const [ bucket, cloudFront, + sqs, defaultEdgeLambda, apiEdgeLambda, imageEdgeLambda, @@ -321,6 +322,7 @@ class NextjsComponent extends Component { ] = await Promise.all([ this.load("@serverless/aws-s3"), this.load("@sls-next/aws-cloudfront"), + this.load("@sls-next/aws-sqs"), this.load("@sls-next/aws-lambda", "defaultEdgeLambda"), this.load("@sls-next/aws-lambda", "apiEdgeLambda"), this.load("@sls-next/aws-lambda", "imageEdgeLambda"), @@ -448,8 +450,14 @@ class NextjsComponent extends Component { return inputValue[lambdaType] || defaultValue; }; + const queue = await sqs({ + name: `${bucketOutputs.name}.fifo`, + visibilityTimeout: "30", + fifoQueue: true + }); + // default policy - let policy: Record = { + const defaultLambdaPolicy: Record = { Version: "2012-10-17", Statement: [ { @@ -468,14 +476,13 @@ class NextjsComponent extends Component { }, { Effect: "Allow", - // The regeneration lambda has the same name as the bucket, so this - // policy statement allow invocation of the regeneration lambda - Resource: `arn:aws:lambda:*:*:function:${bucketOutputs.name}`, - Action: ["lambda:InvokeFunction"] + Resource: queue.arn, + Action: ["sqs:SendMessage"] } ] }; + let policy = defaultLambdaPolicy; if (inputs.policy) { if (typeof inputs.policy === "string") { policy = { arn: inputs.policy }; @@ -491,14 +498,24 @@ class NextjsComponent extends Component { : "Next.js Regeneration Lambda", handler: inputs.handler || "index.handler", code: join(nextConfigPath, REGENERATION_LAMBDA_CODE_DIR), - role: inputs.roleArn - ? { - arn: inputs.roleArn - } - : { - service: ["lambda.amazonaws.com"], - policy - }, + role: { + service: ["lambda.amazonaws.com"], + policy: { + ...defaultLambdaPolicy, + Statement: [ + ...(defaultLambdaPolicy.Statement as Record[]), + { + Effect: "Allow", + Resource: queue.arn, + Action: [ + "sqs:ReceiveMessage", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes" + ] + } + ] + } + }, memory: readLambdaInputValue( "memory", "regenerationLambda", @@ -517,9 +534,13 @@ class NextjsComponent extends Component { name: bucketOutputs.name }; - await regenerationLambda(regenerationLambdaInput); + const regenerationLambdaResult = await regenerationLambda( + regenerationLambdaInput + ); await regenerationLambda.publishVersion(); + await sqs.addEventSource(regenerationLambdaResult.name); + if (hasAPIPages) { const apiEdgeLambdaInput: LambdaInput = { description: inputs.description @@ -810,15 +831,17 @@ class NextjsComponent extends Component { } async remove(): Promise { - const [bucket, cloudfront, domain] = await Promise.all([ + const [bucket, cloudfront, sqs, domain] = await Promise.all([ this.load("@serverless/aws-s3"), this.load("@sls-next/aws-cloudfront"), + this.load("@sls-next/aws-sqs"), this.load("@sls-next/domain") ]); await bucket.remove(); await cloudfront.remove(); await domain.remove(); + await sqs.remove(); } } diff --git a/packages/serverless-components/nextjs-component/yarn.lock b/packages/serverless-components/nextjs-component/yarn.lock index 517cb0b97e..a14bc01a1e 100644 --- a/packages/serverless-components/nextjs-component/yarn.lock +++ b/packages/serverless-components/nextjs-component/yarn.lock @@ -2,6 +2,824 @@ # yarn lockfile v1 +"@aws-crypto/crc32@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-1.0.0.tgz#6a0164fd92bb365860ba6afb5dfef449701eb8ca" + integrity sha512-wr4EyCv3ZfLH3Sg7FErV6e/cLhpk9rUP/l5322y8PRgpQsItdieaLbtE4aDOR+dxl8U7BG9FIwWXH4TleTDZ9A== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz#d3a6af29ba7f15458f79c41d1cd8cac3925e726a" + integrity sha512-kCKVhCF1oDxFYgQrxXmIrS5oaWulkvRcPz+QBDMsUr2crbF4VGgGT6+uQhSwJFdUAQ2A//Vq+uT83eJrkzFgXA== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-1.1.0.tgz#20092cc6c08d8f04db0ed57b6f05cff150384f77" + integrity sha512-VIpuLRDonMAHgomrsm/zKbeXTnxpr4aHDQmS4pF+NcpvBp64l675yjGA9hyUYs/QJwBjUl8WqMjh9tIRgi85Sg== + dependencies: + "@aws-crypto/ie11-detection" "^1.0.0" + "@aws-crypto/sha256-js" "^1.1.0" + "@aws-crypto/supports-web-crypto" "^1.0.0" + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-1.1.0.tgz#a58386ad18186e392e0f1d98d18831261d27b071" + integrity sha512-VIhuqbPgXDVr8sZe2yhgQcDRRmzf4CI8fmC1A3bHiRfE6wlz1d8KpeemqbuoEHotz/Dch9yOxlshyQDNjNFeHA== + dependencies: + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-1.0.0.tgz#c40901bc17ac1e875e248df16a2b47ad8bfd9a93" + integrity sha512-IHLfv+WmVH89EW4n6a5eE8/hUlz6qkWGMn/v4r5ZgzcXdTC5nolii2z3k46y01hWRiC2PPhOdeSLzMUCUMco7g== + dependencies: + tslib "^1.11.1" + +"@aws-sdk/abort-controller@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.13.1.tgz#5b6eaefa72dbafebf026367b0266737b458aacbe" + integrity sha512-iK32oE9hZw3aC6Jgbr8kHGxo1Mq7ayY1dxLB2R59W0YUMB/EEQ2Z0tJaxOsLNfeNBGMvxzQXHxnjP8wUbOGCkA== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/chunked-blob-reader-native@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.13.1.tgz#df5634b7ad7750e238a5e3af29bf6bbcd2c94811" + integrity sha512-PJYLDW5Uc78iwHVJmiGMIRIAwohaewOJGsnnwTGQBsOqTHDM0ywwO3rlObkuuLiWaFA/4w1cYdvWaMI7Iwf+qg== + dependencies: + "@aws-sdk/util-base64-browser" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/chunked-blob-reader@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.13.1.tgz#cb391e7dd460c3a424e4c96a3ff15a165bd268f0" + integrity sha512-vZ292PZUkO7lYba5qz6xcOAwnY9YvjFJM+CEzUsyr7pTBIs/1c9LMZqEMPB9OKKNRmWbB5VwaS2eJQK0KRtr5Q== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/client-s3@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.14.0.tgz#c587a45ec599f8250e05ef7985704129c0990817" + integrity sha512-YAlSg60BgYDQzSTusWOH38OYKF8EOj4BFotrWxeFDAvDg40N/n1hYVEe/uOWjPTTQUXj7td4DBPxTr4r3QBY0g== + dependencies: + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/client-sts" "3.14.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/credential-provider-node" "3.14.0" + "@aws-sdk/eventstream-serde-browser" "3.13.1" + "@aws-sdk/eventstream-serde-config-resolver" "3.13.1" + "@aws-sdk/eventstream-serde-node" "3.13.1" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-blob-browser" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/hash-stream-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/md5-js" "3.13.1" + "@aws-sdk/middleware-apply-body-checksum" "3.13.1" + "@aws-sdk/middleware-bucket-endpoint" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-expect-continue" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-location-constraint" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-sdk-s3" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/middleware-ssec" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + "@aws-sdk/util-waiter" "3.13.1" + "@aws-sdk/xml-builder" "3.14.0" + fast-xml-parser "3.19.0" + tslib "^2.0.0" + +"@aws-sdk/client-sqs@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sqs/-/client-sqs-3.14.0.tgz#72fea092013209db58c083730da34ce0bd1da259" + integrity sha512-wH+hBMLzlAeAZy6hrwaezhRUEHrDxwsFgahPB9rFpy96paQHzBswPE/YR2+UP6Ob/Mt1/xNwMXFgmr6vvKMDxw== + dependencies: + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/client-sts" "3.14.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/credential-provider-node" "3.14.0" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/md5-js" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-sdk-sqs" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + fast-xml-parser "3.19.0" + tslib "^2.0.0" + +"@aws-sdk/client-sso@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.14.0.tgz#da57cf40a501272238ea58e1560a6f3f9fb81c25" + integrity sha512-uPg6AvCA5Xp2fzepmG5MDuBqcpeZZGhWmCWIqM+JwmcxU0bw/imHWuHLD4mVFw3yFL7NVfXu89wUyUTa383RZw== + dependencies: + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/client-sts@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.14.0.tgz#ef27a4ae4ae799c9fe9ed08ea3207880415663e3" + integrity sha512-R6z/o8zSe1kYPC/aC3VxYjat3UF1f4BwAShF9JFwi5YUpgD42WzOLuoQ5tjGdvj8cYsq4m9pIOGOPSrEGZZs0Q== + dependencies: + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/credential-provider-node" "3.14.0" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-sdk-sts" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + fast-xml-parser "3.19.0" + tslib "^2.0.0" + +"@aws-sdk/config-resolver@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.14.0.tgz#2f8c71595e01d1f7d1b479f1f09ac8e581afd68c" + integrity sha512-ZuwxcQro817xq6qE9HJaWRm+cJGCXHU2ZVrSNEmU+E79gJVw2Bo+99Pk9iug4w2+lObpgqfxaCvvsobbDoMo6A== + dependencies: + "@aws-sdk/signature-v4" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-env@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.13.1.tgz#255e7824c080b5522e6230cf5626a6aa4bf04f16" + integrity sha512-tPGjnwkif/ndC1kQ5fv2F2486kUHBoACKKNN1O6CslReDtfFd+Z8kFOkrFtpFufOTRcjc5e4bmaEOG69EGwUUA== + dependencies: + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-imds@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.13.1.tgz#d16a85ee1052e1419841162db818115938ef5b02" + integrity sha512-TH2mhvw7V1N3DkqTHmtTwGEWx+y9iP4hST3qzrTYAP72SV6z1ElEZxVvKwOsH97ak1NRgG0DNxgVRIODolQ6Ug== + dependencies: + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-ini@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.13.1.tgz#ffbd2ff4424c451e58cb7f3e88d5088ab83e6ad5" + integrity sha512-+j/9wjDj4Kqf/2Am/qeJbKLYRTcQM1QjULGmQ7uJcvKIg4Orr7XJr8aBhbJgSw2ee7x5WYbun7oBJkNiL1uSCQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.13.1" + "@aws-sdk/credential-provider-imds" "3.13.1" + "@aws-sdk/credential-provider-web-identity" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-node@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.14.0.tgz#e64755067f7f20075667ddcc0edfcfa4c63ddd91" + integrity sha512-fJUaF5x4YTUmFjzMU/bap8dU+124lUuwz1ugl64VK6qLW78/mGJwZmsmAEc/TbQIm5brv0X7VTgr6z5xUa5YEQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.13.1" + "@aws-sdk/credential-provider-imds" "3.13.1" + "@aws-sdk/credential-provider-ini" "3.13.1" + "@aws-sdk/credential-provider-process" "3.13.1" + "@aws-sdk/credential-provider-sso" "3.14.0" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-process@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.13.1.tgz#0594c1d4ef525dbe7c477daa30c59c057943208b" + integrity sha512-lvO6hO7at5NHqiCpPDsjvIk8Oj/VK+kgVnFaEufSEw0IL/4avX5llIj2tj3JkqIa6guT7elR6yk70VCwI28ekA== + dependencies: + "@aws-sdk/credential-provider-ini" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-sso@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.14.0.tgz#7f3c13b12ae2ee329dd85ebb5084e2c7fa8cd5e4" + integrity sha512-PCODdi10TrUUmRgziChUfcCXFvLw1NYdk+sF+JhXwQphlDjK1IKuIYadOqgUEBgNS/y0mX91Gj062CIPzpQ33Q== + dependencies: + "@aws-sdk/client-sso" "3.14.0" + "@aws-sdk/credential-provider-ini" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-web-identity@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.13.1.tgz#7bb3edb13fb071f47f6f8ec9eac7adaec011323c" + integrity sha512-6sJcigee7PUBl4AIva6QfkudpvJ3sZ0MIf5dGCFeElx3j1F5mX15lRt9ZuF31LQ/B5Jc3xBD6rILMH/nQ7Es7A== + dependencies: + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/eventstream-marshaller@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.13.1.tgz#b9d67472f03611a1d8b40878f35cac56a0cabf6a" + integrity sha512-LnucJoP5mRR+uNbXlg8yxVmwQOffWjM1YyBj9q3c2oVYl1mBhdqWL+73kS8iwsXV2YE3wh0Z6seo5B+OpDVJfg== + dependencies: + "@aws-crypto/crc32" "^1.0.0" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-hex-encoding" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/eventstream-serde-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.13.1.tgz#84ea52dccb8f2fa3314ba19fafc69ec1b5b060ea" + integrity sha512-lzKDB96LToVLAHVWP2+mhnvuuN2oS/BB9B016wmt7II+DPcqLTdJ4QZ7bTioDGqQ3vLl2xUk8aq3Mrxq8wBDhw== + dependencies: + "@aws-sdk/eventstream-marshaller" "3.13.1" + "@aws-sdk/eventstream-serde-universal" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/eventstream-serde-config-resolver@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.13.1.tgz#24113ef8c095cf6bae09a1239c0104c091aab25d" + integrity sha512-GtI5czL44t5iNcInwJ4wLScxAwNdf0a7yLYEI4bqr0oEqTZ8hLWAzDtoi4yGsRhvgDRzjxLkRcu/HQWXYGq9GA== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/eventstream-serde-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.13.1.tgz#1b7ecb8cf7b1569eb0a3eb22b07cb97d7d26c95f" + integrity sha512-X46ybOppja1Gq4Wv/Laiq3Zs7N7zMl3xM4Iv7vmc1PCbuNEXXHbKbs2w3PH32C7w0yYP795rOJO2LJiBniSFgA== + dependencies: + "@aws-sdk/eventstream-marshaller" "3.13.1" + "@aws-sdk/eventstream-serde-universal" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/eventstream-serde-universal@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.13.1.tgz#ed13c0213dc16c7b3d93a0cea3f513aedfb658ff" + integrity sha512-R3D5uoZxv4QG9yJvo/PQsj+lfpQoxmOSSzBdzbFJfr0FPt3NE2pbOHSfOeMZnLJWRJ6sp58LqhJdVK+GCtfqog== + dependencies: + "@aws-sdk/eventstream-marshaller" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/fetch-http-handler@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.13.1.tgz#51add87f1fa0f4ea5ba6c88426ee1a54965533f4" + integrity sha512-tG6Vti5gE/IjlpP572m/He55f/F8z/PlwN15cgNiQJrwpilpOW3isApSag+zAsKyek/cNsmCFCb0hJq0F9TumQ== + dependencies: + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/querystring-builder" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/hash-blob-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.13.1.tgz#0247ce480be817bb9463f72c98ef1f9b6ad6aa8e" + integrity sha512-RiOwJK8vZb1kWzY6871PDbX4aHRRtvKgE8Jc9YViNBWV2XjHvCizxscXNtdX+MisWoodKxJLvpLvYbhjNhrJMA== + dependencies: + "@aws-sdk/chunked-blob-reader" "3.13.1" + "@aws-sdk/chunked-blob-reader-native" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/hash-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.13.1.tgz#79bc857380dd702a441bdedf3255552344c31d2c" + integrity sha512-jOxl5z8aIHQ3W5p+lcnJSkcn+qG96PH196P7KBszGlUEAgUUPc+DNoodlP+DK5T4o6tFQU31S+qRIYU/73+pLg== + dependencies: + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-buffer-from" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/hash-stream-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.13.1.tgz#c2574d7aba22c35bc81c7d659d3ce893d1dcdf96" + integrity sha512-KHyoTHVM0ei9m+sRrj57uNmwxtO8sBIh/fSQ2e6RtJk7gjBEDkU4dgwPF0FaS9j5VRhTVBPlCMUaHrNGkuAJtQ== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/invalid-dependency@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.13.1.tgz#2af7427695e9440087294c8651cfeef5e4067ee5" + integrity sha512-Cfjcxe09h8jfunNUh5+uygVCOiYo8E1EnuOsqs5+LYUViMnST04/GjIk9499XHBKbh3akwPyBSFxZrOmHUh61Q== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/is-array-buffer@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.13.1.tgz#bde5c5435b3fbd1e8ad26ef6bb3eabcd11799a9e" + integrity sha512-W1pzDpk5iAaJAZnCHHBwFSU7HW6IbQn71DKe3nnbmTbY56QdKdSZ23r+6uWxtz1xetbEd5JdzWs+AD+Ji1pC7Q== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/md5-js@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.13.1.tgz#2fc803f9ad1828c35e73d120e821e197aa89e008" + integrity sha512-+SLzPLoog2y8lz9bw3kitwDhrFf3AIHRtdheUfBMfEPbc1ngHNrp8RFUZApDYUj/80yqj73ux3fgptShtWqBKA== + dependencies: + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-apply-body-checksum@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.13.1.tgz#de97ec9f92733d4806cd50fac7a3ee8fc2fcd01c" + integrity sha512-0G9bGQ951n9KyqwMithX41ucZ0jUkps/mAq6z6AchrUfb1m0NEo6CRMiM6KIl+7ZxLZodiynyq8mRPpRnO0mSA== + dependencies: + "@aws-sdk/is-array-buffer" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-bucket-endpoint@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.13.1.tgz#30712b7ffc2df8e8f38cd87dd5163b72e4bf01c9" + integrity sha512-LT6vaOBo2uQGMVsG7QMBGVS8SncZwcuA5WvcUC4npxWnV3JQtpILwA9pceBE/dcVxwB6VyX8b7Tci2e2gioTtg== + dependencies: + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-arn-parser" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-content-length@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.13.1.tgz#009d9b24901247915308e54b0b550bde87eda98c" + integrity sha512-eAEbPrrbwPHNiO1+INyncbcV5orjXZza3RVkqYinWj6j4tUOxwLqSpbHHhVgRulN+MD+H6YX+x307jaDT4fQfg== + dependencies: + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-expect-continue@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.13.1.tgz#001ce393ae3fc1f451071c2aaa68ccbddf28ae2c" + integrity sha512-wi8e9UgETIG60BUhlUL0du8Akj1CK0v90QK7hpXZvqJNLzVgAGKvDTnxZVrhxY6SPiNB263/ORq+WemlrtOp6Q== + dependencies: + "@aws-sdk/middleware-header-default" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-header-default@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-header-default/-/middleware-header-default-3.13.1.tgz#0f46b0f84ba36f2e6c9cfc9559b9f279d35ac6d1" + integrity sha512-MOLWAFbEkFWsKE0KE982Z3rbbz5QV2udx8G5jak+3qQz/YpA9770qJqy19DJNLZclWq2EUE1r8lmgVomZD+qfg== + dependencies: + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-host-header@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.13.1.tgz#d4332878da3f0c4b4b607064ab80683a63710bf6" + integrity sha512-kwa0OLJ+wx2f3Xm1So/ld4ZDq6N7rcXdRZ8qSddCfSRYulxZaew5KdljXxqK9kBglpUE8EKzz1NZjlABc+iEYw== + dependencies: + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-location-constraint@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.13.1.tgz#81096ff99f52d7a852c701a339fe11947d9129ed" + integrity sha512-Kzu4E6KpoI0NsgxvvgZ1BfOyNnjEX3xPLCuYHjhP4fUicdbXEOllZJ8oNaxhrUjfyqliAVYu03st3mZzipH6ww== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-logger@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.13.1.tgz#943dd7a0877c339803251783f66e54f395a079ae" + integrity sha512-lgIoYKvoQrRzy06Cfv9hCY5ZmQYoNUlpIKcwpQOqRe7vmtVIanU5m5EjHrTfAKDNbanXvs/vmCB5oDgafzbXFQ== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-retry@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.13.1.tgz#2b1ba129ed9e28a34f1937e19c4edd6699e97072" + integrity sha512-AUKQ1Fi2/VUhGaSOSpqkiMY4/ma0ozvQMqCFaKciZA7ZJOq9ptBWr/E/FTd/See1vpiyRTcc9/hbFxW1ClQnqQ== + dependencies: + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/service-error-classification" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + uuid "^8.3.2" + +"@aws-sdk/middleware-sdk-s3@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.13.1.tgz#e73fbf4b476d269831f21b31b6e2bea2e39af00e" + integrity sha512-l/FcJ3inlfHdPBayY1RGuOb7GDAuMN46NYeM4eAhslSCrxCoVFXfIgLNFTfHRi6Y14KB6iSwMlUpFIXFrWwdWg== + dependencies: + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-arn-parser" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-sdk-sqs@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.13.1.tgz#08efc455f2c2ef3497dbb186174280b4d83520f0" + integrity sha512-Slg0mkLSvFuAO6b70NiwZsKy8DsurU4RvXfFObCk4PDwDArOJgDEZPjFKYM1i5Ao0pzZd09xGtv9+64fIhynVg== + dependencies: + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-hex-encoding" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-sdk-sts@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.13.1.tgz#cae44c531154ba79b306d05dad9a119563eb7b56" + integrity sha512-/l2camoPKOHGRzYUELzidtykuGYWrx2ZBmQ1g4JNGjq9ngTtyhGpDxSz6ySOYY/Hln313/+D0Dy6vAvPbOvgRQ== + dependencies: + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/signature-v4" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-serde@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.13.1.tgz#446be010d02af1f6f008e16ad19e2bf5770b2c6a" + integrity sha512-5C/PPY0SY2NpLVggu5XJAdQw1IqZpcRQBBa3+EpDFoMxUDzgtY2wNOm/IKTX2yYklDnQtyDsP8Z7Cma+Vj2BLA== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-signing@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.13.1.tgz#0532b174fa133ac13c19e61f02a5766d97574bf1" + integrity sha512-0KQPH4EywfnabDjbOSFQ9Nkw7790dBa34v2319bnaurCDRBDcGOB44KJQc8Mlu6ixFRzprnwj4+5qZI7IedWpg== + dependencies: + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/signature-v4" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-ssec@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.13.1.tgz#6f4482d3b0ed15118fb9d5a8e049e0a84a579718" + integrity sha512-SYXV0G0uaTPI8t0Qq9aIMMoDJfTr5QdrWc2KAH0y973G7cpB9MPa4d90xQ+4AxLde246FiQS5ExD7N8bXvvA1g== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/middleware-stack@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.13.1.tgz#b5ecb2d9bec33821900a98bf9c8e37fcc14cd98d" + integrity sha512-ScXJ3w6bp00Em1po1MzcPNJxj8/qct26IBjFEiy2+usetkq3F8zJlRZN053bWMxma3YoyfgQrkuxZiHGaguJbg== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/middleware-user-agent@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.14.0.tgz#88095c1ee4e73540a99ddb9a4cc0a78b7dda216d" + integrity sha512-ZmYfKuK/RfEWzX8Xvg9sGU16zAozNu0mxj2hDB6Lu+253D69AbUO4QAAFLJVwIUr4YgZIThss6icOuebPx2zdA== + dependencies: + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/node-config-provider@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.13.1.tgz#940389d21a7914a27aa09886af2d3f65aeaca49b" + integrity sha512-lRfGW7zcJ3Ly6N4fxGc7b+bSa6/LBWwUReVM8c4TI0VrX+1xPBH/DX0APBRxmzBCyjzL+Ls3fo5WLxMLZHNceA== + dependencies: + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/node-http-handler@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.13.1.tgz#96129f5b1e31346766d97e236768e73a3bfbfd3b" + integrity sha512-DksP+IkUM3yqmhcFp4pLd+apYYq1cFQ+o+2FYAaXenGGZ6wiXmBamtF9mt7DIb9tpeSt5kmOh7dTiHQIY24gDg== + dependencies: + "@aws-sdk/abort-controller" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/querystring-builder" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/property-provider@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.13.1.tgz#6bf32c35068a5e0d0e511064a036fcfef71856b5" + integrity sha512-uQ8dvpWYxY007rTwqr1COvqD+Z9NAUJjBfP+IYv8j1Dyc9o1Odkkj7Cm3fFFo021hlyCbcYtE3AnppVlAWyaCA== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/protocol-http@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.13.1.tgz#0ae5f09302f7a0bc47ac80c48e1dfebb43d40c04" + integrity sha512-iTy0TS6KTxNl6dfEj272Q4pxYcEfaljNFhlUBlvAZK04abbhzzlqwtGyGitEv+wSJ6R2e1Gmk6KWUQ2F1CoCng== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/querystring-builder@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.13.1.tgz#9d9c9af7778c63f9406be1dbdc1487441e858bc7" + integrity sha512-t/AKKzFpS1bwGuHw1nU8IpUmptbaXYWuiZnp6quFvtZjWQV1BKTDG1SEXzY1dowEpv+FNxUp6RdPakIaPInlAA== + dependencies: + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-uri-escape" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/querystring-parser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.13.1.tgz#3021b86f84f8424fa9386e9fa05d6cca94acf57a" + integrity sha512-FKSEUkZ+csopOVP/LUb8YSu07G/n8tj4sVp3FdX6OPv+HBD0ukfbl4mzyBHJlOgWhzDihxzKL8iHoUuC2FfY3w== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/service-error-classification@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.13.1.tgz#df19a35251cc43b625bfc8e758d8ecf3d14fb083" + integrity sha512-eVH00KOSTV23RWWY7JMuc2s7jBfiWP/UR82n3knYYtTztcm9pFIIkNhphUnOThWROzNqlW+Dif8ztb85oK5K+Q== + +"@aws-sdk/shared-ini-file-loader@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.13.1.tgz#36a45b7a468607b69b893227550c4246114aa52a" + integrity sha512-zB+niFj0iIZu2aXmKv2Xhk404Lw6gawTZPjzR4vLuTmn563yhSUSw5hJN+v/O/bR1b3JV4NPubyIQT6CKx1YUA== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/signature-v4@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.13.1.tgz#4c5647a670ef0c11a85c9c24e5e16fe7ea6a1901" + integrity sha512-j+WCkQCUNhJbeRYW7KTsXd3gxk5CUeZF0LLVOT7HGvxzBhWJkpNGlsFD6ENR5iVpAlmK2yrTLJn7sma7Fgci+Q== + dependencies: + "@aws-sdk/is-array-buffer" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-hex-encoding" "3.13.1" + "@aws-sdk/util-uri-escape" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/smithy-client@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.13.1.tgz#2204089c4af4d2f8985ce2adbef9533b0c9c8c5f" + integrity sha512-DFo9LriBq0b8wQpO6DNnwQ0ISxTLn4tBHNsdXj0vHKKwg6h8IcveUNyLGGDdQejL8FLqOKJfe1NRvkY2UQFsrg== + dependencies: + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/types@3.13.1", "@aws-sdk/types@^3.1.0": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.13.1.tgz#f69efe2053b0fa5dfd4046cb80dc176ad645c016" + integrity sha512-4eHboRz3I8f0C85Ta1dJ1v1Y9T1zH9xpC4/DufSIfQcD1Imc2U2LM22Qgbz8/PoP4kyhp2nJpQpW0APD91ILfw== + +"@aws-sdk/url-parser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.13.1.tgz#4ab73867f1fadf9f1ce58ec6bf4f6cae4efec81b" + integrity sha512-kw9n96GbZ+vuh/KblpcJ1F++hWE7VCQ+cHN5CSxNnN67s/SFk4BLzSeaPup6EUkUI+wIiJMOWW56kIMrcSta5w== + dependencies: + "@aws-sdk/querystring-parser" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/util-arn-parser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.13.1.tgz#e9917a35b1b6c5ad0be8340d163c69b1c3fcc524" + integrity sha512-/Y0BEnh1WiVyZQaDMWfqQaRPzEEMrvs0/UTTyknj43dhXoiNDXVyrFUtLw71Oi77WBxk7p/Wbg0m7TVJt3yceQ== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/util-base64-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-3.13.1.tgz#6244d329ed9c560e1f4a161f698367cc3e863919" + integrity sha512-bev/PmmRLxTzGkmx88KFhJEL78koIvhYdKFmWtmSJz+trQEk37u6aulWQZF6dpiMGCKYcBfI5h3LsxE75pObTQ== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/util-base64-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-3.13.1.tgz#0fdcea2ac7913a69448ed87d227a1107db9e3c8f" + integrity sha512-z3bh+Luue39gIFOm56FSXOEZJq23J/IUM0Gj28dkdC0hpqdohP2NfcGUBhBlK8CFKBLB5GM1vVKo99T1/OQ/5g== + dependencies: + "@aws-sdk/util-buffer-from" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/util-body-length-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.13.1.tgz#7063c658b1875a208d8c9f39bdd1c7409efce10e" + integrity sha512-qqbBRP1YCuCJ8jCQpP4kbSPrdwJxniccmzsyjkKmaOQoOil69FFNhdwzjrMFhahnsLYD9JUdEsJmHegPbIbUtA== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/util-body-length-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.13.1.tgz#4722fad01f4feb6a3ab47344c2482446d7aa2d01" + integrity sha512-btSynL8nZmzXPImm/oAaE9aBl1feAZsGv1jR+7+CSM2P5emTEBF4/EuYX34KZTzW7BjSzeDeRK0SHK0IWAB4bw== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/util-buffer-from@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.13.1.tgz#fc1fc6d46edff7ea0f370c8389313b58ef8923b7" + integrity sha512-D/LT7a9wwB5Zo4CPWJwP/qdUhs8MYSs+tvyyF2Ox9v8AaUV+w8ukJY9/1/i1cS5bGH7aAjueTiAFSMt8ejVNCg== + dependencies: + "@aws-sdk/is-array-buffer" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/util-hex-encoding@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.13.1.tgz#2406c832b1aae60c8abd1dafcae442e6085aebca" + integrity sha512-NGIqG+L5B6xENgv25BH77F9EeTkN+3tO8sFBeTMjoS7rD3uVP1uLp/RHQENjn/EG/KtgjcNyglngDuS0ZKFOOQ== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.13.1.tgz#45c6df057be89c3f42ffd2e43c87a7837a3fa1ac" + integrity sha512-u1neaf5yO5FdnYF+UHsyDpHzHgMfX87nVDMyOyVvViIIhwDb2+bzzhUbex1rPtTEUfZUtgABV03UZrifGrB15g== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/util-uri-escape@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.13.1.tgz#5585a53fdc245b717beb7d785f39660eee219e77" + integrity sha512-zejPAiPoS5Zja9nelZUJMdIwiXHKmubgumIV4USB+kgSR4f8BlSj/amM0NdGgZMjyVtuIvdiVHZssM/yK8G1Jg== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/util-user-agent-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.13.1.tgz#8975041dbaf0c62f9f1f870c24d25ee337ac0c5b" + integrity sha512-j9EL/fWIi5FivsXvjpXjROZEn44LNHY8oUkcFM4C4K8V6dmBK7kwX1svzCAfagwGyrahHkI2F3Isv0zI3FA6DQ== + dependencies: + "@aws-sdk/types" "3.13.1" + bowser "^2.11.0" + tslib "^2.0.0" + +"@aws-sdk/util-user-agent-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.13.1.tgz#ac9dcb043d45b4425dbd308c1cea4b05a695a85c" + integrity sha512-ztECuZn1T0GeRYvmGRlgjs2J/C+BYx2QlImP0Z3xDYeYQnBt8n2dSljutQfF941QaHiB4Ay/NIdfzczZVO7xBA== + dependencies: + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/util-utf8-browser@3.13.1", "@aws-sdk/util-utf8-browser@^3.0.0": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.13.1.tgz#eae1f3d8063566d813c0df4adf5f487bd128b56f" + integrity sha512-+1FmtFOvDOYfoJnC6DEgjpcPKUERZA8VZ7JenY6SsEqVneWzHf4YVE2+KZM0DT9leLzgZBW/DKJWjeKxykaBEg== + dependencies: + tslib "^2.0.0" + +"@aws-sdk/util-utf8-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.13.1.tgz#72c454d5dd57f9a404ad1cdc317940840de0fb46" + integrity sha512-2SVqcqQQah7cYny6mUmx9UlVIYiaCULnWqOvPkpAKLS3uDFhhFrjvdrQkJXjajR4r7xb73cGn+f2iRXrEqmopw== + dependencies: + "@aws-sdk/util-buffer-from" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/util-waiter@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.13.1.tgz#3c8bdc11bd2e3124dd806040479470b76cfe2b2a" + integrity sha512-TpzY3X3QqlD5XaoI4ISjUjz6zjrpsUuxGaiubjbWjXsduW9C9K6jJveTk4FM1KEi4CDPe60J4ypHCE9+G29mfg== + dependencies: + "@aws-sdk/abort-controller" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/xml-builder@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.14.0.tgz#3f7040da919d596b3a456830229146e330c5ed70" + integrity sha512-TGyodkTPezFTR7vfHiPsynavfeDwbXNTK4r3OYeAt0+tdm3RM6PoUqpkMYLyQgyA+G48uyMunACi/O12H3cwKQ== + dependencies: + tslib "^2.0.0" + +"@hapi/accept@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.1.tgz#068553e867f0f63225a506ed74e899441af53e10" + integrity sha512-fMr4d7zLzsAXo28PRRQPXR1o2Wmu+6z+VY1UzDp0iFo13Twj8WePakwXBiqn3E1aAlTpSNzCXdnnQXFhst8h8Q== + dependencies: + "@hapi/boom" "9.x.x" + "@hapi/hoek" "9.x.x" + +"@hapi/boom@9.x.x": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.2.tgz#48bd41d67437164a2d636e3b5bc954f8c8dc5e38" + integrity sha512-uJEJtiNHzKw80JpngDGBCGAmWjBtzxDCz17A9NO2zCi8LLBlb5Frpq4pXwyN+2JQMod4pKz5BALwyneCgDg89Q== + dependencies: + "@hapi/hoek" "9.x.x" + +"@hapi/hoek@9.x.x": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131" + integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug== + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -110,6 +928,10 @@ version "0.0.0" uid "" +"@sls-next/aws-sqs@link:../aws-sqs": + version "0.0.0" + uid "" + "@sls-next/cloudfront@link:../../libs/cloudfront": version "0.0.0" uid "" @@ -162,19 +984,19 @@ resolved "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1" integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g== -"@zeit/node-file-trace@^0.6.5": - version "0.6.5" - resolved "https://registry.npmjs.org/@zeit/node-file-trace/-/node-file-trace-0.6.5.tgz#ffd443e4648eb88591c53b1a871a47bff651b62e" - integrity sha512-PbxtiZBU+axKtR9dU2/iQgK9+aP/ip94SqI/FCMWppmFPGlxGKHf8UnJZskFuqLZeWWzL+L+8SeipsNHATO9nw== +"@vercel/nft@^0.9.3": + version "0.9.6" + resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.9.6.tgz#c25ac94f3bff7c2e44d257fb4f40890b3879bd25" + integrity sha512-+6GfIjkwp53NfFC3SkBdlNqjVUkPH7OG/+bFmBvPhDXXr4lR3vWSIWPaJzfCsm6yUDj9oLf1I6fFp5OSJIwkYA== dependencies: - acorn "^7.1.1" + acorn "^7.4.1" acorn-class-fields "^0.3.2" acorn-export-ns-from "^0.1.0" acorn-import-meta "^1.1.0" acorn-numeric-separator "^0.3.0" acorn-static-class-features "^0.2.1" bindings "^1.4.0" - estree-walker "^0.6.0" + estree-walker "^0.6.1" glob "^7.1.3" graceful-fs "^4.1.15" micromatch "^4.0.2" @@ -223,10 +1045,10 @@ acorn-static-class-features@^0.2.1: dependencies: acorn-private-class-elements "^0.2.7" -acorn@^7.1.1: - version "7.4.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" - integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== +acorn@^7.4.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== ansi-regex@^2.0.0: version "2.1.1" @@ -433,6 +1255,11 @@ bl@^4.0.1: inherits "^2.0.4" readable-stream "^3.4.0" +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -469,6 +1296,11 @@ buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= + buffer-queue@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/buffer-queue/-/buffer-queue-1.0.0.tgz#3d253fe2f0ab70e851d728712e8cd6f914a8c002" @@ -594,6 +1426,11 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= +cookie@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -628,7 +1465,7 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -debug@^2.2.0, debug@^2.3.3: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -691,6 +1528,16 @@ delegates@^1.0.0: resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -715,6 +1562,23 @@ duplexer3@^0.1.4: resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -722,16 +1586,26 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + esprima@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -estree-walker@^0.6.0, estree-walker@^0.6.1: +estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + events@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -818,6 +1692,23 @@ fast-glob@^3.1.1: micromatch "^4.0.2" picomatch "^2.2.1" +fast-glob@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-xml-parser@3.19.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" + integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== + fastq@^1.6.0: version "1.8.0" resolved "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" @@ -859,6 +1750,11 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +fresh@0.5.2, fresh@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -923,6 +1819,11 @@ get-stream@^5.0.0, get-stream@^5.1.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -1049,6 +1950,17 @@ http-cache-semantics@^4.0.0: resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -1091,7 +2003,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1115,6 +2027,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-animated@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-animated/-/is-animated-2.0.1.tgz#e523efd5a0ef0e6ac78a7307a2c8f311eb5298bc" + integrity sha512-f61go8/mYdl6g7JOLbi6YtiJ1AKM9TFdNv2bVP7JlAHm5MPjnvveOkKPlm51beF9ulb5hsGeoqdSXrjJ7RNKHg== + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -1280,6 +2197,39 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonwebtoken@^8.5.1: + version "8.5.1" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" + integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^5.6.0" + +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + keyv@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -1347,11 +2297,41 @@ lodash.flatten@^4.4.0: resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= + lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + lodash.union@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" @@ -1433,6 +2413,11 @@ mime-types@^2.1.22, mime-types@^2.1.27: dependencies: mime-db "1.44.0" +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -1490,6 +2475,11 @@ ms@2.0.0: resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + ms@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -1521,6 +2511,11 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" +node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + node-gyp-build@^4.2.2: version "4.2.3" resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" @@ -1631,6 +2626,13 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -1773,6 +2775,11 @@ ramda@^0.27.0: resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -1896,7 +2903,7 @@ s3-stream-upload@^2.0.2: buffer-queue "~1.0.0" readable-stream "^2.3.0" -safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -1928,9 +2935,9 @@ sax@>=0.6.0, sax@^1.2.4: resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -semver@^5.3.0: +semver@^5.3.0, semver@^5.6.0: version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@^6.1.1, semver@^6.2.0: @@ -1938,6 +2945,25 @@ semver@^6.1.1, semver@^6.2.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +send@^0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -1953,6 +2979,11 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -2051,6 +3082,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + string-width@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -2167,6 +3203,21 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tslib@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + typescript@^3.9.6: version "3.9.7" resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" @@ -2235,6 +3286,11 @@ uuid@3.3.2: resolved "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + which@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" From 57b403b71a837f1d8bd8dfc04375506eadb633ad Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 4 May 2021 22:35:42 +0100 Subject: [PATCH 20/48] update snapshot andd mocks --- .../aws-lambda/__mocks__/aws-sdk.mock.js | 45 +++++++++++++++++++ .../__snapshots__/snapshots.test.ts.snap | 12 ++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/packages/serverless-components/aws-lambda/__mocks__/aws-sdk.mock.js b/packages/serverless-components/aws-lambda/__mocks__/aws-sdk.mock.js index fe71fc3ba7..10d7f5d22e 100644 --- a/packages/serverless-components/aws-lambda/__mocks__/aws-sdk.mock.js +++ b/packages/serverless-components/aws-lambda/__mocks__/aws-sdk.mock.js @@ -26,7 +26,50 @@ const mockUpdateFunctionConfigurationPromise = promisifyMock( mockUpdateFunctionConfiguration ); +const mockCreateQueue = jest.fn(); +const mockCreateQueuePromise = promisifyMock(mockCreateQueue); + +const mockGetQueueAttributes = jest.fn(); +const mockGetQueueAttributesPromise = promisifyMock(mockGetQueueAttributes); + +const mockDeleteQueue = jest.fn(); +const mockDeleteQueuePromise = promisifyMock(mockDeleteQueue); + +const mockListEventSourceMappings = jest.fn(); +const mockListEventSourceMappingsPromise = promisifyMock( + mockListEventSourceMappings +); + +const mockCreateEventSourceMapping = jest.fn(); +const mockCreateEventSourceMappingPromise = promisifyMock( + mockCreateEventSourceMapping +); + +const mockGetCallerIdentityMapping = jest.fn(); +const mockGetCallerIdentityMappingPromise = promisifyMock( + mockGetCallerIdentityMapping +); + module.exports = { + mockCreateQueuePromise, + mockGetQueueAttributesPromise, + mockDeleteQueuePromise, + mockListEventSourceMappingsPromise, + mockCreateEventSourceMappingPromise, + mockCreateQueue, + mockGetQueueAttributes, + mockDeleteQueue, + mockListEventSourceMappings, + mockCreateEventSourceMapping, + mockGetCallerIdentityMappingPromise, + mockGetCallerIdentityMapping, + + SQS: jest.fn(() => ({ + createQueue: mockCreateQueue, + getQueueAttributes: mockGetQueueAttributes, + deleteQueue: mockDeleteQueue + })), + mockCreateFunction, mockCreateFunctionPromise, mockPublishVersion, @@ -39,6 +82,8 @@ module.exports = { mockUpdateFunctionConfigurationPromise, Lambda: jest.fn(() => ({ + listEventSourceMappings: mockListEventSourceMappings, + createEventSourceMapping: mockCreateEventSourceMapping, createFunction: mockCreateFunction, publishVersion: mockPublishVersion, getFunctionConfiguration: mockGetFunctionConfiguration, diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap b/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap index 2576271616..c53da46d53 100644 --- a/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap @@ -1412,6 +1412,16 @@ Object { ], }, }, + Object { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "StackRegenerationFunctionCAB79AA6", + "Arn", + ], + }, + }, ], "Version": "2012-10-17", }, @@ -2421,7 +2431,7 @@ Object { ], }, "Runtime": "nodejs14.x", - "Timeout": 60, + "Timeout": 30, }, "Type": "AWS::Lambda::Function", }, From 43f064a7afc15b001b8b757f8d82933731ddcde8 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 08:17:23 +0100 Subject: [PATCH 21/48] fix regeneration tests with sqs event --- .../regeneration-handler.test.ts | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts b/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts index e07242c430..bd4db1131b 100644 --- a/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts +++ b/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts @@ -1,3 +1,4 @@ +import { RegenerationEvent } from "../../src"; import { createCloudFrontEvent } from "../test-utils"; // eslint-disable-next-line @typescript-eslint/no-var-requires @@ -23,6 +24,16 @@ jest.mock( } ); +const sqsHandlerEvent = async (body: RegenerationEvent) => { + return { + Records: [ + { + MessageBody: JSON.stringify(body) + } + ] + }; +}; + const mockPageRequire = (mockPagePath: string): void => { jest.mock( `../../src/${mockPagePath}`, @@ -79,12 +90,14 @@ describe("Regeneration Handler", () => { requestHeaders: {} }); - await regenerationHandler({ - basePath, - bucketName: "my-bucket", - cloudFrontEventRequest: event.Records[0].cf.request, - region: "us-east-1" - }); + await regenerationHandler( + sqsHandlerEvent({ + basePath, + bucketName: "my-bucket", + cloudFrontEventRequest: event.Records[0].cf.request, + region: "us-east-1" + }) + ); expect(s3StorePage).toBeCalledTimes(1); expect(s3StorePage).toBeCalledWith( @@ -116,12 +129,14 @@ describe("Regeneration Handler", () => { requestHeaders: {} }); - await regenerationHandler({ - basePath: undefined, - bucketName: "my-bucket", - cloudFrontEventRequest: event.Records[0].cf.request, - region: "us-east-1" - }); + await regenerationHandler( + sqsHandlerEvent({ + basePath: undefined, + bucketName: "my-bucket", + cloudFrontEventRequest: event.Records[0].cf.request, + region: "us-east-1" + }) + ); expect(s3StorePage).toBeCalledTimes(1); expect(s3StorePage).toBeCalledWith( From 6f0f45ca15458136cc90ba6aae4a5425ceb7757b Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 15:28:51 +0100 Subject: [PATCH 22/48] minor test fixes --- packages/libs/lambda-at-edge/src/default-handler.ts | 4 ++-- .../regeneration-handler.test.ts | 4 ++-- .../nextjs-component/__mocks__/@sls-next/aws-sqs.js | 13 +++++++++++++ .../nextjs-component/__tests__/basepath.test.ts | 8 ++++++++ .../__tests__/custom-inputs.test.ts | 5 +++++ .../nextjs-component/__tests__/deploy.test.ts | 8 ++++++++ 6 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 packages/serverless-components/nextjs-component/__mocks__/@sls-next/aws-sqs.js diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index 3a2bcd6984..31a34f7d30 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -619,8 +619,8 @@ const handleOriginResponse = async ({ const staticRegenerationResponse = getStaticRegenerationResponse({ requestedOriginUri: uri, - expiresHeader: response.headers.expires?.[0]?.value || "", - lastModifiedHeader: response.headers["last-modified"]?.[0]?.value || "", + expiresHeader: response.headers?.expires?.[0]?.value || "", + lastModifiedHeader: response.headers?.["last-modified"]?.[0]?.value || "", manifest }); diff --git a/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts b/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts index bd4db1131b..c32f92ecef 100644 --- a/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts +++ b/packages/libs/lambda-at-edge/tests/regeneration-handler/regeneration-handler.test.ts @@ -24,11 +24,11 @@ jest.mock( } ); -const sqsHandlerEvent = async (body: RegenerationEvent) => { +const sqsHandlerEvent = (body: RegenerationEvent) => { return { Records: [ { - MessageBody: JSON.stringify(body) + body: JSON.stringify(body) } ] }; diff --git a/packages/serverless-components/nextjs-component/__mocks__/@sls-next/aws-sqs.js b/packages/serverless-components/nextjs-component/__mocks__/@sls-next/aws-sqs.js new file mode 100644 index 0000000000..7b5a6a250d --- /dev/null +++ b/packages/serverless-components/nextjs-component/__mocks__/@sls-next/aws-sqs.js @@ -0,0 +1,13 @@ +const mockSQS = jest.fn(); +const sqs = jest.fn(() => { + const sqs = mockSQS; + sqs.init = () => {}; + sqs.default = () => {}; + sqs.addEventSource = jest.fn(); + sqs.context = {}; + return sqs; +}); + +sqs.mockSQS = mockSQS; + +module.exports = sqs; diff --git a/packages/serverless-components/nextjs-component/__tests__/basepath.test.ts b/packages/serverless-components/nextjs-component/__tests__/basepath.test.ts index 5ccbf27148..92af7f4c6f 100644 --- a/packages/serverless-components/nextjs-component/__tests__/basepath.test.ts +++ b/packages/serverless-components/nextjs-component/__tests__/basepath.test.ts @@ -3,6 +3,7 @@ import fse from "fs-extra"; import { mockS3 } from "@serverless/aws-s3"; import { mockCloudFront } from "@sls-next/aws-cloudfront"; import { mockLambda, mockLambdaPublish } from "@sls-next/aws-lambda"; +import { mockSQS } from "@sls-next/aws-sqs"; import NextjsComponent from "../src/component"; import { cleanupFixtureDirectory } from "../src/lib/test-utils"; @@ -29,6 +30,10 @@ describe("basepath tests", () => { mockS3.mockResolvedValue({ name: "bucket-xyz" }); + mockLambda.mockResolvedValueOnce({ + arn: + "arn:aws:lambda:us-east-1:123456789012:function:regeneration-cachebehavior-func" + }); mockLambda.mockResolvedValueOnce({ arn: "arn:aws:lambda:us-east-1:123456789012:function:api-cachebehavior-func" @@ -48,6 +53,9 @@ describe("basepath tests", () => { id: "cloudfrontdistrib", url: "https://cloudfrontdistrib.amazonaws.com" }); + mockSQS.mockResolvedValue({ + arn: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo" + }); const component = new NextjsComponent(); component.context.credentials = { diff --git a/packages/serverless-components/nextjs-component/__tests__/custom-inputs.test.ts b/packages/serverless-components/nextjs-component/__tests__/custom-inputs.test.ts index 4cdfdfc0bc..09304b1051 100644 --- a/packages/serverless-components/nextjs-component/__tests__/custom-inputs.test.ts +++ b/packages/serverless-components/nextjs-component/__tests__/custom-inputs.test.ts @@ -6,6 +6,7 @@ import { mockUpload } from "aws-sdk"; import { mockLambda, mockLambdaPublish } from "@sls-next/aws-lambda"; import mockCreateInvalidation from "@sls-next/cloudfront"; import { mockCloudFront } from "@sls-next/aws-cloudfront"; +import { mockSQS } from "@sls-next/aws-sqs"; import NextjsComponent, { DeploymentResult } from "../src/component"; import obtainDomains from "../src/lib/obtainDomains"; @@ -43,6 +44,10 @@ const mockServerlessComponentDependencies = ({ expectedDomain }) => { mockDomain.mockResolvedValueOnce({ domains: [expectedDomain] }); + + mockSQS.mockResolvedValue({ + arn: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo" + }); }; describe("Custom inputs", () => { diff --git a/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts b/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts index 9225ffbfab..d79e916208 100644 --- a/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts +++ b/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts @@ -5,6 +5,7 @@ import { mockCloudFront } from "@sls-next/aws-cloudfront"; import { mockLambda, mockLambdaPublish } from "@sls-next/aws-lambda"; import mockCreateInvalidation from "@sls-next/cloudfront"; import NextjsComponent from "../src/component"; +import { mockSQS } from "@sls-next/aws-sqs"; import { DEFAULT_LAMBDA_CODE_DIR, API_LAMBDA_CODE_DIR, @@ -36,6 +37,10 @@ describe("deploy tests", () => { mockS3.mockResolvedValue({ name: "bucket-xyz" }); + mockLambda.mockResolvedValueOnce({ + arn: + "arn:aws:lambda:us-east-1:123456789012:function:regeneration-cachebehavior-func" + }); mockLambda.mockResolvedValueOnce({ arn: "arn:aws:lambda:us-east-1:123456789012:function:api-cachebehavior-func" @@ -55,6 +60,9 @@ describe("deploy tests", () => { id: "cloudfrontdistrib", url: "https://cloudfrontdistrib.amazonaws.com" }); + mockSQS.mockResolvedValue({ + arn: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo" + }); const component = new NextjsComponent(); component.context.credentials = { From f397f50b0548e30bcd0b5befe4ec3df8f0dfac98 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 16:20:33 +0100 Subject: [PATCH 23/48] fix all tests --- .../__tests__/custom-inputs.test.ts | 2 +- .../nextjs-component/__tests__/deploy.test.ts | 73 ++++++++++++++++++- 2 files changed, 70 insertions(+), 5 deletions(-) diff --git a/packages/serverless-components/nextjs-component/__tests__/custom-inputs.test.ts b/packages/serverless-components/nextjs-component/__tests__/custom-inputs.test.ts index 09304b1051..b78131166d 100644 --- a/packages/serverless-components/nextjs-component/__tests__/custom-inputs.test.ts +++ b/packages/serverless-components/nextjs-component/__tests__/custom-inputs.test.ts @@ -206,7 +206,7 @@ describe("Custom inputs", () => { }); it("uses custom role arn provided", () => { - expect(mockLambda).toBeCalledTimes(3); + expect(mockLambda).toBeCalledTimes(4); expect(mockLambda).toBeCalledWith( expect.objectContaining({ diff --git a/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts b/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts index d79e916208..af1f3126c2 100644 --- a/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts +++ b/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts @@ -9,7 +9,8 @@ import { mockSQS } from "@sls-next/aws-sqs"; import { DEFAULT_LAMBDA_CODE_DIR, API_LAMBDA_CODE_DIR, - IMAGE_LAMBDA_CODE_DIR + IMAGE_LAMBDA_CODE_DIR, + REGENERATION_LAMBDA_CODE_DIR } from "../src/constants"; import { cleanupFixtureDirectory } from "../src/lib/test-utils"; import { mockUpload } from "aws-sdk"; @@ -96,8 +97,57 @@ describe("deploy tests", () => { }); describe("cloudfront", () => { + it("provisions regeneration lambda", () => { + expect(mockLambda).toHaveBeenNthCalledWith(1, { + description: expect.any(String), + handler: "index.handler", + code: path.join(fixturePath, REGENERATION_LAMBDA_CODE_DIR), + memory: 512, + timeout: 10, + runtime: "nodejs12.x", + name: "bucket-xyz", + region: "us-east-1", + role: { + service: ["lambda.amazonaws.com"], + policy: { + Version: "2012-10-17", + Statement: expect.arrayContaining([ + { + Effect: "Allow", + Resource: "*", + Action: [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ] + }, + { + Effect: "Allow", + Resource: `arn:aws:s3:::bucket-xyz/*`, + Action: ["s3:GetObject", "s3:PutObject"] + }, + { + Effect: "Allow", + Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", + Action: ["sqs:SendMessage"] + }, + { + Effect: "Allow", + Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", + Action: [ + "sqs:ReceiveMessage", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes" + ] + } + ]) + } + } + }); + }); + it("provisions default lambda", () => { - expect(mockLambda).toHaveBeenNthCalledWith(3, { + expect(mockLambda).toHaveBeenNthCalledWith(4, { description: expect.any(String), handler: "index.handler", code: path.join(fixturePath, DEFAULT_LAMBDA_CODE_DIR), @@ -122,6 +172,11 @@ describe("deploy tests", () => { Effect: "Allow", Resource: `arn:aws:s3:::bucket-xyz/*`, Action: ["s3:GetObject", "s3:PutObject"] + }, + { + Effect: "Allow", + Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", + Action: ["sqs:SendMessage"] } ] } @@ -130,7 +185,7 @@ describe("deploy tests", () => { }); it("provisions api lambda", () => { - expect(mockLambda).toHaveBeenNthCalledWith(1, { + expect(mockLambda).toHaveBeenNthCalledWith(2, { description: expect.any(String), handler: "index.handler", code: path.join(fixturePath, API_LAMBDA_CODE_DIR), @@ -155,6 +210,11 @@ describe("deploy tests", () => { Effect: "Allow", Resource: `arn:aws:s3:::bucket-xyz/*`, Action: ["s3:GetObject", "s3:PutObject"] + }, + { + Effect: "Allow", + Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", + Action: ["sqs:SendMessage"] } ] } @@ -163,7 +223,7 @@ describe("deploy tests", () => { }); it("provisions image lambda", () => { - expect(mockLambda).toHaveBeenNthCalledWith(2, { + expect(mockLambda).toHaveBeenNthCalledWith(3, { description: expect.any(String), handler: "index.handler", code: path.join(fixturePath, IMAGE_LAMBDA_CODE_DIR), @@ -188,6 +248,11 @@ describe("deploy tests", () => { Effect: "Allow", Resource: `arn:aws:s3:::bucket-xyz/*`, Action: ["s3:GetObject", "s3:PutObject"] + }, + { + Effect: "Allow", + Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", + Action: ["sqs:SendMessage"] } ] } From 631d8c0ad9bfaa725028b4cceb5e941cd4a08897 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 17:39:20 +0100 Subject: [PATCH 24/48] add cache-control header tests to default-handler --- .../lambda-at-edge/src/default-handler.ts | 2 +- ...lt-build-manifest-with-trailing-slash.json | 2 +- .../default-build-manifest.json | 2 +- .../default-handler/default-handler.test.ts | 160 ++++++++++++++++++ 4 files changed, 163 insertions(+), 3 deletions(-) diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index 5414f98c6e..3e8f2e1012 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -336,7 +336,7 @@ const handleOriginRequest = async ({ let uri = normaliseUri(request.uri, routesManifest); const { pages } = manifest; - let isDataReq = isDataRequest(uri); + const isDataReq = isDataRequest(uri); // Always add default locale prefix to URIs without it that are not public files or data requests const defaultLocale = routesManifest.i18n?.defaultLocale; diff --git a/packages/libs/lambda-at-edge/tests/default-handler/default-build-manifest-with-trailing-slash.json b/packages/libs/lambda-at-edge/tests/default-handler/default-build-manifest-with-trailing-slash.json index 2b12254280..5407f06c8b 100644 --- a/packages/libs/lambda-at-edge/tests/default-handler/default-build-manifest-with-trailing-slash.json +++ b/packages/libs/lambda-at-edge/tests/default-handler/default-build-manifest-with-trailing-slash.json @@ -83,7 +83,7 @@ "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest/example-static-page.json" }, "/preview": { - "initialRevalidateSeconds": false, + "initialRevalidateSeconds": 5, "srcRoute": null, "dataRoute": "/_next/data/build-id/preview.json" } diff --git a/packages/libs/lambda-at-edge/tests/default-handler/default-build-manifest.json b/packages/libs/lambda-at-edge/tests/default-handler/default-build-manifest.json index fc86f4017e..6d6e24d34f 100644 --- a/packages/libs/lambda-at-edge/tests/default-handler/default-build-manifest.json +++ b/packages/libs/lambda-at-edge/tests/default-handler/default-build-manifest.json @@ -92,7 +92,7 @@ "dataRoute": "/_next/data/test-build-id/tests/prerender-manifest/example-static-page.json" }, "/preview": { - "initialRevalidateSeconds": false, + "initialRevalidateSeconds": 5, "srcRoute": null, "dataRoute": "/_next/data/build-id/preview.json" } diff --git a/packages/libs/lambda-at-edge/tests/default-handler/default-handler.test.ts b/packages/libs/lambda-at-edge/tests/default-handler/default-handler.test.ts index bc5e69d031..74af842a99 100644 --- a/packages/libs/lambda-at-edge/tests/default-handler/default-handler.test.ts +++ b/packages/libs/lambda-at-edge/tests/default-handler/default-handler.test.ts @@ -55,6 +55,7 @@ describe("Lambda@Edge", () => { ${true} `("Routing with trailingSlash = $trailingSlash", ({ trailingSlash }) => { let handler: any; + let mockTriggerStaticRegeneration: jest.Mock; let runRedirectTest: ( path: string, expectedRedirect: string, @@ -102,6 +103,12 @@ describe("Lambda@Edge", () => { ); } + mockTriggerStaticRegeneration = jest.fn(); + jest.mock("../../src/lib/triggerStaticRegeneration", () => ({ + __esModule: true, + triggerStaticRegeneration: mockTriggerStaticRegeneration + })); + // Handler needs to be dynamically required to use above mocked manifests // eslint-disable-next-line @typescript-eslint/no-var-requires handler = require("../../src/default-handler").handler; @@ -501,6 +508,159 @@ describe("Lambda@Edge", () => { } ); + it("correctly removes the expires header if set in the response for an ssg page", async () => { + mockTriggerStaticRegeneration.mockReturnValueOnce( + Promise.resolve({ throttle: false }) + ); + + const event = createCloudFrontEvent({ + uri: "/customers", + host: "mydistribution.cloudfront.net", + config: { eventType: "origin-response" } as any, + response: { + status: "200", + statusDescription: "ok", + headers: { + expires: [ + { + value: new Date().toJSON(), + key: "Expires" + } + ] + } + } + }); + + mockPageRequire("pages/customers/index.js"); + + const response = await handler(event); + expect(mockTriggerStaticRegeneration).toBeCalledTimes(1); + + expect(response.headers).not.toHaveProperty("expires"); + expect(response.headers).not.toHaveProperty("Expires"); + }); + + it("returns a correct cache control header when an expiry header in the future is sent", async () => { + const event = createCloudFrontEvent({ + uri: "/customers", + host: "mydistribution.cloudfront.net", + config: { eventType: "origin-response" } as any, + response: { + status: "200", + statusDescription: "ok", + headers: { + expires: [ + { + value: new Date(new Date().getTime() + 3000).toJSON(), + key: "Expires" + } + ] + } + } + }); + + mockPageRequire("pages/customers/index.js"); + + const response = await handler(event); + expect(response.headers).toHaveProperty("cache-control"); + expect(response.headers["cache-control"][0].value).toBe( + "public, max-age=0, s-maxage=3, must-revalidate" + ); + }); + + it("returns a correct cache control header when an expiry header in the past is sent", async () => { + mockTriggerStaticRegeneration.mockReturnValueOnce( + Promise.resolve({ throttle: false }) + ); + const event = createCloudFrontEvent({ + uri: "/customers", + host: "mydistribution.cloudfront.net", + config: { eventType: "origin-response" } as any, + response: { + status: "200", + statusDescription: "ok", + headers: { + expires: [ + { + value: new Date(new Date().getTime() - 3000).toJSON(), + key: "Expires" + } + ] + } + } + }); + + mockPageRequire("pages/customers/index.js"); + + const response = await handler(event); + expect(response.headers).toHaveProperty("cache-control"); + expect(response.headers["cache-control"][0].value).toBe( + "public, max-age=0, s-maxage=0, must-revalidate" + ); + }); + + it("returns a correct cache control header when a last-modified header is sent", async () => { + mockTriggerStaticRegeneration.mockReturnValueOnce( + Promise.resolve({ throttle: false }) + ); + const event = createCloudFrontEvent({ + uri: "/preview", + host: "mydistribution.cloudfront.net", + config: { eventType: "origin-response" } as any, + response: { + status: "200", + statusDescription: "ok", + headers: { + ["last-modified"]: [ + { + value: new Date(new Date().getTime() - 3000).toJSON(), + key: "Last-Modified" + } + ] + } + } + }); + + mockPageRequire("pages/preview/index.js"); + + const response = await handler(event); + expect(response.headers).toHaveProperty("cache-control"); + expect(response.headers["cache-control"][0].value).toBe( + "public, max-age=0, s-maxage=2, must-revalidate" + ); + }); + + it.only("returns a correct throttled cache header when 'throttle' value is returned true", async () => { + mockTriggerStaticRegeneration.mockReturnValueOnce( + Promise.resolve({ throttle: true }) + ); + const event = createCloudFrontEvent({ + uri: "/preview", + host: "mydistribution.cloudfront.net", + config: { eventType: "origin-response" } as any, + response: { + status: "200", + statusDescription: "ok", + headers: { + expires: [ + { + key: "Expires", + value: new Date().toJSON() + } + ] + } + } + }); + + mockPageRequire("pages/preview/index.js"); + + const response = await handler(event); + expect(response.headers).toHaveProperty("cache-control"); + expect(response.headers["cache-control"][0].value).toBe( + "public, max-age=0, s-maxage=1, must-revalidate" + ); + }); + it.each` path | expectedRedirect ${"/_next/data/build-id/"} | ${"/_next/data/build-id"} From 5fc9807b6334d89cb1c4ec0183453237e5f5ea73 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 18:17:16 +0100 Subject: [PATCH 25/48] add tests for triggerStaticRegeneration --- .../lib/triggerStaticRegeneration.test.ts | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 packages/libs/lambda-at-edge/tests/lib/triggerStaticRegeneration.test.ts diff --git a/packages/libs/lambda-at-edge/tests/lib/triggerStaticRegeneration.test.ts b/packages/libs/lambda-at-edge/tests/lib/triggerStaticRegeneration.test.ts new file mode 100644 index 0000000000..a9d236903b --- /dev/null +++ b/packages/libs/lambda-at-edge/tests/lib/triggerStaticRegeneration.test.ts @@ -0,0 +1,83 @@ +import { triggerStaticRegeneration } from "../../src/lib/triggerStaticRegeneration"; + +describe("triggerStaticRegeneration()", () => { + const mockSQSClient = jest.fn(); + const mockSendMessageCommand = jest.fn(); + beforeEach(() => { + mockSQSClient.mockReset(); + jest.mock("@aws-sdk/client-sqs", () => ({ + __esModule: true, + SQSClient: mockSQSClient, + SendMessageCommand: mockSendMessageCommand + })); + }); + + const options = { + basePath: "", + request: { + uri: "index.html", + origin: { + s3: { + region: "us-east-1", + domainName: `my-bucket.s3.us-east-1.amazonaws.com` + } + } + } as AWSLambda.CloudFrontRequest, + response: { + headers: { etag: [{ key: "Etag", value: "123" }] }, + status: "200", + statusDescription: "ok" + } as AWSLambda.CloudFrontResponse + }; + + class RequestThrottledException extends Error { + code = "RequestThrottled"; + } + + it("should not throttle if no rate limit is thrown", async () => { + mockSQSClient.mockImplementationOnce(() => ({ send: jest.fn() })); + const staticRegeneratedResponse = await triggerStaticRegeneration(options); + expect(staticRegeneratedResponse.throttle).toBe(false); + }); + + it("should throttle if a RequestThrottledException is thrown", async () => { + mockSendMessageCommand.mockImplementationOnce(() => { + throw new RequestThrottledException(); + }); + const staticRegeneratedResponse = await triggerStaticRegeneration(options); + expect(staticRegeneratedResponse.throttle).toBe(true); + }); + + it.each` + lastModified | etag | expected + ${"2021-05-05T17:15:04.472Z"} | ${"tag"} | ${"tag"} + ${"2021-05-05T17:15:04.472Z"} | ${undefined} | ${"1620234904472"} + `( + "should throttle send correct parameters to the queue", + async ({ lastModified, etag, expected }) => { + mockSQSClient.mockImplementationOnce(() => ({ send: jest.fn() })); + const staticRegeneratedResponse = await triggerStaticRegeneration({ + ...options, + response: { + ...options.response, + headers: { + ["last-modified"]: [{ key: "Last-Modified", value: lastModified }], + ["etag"]: [{ key: "etag", value: etag }] + } + } + }); + expect(staticRegeneratedResponse.throttle).toBe(false); + expect(mockSendMessageCommand).toHaveBeenCalledWith({ + QueueUrl: `https://sqs.us-east-1.amazonaws.com/my-bucket.fifo`, + MessageBody: JSON.stringify({ + region: "us-east-1", + bucketName: "my-bucket", + cloudFrontEventRequest: options.request, + basePath: "" + }), + MessageDeduplicationId: expected, + MessageGroupId: "index.html" + }); + } + ); +}); From b8cb4851144001509e0b4b233dbb77c30b8c05b5 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 19:40:22 +0100 Subject: [PATCH 26/48] remove removeHeader call --- packages/libs/lambda-at-edge/src/default-handler.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index 3e8f2e1012..3c7c7738ae 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -669,13 +669,9 @@ const handleOriginResponse = async ({ Object.entries(response.headers).map(([name, headers]) => { outHeaders[name] = headers.map(({ value }) => value); }); - res.writeHead(200, outHeaders); - if (cacheControl) { - res.setHeader("Cache-Control", cacheControl); - } else { - res.removeHeader("Cache-Control"); - } + res.writeHead(200, outHeaders); + res.setHeader("Cache-Control", cacheControl); if (isDataRequest(uri)) { res.setHeader("Content-Type", "application/json"); From 99ec48c7aec673e1f66dd36752757b19fc784b33 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 20:14:33 +0100 Subject: [PATCH 27/48] remove only test --- .../tests/default-handler/default-handler.test.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/libs/lambda-at-edge/tests/default-handler/default-handler.test.ts b/packages/libs/lambda-at-edge/tests/default-handler/default-handler.test.ts index 74af842a99..404bfcd8c0 100644 --- a/packages/libs/lambda-at-edge/tests/default-handler/default-handler.test.ts +++ b/packages/libs/lambda-at-edge/tests/default-handler/default-handler.test.ts @@ -56,6 +56,7 @@ describe("Lambda@Edge", () => { `("Routing with trailingSlash = $trailingSlash", ({ trailingSlash }) => { let handler: any; let mockTriggerStaticRegeneration: jest.Mock; + let mockS3StorePage: jest.Mock; let runRedirectTest: ( path: string, expectedRedirect: string, @@ -109,6 +110,12 @@ describe("Lambda@Edge", () => { triggerStaticRegeneration: mockTriggerStaticRegeneration })); + mockS3StorePage = jest.fn(); + jest.mock("../../src/s3/s3StorePage", () => ({ + __esModule: true, + s3StorePage: mockS3StorePage + })); + // Handler needs to be dynamically required to use above mocked manifests // eslint-disable-next-line @typescript-eslint/no-var-requires handler = require("../../src/default-handler").handler; @@ -630,7 +637,7 @@ describe("Lambda@Edge", () => { ); }); - it.only("returns a correct throttled cache header when 'throttle' value is returned true", async () => { + it("returns a correct throttled cache header when 'throttle' value is returned true", async () => { mockTriggerStaticRegeneration.mockReturnValueOnce( Promise.resolve({ throttle: true }) ); From 93a082649bfae3c74e789ecee40d3243113e4f92 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 21:11:45 +0100 Subject: [PATCH 28/48] add tests for sqs component --- .../serverless-plugin/__mocks__/aws-sdk.js | 3 + .../aws-sqs/__tests__/deploy.test.js | 69 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 packages/serverless-components/aws-sqs/__tests__/deploy.test.js diff --git a/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js b/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js index 3f8da90626..caa2f8d8b8 100644 --- a/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js +++ b/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js @@ -71,6 +71,8 @@ const { } = promisify(jest.fn()); MockSTS.prototype.getCallerIdentity = mockGetCallerIdentity; +const MockSQS = jest.fn(); + const MockAPIGateway = function () {}; const { mockFunction: mockGetRestApis, @@ -97,6 +99,7 @@ module.exports = { CloudFormation: MockCloudFormation, CloudWatchLogs: MockCloudWatchLogs, STS: MockSTS, + SQS: MockSQS, APIGateway: MockAPIGateway, SharedIniFileCredentials: MockSharedIniFileCredentials, MetadataService: MockMetadataService, diff --git a/packages/serverless-components/aws-sqs/__tests__/deploy.test.js b/packages/serverless-components/aws-sqs/__tests__/deploy.test.js new file mode 100644 index 0000000000..6ca4d42457 --- /dev/null +++ b/packages/serverless-components/aws-sqs/__tests__/deploy.test.js @@ -0,0 +1,69 @@ +const fse = require("fs-extra"); +const os = require("os"); +const path = require("path"); + +describe("publishVersion", () => { + const mockCreateQueue = jest.fn(); + const mockDeleteQueue = jest.fn(); + const mockGetDefaults = jest.fn(); + const mockGetQueue = jest.fn(); + const mockGetAccountId = jest.fn(); + const mockGetArn = jest.fn(); + const mockGetUrl = jest.fn(); + const mockSetAttributes = jest.fn(); + jest.mock("../utils", () => ({ + createQueue: mockCreateQueue, + deleteQueue: mockDeleteQueue, + getDefaults: mockGetDefaults, + getQueue: mockGetQueue, + getAccountId: mockGetAccountId, + getArn: mockGetArn, + getUrl: mockGetUrl, + setAttributes: mockSetAttributes + })); + const tmpStateFolder = () => fse.mkdtempSync(path.join(os.tmpdir(), "test-")); + const AwsSqsQueue = require("../serverless"); + + it("creates a new queue", async () => { + mockGetQueue.mockReturnValueOnce({}); + mockGetAccountId.mockResolvedValueOnce("id"); + mockGetArn.mockResolvedValueOnce("arn"); + mockGetUrl.mockResolvedValueOnce("url"); + const component = new AwsSqsQueue("TestLambda", { + stateRoot: tmpStateFolder() + }); + await component.init(); + await component.default(); + expect(mockCreateQueue).toBeCalledTimes(1); + expect(mockDeleteQueue).toBeCalledTimes(0); + }); + + it("deletes and recreates a queue", async () => { + mockGetQueue.mockReturnValueOnce({ not: "empty" }); + mockGetAccountId.mockResolvedValueOnce("id"); + mockGetArn.mockResolvedValueOnce("arn"); + mockGetUrl.mockResolvedValueOnce("url"); + const component = new AwsSqsQueue("TestLambda", { + stateRoot: tmpStateFolder() + }); + await component.init(); + await component.default(); + expect(mockCreateQueue).toBeCalledTimes(1); + expect(mockDeleteQueue).toBeCalledTimes(1); + }); + + it("updates an existing queue", async () => { + mockGetQueue.mockReturnValueOnce({ not: "empty" }); + mockGetAccountId.mockResolvedValueOnce("id"); + mockGetArn.mockResolvedValueOnce("arn"); + mockGetUrl.mockReturnValueOnce(undefined); + const component = new AwsSqsQueue("TestLambda", { + stateRoot: tmpStateFolder() + }); + await component.init(); + await component.default(); + expect(mockCreateQueue).toBeCalledTimes(0); + expect(mockSetAttributes).toBeCalledTimes(1); + expect(mockDeleteQueue).toBeCalledTimes(0); + }); +}); From 10f9f6751eadda738a12376e34c554a01c711219 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 21:20:47 +0100 Subject: [PATCH 29/48] add tests to unhappy-paths in triggerStaticRegeneration --- .../lib/triggerStaticRegeneration.test.ts | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/packages/libs/lambda-at-edge/tests/lib/triggerStaticRegeneration.test.ts b/packages/libs/lambda-at-edge/tests/lib/triggerStaticRegeneration.test.ts index a9d236903b..518f52e9dc 100644 --- a/packages/libs/lambda-at-edge/tests/lib/triggerStaticRegeneration.test.ts +++ b/packages/libs/lambda-at-edge/tests/lib/triggerStaticRegeneration.test.ts @@ -48,6 +48,49 @@ describe("triggerStaticRegeneration()", () => { expect(staticRegeneratedResponse.throttle).toBe(true); }); + it("should rethrow an unknown error", async () => { + mockSendMessageCommand.mockImplementationOnce(() => { + throw new Error("Unknown error"); + }); + expect(triggerStaticRegeneration(options)).rejects.toEqual({ + error: "Unknown error" + }); + }); + + it("should reject when corrupt s3 name is passed", async () => { + expect( + triggerStaticRegeneration({ + ...options, + request: { + ...options.request, + origin: { + ...options.request.origin, + s3: { domainName: "unknown", region: "us-east-1" } + } + } as AWSLambda.CloudFrontRequest + }) + ).rejects.toEqual({ + error: "Expected bucket name to be defined" + }); + }); + + it("should reject when no region is passed", async () => { + expect( + triggerStaticRegeneration({ + ...options, + request: { + ...options.request, + origin: { + ...options.request.origin, + s3: { ...options.request.origin?.s3, region: "" } + } + } as AWSLambda.CloudFrontRequest + }) + ).rejects.toEqual({ + error: "Expected region to be defined" + }); + }); + it.each` lastModified | etag | expected ${"2021-05-05T17:15:04.472Z"} | ${"tag"} | ${"tag"} From cb5ad0b29bde00b9e115245955a8a5be33f41698 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 21:56:34 +0100 Subject: [PATCH 30/48] add extra test cases to sqs component --- .../serverless-plugin/__mocks__/aws-sdk.js | 13 ++++++++ .../aws-sqs/__tests__/deploy.test.js | 31 ++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js b/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js index caa2f8d8b8..ec4a6f0629 100644 --- a/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js +++ b/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js @@ -88,6 +88,9 @@ const mockMetadataRequest = jest .mockImplementation((path, cb) => cb(null, {})); MockMetadataService.prototype.request = mockMetadataRequest; +const mockListEventSourceMappingsPromise = jest.fn(); +const mockCreateEventSourceMappingPromise = jest.fn(); + module.exports = { EnvironmentCredentials: MockEnvironmentCredentials, S3: jest.fn(() => { @@ -100,10 +103,20 @@ module.exports = { CloudWatchLogs: MockCloudWatchLogs, STS: MockSTS, SQS: MockSQS, + Lambda: jest.fn().mockImplementation(() => ({ + listEventSourceMappings: jest.fn().mockReturnValue({ + promise: mockListEventSourceMappingsPromise + }), + createEventSourceMapping: jest.fn().mockReturnValue({ + promise: mockCreateEventSourceMappingPromise + }) + })), APIGateway: MockAPIGateway, SharedIniFileCredentials: MockSharedIniFileCredentials, MetadataService: MockMetadataService, + mockListEventSourceMappingsPromise, + mockCreateEventSourceMappingPromise, mockDescribeStacks, mockDescribeStacksPromise, mockCreateStack, diff --git a/packages/serverless-components/aws-sqs/__tests__/deploy.test.js b/packages/serverless-components/aws-sqs/__tests__/deploy.test.js index 6ca4d42457..ed2d666968 100644 --- a/packages/serverless-components/aws-sqs/__tests__/deploy.test.js +++ b/packages/serverless-components/aws-sqs/__tests__/deploy.test.js @@ -1,8 +1,12 @@ const fse = require("fs-extra"); const os = require("os"); const path = require("path"); +const { + mockListEventSourceMappingsPromise, + mockCreateEventSourceMappingPromise +} = require("aws-sdk"); -describe("publishVersion", () => { +describe("sqs component", () => { const mockCreateQueue = jest.fn(); const mockDeleteQueue = jest.fn(); const mockGetDefaults = jest.fn(); @@ -22,6 +26,7 @@ describe("publishVersion", () => { setAttributes: mockSetAttributes })); const tmpStateFolder = () => fse.mkdtempSync(path.join(os.tmpdir(), "test-")); + const AwsSqsQueue = require("../serverless"); it("creates a new queue", async () => { @@ -66,4 +71,28 @@ describe("publishVersion", () => { expect(mockSetAttributes).toBeCalledTimes(1); expect(mockDeleteQueue).toBeCalledTimes(0); }); + + it("does not create a lambda mapping when a mapping is found", async () => { + mockListEventSourceMappingsPromise.mockResolvedValueOnce({ + EventSourceMappings: [1] + }); + const component = new AwsSqsQueue("TestLambda", { + stateRoot: tmpStateFolder() + }); + await component.init(); + await component.addEventSource("arn"); + expect(mockCreateEventSourceMappingPromise).toBeCalledTimes(0); + }); + + it("creates lambda mapping when no mapping is found", async () => { + mockListEventSourceMappingsPromise.mockResolvedValueOnce({ + EventSourceMappings: [] + }); + const component = new AwsSqsQueue("TestLambda", { + stateRoot: tmpStateFolder() + }); + await component.init(); + await component.addEventSource("arn"); + expect(mockCreateEventSourceMappingPromise).toBeCalledTimes(1); + }); }); From f9806d26729785268821f40e3db9f9ffb43fbe43 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 22:03:44 +0100 Subject: [PATCH 31/48] add case for sqs delete --- .../aws-sqs/__tests__/deploy.test.js | 9 +++++++++ packages/serverless-components/aws-sqs/utils.js | 1 - 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/serverless-components/aws-sqs/__tests__/deploy.test.js b/packages/serverless-components/aws-sqs/__tests__/deploy.test.js index ed2d666968..8ab92a057e 100644 --- a/packages/serverless-components/aws-sqs/__tests__/deploy.test.js +++ b/packages/serverless-components/aws-sqs/__tests__/deploy.test.js @@ -95,4 +95,13 @@ describe("sqs component", () => { await component.addEventSource("arn"); expect(mockCreateEventSourceMappingPromise).toBeCalledTimes(1); }); + + it("calls the delete handler when component is deleted", async () => { + const component = new AwsSqsQueue("TestLambda", { + stateRoot: tmpStateFolder() + }); + await component.init(); + await component.remove(); + expect(mockDeleteQueue).toBeCalledTimes(1); + }); }); diff --git a/packages/serverless-components/aws-sqs/utils.js b/packages/serverless-components/aws-sqs/utils.js index a49b3518ed..18b3dc948f 100644 --- a/packages/serverless-components/aws-sqs/utils.js +++ b/packages/serverless-components/aws-sqs/utils.js @@ -2,7 +2,6 @@ const { clone } = require("ramda"); const getDefaults = ({ defaults }) => { const response = clone(defaults); - return response; }; From 35527515a200f43d81a9d0c34647087e464d4d51 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 5 May 2021 22:48:03 +0100 Subject: [PATCH 32/48] check assertions against sdk api calls --- .../serverless-plugin/__mocks__/aws-sdk.js | 25 ++++++- .../aws-sqs/__tests__/deploy.test.js | 69 +++++++------------ 2 files changed, 46 insertions(+), 48 deletions(-) diff --git a/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js b/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js index ec4a6f0629..8c1552c232 100644 --- a/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js +++ b/packages/deprecated/serverless-plugin/__mocks__/aws-sdk.js @@ -1,5 +1,5 @@ -const promisify = (mockFunction) => { - const mockPromise = jest.fn(() => Promise.resolve()); +const promisify = (mockFunction, mockResolvedValue) => { + const mockPromise = jest.fn(() => Promise.resolve(mockResolvedValue)); mockFunction.mockReturnValue({ promise: mockPromise }); @@ -72,6 +72,21 @@ const { MockSTS.prototype.getCallerIdentity = mockGetCallerIdentity; const MockSQS = jest.fn(); +const { + mockFunction: mockGetQueueAttributes, + mockPromise: mockGetQueueAttributesPromise +} = promisify(jest.fn()); +const { + mockFunction: mockCreateQueue, + mockPromise: mockCreateQueuePromise +} = promisify(jest.fn()); +const { + mockFunction: mockDeleteQueue, + mockPromise: mockDeleteQueuePromise +} = promisify(jest.fn()); +MockSQS.prototype.createQueue = mockCreateQueue; +MockSQS.prototype.deleteQueue = mockDeleteQueue; +MockSQS.prototype.getQueueAttributes = mockGetQueueAttributes; const MockAPIGateway = function () {}; const { @@ -115,6 +130,12 @@ module.exports = { SharedIniFileCredentials: MockSharedIniFileCredentials, MetadataService: MockMetadataService, + mockDeleteQueue, + mockDeleteQueuePromise, + mockCreateQueue, + mockCreateQueuePromise, + mockGetQueueAttributes, + mockGetQueueAttributesPromise, mockListEventSourceMappingsPromise, mockCreateEventSourceMappingPromise, mockDescribeStacks, diff --git a/packages/serverless-components/aws-sqs/__tests__/deploy.test.js b/packages/serverless-components/aws-sqs/__tests__/deploy.test.js index 8ab92a057e..9c116d4f8a 100644 --- a/packages/serverless-components/aws-sqs/__tests__/deploy.test.js +++ b/packages/serverless-components/aws-sqs/__tests__/deploy.test.js @@ -3,73 +3,50 @@ const os = require("os"); const path = require("path"); const { mockListEventSourceMappingsPromise, - mockCreateEventSourceMappingPromise + mockCreateEventSourceMappingPromise, + mockGetCallerIdentityPromise, + mockGetQueueAttributesPromise, + mockCreateQueuePromise, + mockDeleteQueuePromise } = require("aws-sdk"); describe("sqs component", () => { - const mockCreateQueue = jest.fn(); - const mockDeleteQueue = jest.fn(); - const mockGetDefaults = jest.fn(); - const mockGetQueue = jest.fn(); - const mockGetAccountId = jest.fn(); - const mockGetArn = jest.fn(); - const mockGetUrl = jest.fn(); - const mockSetAttributes = jest.fn(); - jest.mock("../utils", () => ({ - createQueue: mockCreateQueue, - deleteQueue: mockDeleteQueue, - getDefaults: mockGetDefaults, - getQueue: mockGetQueue, - getAccountId: mockGetAccountId, - getArn: mockGetArn, - getUrl: mockGetUrl, - setAttributes: mockSetAttributes - })); const tmpStateFolder = () => fse.mkdtempSync(path.join(os.tmpdir(), "test-")); + mockGetCallerIdentityPromise.mockResolvedValue({ Account: "123" }); + mockGetQueueAttributesPromise.mockResolvedValue({ Attributes: {} }); + mockCreateQueuePromise.mockResolvedValue({ QueueArn: "arn" }); const AwsSqsQueue = require("../serverless"); + beforeEach(() => { + jest.restoreAllMocks(); + }); + it("creates a new queue", async () => { - mockGetQueue.mockReturnValueOnce({}); - mockGetAccountId.mockResolvedValueOnce("id"); - mockGetArn.mockResolvedValueOnce("arn"); - mockGetUrl.mockResolvedValueOnce("url"); + // mockGetQueue.mockReturnValueOnce({}); + // mockGetAccountId.mockResolvedValueOnce("id"); + // mockGetArn.mockResolvedValueOnce("arn"); + // mockGetUrl.mockResolvedValueOnce("url"); const component = new AwsSqsQueue("TestLambda", { stateRoot: tmpStateFolder() }); await component.init(); await component.default(); - expect(mockCreateQueue).toBeCalledTimes(1); - expect(mockDeleteQueue).toBeCalledTimes(0); + expect(mockCreateQueuePromise).toBeCalledTimes(1); + expect(mockDeleteQueuePromise).toBeCalledTimes(0); }); it("deletes and recreates a queue", async () => { - mockGetQueue.mockReturnValueOnce({ not: "empty" }); - mockGetAccountId.mockResolvedValueOnce("id"); - mockGetArn.mockResolvedValueOnce("arn"); - mockGetUrl.mockResolvedValueOnce("url"); - const component = new AwsSqsQueue("TestLambda", { - stateRoot: tmpStateFolder() + mockGetQueueAttributesPromise.mockResolvedValueOnce({ + Attributes: { not: "empty" } }); - await component.init(); - await component.default(); - expect(mockCreateQueue).toBeCalledTimes(1); - expect(mockDeleteQueue).toBeCalledTimes(1); - }); - - it("updates an existing queue", async () => { - mockGetQueue.mockReturnValueOnce({ not: "empty" }); - mockGetAccountId.mockResolvedValueOnce("id"); - mockGetArn.mockResolvedValueOnce("arn"); - mockGetUrl.mockReturnValueOnce(undefined); const component = new AwsSqsQueue("TestLambda", { stateRoot: tmpStateFolder() }); await component.init(); await component.default(); - expect(mockCreateQueue).toBeCalledTimes(0); - expect(mockSetAttributes).toBeCalledTimes(1); - expect(mockDeleteQueue).toBeCalledTimes(0); + expect(mockCreateQueuePromise).toBeCalledTimes(1); + expect(mockDeleteQueuePromise).toBeCalledTimes(1); }); it("does not create a lambda mapping when a mapping is found", async () => { @@ -102,6 +79,6 @@ describe("sqs component", () => { }); await component.init(); await component.remove(); - expect(mockDeleteQueue).toBeCalledTimes(1); + expect(mockDeleteQueuePromise).toBeCalledTimes(1); }); }); From 41202f3b06f2a4f354231810b018d09d04989b4a Mon Sep 17 00:00:00 2001 From: Henry Date: Sat, 8 May 2021 14:31:45 +0100 Subject: [PATCH 33/48] regenerate yarn lock files --- .../aws-sqs/__tests__/deploy.test.js | 4 - yarn.lock | 1166 +++++++++-------- 2 files changed, 653 insertions(+), 517 deletions(-) diff --git a/packages/serverless-components/aws-sqs/__tests__/deploy.test.js b/packages/serverless-components/aws-sqs/__tests__/deploy.test.js index 9c116d4f8a..e7800154ff 100644 --- a/packages/serverless-components/aws-sqs/__tests__/deploy.test.js +++ b/packages/serverless-components/aws-sqs/__tests__/deploy.test.js @@ -23,10 +23,6 @@ describe("sqs component", () => { }); it("creates a new queue", async () => { - // mockGetQueue.mockReturnValueOnce({}); - // mockGetAccountId.mockResolvedValueOnce("id"); - // mockGetArn.mockResolvedValueOnce("arn"); - // mockGetUrl.mockResolvedValueOnce("url"); const component = new AwsSqsQueue("TestLambda", { stateRoot: tmpStateFolder() }); diff --git a/yarn.lock b/yarn.lock index de50934504..4ec2c2a7df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -104,595 +104,702 @@ dependencies: tslib "^1.11.1" -"@aws-sdk/abort-controller@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-1.0.0-rc.3.tgz#c4cde5f1a1c0d3b6e6c5ddc04a0e423cb8bcc1f1" - integrity sha512-+os/c2PDtDzaeAMqH3f03EDwMAesxy3O5lFcT2vr43iiQkXRnYwaWFD4QPwDQGzKDjksPKSa6iag4OjzGf0ezA== +"@aws-sdk/abort-controller@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.13.1.tgz#5b6eaefa72dbafebf026367b0266737b458aacbe" + integrity sha512-iK32oE9hZw3aC6Jgbr8kHGxo1Mq7ayY1dxLB2R59W0YUMB/EEQ2Z0tJaxOsLNfeNBGMvxzQXHxnjP8wUbOGCkA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/chunked-blob-reader-native@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-1.0.0-rc.3.tgz#5a863d61f84ca0ff32e440f4c214e1929af05978" - integrity sha512-ouuN4cBmwfVPVVQeBhKm18BHkBK/ZVn0VDE4WXVMqu3WjNBxulKYCvJ7mkxi1oWWzp+RGa1TwIQuancB1IHrdA== +"@aws-sdk/chunked-blob-reader-native@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.13.1.tgz#df5634b7ad7750e238a5e3af29bf6bbcd2c94811" + integrity sha512-PJYLDW5Uc78iwHVJmiGMIRIAwohaewOJGsnnwTGQBsOqTHDM0ywwO3rlObkuuLiWaFA/4w1cYdvWaMI7Iwf+qg== dependencies: - "@aws-sdk/util-base64-browser" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/util-base64-browser" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/chunked-blob-reader@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-1.0.0-rc.3.tgz#f704a8c6133931bbde3ee015936dc136763dd992" - integrity sha512-d4B6mOYxZqo+y2op5BwEsG0wxewyNhVmyvfdQfhaJowNjhZpQ6vhYkh3umOarLwyC72dNScKBQYLnOsf5chtDg== +"@aws-sdk/chunked-blob-reader@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.13.1.tgz#cb391e7dd460c3a424e4c96a3ff15a165bd268f0" + integrity sha512-vZ292PZUkO7lYba5qz6xcOAwnY9YvjFJM+CEzUsyr7pTBIs/1c9LMZqEMPB9OKKNRmWbB5VwaS2eJQK0KRtr5Q== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/client-s3@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-1.0.0-rc.3.tgz#88ba3fe10308ffc0fe9bdd334071130ccd43eae7" - integrity sha512-/IYV2zoGo8SIId0VsJ/lSI6hkP0nSNvibjQtTIOu/E0edoeHtotXtuJ3SLpsuwGGm8mZtMuq1R6W1q0G/o/DrA== +"@aws-sdk/client-s3@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.14.0.tgz#c587a45ec599f8250e05ef7985704129c0990817" + integrity sha512-YAlSg60BgYDQzSTusWOH38OYKF8EOj4BFotrWxeFDAvDg40N/n1hYVEe/uOWjPTTQUXj7td4DBPxTr4r3QBY0g== dependencies: "@aws-crypto/sha256-browser" "^1.0.0" "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "1.0.0-rc.3" - "@aws-sdk/credential-provider-node" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-browser" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-config-resolver" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-node" "1.0.0-rc.3" - "@aws-sdk/fetch-http-handler" "1.0.0-rc.3" - "@aws-sdk/hash-blob-browser" "1.0.0-rc.3" - "@aws-sdk/hash-node" "1.0.0-rc.3" - "@aws-sdk/hash-stream-node" "1.0.0-rc.3" - "@aws-sdk/invalid-dependency" "1.0.0-rc.3" - "@aws-sdk/md5-js" "1.0.0-rc.3" - "@aws-sdk/middleware-apply-body-checksum" "1.0.0-rc.3" - "@aws-sdk/middleware-bucket-endpoint" "1.0.0-rc.3" - "@aws-sdk/middleware-content-length" "1.0.0-rc.3" - "@aws-sdk/middleware-expect-continue" "1.0.0-rc.3" - "@aws-sdk/middleware-host-header" "1.0.0-rc.3" - "@aws-sdk/middleware-location-constraint" "1.0.0-rc.3" - "@aws-sdk/middleware-logger" "1.0.0-rc.3" - "@aws-sdk/middleware-retry" "1.0.0-rc.3" - "@aws-sdk/middleware-sdk-s3" "1.0.0-rc.3" - "@aws-sdk/middleware-serde" "1.0.0-rc.3" - "@aws-sdk/middleware-signing" "1.0.0-rc.3" - "@aws-sdk/middleware-ssec" "1.0.0-rc.3" - "@aws-sdk/middleware-stack" "1.0.0-rc.3" - "@aws-sdk/middleware-user-agent" "1.0.0-rc.3" - "@aws-sdk/node-config-provider" "1.0.0-rc.3" - "@aws-sdk/node-http-handler" "1.0.0-rc.3" - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/smithy-client" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/url-parser-browser" "1.0.0-rc.3" - "@aws-sdk/url-parser-node" "1.0.0-rc.3" - "@aws-sdk/util-base64-browser" "1.0.0-rc.3" - "@aws-sdk/util-base64-node" "1.0.0-rc.3" - "@aws-sdk/util-body-length-browser" "1.0.0-rc.3" - "@aws-sdk/util-body-length-node" "1.0.0-rc.3" - "@aws-sdk/util-user-agent-browser" "1.0.0-rc.3" - "@aws-sdk/util-user-agent-node" "1.0.0-rc.3" - "@aws-sdk/util-utf8-browser" "1.0.0-rc.3" - "@aws-sdk/util-utf8-node" "1.0.0-rc.3" - "@aws-sdk/xml-builder" "1.0.0-rc.3" - fast-xml-parser "^3.16.0" + "@aws-sdk/client-sts" "3.14.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/credential-provider-node" "3.14.0" + "@aws-sdk/eventstream-serde-browser" "3.13.1" + "@aws-sdk/eventstream-serde-config-resolver" "3.13.1" + "@aws-sdk/eventstream-serde-node" "3.13.1" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-blob-browser" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/hash-stream-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/md5-js" "3.13.1" + "@aws-sdk/middleware-apply-body-checksum" "3.13.1" + "@aws-sdk/middleware-bucket-endpoint" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-expect-continue" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-location-constraint" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-sdk-s3" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/middleware-ssec" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + "@aws-sdk/util-waiter" "3.13.1" + "@aws-sdk/xml-builder" "3.14.0" + fast-xml-parser "3.19.0" tslib "^2.0.0" -"@aws-sdk/client-sqs@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sqs/-/client-sqs-1.0.0-rc.3.tgz#aca468b52f77db00ffdf27d825022124d802da4d" - integrity sha512-qEXJ++GJ46sPboyhRUJIv03buEvmXT5lLgjUdWjZKwzHaU34GPH0B7xxlLOUWmA+JvyPaK91ESjGqLc/82GLaA== +"@aws-sdk/client-sqs@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sqs/-/client-sqs-3.14.0.tgz#72fea092013209db58c083730da34ce0bd1da259" + integrity sha512-wH+hBMLzlAeAZy6hrwaezhRUEHrDxwsFgahPB9rFpy96paQHzBswPE/YR2+UP6Ob/Mt1/xNwMXFgmr6vvKMDxw== dependencies: "@aws-crypto/sha256-browser" "^1.0.0" "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "1.0.0-rc.3" - "@aws-sdk/credential-provider-node" "1.0.0-rc.3" - "@aws-sdk/fetch-http-handler" "1.0.0-rc.3" - "@aws-sdk/hash-node" "1.0.0-rc.3" - "@aws-sdk/invalid-dependency" "1.0.0-rc.3" - "@aws-sdk/md5-js" "1.0.0-rc.3" - "@aws-sdk/middleware-content-length" "1.0.0-rc.3" - "@aws-sdk/middleware-host-header" "1.0.0-rc.3" - "@aws-sdk/middleware-logger" "1.0.0-rc.3" - "@aws-sdk/middleware-retry" "1.0.0-rc.3" - "@aws-sdk/middleware-sdk-sqs" "1.0.0-rc.3" - "@aws-sdk/middleware-serde" "1.0.0-rc.3" - "@aws-sdk/middleware-signing" "1.0.0-rc.3" - "@aws-sdk/middleware-stack" "1.0.0-rc.3" - "@aws-sdk/middleware-user-agent" "1.0.0-rc.3" - "@aws-sdk/node-config-provider" "1.0.0-rc.3" - "@aws-sdk/node-http-handler" "1.0.0-rc.3" - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/smithy-client" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/url-parser-browser" "1.0.0-rc.3" - "@aws-sdk/url-parser-node" "1.0.0-rc.3" - "@aws-sdk/util-base64-browser" "1.0.0-rc.3" - "@aws-sdk/util-base64-node" "1.0.0-rc.3" - "@aws-sdk/util-body-length-browser" "1.0.0-rc.3" - "@aws-sdk/util-body-length-node" "1.0.0-rc.3" - "@aws-sdk/util-user-agent-browser" "1.0.0-rc.3" - "@aws-sdk/util-user-agent-node" "1.0.0-rc.3" - "@aws-sdk/util-utf8-browser" "1.0.0-rc.3" - "@aws-sdk/util-utf8-node" "1.0.0-rc.3" - fast-xml-parser "^3.16.0" + "@aws-sdk/client-sts" "3.14.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/credential-provider-node" "3.14.0" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/md5-js" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-sdk-sqs" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + fast-xml-parser "3.19.0" tslib "^2.0.0" -"@aws-sdk/config-resolver@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-1.0.0-rc.3.tgz#0eb877cdabffb75ba3ed89f14e86301faeec12d2" - integrity sha512-twz204J+R5SFUOWe7VPYoF9yZA3HsMujnZKkm7QTunKUYRrrZcG1x6KeArIpk1mKFlrtm1tcab5BqUDUKgm23A== +"@aws-sdk/client-sso@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.14.0.tgz#da57cf40a501272238ea58e1560a6f3f9fb81c25" + integrity sha512-uPg6AvCA5Xp2fzepmG5MDuBqcpeZZGhWmCWIqM+JwmcxU0bw/imHWuHLD4mVFw3yFL7NVfXu89wUyUTa383RZw== dependencies: - "@aws-sdk/signature-v4" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/credential-provider-env@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-1.0.0-rc.3.tgz#9e7f21d1aa1d54e6a7f3f87626d2a46896ca7294" - integrity sha512-QG9YUDy1qjghL6MsXIE4wxXuTDeBsNWcXYIMpuvn5bJSVDmcSmXwVFMyCiYvDlN57zbomWaNvYiq9TS50aw0Ng== +"@aws-sdk/client-sts@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.14.0.tgz#ef27a4ae4ae799c9fe9ed08ea3207880415663e3" + integrity sha512-R6z/o8zSe1kYPC/aC3VxYjat3UF1f4BwAShF9JFwi5YUpgD42WzOLuoQ5tjGdvj8cYsq4m9pIOGOPSrEGZZs0Q== dependencies: - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/config-resolver" "3.14.0" + "@aws-sdk/credential-provider-node" "3.14.0" + "@aws-sdk/fetch-http-handler" "3.13.1" + "@aws-sdk/hash-node" "3.13.1" + "@aws-sdk/invalid-dependency" "3.13.1" + "@aws-sdk/middleware-content-length" "3.13.1" + "@aws-sdk/middleware-host-header" "3.13.1" + "@aws-sdk/middleware-logger" "3.13.1" + "@aws-sdk/middleware-retry" "3.13.1" + "@aws-sdk/middleware-sdk-sts" "3.13.1" + "@aws-sdk/middleware-serde" "3.13.1" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/middleware-user-agent" "3.14.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/node-http-handler" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/smithy-client" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/url-parser" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + "@aws-sdk/util-base64-node" "3.13.1" + "@aws-sdk/util-body-length-browser" "3.13.1" + "@aws-sdk/util-body-length-node" "3.13.1" + "@aws-sdk/util-user-agent-browser" "3.13.1" + "@aws-sdk/util-user-agent-node" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + "@aws-sdk/util-utf8-node" "3.13.1" + fast-xml-parser "3.19.0" + tslib "^2.0.0" -"@aws-sdk/credential-provider-imds@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-1.0.0-rc.3.tgz#d5709e1ef009b7c87387e0c377c8840a7a27b9db" - integrity sha512-vMRAlXdU4ZUeLGgtXh+MCzyZrdoXA8tJldR5n0glbODAym1Ap6ZQ9Y/apQvaHiMxyTd/PCcPg0cwSmhlnwdhTg== +"@aws-sdk/config-resolver@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.14.0.tgz#2f8c71595e01d1f7d1b479f1f09ac8e581afd68c" + integrity sha512-ZuwxcQro817xq6qE9HJaWRm+cJGCXHU2ZVrSNEmU+E79gJVw2Bo+99Pk9iug4w2+lObpgqfxaCvvsobbDoMo6A== dependencies: - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/signature-v4" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/credential-provider-ini@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-1.0.0-rc.3.tgz#23301a8cf39b004b4ba866d58469f766b819218e" - integrity sha512-3/dvnmtnjGSoBn9MSTtO6/Vpd0RxwA1oOeHlFhswr4ZDMI3Nn8almvUhjtC+wkKKSG+ushkEJaDDPy6P+7xqRA== +"@aws-sdk/credential-provider-env@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.13.1.tgz#255e7824c080b5522e6230cf5626a6aa4bf04f16" + integrity sha512-tPGjnwkif/ndC1kQ5fv2F2486kUHBoACKKNN1O6CslReDtfFd+Z8kFOkrFtpFufOTRcjc5e4bmaEOG69EGwUUA== dependencies: - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/shared-ini-file-loader" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/credential-provider-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-1.0.0-rc.3.tgz#9f6ebecec5f1622ed1b9172c9ae43b147dbc75a9" - integrity sha512-UbtN7dMjyUgYyYKSQLAMmx1aGT9HD00bf0suvn9H4lo5piWuJ/30CoBqIl/l2l+6z0AdK2DcGoF5yuLyJSX0ww== - dependencies: - "@aws-sdk/credential-provider-env" "1.0.0-rc.3" - "@aws-sdk/credential-provider-imds" "1.0.0-rc.3" - "@aws-sdk/credential-provider-ini" "1.0.0-rc.3" - "@aws-sdk/credential-provider-process" "1.0.0-rc.3" - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" +"@aws-sdk/credential-provider-imds@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.13.1.tgz#d16a85ee1052e1419841162db818115938ef5b02" + integrity sha512-TH2mhvw7V1N3DkqTHmtTwGEWx+y9iP4hST3qzrTYAP72SV6z1ElEZxVvKwOsH97ak1NRgG0DNxgVRIODolQ6Ug== + dependencies: + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/credential-provider-process@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-1.0.0-rc.3.tgz#8752ee9efb696d24c84cbd1da64ed76b93269820" - integrity sha512-gz98CXgAwtsW1CkK9F8SOW1EEHFFHsl3QCBs1i4CErYr08i/2sa1LHOjxyIJ9RMRM0WNPBCLH4btvpajOGtXBA== +"@aws-sdk/credential-provider-ini@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.13.1.tgz#ffbd2ff4424c451e58cb7f3e88d5088ab83e6ad5" + integrity sha512-+j/9wjDj4Kqf/2Am/qeJbKLYRTcQM1QjULGmQ7uJcvKIg4Orr7XJr8aBhbJgSw2ee7x5WYbun7oBJkNiL1uSCQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.13.1" + "@aws-sdk/credential-provider-imds" "3.13.1" + "@aws-sdk/credential-provider-web-identity" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-node@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.14.0.tgz#e64755067f7f20075667ddcc0edfcfa4c63ddd91" + integrity sha512-fJUaF5x4YTUmFjzMU/bap8dU+124lUuwz1ugl64VK6qLW78/mGJwZmsmAEc/TbQIm5brv0X7VTgr6z5xUa5YEQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.13.1" + "@aws-sdk/credential-provider-imds" "3.13.1" + "@aws-sdk/credential-provider-ini" "3.13.1" + "@aws-sdk/credential-provider-process" "3.13.1" + "@aws-sdk/credential-provider-sso" "3.14.0" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-process@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.13.1.tgz#0594c1d4ef525dbe7c477daa30c59c057943208b" + integrity sha512-lvO6hO7at5NHqiCpPDsjvIk8Oj/VK+kgVnFaEufSEw0IL/4avX5llIj2tj3JkqIa6guT7elR6yk70VCwI28ekA== dependencies: - "@aws-sdk/credential-provider-ini" "1.0.0-rc.3" - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/shared-ini-file-loader" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/credential-provider-ini" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/eventstream-marshaller@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-1.0.0-rc.3.tgz#ce4a190365ae949f6ad0639ab2285ce21d28046e" - integrity sha512-LBWqTd+VRVBdmBYm/K3ueBHLNOCUlj0uLQOExfvKFTugQ1t3i5JoZKLYNbTJyid8sMmbyq1y/nfM+kAHXguwAQ== +"@aws-sdk/credential-provider-sso@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.14.0.tgz#7f3c13b12ae2ee329dd85ebb5084e2c7fa8cd5e4" + integrity sha512-PCODdi10TrUUmRgziChUfcCXFvLw1NYdk+sF+JhXwQphlDjK1IKuIYadOqgUEBgNS/y0mX91Gj062CIPzpQ33Q== + dependencies: + "@aws-sdk/client-sso" "3.14.0" + "@aws-sdk/credential-provider-ini" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/credential-provider-web-identity@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.13.1.tgz#7bb3edb13fb071f47f6f8ec9eac7adaec011323c" + integrity sha512-6sJcigee7PUBl4AIva6QfkudpvJ3sZ0MIf5dGCFeElx3j1F5mX15lRt9ZuF31LQ/B5Jc3xBD6rILMH/nQ7Es7A== + dependencies: + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/eventstream-marshaller@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.13.1.tgz#b9d67472f03611a1d8b40878f35cac56a0cabf6a" + integrity sha512-LnucJoP5mRR+uNbXlg8yxVmwQOffWjM1YyBj9q3c2oVYl1mBhdqWL+73kS8iwsXV2YE3wh0Z6seo5B+OpDVJfg== dependencies: "@aws-crypto/crc32" "^1.0.0" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-hex-encoding" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-hex-encoding" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/eventstream-serde-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-1.0.0-rc.3.tgz#ea9229e17317c457dd11206565a04dc1bbccb579" - integrity sha512-dMWtrnaOBLxEFvEtX7r66Pxh+XipRdDYHHNTSsg3Vaj+cDcCUkur2tplhKaBQY9bElfGB2Rb2R7XsfIxt9PZ0w== +"@aws-sdk/eventstream-serde-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.13.1.tgz#84ea52dccb8f2fa3314ba19fafc69ec1b5b060ea" + integrity sha512-lzKDB96LToVLAHVWP2+mhnvuuN2oS/BB9B016wmt7II+DPcqLTdJ4QZ7bTioDGqQ3vLl2xUk8aq3Mrxq8wBDhw== dependencies: - "@aws-sdk/eventstream-marshaller" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-universal" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/eventstream-marshaller" "3.13.1" + "@aws-sdk/eventstream-serde-universal" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/eventstream-serde-config-resolver@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-1.0.0-rc.3.tgz#198f81974c4e5396d090c3d48826c6f5e2486819" - integrity sha512-hnp8DwEK64p2mwMDyBIgGq7yOaxDe3H1O7xoNmKb/owqQAcV8BxhhbrJYrsXNSeE/lO2zckPcL1imzuKHudTfA== +"@aws-sdk/eventstream-serde-config-resolver@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.13.1.tgz#24113ef8c095cf6bae09a1239c0104c091aab25d" + integrity sha512-GtI5czL44t5iNcInwJ4wLScxAwNdf0a7yLYEI4bqr0oEqTZ8hLWAzDtoi4yGsRhvgDRzjxLkRcu/HQWXYGq9GA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/eventstream-serde-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-1.0.0-rc.3.tgz#cb0d74f24b43cd14963a0ee8252cc47260ddf483" - integrity sha512-QTIygM8qoVfDv6paFTdyvuAdgUSm/VDFa36OZd+IXSgzoYYrI/psutpYCyt/27oiPH+rFPrOofs9A1mXIWWMhg== +"@aws-sdk/eventstream-serde-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.13.1.tgz#1b7ecb8cf7b1569eb0a3eb22b07cb97d7d26c95f" + integrity sha512-X46ybOppja1Gq4Wv/Laiq3Zs7N7zMl3xM4Iv7vmc1PCbuNEXXHbKbs2w3PH32C7w0yYP795rOJO2LJiBniSFgA== dependencies: - "@aws-sdk/eventstream-marshaller" "1.0.0-rc.3" - "@aws-sdk/eventstream-serde-universal" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/eventstream-marshaller" "3.13.1" + "@aws-sdk/eventstream-serde-universal" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/eventstream-serde-universal@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-1.0.0-rc.3.tgz#b05d04171ae00b6f33ea1412979f78c1840ea410" - integrity sha512-YAQMuEI+J0LEf8tOISYSihkEiEH2YpQpvXkLlWyybmWEa1XjmGaZS5V1HP/xf5cA/HPtIsApCz2VYTY50A/Lxw== +"@aws-sdk/eventstream-serde-universal@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.13.1.tgz#ed13c0213dc16c7b3d93a0cea3f513aedfb658ff" + integrity sha512-R3D5uoZxv4QG9yJvo/PQsj+lfpQoxmOSSzBdzbFJfr0FPt3NE2pbOHSfOeMZnLJWRJ6sp58LqhJdVK+GCtfqog== dependencies: - "@aws-sdk/eventstream-marshaller" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/eventstream-marshaller" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/fetch-http-handler@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-1.0.0-rc.3.tgz#4ab211faf75c4b1d14dc36b85311519f4723fe97" - integrity sha512-1xd4DuW8Su7qHKg9wipVGhscvLsVRhZi9pRLxh13lIKEIt+ryxXzrex1YoxDUnDH3ZI7YhdeLhZIonlgaNT+Gw== +"@aws-sdk/fetch-http-handler@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.13.1.tgz#51add87f1fa0f4ea5ba6c88426ee1a54965533f4" + integrity sha512-tG6Vti5gE/IjlpP572m/He55f/F8z/PlwN15cgNiQJrwpilpOW3isApSag+zAsKyek/cNsmCFCb0hJq0F9TumQ== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/querystring-builder" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-base64-browser" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/querystring-builder" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-base64-browser" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/hash-blob-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-1.0.0-rc.3.tgz#2d1dcd1750b366817a0692424403edc808dc3cb8" - integrity sha512-2lgiclNMd3hiNBjoSh7UuzSY9ucpVF7Z6AmSmERWqN5Sm69u1q8p0RgyyWnKd0JZRelPlB8gBXk4EzxBPSTSLA== +"@aws-sdk/hash-blob-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.13.1.tgz#0247ce480be817bb9463f72c98ef1f9b6ad6aa8e" + integrity sha512-RiOwJK8vZb1kWzY6871PDbX4aHRRtvKgE8Jc9YViNBWV2XjHvCizxscXNtdX+MisWoodKxJLvpLvYbhjNhrJMA== dependencies: - "@aws-sdk/chunked-blob-reader" "1.0.0-rc.3" - "@aws-sdk/chunked-blob-reader-native" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/chunked-blob-reader" "3.13.1" + "@aws-sdk/chunked-blob-reader-native" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/hash-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-1.0.0-rc.3.tgz#f46571f597dd8a301362dfef4c5dfd343116f9a4" - integrity sha512-Q3DikdeGA6pih2ftZajlNaHxsNUaKEXneZdxyoaSKyMppEni3eK2Z2ZjzyjDuXflYLkNtj4ylscure+uIKAApg== +"@aws-sdk/hash-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.13.1.tgz#79bc857380dd702a441bdedf3255552344c31d2c" + integrity sha512-jOxl5z8aIHQ3W5p+lcnJSkcn+qG96PH196P7KBszGlUEAgUUPc+DNoodlP+DK5T4o6tFQU31S+qRIYU/73+pLg== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-buffer-from" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-buffer-from" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/hash-stream-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-1.0.0-rc.3.tgz#8b4f668e5d482c509dfe402812b2a2f2a9e36b1b" - integrity sha512-ry78JhVXHIUdH/aokQ/YBxQ+26zC5VOgK2XLq9eDdxBTz2sefjwzk3Qs5eY1GZKfyUlKMwdRpCibo9FlPVPJeg== +"@aws-sdk/hash-stream-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.13.1.tgz#c2574d7aba22c35bc81c7d659d3ce893d1dcdf96" + integrity sha512-KHyoTHVM0ei9m+sRrj57uNmwxtO8sBIh/fSQ2e6RtJk7gjBEDkU4dgwPF0FaS9j5VRhTVBPlCMUaHrNGkuAJtQ== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/invalid-dependency@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-1.0.0-rc.3.tgz#857a44dcb666ec3be55ccde6f2912eff7dfddcad" - integrity sha512-Fl71S5Igd5Mi81QklxhhEWzwKbm+QP1kUYoc5nVK2sE+iLqdF9jwg7/ONBN8jISjTD8GPIW7NWL2SQNINNryMw== +"@aws-sdk/invalid-dependency@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.13.1.tgz#2af7427695e9440087294c8651cfeef5e4067ee5" + integrity sha512-Cfjcxe09h8jfunNUh5+uygVCOiYo8E1EnuOsqs5+LYUViMnST04/GjIk9499XHBKbh3akwPyBSFxZrOmHUh61Q== dependencies: - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/is-array-buffer@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-1.0.0-rc.3.tgz#47e47b7e5eb7e0ac9e7fa24f56a78550fbae63bc" - integrity sha512-tHFTBiXAgBZmAKaJIL2e2QPR9kA1tZTUJMqKaybWjhXckvb29EgUOLcdK+W2kMSqKIGqEINbAaV7S11ydBtYIg== +"@aws-sdk/is-array-buffer@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.13.1.tgz#bde5c5435b3fbd1e8ad26ef6bb3eabcd11799a9e" + integrity sha512-W1pzDpk5iAaJAZnCHHBwFSU7HW6IbQn71DKe3nnbmTbY56QdKdSZ23r+6uWxtz1xetbEd5JdzWs+AD+Ji1pC7Q== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/md5-js@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-1.0.0-rc.3.tgz#c9ecabe2a7fccf017f6cfcb972c1cdb579da8f9c" - integrity sha512-UfHtEs5IWl39yU4X/95605bFMKErWRd+uPgtqEtCWDDGyw4uwUUrkyrhTfJKuUFvTj9ov0Lb03x5QPNDybAelQ== +"@aws-sdk/md5-js@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.13.1.tgz#2fc803f9ad1828c35e73d120e821e197aa89e008" + integrity sha512-+SLzPLoog2y8lz9bw3kitwDhrFf3AIHRtdheUfBMfEPbc1ngHNrp8RFUZApDYUj/80yqj73ux3fgptShtWqBKA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-utf8-browser" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-utf8-browser" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-apply-body-checksum@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-1.0.0-rc.3.tgz#1ba3053e65a06fa093b72c45bd28f6053d12028c" - integrity sha512-f8CMcb1mxPWHJvLxegpjF1fwoa/vFjIaRIrXgUoPMhFNICRZPGnzim2o2mGyjWcS39VkM6G7vpmosNv2zc4EJg== +"@aws-sdk/middleware-apply-body-checksum@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.13.1.tgz#de97ec9f92733d4806cd50fac7a3ee8fc2fcd01c" + integrity sha512-0G9bGQ951n9KyqwMithX41ucZ0jUkps/mAq6z6AchrUfb1m0NEo6CRMiM6KIl+7ZxLZodiynyq8mRPpRnO0mSA== dependencies: - "@aws-sdk/is-array-buffer" "1.0.0-rc.3" - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/is-array-buffer" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-bucket-endpoint@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-1.0.0-rc.3.tgz#3dc26338bb8b631adb93c2ef2bce4bdddf29e01d" - integrity sha512-bC7Fx78spMF+5sQhjncOHdjEamNGIIZx6KBWN5Z2JkTTfrEoN24VtM6wWXkNRn3EtN7usWBaGT1bCx3/Vk+R0A== +"@aws-sdk/middleware-bucket-endpoint@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.13.1.tgz#30712b7ffc2df8e8f38cd87dd5163b72e4bf01c9" + integrity sha512-LT6vaOBo2uQGMVsG7QMBGVS8SncZwcuA5WvcUC4npxWnV3JQtpILwA9pceBE/dcVxwB6VyX8b7Tci2e2gioTtg== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-arn-parser" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-arn-parser" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-content-length@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-1.0.0-rc.3.tgz#0410e78a508ec4ef8cb8987433ed621a7cfa7946" - integrity sha512-eQfeMwneYxxF6NMF5AokilQHm3HMUbtBVmybdrrM+vs027DRQBDqcZ2GXwVI93kcS4GaibNnzX804rG2xA2UwA== +"@aws-sdk/middleware-content-length@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.13.1.tgz#009d9b24901247915308e54b0b550bde87eda98c" + integrity sha512-eAEbPrrbwPHNiO1+INyncbcV5orjXZza3RVkqYinWj6j4tUOxwLqSpbHHhVgRulN+MD+H6YX+x307jaDT4fQfg== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-expect-continue@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-1.0.0-rc.3.tgz#54eb6e68b7e791febbee44fe107886ead02c47d0" - integrity sha512-rDs68vBn0sSWl3z1ecXSw7n+MeiSW//r6NSAWAmBE58BDjHSfwQ+aB3izpSHDGIiGZO4aasnwZAP7NjzYvxiWQ== +"@aws-sdk/middleware-expect-continue@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.13.1.tgz#001ce393ae3fc1f451071c2aaa68ccbddf28ae2c" + integrity sha512-wi8e9UgETIG60BUhlUL0du8Akj1CK0v90QK7hpXZvqJNLzVgAGKvDTnxZVrhxY6SPiNB263/ORq+WemlrtOp6Q== dependencies: - "@aws-sdk/middleware-header-default" "1.0.0-rc.3" - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/middleware-header-default" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-header-default@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-header-default/-/middleware-header-default-1.0.0-rc.3.tgz#3a6186aa0d0575626f07b92b774aa15b73b54230" - integrity sha512-h0zQFCaBzu7SoRRlKYws76C8q8hY/Ja7G6E69X7fGbrcmNFMjm4aZq0eipKvOIg7cGbrcFnyOnWqLlWaL76nwA== +"@aws-sdk/middleware-header-default@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-header-default/-/middleware-header-default-3.13.1.tgz#0f46b0f84ba36f2e6c9cfc9559b9f279d35ac6d1" + integrity sha512-MOLWAFbEkFWsKE0KE982Z3rbbz5QV2udx8G5jak+3qQz/YpA9770qJqy19DJNLZclWq2EUE1r8lmgVomZD+qfg== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-host-header@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-1.0.0-rc.3.tgz#d7dca9b683bacc0f985b4f1e86cef938d88ad52d" - integrity sha512-44aOjB9yd2TCDj8c9sr+8+rhQ63kkuIAcMdbt3P/fXKUWwTAW+bcvknaynya3hLa8B75tEQ112xVBb+HoDR//g== +"@aws-sdk/middleware-host-header@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.13.1.tgz#d4332878da3f0c4b4b607064ab80683a63710bf6" + integrity sha512-kwa0OLJ+wx2f3Xm1So/ld4ZDq6N7rcXdRZ8qSddCfSRYulxZaew5KdljXxqK9kBglpUE8EKzz1NZjlABc+iEYw== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-location-constraint@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-1.0.0-rc.3.tgz#22781315b246f426acde32e894acb3e59cb9d5bf" - integrity sha512-VdW0/g8SVckRQsz55DrPIzyrF+Qgat3qt+qE9c6Gk7u6XaF05BlG7rbjsStd3Eml+FsKG1KOO3RgDCWvgESmNw== +"@aws-sdk/middleware-location-constraint@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.13.1.tgz#81096ff99f52d7a852c701a339fe11947d9129ed" + integrity sha512-Kzu4E6KpoI0NsgxvvgZ1BfOyNnjEX3xPLCuYHjhP4fUicdbXEOllZJ8oNaxhrUjfyqliAVYu03st3mZzipH6ww== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-logger@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-1.0.0-rc.3.tgz#a786bb90d3a5a184f9b8331ee90f05f3210b04b7" - integrity sha512-M1IfI6//hFgMKQXqXdXGNMf/qU4pkwzR9+Wz6TZ6iELtZaXce00ZzTK1szmO1pkWRVeXsCwr4fsbhj7OD4zZ8g== +"@aws-sdk/middleware-logger@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.13.1.tgz#943dd7a0877c339803251783f66e54f395a079ae" + integrity sha512-lgIoYKvoQrRzy06Cfv9hCY5ZmQYoNUlpIKcwpQOqRe7vmtVIanU5m5EjHrTfAKDNbanXvs/vmCB5oDgafzbXFQ== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-retry@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-1.0.0-rc.3.tgz#8b06fd8c49b3a3e7279551309e418533fac73d9b" - integrity sha512-Y8JhZPJM10H1KDobUP7aYM6ghBdVT4QM+04iAQBfYZPCc0ksyN+PKZLi97kxOrbg+a4HL593CG2UVnY4WI2tBQ== +"@aws-sdk/middleware-retry@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.13.1.tgz#2b1ba129ed9e28a34f1937e19c4edd6699e97072" + integrity sha512-AUKQ1Fi2/VUhGaSOSpqkiMY4/ma0ozvQMqCFaKciZA7ZJOq9ptBWr/E/FTd/See1vpiyRTcc9/hbFxW1ClQnqQ== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/service-error-classification" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - react-native-get-random-values "^1.4.0" - tslib "^1.8.0" - uuid "^3.0.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/service-error-classification" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + uuid "^8.3.2" -"@aws-sdk/middleware-sdk-s3@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-1.0.0-rc.3.tgz#1c9a26476887c464b5e52da116a752dc8975dddd" - integrity sha512-TDICHo5wONd4GUgLEtSjlygKRzXBfxkPQcNEGB2Mnbi+xbDa4FNd6XszkOrNMzxtmqD53ub/iDQewcBr9U9HJQ== +"@aws-sdk/middleware-sdk-s3@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.13.1.tgz#e73fbf4b476d269831f21b31b6e2bea2e39af00e" + integrity sha512-l/FcJ3inlfHdPBayY1RGuOb7GDAuMN46NYeM4eAhslSCrxCoVFXfIgLNFTfHRi6Y14KB6iSwMlUpFIXFrWwdWg== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/util-arn-parser" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-arn-parser" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-sdk-sqs@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-1.0.0-rc.3.tgz#5f02a97b0f34a4848ef8769e1e21d09d178d3cd8" - integrity sha512-d3kL0IDQtXf/kP3RXMH6+AsjYS69tPC+9r9O28ri/qPDQFUdeHVFxybneAA/5JWikDM6tZ4htgkm+Tm4PUm5hA== +"@aws-sdk/middleware-sdk-sqs@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.13.1.tgz#08efc455f2c2ef3497dbb186174280b4d83520f0" + integrity sha512-Slg0mkLSvFuAO6b70NiwZsKy8DsurU4RvXfFObCk4PDwDArOJgDEZPjFKYM1i5Ao0pzZd09xGtv9+64fIhynVg== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-hex-encoding" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-hex-encoding" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-serde@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-1.0.0-rc.3.tgz#81307310c51d50ec8425bee9fb08d35a7458dcfc" - integrity sha512-3IK4Hz8YV4+AIGJLjDu3QTKjfHGVIPrY5x4ubFzbGVc6EC9y69y+Yh3425ca3xeAVQFnORQn/707LiNKLlsD8g== +"@aws-sdk/middleware-sdk-sts@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.13.1.tgz#cae44c531154ba79b306d05dad9a119563eb7b56" + integrity sha512-/l2camoPKOHGRzYUELzidtykuGYWrx2ZBmQ1g4JNGjq9ngTtyhGpDxSz6ySOYY/Hln313/+D0Dy6vAvPbOvgRQ== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/middleware-signing" "3.13.1" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/signature-v4" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-signing@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-1.0.0-rc.3.tgz#34bad68f17052c298a09905728a35f8906fe55dc" - integrity sha512-RqIQwPaHvyY38rmIR+A9b3EwIaPPAKA4rmaTGAT1jeS7H65tXJeKc7aAXJWvDn9E1Fj56mOHTOd86FgP45MrUg== +"@aws-sdk/middleware-serde@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.13.1.tgz#446be010d02af1f6f008e16ad19e2bf5770b2c6a" + integrity sha512-5C/PPY0SY2NpLVggu5XJAdQw1IqZpcRQBBa3+EpDFoMxUDzgtY2wNOm/IKTX2yYklDnQtyDsP8Z7Cma+Vj2BLA== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/signature-v4" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-ssec@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-1.0.0-rc.3.tgz#45e77e8c1e998fe42bc290c7d4c65c84952e6f3b" - integrity sha512-sqv/TELHxAvpqOi7uhfCwLGVyOb1ihehfnSeqsyh2HPphg529ssmDUCF6jsi5maMc3lM/eHQ8LDPSXU9H58wwQ== +"@aws-sdk/middleware-signing@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.13.1.tgz#0532b174fa133ac13c19e61f02a5766d97574bf1" + integrity sha512-0KQPH4EywfnabDjbOSFQ9Nkw7790dBa34v2319bnaurCDRBDcGOB44KJQc8Mlu6ixFRzprnwj4+5qZI7IedWpg== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/signature-v4" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-stack@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-1.0.0-rc.3.tgz#e46193e696f15275e548e0cdbe1ca734e9e1c6b9" - integrity sha512-DV5RPf0rNsZVOtZA+nEDyWhfKUazUjWQppzXGjvCUSLaaPTINPUXf/go5M4S/62mn/9gxCftN5SShMP5yw1sNQ== +"@aws-sdk/middleware-ssec@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.13.1.tgz#6f4482d3b0ed15118fb9d5a8e049e0a84a579718" + integrity sha512-SYXV0G0uaTPI8t0Qq9aIMMoDJfTr5QdrWc2KAH0y973G7cpB9MPa4d90xQ+4AxLde246FiQS5ExD7N8bXvvA1g== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/middleware-user-agent@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-1.0.0-rc.3.tgz#de42837456482cd06596c0c5cebb80480d630e33" - integrity sha512-Zrp3kETrrWgJLlnjkSuetOH5cN5URqLd6WQmhZlEm0isvr+2RyDDOA4wP6JjmMhCmrG02/8/b4pMOPH/vUm/LQ== +"@aws-sdk/middleware-stack@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.13.1.tgz#b5ecb2d9bec33821900a98bf9c8e37fcc14cd98d" + integrity sha512-ScXJ3w6bp00Em1po1MzcPNJxj8/qct26IBjFEiy2+usetkq3F8zJlRZN053bWMxma3YoyfgQrkuxZiHGaguJbg== dependencies: - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/node-config-provider@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-1.0.0-rc.3.tgz#b79fd5e95e4ca543b8d6aa2bf59b9ce2cc89c96a" - integrity sha512-1i0fjunUMYP479hAq7D8RugfMmC3KCUzvZA2xtjFQcE31d7YrlfGstwBq/kvNcIcw+yc3r7SC54KzwgqfSSvzA== +"@aws-sdk/middleware-user-agent@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.14.0.tgz#88095c1ee4e73540a99ddb9a4cc0a78b7dda216d" + integrity sha512-ZmYfKuK/RfEWzX8Xvg9sGU16zAozNu0mxj2hDB6Lu+253D69AbUO4QAAFLJVwIUr4YgZIThss6icOuebPx2zdA== dependencies: - "@aws-sdk/property-provider" "1.0.0-rc.3" - "@aws-sdk/shared-ini-file-loader" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/node-http-handler@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-1.0.0-rc.3.tgz#da316daa5bcf536099e43d57cb136b8c2553a17f" - integrity sha512-hK0NM3PxGVCgKLZoAb8bXFQlOA1JGd2DwfjDdAn4XfIhEH4QfbuFZxjkQhNcDwkKIqzCmlYTbgJvWKRbbFkEXg== +"@aws-sdk/node-config-provider@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.13.1.tgz#940389d21a7914a27aa09886af2d3f65aeaca49b" + integrity sha512-lRfGW7zcJ3Ly6N4fxGc7b+bSa6/LBWwUReVM8c4TI0VrX+1xPBH/DX0APBRxmzBCyjzL+Ls3fo5WLxMLZHNceA== dependencies: - "@aws-sdk/abort-controller" "1.0.0-rc.3" - "@aws-sdk/protocol-http" "1.0.0-rc.3" - "@aws-sdk/querystring-builder" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/property-provider" "3.13.1" + "@aws-sdk/shared-ini-file-loader" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/property-provider@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-1.0.0-rc.3.tgz#4dce009bcc55d8779f721100462b8d6ac489606c" - integrity sha512-WrYlUVaq63k0fYdnIJziphfdTITaTlW0b1qrRzFsqKPRN1AnQenzFs27ZHaaecmFfGg3q1Y2fci3cpyNUBTruQ== +"@aws-sdk/node-http-handler@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.13.1.tgz#96129f5b1e31346766d97e236768e73a3bfbfd3b" + integrity sha512-DksP+IkUM3yqmhcFp4pLd+apYYq1cFQ+o+2FYAaXenGGZ6wiXmBamtF9mt7DIb9tpeSt5kmOh7dTiHQIY24gDg== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/abort-controller" "3.13.1" + "@aws-sdk/protocol-http" "3.13.1" + "@aws-sdk/querystring-builder" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/protocol-http@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-1.0.0-rc.3.tgz#7759e6f96df292c01daaff42f2b921180df17c5d" - integrity sha512-paOSLmXvce84BRCx+JIYGpsVCtn3GCGvzLywaPCHeES2OekwD86PJQskCDAlshRPOy/LCdxYVdMt7FrEBuyQrg== +"@aws-sdk/property-provider@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.13.1.tgz#6bf32c35068a5e0d0e511064a036fcfef71856b5" + integrity sha512-uQ8dvpWYxY007rTwqr1COvqD+Z9NAUJjBfP+IYv8j1Dyc9o1Odkkj7Cm3fFFo021hlyCbcYtE3AnppVlAWyaCA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/querystring-builder@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-1.0.0-rc.3.tgz#d24135a0523a8d9645d874deeb0ba5a6f6c15428" - integrity sha512-PWTaV+0r/7FlPNjjKJQ/WyT4oRx4tG5efOuzQobb4/Bw2AFqVCzE2DMGx1V8YKqdq3QFckvRuoFDVqftyhF/Jw== +"@aws-sdk/protocol-http@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.13.1.tgz#0ae5f09302f7a0bc47ac80c48e1dfebb43d40c04" + integrity sha512-iTy0TS6KTxNl6dfEj272Q4pxYcEfaljNFhlUBlvAZK04abbhzzlqwtGyGitEv+wSJ6R2e1Gmk6KWUQ2F1CoCng== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-uri-escape" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/querystring-parser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-1.0.0-rc.3.tgz#9fdd79eb0a06846f25da5f97477e8d8f1255785a" - integrity sha512-TkA/4wM76WzsiMOs0Lxqk33rP+J0YtCjmpGzS+x4oqNbdVYQBpYtbwqN+9nsrOeieCFRWq9QWl6QM4IyJT9gRA== +"@aws-sdk/querystring-builder@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.13.1.tgz#9d9c9af7778c63f9406be1dbdc1487441e858bc7" + integrity sha512-t/AKKzFpS1bwGuHw1nU8IpUmptbaXYWuiZnp6quFvtZjWQV1BKTDG1SEXzY1dowEpv+FNxUp6RdPakIaPInlAA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-uri-escape" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/service-error-classification@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-1.0.0-rc.3.tgz#711f6769cabc7fbdac9f0d5270968824762fa29f" - integrity sha512-qE/gPzAoQF3DJEPyQk5iQyTZEbVx53a41T+UHEYKYMaGXuAJfoBKnsucDNxgAYXSwcp+3Wp7XA1TUfcygEiZ/Q== +"@aws-sdk/querystring-parser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.13.1.tgz#3021b86f84f8424fa9386e9fa05d6cca94acf57a" + integrity sha512-FKSEUkZ+csopOVP/LUb8YSu07G/n8tj4sVp3FdX6OPv+HBD0ukfbl4mzyBHJlOgWhzDihxzKL8iHoUuC2FfY3w== + dependencies: + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/shared-ini-file-loader@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-1.0.0-rc.3.tgz#05aa96572d78f0c4c5edcc7f42ed14076d1b16ea" - integrity sha512-wynHRRZENIZUS714NX9cu9BDbxAL7DzOJvPYAj2tgC3bJNt0jkbQxNTePpolwWx7QNwFfQgDbK76LPkIo30dJQ== +"@aws-sdk/service-error-classification@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.13.1.tgz#df19a35251cc43b625bfc8e758d8ecf3d14fb083" + integrity sha512-eVH00KOSTV23RWWY7JMuc2s7jBfiWP/UR82n3knYYtTztcm9pFIIkNhphUnOThWROzNqlW+Dif8ztb85oK5K+Q== + +"@aws-sdk/shared-ini-file-loader@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.13.1.tgz#36a45b7a468607b69b893227550c4246114aa52a" + integrity sha512-zB+niFj0iIZu2aXmKv2Xhk404Lw6gawTZPjzR4vLuTmn563yhSUSw5hJN+v/O/bR1b3JV4NPubyIQT6CKx1YUA== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/signature-v4@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-1.0.0-rc.3.tgz#7ccc61f17d8f083dcbce5e30843c60f8b0388d67" - integrity sha512-ARfmXLW4NMmQF5/3xGiasi6nrlvddZauJOgG9t2STTog8gijn+y+V7wh26A7e4vgv1hyE0RdonylbakUH1R4Nw== +"@aws-sdk/signature-v4@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.13.1.tgz#4c5647a670ef0c11a85c9c24e5e16fe7ea6a1901" + integrity sha512-j+WCkQCUNhJbeRYW7KTsXd3gxk5CUeZF0LLVOT7HGvxzBhWJkpNGlsFD6ENR5iVpAlmK2yrTLJn7sma7Fgci+Q== dependencies: - "@aws-sdk/is-array-buffer" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - "@aws-sdk/util-hex-encoding" "1.0.0-rc.3" - "@aws-sdk/util-uri-escape" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/is-array-buffer" "3.13.1" + "@aws-sdk/types" "3.13.1" + "@aws-sdk/util-hex-encoding" "3.13.1" + "@aws-sdk/util-uri-escape" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/smithy-client@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-1.0.0-rc.3.tgz#b96e97fa6b8bb3de8ecd918d842b2fb972fa0ac6" - integrity sha512-mlzpr5NLkaoPdTVrr3HIxuNbVJtq9IIrgfVXjqCNixOqJDRG46qiXubfaSsf4giwP8CE6zK9cDkvVDKyV0dl8A== +"@aws-sdk/smithy-client@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.13.1.tgz#2204089c4af4d2f8985ce2adbef9533b0c9c8c5f" + integrity sha512-DFo9LriBq0b8wQpO6DNnwQ0ISxTLn4tBHNsdXj0vHKKwg6h8IcveUNyLGGDdQejL8FLqOKJfe1NRvkY2UQFsrg== dependencies: - "@aws-sdk/middleware-stack" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/middleware-stack" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/types@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.13.1.tgz#f69efe2053b0fa5dfd4046cb80dc176ad645c016" + integrity sha512-4eHboRz3I8f0C85Ta1dJ1v1Y9T1zH9xpC4/DufSIfQcD1Imc2U2LM22Qgbz8/PoP4kyhp2nJpQpW0APD91ILfw== -"@aws-sdk/types@1.0.0-rc.3", "@aws-sdk/types@^1.0.0-rc.1": +"@aws-sdk/types@^1.0.0-rc.1": version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-1.0.0-rc.3.tgz#98466080e07244d8f7406cc61ae7918d02b339a2" integrity sha512-pKKR2SXG8IHbWcmVgFwLUrHqqqFOEuf5JiQmP7dEBjUXqavzDnqFUY7g9PGuM8928IQqL7IXrRsK7R+VbLgodQ== -"@aws-sdk/url-parser-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser-browser/-/url-parser-browser-1.0.0-rc.3.tgz#d9e1da2acdfb7f2486a68e951dd185dd7b0764e8" - integrity sha512-bTCB4K1nxX3juaOSRdjUC+nq1KZX1Ipy5pMQoDiRWYCgMgUAcqeWuxlclF3dc8vuhYUWa2A86D5lT3zrP0Gqag== - dependencies: - "@aws-sdk/querystring-parser" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" - -"@aws-sdk/url-parser-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser-node/-/url-parser-node-1.0.0-rc.3.tgz#0cdd48fa068a1cf243b46b4eb4c927f38499f63d" - integrity sha512-W2No+drp3jCjkr1edSReGNLyXF+a34qHOcy8cJ6ZtPe5eLzCroZ33+w1gJ01r5UboWwzo8Qyz7QPxD5J0zPVzw== +"@aws-sdk/url-parser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.13.1.tgz#4ab73867f1fadf9f1ce58ec6bf4f6cae4efec81b" + integrity sha512-kw9n96GbZ+vuh/KblpcJ1F++hWE7VCQ+cHN5CSxNnN67s/SFk4BLzSeaPup6EUkUI+wIiJMOWW56kIMrcSta5w== dependencies: - "@aws-sdk/querystring-parser" "1.0.0-rc.3" - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" - url "^0.11.0" + "@aws-sdk/querystring-parser" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/util-arn-parser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-1.0.0-rc.3.tgz#738e945d2dfd009d78c4c07e3773d41c1c525262" - integrity sha512-mIXiyBYDAQa9EdaKKU4oQsWAvSWVXAumCH89N5VQfrlRCuaqRUdmE83CJx69wcLFbrZCZmCJD2gcPVG5Ywa+NQ== +"@aws-sdk/util-arn-parser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.13.1.tgz#e9917a35b1b6c5ad0be8340d163c69b1c3fcc524" + integrity sha512-/Y0BEnh1WiVyZQaDMWfqQaRPzEEMrvs0/UTTyknj43dhXoiNDXVyrFUtLw71Oi77WBxk7p/Wbg0m7TVJt3yceQ== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/util-base64-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-1.0.0-rc.3.tgz#49cb2a1c9f177327b66eb2a150e643334dd3ce0d" - integrity sha512-peqOSoOCTGlZVX9gC+4SxaSXQqSsjzNfKxKLZwcP/HhHIPU/I+tbnRbH4a2Cx29DsopTngu0GKLuPJEL67bvog== +"@aws-sdk/util-base64-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-3.13.1.tgz#6244d329ed9c560e1f4a161f698367cc3e863919" + integrity sha512-bev/PmmRLxTzGkmx88KFhJEL78koIvhYdKFmWtmSJz+trQEk37u6aulWQZF6dpiMGCKYcBfI5h3LsxE75pObTQ== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/util-base64-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-1.0.0-rc.3.tgz#ef68e130e7b42b673f93af4a68b46c1542702e64" - integrity sha512-gz/JScFQ9MMdI59VdJTbgZrnNdTPXOJKesMwoEMH8nMb6/Wi3+KL2NH/GC92hxhuE/JbA1vdrelvCFOED8E1Jg== +"@aws-sdk/util-base64-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-3.13.1.tgz#0fdcea2ac7913a69448ed87d227a1107db9e3c8f" + integrity sha512-z3bh+Luue39gIFOm56FSXOEZJq23J/IUM0Gj28dkdC0hpqdohP2NfcGUBhBlK8CFKBLB5GM1vVKo99T1/OQ/5g== dependencies: - "@aws-sdk/util-buffer-from" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/util-buffer-from" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/util-body-length-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-1.0.0-rc.3.tgz#f3052599445e06081002788693ada1fb99ea4a51" - integrity sha512-xvMrCo+5DshN4Fu3zar2RxaqPJ/QRAEOChyWEGUqjE+9/cow+uWsqBX3FdeY84mV6dkdcAJLQvP8aVH+v+w+lw== +"@aws-sdk/util-body-length-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.13.1.tgz#7063c658b1875a208d8c9f39bdd1c7409efce10e" + integrity sha512-qqbBRP1YCuCJ8jCQpP4kbSPrdwJxniccmzsyjkKmaOQoOil69FFNhdwzjrMFhahnsLYD9JUdEsJmHegPbIbUtA== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/util-body-length-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-1.0.0-rc.3.tgz#e7068c9feff896a3720f71eab5ca44c76e587764" - integrity sha512-q7n3IP5s9TIMao9sK4an+xxBubHqWXoeqCQ5haeDmqQTBiZQYcyQQq61YJRghj2/53SH5MMS1ACncw3kvnO92g== +"@aws-sdk/util-body-length-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.13.1.tgz#4722fad01f4feb6a3ab47344c2482446d7aa2d01" + integrity sha512-btSynL8nZmzXPImm/oAaE9aBl1feAZsGv1jR+7+CSM2P5emTEBF4/EuYX34KZTzW7BjSzeDeRK0SHK0IWAB4bw== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/util-buffer-from@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-1.0.0-rc.3.tgz#6a18955cb422b5649c9675d64bc2defa6e1175ac" - integrity sha512-43FzXSA3356C/QRCKZSmGTVwH4BgObNJDvF4z5dwwrfqU+tXjnUdnFo5hLsHq+fwjtWuXLkAyi+vz07x3MphvA== +"@aws-sdk/util-buffer-from@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.13.1.tgz#fc1fc6d46edff7ea0f370c8389313b58ef8923b7" + integrity sha512-D/LT7a9wwB5Zo4CPWJwP/qdUhs8MYSs+tvyyF2Ox9v8AaUV+w8ukJY9/1/i1cS5bGH7aAjueTiAFSMt8ejVNCg== dependencies: - "@aws-sdk/is-array-buffer" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/is-array-buffer" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/util-hex-encoding@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-1.0.0-rc.3.tgz#4229f2495f3a5ef32c8c7ada7ab14bd6f983d269" - integrity sha512-GXHBBGdAH2HPn18RFMsvXAvBtO8pG0I2PlGHfKhn+ym+UT1lHHYpCd3/PawUVUYnFZrqIj+j48IjFFJ3XMPXyQ== +"@aws-sdk/util-hex-encoding@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.13.1.tgz#2406c832b1aae60c8abd1dafcae442e6085aebca" + integrity sha512-NGIqG+L5B6xENgv25BH77F9EeTkN+3tO8sFBeTMjoS7rD3uVP1uLp/RHQENjn/EG/KtgjcNyglngDuS0ZKFOOQ== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" "@aws-sdk/util-locate-window@^1.0.0-rc.1": version "1.0.0-rc.3" @@ -701,50 +808,68 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/util-uri-escape@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-1.0.0-rc.3.tgz#53b7ba5c353cef31f0d1f10c06d8dfc2118a3371" - integrity sha512-PW1Uh5nJ32VKysV6DxyO40gONJR8s0QFeS55apyPUeCYCrdEjwsNvftDWbRJIcVpvkRSrbDezWc5CJC0S8WXjQ== +"@aws-sdk/util-uri-escape@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.13.1.tgz#5585a53fdc245b717beb7d785f39660eee219e77" + integrity sha512-zejPAiPoS5Zja9nelZUJMdIwiXHKmubgumIV4USB+kgSR4f8BlSj/amM0NdGgZMjyVtuIvdiVHZssM/yK8G1Jg== dependencies: - tslib "^1.8.0" + tslib "^2.0.0" -"@aws-sdk/util-user-agent-browser@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-1.0.0-rc.3.tgz#2b8d7a79c7e79099fe9a41976d4eeb39f5d83c21" - integrity sha512-ev7bjF6QejDTi/UTvBLfiUETrXtuBf5sJl8ocWRUcrCnje5DW5lat2LaC7KWeRppQ4NA//ldavF5ngAxsn8TzA== +"@aws-sdk/util-user-agent-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.13.1.tgz#8975041dbaf0c62f9f1f870c24d25ee337ac0c5b" + integrity sha512-j9EL/fWIi5FivsXvjpXjROZEn44LNHY8oUkcFM4C4K8V6dmBK7kwX1svzCAfagwGyrahHkI2F3Isv0zI3FA6DQ== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/types" "3.13.1" + bowser "^2.11.0" + tslib "^2.0.0" -"@aws-sdk/util-user-agent-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-1.0.0-rc.3.tgz#f9a7337b80e4118a12c4cc4f83512e9b5e48cb4e" - integrity sha512-5ELevKFFsHcyPSOrQ3mgdaNZ+Fr1I4J+/8aKoOiBO1Pnp15/xlVS4GkRiE0uUmAvBbUh1sByMvTo7ITeOBvlxA== +"@aws-sdk/util-user-agent-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.13.1.tgz#ac9dcb043d45b4425dbd308c1cea4b05a695a85c" + integrity sha512-ztECuZn1T0GeRYvmGRlgjs2J/C+BYx2QlImP0Z3xDYeYQnBt8n2dSljutQfF941QaHiB4Ay/NIdfzczZVO7xBA== dependencies: - "@aws-sdk/types" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/node-config-provider" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/util-utf8-browser@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.13.1.tgz#eae1f3d8063566d813c0df4adf5f487bd128b56f" + integrity sha512-+1FmtFOvDOYfoJnC6DEgjpcPKUERZA8VZ7JenY6SsEqVneWzHf4YVE2+KZM0DT9leLzgZBW/DKJWjeKxykaBEg== + dependencies: + tslib "^2.0.0" -"@aws-sdk/util-utf8-browser@1.0.0-rc.3", "@aws-sdk/util-utf8-browser@^1.0.0-rc.1": +"@aws-sdk/util-utf8-browser@^1.0.0-rc.1": version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-1.0.0-rc.3.tgz#ca2f1ee3c3774203675455e6cf6a52256d40849d" integrity sha512-ypEJ2zsfm844dPSnES5lvS80Jb6hQ7D9iu0TUKQfIVu0LernJaAiSM05UEbktN+bEAoQBi9S64l8JjHVKFWu1Q== dependencies: tslib "^1.8.0" -"@aws-sdk/util-utf8-node@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-1.0.0-rc.3.tgz#d6841823b949f4209fdcc405c5ad5d4b483e6e60" - integrity sha512-80BWIgYzdw/cKxUrXf+7IKp07saLfCl7p4Q+zitcTrng9bSbPhjntXBS+dOFrBU2fBUynfI2K+9k5taJRKgOTQ== +"@aws-sdk/util-utf8-node@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.13.1.tgz#72c454d5dd57f9a404ad1cdc317940840de0fb46" + integrity sha512-2SVqcqQQah7cYny6mUmx9UlVIYiaCULnWqOvPkpAKLS3uDFhhFrjvdrQkJXjajR4r7xb73cGn+f2iRXrEqmopw== dependencies: - "@aws-sdk/util-buffer-from" "1.0.0-rc.3" - tslib "^1.8.0" + "@aws-sdk/util-buffer-from" "3.13.1" + tslib "^2.0.0" -"@aws-sdk/xml-builder@1.0.0-rc.3": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-1.0.0-rc.3.tgz#2b0b6b4c182b96245889f4c8e2004eef847401f4" - integrity sha512-WdW/bZLVMNrEdG++m4B4QmZ6KnYsF3V68CDkZKg8IgDOMON4YOqUPBYDHNR8Wtdd1JQFLMDzrcqnXQqLb5dWgA== +"@aws-sdk/util-waiter@3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.13.1.tgz#3c8bdc11bd2e3124dd806040479470b76cfe2b2a" + integrity sha512-TpzY3X3QqlD5XaoI4ISjUjz6zjrpsUuxGaiubjbWjXsduW9C9K6jJveTk4FM1KEi4CDPe60J4ypHCE9+G29mfg== dependencies: - tslib "^1.8.0" + "@aws-sdk/abort-controller" "3.13.1" + "@aws-sdk/types" "3.13.1" + tslib "^2.0.0" + +"@aws-sdk/xml-builder@3.14.0": + version "3.14.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.14.0.tgz#3f7040da919d596b3a456830229146e330c5ed70" + integrity sha512-TGyodkTPezFTR7vfHiPsynavfeDwbXNTK4r3OYeAt0+tdm3RM6PoUqpkMYLyQgyA+G48uyMunACi/O12H3cwKQ== + dependencies: + tslib "^2.0.0" "@babel/code-frame@7.8.3": version "7.8.3" @@ -1875,6 +2000,14 @@ "@hapi/boom" "7.x.x" "@hapi/hoek" "8.x.x" +"@hapi/accept@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.2.tgz#ab7043b037e68b722f93f376afb05e85c0699523" + integrity sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw== + dependencies: + "@hapi/boom" "9.x.x" + "@hapi/hoek" "9.x.x" + "@hapi/address@2.x.x", "@hapi/address@^2.1.2": version "2.1.4" resolved "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -3542,6 +3675,10 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@sls-next/core@link:packages/libs/core": + version "0.0.0" + uid "" + "@sls-next/lambda-at-edge@link:./packages/libs/lambda-at-edge": version "0.0.0" uid "" @@ -4845,6 +4982,11 @@ bn.js@^5.1.1: resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + boxen@^1.2.1: version "1.3.0" resolved "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" @@ -7365,11 +7507,6 @@ extsprintf@^1.2.0: resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-base64-decode@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" - integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== - fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -7419,10 +7556,10 @@ fast-safe-stringify@^2.0.4: resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== -fast-xml-parser@^3.16.0: - version "3.17.4" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.17.4.tgz#d668495fb3e4bbcf7970f3c24ac0019d82e76477" - integrity sha512-qudnQuyYBgnvzf5Lj/yxMcf4L9NcVWihXJg7CiU1L+oUCq8MUnFEfH2/nXR/W5uq+yvUN1h7z6s7vs2v1WkL1A== +fast-xml-parser@3.19.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" + integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== fastq@^1.6.0: version "1.8.0" @@ -12357,13 +12494,6 @@ react-is@16.13.1, react-is@^16.12.0, react-is@^16.8.1, react-is@^16.8.4: resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-native-get-random-values@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.5.0.tgz#91cda18f0e66e3d9d7660ba80c61c914030c1e05" - integrity sha512-LK+Wb8dEimJkd/dub7qziDmr9Tw4chhpzVeQ6JDo4czgfG4VXbptRyOMdu8503RiMF6y9pTH6ZUTkrrpprqT7w== - dependencies: - fast-base64-decode "^1.0.0" - react-refresh@0.8.3: version "0.8.3" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" @@ -12580,6 +12710,11 @@ regex-parser@2.2.10: resolved "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== +regex-parser@^2.2.10: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== + regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" @@ -14713,7 +14848,7 @@ uuid@3.3.2: resolved "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -14723,6 +14858,11 @@ uuid@^8.2.0: resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-compile-cache@^2.0.3: version "2.1.1" resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" From fbe017efb0d383488fae7c2b4518bcaffbe3cfdd Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 12 May 2021 14:56:20 +0100 Subject: [PATCH 34/48] docs: add ISR related deployment permissions --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 0f0a78a43e..c27ae1ea6a 100644 --- a/README.md +++ b/README.md @@ -385,6 +385,11 @@ The exhaustive list of AWS actions required for a deployment: "s3:PutAccelerateConfiguration", "s3:PutBucketPolicy", "s3:PutObject" + "lambda:ListEventSourceMappings", + "lambda:CreateEventSourceMapping", + "iam:UpdateAssumeRolePolicy", + "iam:DeleteRolePolicy", + "sqs:*" ``` ### Lambda At Edge Configuration From 027e9c1a5f6af3e3cb8d400784a41b80dee5c3f7 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 12 May 2021 15:00:28 +0100 Subject: [PATCH 35/48] fix: update all yarn lock files in all e2e packages --- .../next-app-dynamic-routes/yarn.lock | 202 +++++++++-------- .../next-app-using-serverless-trace/yarn.lock | 202 +++++++++-------- .../next-app-with-base-path/yarn.lock | 202 +++++++++-------- .../yarn.lock | 202 +++++++++-------- .../e2e-tests/next-app-with-locales/yarn.lock | 202 +++++++++-------- .../next-app-with-trailing-slash/yarn.lock | 194 ++++++++++------- .../prev-next-app-dynamic-routes/yarn.lock | 203 ++++++++++-------- .../prev-next-app-with-base-path/yarn.lock | 203 ++++++++++-------- .../yarn.lock | 195 +++++++++-------- packages/e2e-tests/prev-next-app/yarn.lock | 203 ++++++++++-------- 10 files changed, 1144 insertions(+), 864 deletions(-) diff --git a/packages/e2e-tests/next-app-dynamic-routes/yarn.lock b/packages/e2e-tests/next-app-dynamic-routes/yarn.lock index d99473ff70..a280e90ed9 100644 --- a/packages/e2e-tests/next-app-dynamic-routes/yarn.lock +++ b/packages/e2e-tests/next-app-dynamic-routes/yarn.lock @@ -1401,6 +1401,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1414,10 +1419,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@^2.3.2": version "2.3.2" @@ -1762,10 +1767,10 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -2120,7 +2125,7 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2645,10 +2650,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2821,7 +2826,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -2831,11 +2836,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3068,45 +3068,46 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -3144,6 +3145,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3151,6 +3157,13 @@ debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3524,10 +3537,10 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -3567,10 +3580,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3868,15 +3881,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -4015,12 +4028,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -4295,7 +4308,12 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5, ini@~1.3.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== + +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -4368,12 +4386,12 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4455,13 +4473,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-number@^3.0.0: version "3.0.0" @@ -4482,10 +4500,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4924,6 +4942,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -5229,11 +5252,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5251,7 +5269,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -5931,10 +5949,10 @@ prebuild-install@^5.3.5: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -6044,10 +6062,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -6960,6 +6978,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7311,6 +7336,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" diff --git a/packages/e2e-tests/next-app-using-serverless-trace/yarn.lock b/packages/e2e-tests/next-app-using-serverless-trace/yarn.lock index f3565cd8dd..71e2c38f35 100644 --- a/packages/e2e-tests/next-app-using-serverless-trace/yarn.lock +++ b/packages/e2e-tests/next-app-using-serverless-trace/yarn.lock @@ -1401,6 +1401,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1414,10 +1419,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@^2.3.2": version "2.3.2" @@ -1762,10 +1767,10 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -2120,7 +2125,7 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2645,10 +2650,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2821,7 +2826,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -2831,11 +2836,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3068,45 +3068,46 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -3144,6 +3145,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3151,6 +3157,13 @@ debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3524,10 +3537,10 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -3567,10 +3580,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3868,15 +3881,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -4015,12 +4028,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -4295,7 +4308,12 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5, ini@~1.3.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== + +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -4368,12 +4386,12 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4455,13 +4473,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-number@^3.0.0: version "3.0.0" @@ -4482,10 +4500,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4924,6 +4942,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -5229,11 +5252,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5251,7 +5269,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -5931,10 +5949,10 @@ prebuild-install@^5.3.5: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -6044,10 +6062,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -6960,6 +6978,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7311,6 +7336,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" diff --git a/packages/e2e-tests/next-app-with-base-path/yarn.lock b/packages/e2e-tests/next-app-with-base-path/yarn.lock index f3565cd8dd..71e2c38f35 100644 --- a/packages/e2e-tests/next-app-with-base-path/yarn.lock +++ b/packages/e2e-tests/next-app-with-base-path/yarn.lock @@ -1401,6 +1401,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1414,10 +1419,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@^2.3.2": version "2.3.2" @@ -1762,10 +1767,10 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -2120,7 +2125,7 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2645,10 +2650,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2821,7 +2826,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -2831,11 +2836,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3068,45 +3068,46 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -3144,6 +3145,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3151,6 +3157,13 @@ debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3524,10 +3537,10 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -3567,10 +3580,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3868,15 +3881,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -4015,12 +4028,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -4295,7 +4308,12 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5, ini@~1.3.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== + +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -4368,12 +4386,12 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4455,13 +4473,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-number@^3.0.0: version "3.0.0" @@ -4482,10 +4500,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4924,6 +4942,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -5229,11 +5252,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5251,7 +5269,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -5931,10 +5949,10 @@ prebuild-install@^5.3.5: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -6044,10 +6062,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -6960,6 +6978,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7311,6 +7336,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" diff --git a/packages/e2e-tests/next-app-with-locales-using-serverless-trace/yarn.lock b/packages/e2e-tests/next-app-with-locales-using-serverless-trace/yarn.lock index f188abeb8f..55ea21522f 100644 --- a/packages/e2e-tests/next-app-with-locales-using-serverless-trace/yarn.lock +++ b/packages/e2e-tests/next-app-with-locales-using-serverless-trace/yarn.lock @@ -1018,6 +1018,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1031,10 +1036,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@^2.3.2": version "2.3.2" @@ -1169,10 +1174,10 @@ aproba@^1.0.3: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -1514,7 +1519,7 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -1984,10 +1989,10 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2160,16 +2165,11 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -2333,45 +2333,46 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -2399,6 +2400,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -2406,6 +2412,13 @@ debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2665,10 +2678,10 @@ etag@1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -2708,10 +2721,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -2965,15 +2978,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs.realpath@^1.0.0: version "1.0.0" @@ -3095,12 +3108,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -3353,7 +3366,12 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5, ini@~1.3.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== + +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -3426,12 +3444,12 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -3513,13 +3531,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-number@^3.0.0: version "3.0.0" @@ -3540,10 +3558,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -3924,6 +3942,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -4127,17 +4150,12 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -4682,10 +4700,10 @@ prebuild-install@^6.0.0: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -4768,10 +4786,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" @@ -5572,6 +5590,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -5865,6 +5890,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" diff --git a/packages/e2e-tests/next-app-with-locales/yarn.lock b/packages/e2e-tests/next-app-with-locales/yarn.lock index f188abeb8f..55ea21522f 100644 --- a/packages/e2e-tests/next-app-with-locales/yarn.lock +++ b/packages/e2e-tests/next-app-with-locales/yarn.lock @@ -1018,6 +1018,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1031,10 +1036,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@^2.3.2": version "2.3.2" @@ -1169,10 +1174,10 @@ aproba@^1.0.3: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -1514,7 +1519,7 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -1984,10 +1989,10 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2160,16 +2165,11 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -2333,45 +2333,46 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -2399,6 +2400,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -2406,6 +2412,13 @@ debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2665,10 +2678,10 @@ etag@1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -2708,10 +2721,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -2965,15 +2978,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs.realpath@^1.0.0: version "1.0.0" @@ -3095,12 +3108,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -3353,7 +3366,12 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5, ini@~1.3.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== + +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -3426,12 +3444,12 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -3513,13 +3531,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-number@^3.0.0: version "3.0.0" @@ -3540,10 +3558,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -3924,6 +3942,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -4127,17 +4150,12 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -4682,10 +4700,10 @@ prebuild-install@^6.0.0: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -4768,10 +4786,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" @@ -5572,6 +5590,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -5865,6 +5890,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" diff --git a/packages/e2e-tests/next-app-with-trailing-slash/yarn.lock b/packages/e2e-tests/next-app-with-trailing-slash/yarn.lock index 3b2d3bbefd..8a8f9f9dec 100644 --- a/packages/e2e-tests/next-app-with-trailing-slash/yarn.lock +++ b/packages/e2e-tests/next-app-with-trailing-slash/yarn.lock @@ -1378,6 +1378,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1391,7 +1396,7 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": +"@types/sinonjs__fake-timers@^6.0.2": version "6.0.2" resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== @@ -1728,10 +1733,10 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -2086,7 +2091,7 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2606,10 +2611,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2782,7 +2787,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -2792,11 +2797,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3036,45 +3036,46 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -3112,6 +3113,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4, debug@^4.1.0, debug@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" @@ -3126,6 +3132,13 @@ debug@4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3564,10 +3577,10 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -3607,10 +3620,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3908,15 +3921,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -4055,12 +4068,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -4335,7 +4348,12 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5, ini@~1.3.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== + +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -4413,12 +4431,12 @@ is-callable@^1.1.4, is-callable@^1.2.2: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4505,13 +4523,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-negative-zero@^2.0.0: version "2.0.0" @@ -4537,10 +4555,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4993,6 +5011,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -5298,11 +5321,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -6020,10 +6038,10 @@ prebuild-install@^5.3.5: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" -pretty-bytes@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" - integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -6133,10 +6151,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -7056,6 +7074,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7407,6 +7432,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" diff --git a/packages/e2e-tests/prev-next-app-dynamic-routes/yarn.lock b/packages/e2e-tests/prev-next-app-dynamic-routes/yarn.lock index ebcd8ec666..d7f9bd5722 100644 --- a/packages/e2e-tests/prev-next-app-dynamic-routes/yarn.lock +++ b/packages/e2e-tests/prev-next-app-dynamic-routes/yarn.lock @@ -1401,6 +1401,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1414,10 +1419,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@^2.3.2": version "2.3.2" @@ -1765,10 +1770,10 @@ aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -2113,7 +2118,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2635,10 +2640,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2790,7 +2795,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -2800,11 +2805,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3047,45 +3047,46 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -3123,6 +3124,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3130,6 +3136,13 @@ debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3474,10 +3487,10 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -3517,10 +3530,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3808,15 +3821,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -3936,12 +3949,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -4206,10 +4219,10 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== inline-source-map@~0.6.0: version "0.6.2" @@ -4274,12 +4287,12 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4361,13 +4374,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-number@^3.0.0: version "3.0.0" @@ -4388,10 +4401,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4822,6 +4835,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -5117,11 +5135,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5139,7 +5152,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -5754,10 +5767,10 @@ postcss@7.0.32, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0. source-map "^0.6.1" supports-color "^6.1.0" -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -5867,10 +5880,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -6730,6 +6743,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7051,6 +7071,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" diff --git a/packages/e2e-tests/prev-next-app-with-base-path/yarn.lock b/packages/e2e-tests/prev-next-app-with-base-path/yarn.lock index ebcd8ec666..d7f9bd5722 100644 --- a/packages/e2e-tests/prev-next-app-with-base-path/yarn.lock +++ b/packages/e2e-tests/prev-next-app-with-base-path/yarn.lock @@ -1401,6 +1401,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1414,10 +1419,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@^2.3.2": version "2.3.2" @@ -1765,10 +1770,10 @@ aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -2113,7 +2118,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2635,10 +2640,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2790,7 +2795,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -2800,11 +2805,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3047,45 +3047,46 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -3123,6 +3124,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3130,6 +3136,13 @@ debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3474,10 +3487,10 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -3517,10 +3530,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3808,15 +3821,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -3936,12 +3949,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -4206,10 +4219,10 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== inline-source-map@~0.6.0: version "0.6.2" @@ -4274,12 +4287,12 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4361,13 +4374,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-number@^3.0.0: version "3.0.0" @@ -4388,10 +4401,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4822,6 +4835,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -5117,11 +5135,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5139,7 +5152,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -5754,10 +5767,10 @@ postcss@7.0.32, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0. source-map "^0.6.1" supports-color "^6.1.0" -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -5867,10 +5880,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -6730,6 +6743,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7051,6 +7071,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" diff --git a/packages/e2e-tests/prev-next-app-with-trailing-slash/yarn.lock b/packages/e2e-tests/prev-next-app-with-trailing-slash/yarn.lock index e2e8bc8165..43eaade5cd 100644 --- a/packages/e2e-tests/prev-next-app-with-trailing-slash/yarn.lock +++ b/packages/e2e-tests/prev-next-app-with-trailing-slash/yarn.lock @@ -1378,6 +1378,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1391,7 +1396,7 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": +"@types/sinonjs__fake-timers@^6.0.2": version "6.0.2" resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== @@ -1731,10 +1736,10 @@ aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -2079,7 +2084,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2596,10 +2601,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2751,7 +2756,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -2761,11 +2766,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3015,45 +3015,46 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -3091,6 +3092,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4, debug@^4.1.0, debug@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" @@ -3105,6 +3111,13 @@ debug@4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3514,10 +3527,10 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -3557,10 +3570,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3848,15 +3861,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -3976,12 +3989,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -4246,10 +4259,10 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== inline-source-map@~0.6.0: version "0.6.2" @@ -4319,12 +4332,12 @@ is-callable@^1.1.4, is-callable@^1.2.2: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4411,13 +4424,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-negative-zero@^2.0.0: version "2.0.0" @@ -4443,10 +4456,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4891,6 +4904,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -5186,11 +5204,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5843,10 +5856,10 @@ postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0. source-map "^0.6.1" supports-color "^6.1.0" -pretty-bytes@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" - integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -5956,10 +5969,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -6826,6 +6839,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7147,6 +7167,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" diff --git a/packages/e2e-tests/prev-next-app/yarn.lock b/packages/e2e-tests/prev-next-app/yarn.lock index ebcd8ec666..d7f9bd5722 100644 --- a/packages/e2e-tests/prev-next-app/yarn.lock +++ b/packages/e2e-tests/prev-next-app/yarn.lock @@ -1401,6 +1401,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== +"@types/node@^14.14.31": + version "14.14.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" + integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1414,10 +1419,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/sizzle@^2.3.2": version "2.3.2" @@ -1765,10 +1770,10 @@ aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -2113,7 +2118,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2635,10 +2640,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" + integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2790,7 +2795,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@5.1.0: +commander@5.1.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -2800,11 +2805,6 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3047,45 +3047,46 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.1.0.tgz#979e9ff3e0acd792eefd365bf104046479a9643b" - integrity sha512-craPRO+Viu4268s7eBvX5VJW8aBYcAQT+EwEccQSMY+eH1ZPwnxIgyDlmMWvxLVX9SkWxOlZbEycPyzanQScBQ== +cypress@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.2.0.tgz#6a3364e18972f898fff1fb12c1ff747939e45ddc" + integrity sha512-lHHGay+YsffDn4M0bkkwezylBVHUpwwhtqte4LNPrFRCHy77X38+1PUe3neFb3glVTM+rbILtTN6FhO2djcOuQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^9.0.1" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr "^0.14.3" - lodash "^4.17.19" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -3123,6 +3124,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +dayjs@^1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3130,6 +3136,13 @@ debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3474,10 +3487,10 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== events@1.1.1: version "1.1.1" @@ -3517,10 +3530,10 @@ execa@4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3808,15 +3821,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -3936,12 +3949,12 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" globals@^11.1.0: version "11.12.0" @@ -4206,10 +4219,10 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== inline-source-map@~0.6.0: version "0.6.2" @@ -4274,12 +4287,12 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: - ci-info "^2.0.0" + ci-info "^3.1.1" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4361,13 +4374,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-number@^3.0.0: version "3.0.0" @@ -4388,10 +4401,10 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4822,6 +4835,11 @@ lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -5117,11 +5135,6 @@ module-deps@^6.0.0, module-deps@^6.2.3: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5139,7 +5152,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -5754,10 +5767,10 @@ postcss@7.0.32, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0. source-map "^0.6.1" supports-color "^6.1.0" -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== process-nextick-args@~2.0.0: version "2.0.1" @@ -5867,10 +5880,10 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -6730,6 +6743,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7051,6 +7071,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" From 855fc8845c2c62e69ffc6c5318ebac0d8dc67ea8 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 13 May 2021 09:54:02 +0100 Subject: [PATCH 36/48] fix: include ready checks in e2e tests for isr --- packages/e2e-tests/next-app-with-trailing-slash/package.json | 2 +- packages/e2e-tests/next-app/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/e2e-tests/next-app-with-trailing-slash/package.json b/packages/e2e-tests/next-app-with-trailing-slash/package.json index 6212a8884b..875219e036 100644 --- a/packages/e2e-tests/next-app-with-trailing-slash/package.json +++ b/packages/e2e-tests/next-app-with-trailing-slash/package.json @@ -8,7 +8,7 @@ "start": "next start -p $PORT", "serverless": "serverless", "e2e": "cypress run", - "e2e:ci": "SSG_PAGE_PATH=/ssg-page/ SSR_PAGE_PATH=/ssr-page/ APP_NAME=next-app-with-trailing-slash ts-node --project tsconfig.scripts.json ../test-utils/scripts/run-e2e-ci.ts" + "e2e:ci": "ISR_PAGE_PATH=/revalidated-ssg-page DYNAMIC_ISR_PAGE_PATH=/revalidated-ssg-pages/101 SSG_PAGE_PATH=/ssg-page/ SSR_PAGE_PATH=/ssr-page/ APP_NAME=next-app-with-trailing-slash ts-node --project tsconfig.scripts.json ../test-utils/scripts/run-e2e-ci.ts" }, "repository": { "type": "git", diff --git a/packages/e2e-tests/next-app/package.json b/packages/e2e-tests/next-app/package.json index 3e13a67826..c7d8b27881 100644 --- a/packages/e2e-tests/next-app/package.json +++ b/packages/e2e-tests/next-app/package.json @@ -8,7 +8,7 @@ "start": "next start -p $PORT", "serverless": "serverless", "e2e": "cypress run", - "e2e:ci": "SSG_PAGE_PATH=/ssg-page SSR_PAGE_PATH=/ssr-page APP_NAME=next-app ts-node --project tsconfig.scripts.json ../test-utils/scripts/run-e2e-ci.ts" + "e2e:ci": "ISR_PAGE_PATH=/revalidated-ssg-page DYNAMIC_ISR_PAGE_PATH=/revalidated-ssg-pages/101 SSG_PAGE_PATH=/ssg-page SSR_PAGE_PATH=/ssr-page APP_NAME=next-app ts-node --project tsconfig.scripts.json ../test-utils/scripts/run-e2e-ci.ts" }, "repository": { "type": "git", From 436b5844590f819d032ad6e290c2397b7849853b Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 13 May 2021 09:54:30 +0100 Subject: [PATCH 37/48] fix: redirect test in trailing slash e2e tests --- .../cypress/integration/redirects.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts b/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts index cb519ff3a1..8a3cecf0b5 100644 --- a/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts +++ b/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts @@ -40,7 +40,7 @@ describe("Redirects Tests", () => { { path: "//example.com", expectedPath: "/example.com/", - expectedStatus: 404 + expectedStatus: 308 } ].forEach(({ path, expectedPath, expectedStatus }) => { it(`does not redirect page ${path}`, () => { From 90ce4866abf4c42e7b0561c6c42eb359a5b5be3e Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 13 May 2021 09:55:04 +0100 Subject: [PATCH 38/48] fix: include isr e2e path checks in test-utils --- .../test-utils/scripts/run-e2e-ci.ts | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/packages/e2e-tests/test-utils/scripts/run-e2e-ci.ts b/packages/e2e-tests/test-utils/scripts/run-e2e-ci.ts index 8c84662907..c38f650497 100644 --- a/packages/e2e-tests/test-utils/scripts/run-e2e-ci.ts +++ b/packages/e2e-tests/test-utils/scripts/run-e2e-ci.ts @@ -23,6 +23,8 @@ const appName = process.env["APP_NAME"] || ""; // app name to store in deploymen const ssgPagePath = process.env["SSG_PAGE_PATH"]; const ssrPagePath = process.env["SSR_PAGE_PATH"]; +const isrPagePath = process.env["ISR_PAGE_PATH"]; +const dynamicIsrPagePath = process.env["DYNAMIC_ISR_PAGE_PATH"]; if (appName === "") { throw new Error("Please set the APP_NAME environment variable."); @@ -51,9 +53,7 @@ async function checkWebAppBuildId( while (new Date().getTime() - startTime < waitDurationMillis) { // Guarantee that CloudFront cache is missed by appending uuid query parameter. const uuid: string = uuidv4().replace("-", ""); - const suffixedUrl: string = `${url}${ - url.endsWith("/") ? "" : "/" - }?uuid=${uuid}`; + const suffixedUrl = `${url}${url.endsWith("/") ? "" : "/"}?uuid=${uuid}`; try { const response = await fetch(suffixedUrl); @@ -311,15 +311,43 @@ async function runEndToEndTest(): Promise { console.info( "Checking if CloudFront invalidations, SSR and SSG pages are ready." ); - const [cloudFrontReady, ssrReady, ssgReady] = await Promise.all([ + const [ + cloudFrontReady, + ssrReady, + ssgReady, + isrReady, + dynamicIsrReady + ] = await Promise.all([ checkInvalidationsCompleted(distributionId, waitTimeout, 10), checkWebAppBuildId(cloudFrontUrl + ssrPagePath, buildId, waitTimeout, 10), - checkWebAppBuildId(cloudFrontUrl + ssgPagePath, buildId, waitTimeout, 10) + checkWebAppBuildId(cloudFrontUrl + ssgPagePath, buildId, waitTimeout, 10), + isrPagePath + ? checkWebAppBuildId( + cloudFrontUrl + isrPagePath, + buildId, + waitTimeout, + 10 + ) + : Promise.resolve(true), + dynamicIsrPagePath + ? checkWebAppBuildId( + cloudFrontUrl + dynamicIsrPagePath, + buildId, + waitTimeout, + 10 + ) + : Promise.resolve(true) // The below is not really needed, as it waits for distribution to be deployed globally, which takes a longer time. // checkCloudFrontDistributionReady(distributionId, waitTimeout, 10), ]); - if (!cloudFrontReady || !ssrReady || !ssgReady) { + if ( + !cloudFrontReady || + !ssrReady || + !ssgReady || + !isrReady || + !dynamicIsrReady + ) { throw new Error("Timed out waiting for app to be ready!"); } From a3c3e366d511543c2d872de278152a4676c3c9cb Mon Sep 17 00:00:00 2001 From: Henry Date: Fri, 14 May 2021 12:03:50 +0100 Subject: [PATCH 39/48] fix: dont deploy a queue if we dont need one --- .../__snapshots__/snapshots.test.ts.snap | 4854 ++++++++++++++++- .../__tests__/construct.test.ts | 36 +- .../api-lambda/index.js | 0 .../api-lambda/manifest.json | 0 .../api-lambda/pages/api/users.js | 0 .../api-lambda/routes-manifest.json | 0 .../assets/BUILD_ID | 0 .../assets/_next/data/stub.json | 0 .../assets/_next/static/stub.json | 0 .../assets/public/stub.json | 0 .../assets/static-pages/stub.html | 0 .../default-lambda/index.js | 0 .../default-lambda/manifest.json | 0 .../default-lambda/prerender-manifest.json | 44 + .../default-lambda/routes-manifest.json | 0 .../image-lambda/images-manifest.json | 0 .../image-lambda/index.js | 0 .../image-lambda/manifest.json | 0 .../image-lambda/routes-manifest.json | 0 .../regeneration-lambda/index.js | 0 .../fixtures/app/api-lambda/index.js | 3 + .../fixtures/app/api-lambda/manifest.json | 10 + .../app/api-lambda/pages/api/users.js | 3 + .../app/api-lambda/routes-manifest.json | 28 + .../__tests__/fixtures/app/assets/BUILD_ID | 1 + .../fixtures/app/assets/_next/data/stub.json | 0 .../app/assets/_next/static/stub.json | 1 + .../fixtures/app/assets/public/stub.json | 0 .../app/assets/static-pages/stub.html | 11 + .../fixtures/app/default-lambda/index.js | 3 + .../fixtures/app/default-lambda/manifest.json | 32 + .../default-lambda/prerender-manifest.json | 0 .../app/default-lambda/routes-manifest.json | 28 + .../app/image-lambda/images-manifest.json | 28 + .../fixtures/app/image-lambda/index.js | 3 + .../fixtures/app/image-lambda/manifest.json | 4 + .../app/image-lambda/routes-manifest.json | 28 + .../fixtures/app/regeneration-lambda/index.js | 3 + .../__tests__/snapshots.test.ts | 14 +- .../nextjs-cdk-construct/src/index.ts | 82 +- .../nextjs-component/__tests__/deploy.test.ts | 350 +- .../fixtures/app-with-isr/.next/BUILD_ID | 1 + .../app-with-isr/.next/build-manifest.json | 3 + .../app-with-isr/.next/images-manifest.json | 28 + .../.next/prerender-manifest.json | 11 + .../app-with-isr/.next/routes-manifest.json | 9 + .../.next/serverless/pages-manifest.json | 18 + .../.next/serverless/pages/404.html | 0 .../.next/serverless/pages/[root].js | 0 .../.next/serverless/pages/_error.js | 0 .../.next/serverless/pages/about.html | 0 .../.next/serverless/pages/api/customers.js | 0 .../serverless/pages/api/customers/[id].js | 0 .../serverless/pages/api/customers/new.js | 0 .../.next/serverless/pages/blog.js | 0 .../.next/serverless/pages/blog/[post].html | 0 .../pages/customers/[...catchAll].js | 0 .../serverless/pages/customers/[customer].js | 0 .../pages/customers/[customer]/[post].js | 0 .../pages/customers/[customer]/profile.js | 0 .../.next/serverless/pages/customers/new.js | 0 .../.next/serverless/pages/index.html | 0 .../.next/serverless/pages/index.js | 0 .../.next/serverless/pages/index.json | 0 .../.next/serverless/pages/terms.html | 0 .../.next/static/chunks/chunk1.js | 0 .../.next/static/test-build-id/placeholder.js | 0 .../fixtures/app-with-isr/public/favicon.ico | 0 .../app-with-isr/public/sub/image.png | 0 .../fixtures/app-with-isr/public/sw.js | 0 .../app-with-isr/static/donotdelete.txt | 0 .../nextjs-component/src/component.ts | 131 +- 72 files changed, 5437 insertions(+), 330 deletions(-) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/api-lambda/index.js (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/api-lambda/manifest.json (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/api-lambda/pages/api/users.js (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/api-lambda/routes-manifest.json (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/assets/BUILD_ID (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/assets/_next/data/stub.json (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/assets/_next/static/stub.json (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/assets/public/stub.json (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/assets/static-pages/stub.html (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/default-lambda/index.js (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/default-lambda/manifest.json (100%) create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/default-lambda/prerender-manifest.json rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/default-lambda/routes-manifest.json (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/image-lambda/images-manifest.json (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/image-lambda/index.js (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/image-lambda/manifest.json (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/image-lambda/routes-manifest.json (100%) rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app-with-isr}/regeneration-lambda/index.js (100%) create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/index.js create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/manifest.json create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/pages/api/users.js create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/routes-manifest.json create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/BUILD_ID create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/_next/data/stub.json create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/_next/static/stub.json create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/public/stub.json create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/static-pages/stub.html create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/index.js create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/manifest.json rename packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/{next-boilerplate => app}/default-lambda/prerender-manifest.json (100%) create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/routes-manifest.json create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/images-manifest.json create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/index.js create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/manifest.json create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/routes-manifest.json create mode 100644 packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/regeneration-lambda/index.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/BUILD_ID create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/build-manifest.json create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/images-manifest.json create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/prerender-manifest.json create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/routes-manifest.json create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages-manifest.json create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/404.html create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/[root].js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/_error.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/about.html create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/api/customers.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/api/customers/[id].js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/api/customers/new.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/blog.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/blog/[post].html create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[...catchAll].js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[customer].js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[customer]/[post].js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[customer]/profile.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/new.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/index.html create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/index.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/index.json create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/terms.html create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/static/chunks/chunk1.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/static/test-build-id/placeholder.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/public/favicon.ico create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/public/sub/image.png create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/public/sw.js create mode 100644 packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/static/donotdelete.txt diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap b/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap index c53da46d53..0a8e7183fe 100644 --- a/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap @@ -3,18 +3,6 @@ exports[`CDK Construct Snapshots creates boilerplate next app 1`] = ` Object { "Parameters": Object { - "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313ArtifactHash099A8DD1": Object { - "Description": "Artifact hash for asset \\"0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313\\"", - "Type": "String", - }, - "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3BucketF4667C02": Object { - "Description": "S3 bucket for asset \\"0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313\\"", - "Type": "String", - }, - "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3VersionKeyC4818F9D": Object { - "Description": "S3 key for asset version \\"0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313\\"", - "Type": "String", - }, "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748ArtifactHashE2D1074E": Object { "Description": "Artifact hash for asset \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", "Type": "String", @@ -1398,30 +1386,6 @@ Object { }, ], }, - Object { - "Action": Array [ - "sqs:SendMessage", - "sqs:GetQueueAttributes", - "sqs:GetQueueUrl", - ], - "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "StackRegenerationQueue2F4428B8", - "Arn", - ], - }, - }, - Object { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "StackRegenerationFunctionCAB79AA6", - "Arn", - ], - }, - }, ], "Version": "2012-10-17", }, @@ -2379,15 +2343,168 @@ Object { }, "Type": "AWS::S3::BucketPolicy", }, - "StackRegenerationFunctionCAB79AA6": Object { + }, +} +`; + +exports[`CDK Construct Snapshots creates next app with ISR pages 1`] = ` +Object { + "Parameters": Object { + "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313ArtifactHash099A8DD1": Object { + "Description": "Artifact hash for asset \\"0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313\\"", + "Type": "String", + }, + "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3BucketF4667C02": Object { + "Description": "S3 bucket for asset \\"0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313\\"", + "Type": "String", + }, + "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3VersionKeyC4818F9D": Object { + "Description": "S3 key for asset version \\"0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313\\"", + "Type": "String", + }, + "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748ArtifactHashE2D1074E": Object { + "Description": "Artifact hash for asset \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", + "Type": "String", + }, + "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3Bucket1B468E6A": Object { + "Description": "S3 bucket for asset \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", + "Type": "String", + }, + "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3VersionKeyA7CF013C": Object { + "Description": "S3 key for asset version \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", + "Type": "String", + }, + "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392ArtifactHashE56CD69A": Object { + "Description": "Artifact hash for asset \\"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\\"", + "Type": "String", + }, + "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F": Object { + "Description": "S3 bucket for asset \\"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\\"", + "Type": "String", + }, + "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626": Object { + "Description": "S3 key for asset version \\"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\\"", + "Type": "String", + }, + "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24ArtifactHashBA91B77F": Object { + "Description": "Artifact hash for asset \\"67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24\\"", + "Type": "String", + }, + "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3Bucket4D46ABB5": Object { + "Description": "S3 bucket for asset \\"67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24\\"", + "Type": "String", + }, + "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3VersionKeyB0F28861": Object { + "Description": "S3 key for asset version \\"67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24\\"", + "Type": "String", + }, + "AssetParameters71914bdef255ca79db9aee97ee9ea60217c5bedc4e3db0894cbcb167d3021f7fArtifactHash87FCF053": Object { + "Description": "Artifact hash for asset \\"71914bdef255ca79db9aee97ee9ea60217c5bedc4e3db0894cbcb167d3021f7f\\"", + "Type": "String", + }, + "AssetParameters71914bdef255ca79db9aee97ee9ea60217c5bedc4e3db0894cbcb167d3021f7fS3BucketA3F5069F": Object { + "Description": "S3 bucket for asset \\"71914bdef255ca79db9aee97ee9ea60217c5bedc4e3db0894cbcb167d3021f7f\\"", + "Type": "String", + }, + "AssetParameters71914bdef255ca79db9aee97ee9ea60217c5bedc4e3db0894cbcb167d3021f7fS3VersionKey833A9D1F": Object { + "Description": "S3 key for asset version \\"71914bdef255ca79db9aee97ee9ea60217c5bedc4e3db0894cbcb167d3021f7f\\"", + "Type": "String", + }, + "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3ArtifactHash62C7B2C0": Object { + "Description": "Artifact hash for asset \\"75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3\\"", + "Type": "String", + }, + "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5": Object { + "Description": "S3 bucket for asset \\"75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3\\"", + "Type": "String", + }, + "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3VersionKeyDC7D66D8": Object { + "Description": "S3 key for asset version \\"75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3\\"", + "Type": "String", + }, + "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1ArtifactHash78F94626": Object { + "Description": "Artifact hash for asset \\"7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1\\"", + "Type": "String", + }, + "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2": Object { + "Description": "S3 bucket for asset \\"7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1\\"", + "Type": "String", + }, + "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8": Object { + "Description": "S3 key for asset version \\"7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1\\"", + "Type": "String", + }, + "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6ArtifactHash5DD72BC7": Object { + "Description": "Artifact hash for asset \\"7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6\\"", + "Type": "String", + }, + "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3Bucket5C3E4ABA": Object { + "Description": "S3 bucket for asset \\"7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6\\"", + "Type": "String", + }, + "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3VersionKey96DFF457": Object { + "Description": "S3 key for asset version \\"7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6\\"", + "Type": "String", + }, + "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dArtifactHash2788C1DC": Object { + "Description": "Artifact hash for asset \\"aecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61d\\"", + "Type": "String", + }, + "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC": Object { + "Description": "S3 bucket for asset \\"aecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61d\\"", + "Type": "String", + }, + "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3VersionKey99B046A5": Object { + "Description": "S3 key for asset version \\"aecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61d\\"", + "Type": "String", + }, + "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389ArtifactHashA466D3F1": Object { + "Description": "Artifact hash for asset \\"bc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389\\"", + "Type": "String", + }, + "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633": Object { + "Description": "S3 bucket for asset \\"bc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389\\"", + "Type": "String", + }, + "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3VersionKey8DBC717C": Object { + "Description": "S3 key for asset version \\"bc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389\\"", + "Type": "String", + }, + "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfArtifactHash85F58E48": Object { + "Description": "Artifact hash for asset \\"c24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cf\\"", + "Type": "String", + }, + "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3Bucket55EFA30C": Object { + "Description": "S3 bucket for asset \\"c24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cf\\"", + "Type": "String", + }, + "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3VersionKey60329B70": Object { + "Description": "S3 key for asset version \\"c24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cf\\"", + "Type": "String", + }, + "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68ArtifactHashD9A515C3": Object { + "Description": "Artifact hash for asset \\"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\\"", + "Type": "String", + }, + "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7": Object { + "Description": "S3 bucket for asset \\"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\\"", + "Type": "String", + }, + "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F": Object { + "Description": "S3 key for asset version \\"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\\"", + "Type": "String", + }, + }, + "Resources": Object { + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": Object { "DependsOn": Array [ - "StackRegenerationFunctionServiceRoleDefaultPolicyC7FB67BD", - "StackRegenerationFunctionServiceRole15AFC289", + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", ], "Properties": Object { "Code": Object { "S3Bucket": Object { - "Ref": "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3BucketF4667C02", + "Ref": "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3Bucket55EFA30C", }, "S3Key": Object { "Fn::Join": Array [ @@ -2400,7 +2517,7 @@ Object { "Fn::Split": Array [ "||", Object { - "Ref": "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3VersionKeyC4818F9D", + "Ref": "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3VersionKey60329B70", }, ], }, @@ -2413,7 +2530,7 @@ Object { "Fn::Split": Array [ "||", Object { - "Ref": "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3VersionKeyC4818F9D", + "Ref": "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3VersionKey60329B70", }, ], }, @@ -2424,18 +2541,23 @@ Object { }, }, "Handler": "index.handler", + "Layers": Array [ + Object { + "Ref": "StackAssetDeploymentBuildIDAwsCliLayer055D8C68", + }, + ], "Role": Object { "Fn::GetAtt": Array [ - "StackRegenerationFunctionServiceRole15AFC289", + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", "Arn", ], }, - "Runtime": "nodejs14.x", - "Timeout": 30, + "Runtime": "python3.6", + "Timeout": 900, }, "Type": "AWS::Lambda::Function", }, - "StackRegenerationFunctionServiceRole15AFC289": Object { + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ @@ -2466,25 +2588,50 @@ Object { }, "Type": "AWS::IAM::Role", }, - "StackRegenerationFunctionServiceRoleDefaultPolicyC7FB67BD": Object { + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ - "sqs:ReceiveMessage", - "sqs:ChangeMessageVisibility", - "sqs:GetQueueUrl", - "sqs:DeleteMessage", - "sqs:GetQueueAttributes", + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", ], "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "StackRegenerationQueue2F4428B8", - "Arn", - ], - }, + "Resource": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC", + }, + ], + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC", + }, + "/*", + ], + ], + }, + ], }, Object { "Action": Array [ @@ -2519,50 +2666,4597 @@ Object { }, ], }, + Object { + "Action": Array [ + "cloudfront:GetInvalidation", + "cloudfront:CreateInvalidation", + ], + "Effect": "Allow", + "Resource": "*", + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", + }, + ], + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633", + }, + ], + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633", + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5", + }, + ], + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5", + }, + "/*", + ], + ], + }, + ], + }, ], "Version": "2012-10-17", }, - "PolicyName": "StackRegenerationFunctionServiceRoleDefaultPolicyC7FB67BD", + "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", "Roles": Array [ Object { - "Ref": "StackRegenerationFunctionServiceRole15AFC289", + "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", }, ], }, "Type": "AWS::IAM::Policy", }, - "StackRegenerationFunctionSqsEventSourceStackRegenerationQueueA0F3D7FC227F9DB2": Object { + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": Object { + "DependsOn": Array [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + ], "Properties": Object { - "EventSourceArn": Object { - "Fn::GetAtt": Array [ - "StackRegenerationQueue2F4428B8", - "Arn", - ], - }, - "FunctionName": Object { - "Ref": "StackRegenerationFunctionCAB79AA6", + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626", + }, + ], + }, + ], + }, + ], + ], + }, }, - }, - "Type": "AWS::Lambda::EventSourceMapping", - }, - "StackRegenerationQueue2F4428B8": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "FifoQueue": true, - "QueueName": Object { + "Description": Object { "Fn::Join": Array [ "", Array [ + "Lambda function for auto-deleting objects in ", Object { "Ref": "StackPublicAssets8F0F4FE8", }, - ".fifo", + " S3 bucket.", ], ], }, + "Handler": "__entrypoint__.handler", + "MemorySize": 128, + "Role": Object { + "Fn::GetAtt": Array [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn", + ], + }, + "Runtime": "nodejs12.x", + "Timeout": 900, }, - "Type": "AWS::SQS::Queue", - "UpdateReplacePolicy": "Delete", + "Type": "AWS::Lambda::Function", + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "lambda.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "ManagedPolicyArns": Array [ + Object { + "Fn::Sub": "arn:\${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": Object { + "DependsOn": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB", + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3Bucket4D46ABB5", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3VersionKeyB0F28861", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3VersionKeyB0F28861", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Handler": "index.handler", + "Role": Object { + "Fn::GetAtt": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", + "Arn", + ], + }, + "Runtime": "nodejs12.x", + }, + "Type": "AWS::Lambda::Function", + }, + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "lambda.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "ManagedPolicyArns": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + ], + ], + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "logs:PutRetentionPolicy", + "logs:DeleteRetentionPolicy", + ], + "Effect": "Allow", + "Resource": "*", + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB", + "Roles": Array [ + Object { + "Ref": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "StackAssetDeploymentBuildIDAwsCliLayer055D8C68": Object { + "Properties": Object { + "Content": Object { + "S3Bucket": Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "/opt/awscli/aws", + }, + "Type": "AWS::Lambda::LayerVersion", + }, + "StackAssetDeploymentBuildIDCustomResourceC7EB618F": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "DestinationBucketKeyPrefix": "/BUILD_ID", + "DestinationBucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "DistributionId": Object { + "Ref": "StackNextJSDistribution03A07E47", + }, + "DistributionPaths": Array [ + "/about", + "/", + "/404", + "/users/*", + "/users", + "/_error", + ], + "Prune": true, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn", + ], + }, + "SourceBucketNames": Array [ + Object { + "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC", + }, + ], + "SourceObjectKeys": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3VersionKey99B046A5", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3VersionKey99B046A5", + }, + ], + }, + ], + }, + ], + ], + }, + ], + }, + "Type": "Custom::CDKBucketDeployment", + "UpdateReplacePolicy": "Delete", + }, + "StackAssetDeploymentnextDataAwsCliLayerC32F288B": Object { + "Properties": Object { + "Content": Object { + "S3Bucket": Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "/opt/awscli/aws", + }, + "Type": "AWS::Lambda::LayerVersion", + }, + "StackAssetDeploymentnextDataCustomResource445B0AAE": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "DestinationBucketKeyPrefix": "_next/data", + "DestinationBucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "Prune": true, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn", + ], + }, + "SourceBucketNames": Array [ + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", + }, + ], + "SourceObjectKeys": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", + }, + ], + }, + ], + }, + ], + ], + }, + ], + "SystemMetadata": Object { + "cache-control": "public, max-age=0, s-maxage=2678400, must-revalidate", + }, + }, + "Type": "Custom::CDKBucketDeployment", + "UpdateReplacePolicy": "Delete", + }, + "StackAssetDeploymentnextStaticAwsCliLayerD5D627D4": Object { + "Properties": Object { + "Content": Object { + "S3Bucket": Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "/opt/awscli/aws", + }, + "Type": "AWS::Lambda::LayerVersion", + }, + "StackAssetDeploymentnextStaticCustomResource9DCCD3BE": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "DestinationBucketKeyPrefix": "_next/static", + "DestinationBucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "Prune": true, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn", + ], + }, + "SourceBucketNames": Array [ + Object { + "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5", + }, + ], + "SourceObjectKeys": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3VersionKeyDC7D66D8", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3VersionKeyDC7D66D8", + }, + ], + }, + ], + }, + ], + ], + }, + ], + "SystemMetadata": Object { + "cache-control": "public, max-age=31536000, immutable", + }, + }, + "Type": "Custom::CDKBucketDeployment", + "UpdateReplacePolicy": "Delete", + }, + "StackAssetDeploymentpublicFilesAwsCliLayerB1EEF9A7": Object { + "Properties": Object { + "Content": Object { + "S3Bucket": Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "/opt/awscli/aws", + }, + "Type": "AWS::Lambda::LayerVersion", + }, + "StackAssetDeploymentpublicFilesCustomResourceC1AC84CF": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "DestinationBucketKeyPrefix": "public", + "DestinationBucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "Prune": true, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn", + ], + }, + "SourceBucketNames": Array [ + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", + }, + ], + "SourceObjectKeys": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", + }, + ], + }, + ], + }, + ], + ], + }, + ], + "SystemMetadata": Object { + "cache-control": "public, max-age=31536000, must-revalidate", + }, + }, + "Type": "Custom::CDKBucketDeployment", + "UpdateReplacePolicy": "Delete", + }, + "StackAssetDeploymentstaticPagesAwsCliLayerB0258334": Object { + "Properties": Object { + "Content": Object { + "S3Bucket": Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "/opt/awscli/aws", + }, + "Type": "AWS::Lambda::LayerVersion", + }, + "StackAssetDeploymentstaticPagesCustomResource9BDB9A03": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "DestinationBucketKeyPrefix": "static-pages", + "DestinationBucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "Prune": true, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn", + ], + }, + "SourceBucketNames": Array [ + Object { + "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633", + }, + ], + "SourceObjectKeys": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3VersionKey8DBC717C", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3VersionKey8DBC717C", + }, + ], + }, + ], + }, + ], + ], + }, + ], + "SystemMetadata": Object { + "cache-control": "public, max-age=0, s-maxage=2678400, must-revalidate", + }, + }, + "Type": "Custom::CDKBucketDeployment", + "UpdateReplacePolicy": "Delete", + }, + "StackImageOriginRequest30DFB17C": Object { + "Properties": Object { + "OriginRequestPolicyConfig": Object { + "CookiesConfig": Object { + "CookieBehavior": "none", + }, + "HeadersConfig": Object { + "HeaderBehavior": "none", + }, + "Name": "StackImageOriginRequestF06FCDA0", + "QueryStringsConfig": Object { + "QueryStringBehavior": "all", + }, + }, + }, + "Type": "AWS::CloudFront::OriginRequestPolicy", + }, + "StackNextApiLambda8BE78FBE": Object { + "DependsOn": Array [ + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", + "StackNextEdgeLambdaRole02C429A6", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3Bucket1B468E6A", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3VersionKeyA7CF013C", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3VersionKeyA7CF013C", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "Default Lambda@Edge for Next API CloudFront distribution", + "Handler": "index.handler", + "Role": Object { + "Fn::GetAtt": Array [ + "StackNextEdgeLambdaRole02C429A6", + "Arn", + ], + }, + "Runtime": "nodejs12.x", + }, + "Type": "AWS::Lambda::Function", + }, + "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextApiLambda8BE78FBE", + }, + }, + "Type": "AWS::Lambda::Version", + "UpdateReplacePolicy": "Delete", + }, + "StackNextApiLambdaCurrentVersionAliaslive8AA37EB3": Object { + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextApiLambda8BE78FBE", + }, + "FunctionVersion": Object { + "Fn::GetAtt": Array [ + "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", + "Version", + ], + }, + "Name": "live", + }, + "Type": "AWS::Lambda::Alias", + }, + "StackNextApiLambdaCurrentVersionEventInvokeConfig473B707A": Object { + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextApiLambda8BE78FBE", + }, + "MaximumRetryAttempts": 1, + "Qualifier": Object { + "Fn::GetAtt": Array [ + "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", + "Version", + ], + }, + }, + "Type": "AWS::Lambda::EventInvokeConfig", + }, + "StackNextApiLambdaLogRetention2569EAED": Object { + "Properties": Object { + "LogGroupName": Object { + "Fn::Join": Array [ + "", + Array [ + "/aws/lambda/", + Object { + "Ref": "StackNextApiLambda8BE78FBE", + }, + ], + ], + }, + "RetentionInDays": 3, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", + "Arn", + ], + }, + }, + "Type": "Custom::LogRetention", + }, + "StackNextEdgeLambdaRole02C429A6": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": Array [ + "lambda.amazonaws.com", + "edgelambda.amazonaws.com", + ], + }, + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "edgelambda.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "ManagedPolicyArns": Array [ + "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + ], + }, + "Type": "AWS::IAM::Role", + }, + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + "s3:DeleteObject*", + "s3:PutObject*", + "s3:Abort*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "sqs:SendMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "StackRegenerationQueue2F4428B8", + "Arn", + ], + }, + }, + Object { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "StackRegenerationFunctionCAB79AA6", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", + "Roles": Array [ + Object { + "Ref": "StackNextEdgeLambdaRole02C429A6", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "StackNextImageCache169F453D": Object { + "Properties": Object { + "CachePolicyConfig": Object { + "DefaultTTL": 86400, + "MaxTTL": 31536000, + "MinTTL": 0, + "Name": Object { + "Fn::Join": Array [ + "", + Array [ + "StackNextImageCache78CE64D5-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "ParametersInCacheKeyAndForwardedToOrigin": Object { + "CookiesConfig": Object { + "CookieBehavior": "none", + }, + "EnableAcceptEncodingBrotli": true, + "EnableAcceptEncodingGzip": true, + "HeadersConfig": Object { + "HeaderBehavior": "whitelist", + "Headers": Array [ + "Accept", + ], + }, + "QueryStringsConfig": Object { + "QueryStringBehavior": "all", + }, + }, + }, + }, + "Type": "AWS::CloudFront::CachePolicy", + }, + "StackNextImageLambda2847952D": Object { + "DependsOn": Array [ + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", + "StackNextEdgeLambdaRole02C429A6", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3Bucket5C3E4ABA", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3VersionKey96DFF457", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3VersionKey96DFF457", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "Default Lambda@Edge for Next Image CloudFront distribution", + "Handler": "index.handler", + "Role": Object { + "Fn::GetAtt": Array [ + "StackNextEdgeLambdaRole02C429A6", + "Arn", + ], + }, + "Runtime": "nodejs12.x", + }, + "Type": "AWS::Lambda::Function", + }, + "StackNextImageLambdaCurrentVersionAliasliveE4A66187": Object { + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextImageLambda2847952D", + }, + "FunctionVersion": Object { + "Fn::GetAtt": Array [ + "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", + "Version", + ], + }, + "Name": "live", + }, + "Type": "AWS::Lambda::Alias", + }, + "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextImageLambda2847952D", + }, + }, + "Type": "AWS::Lambda::Version", + "UpdateReplacePolicy": "Delete", + }, + "StackNextImageLambdaCurrentVersionEventInvokeConfig3F977EB2": Object { + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextImageLambda2847952D", + }, + "MaximumRetryAttempts": 1, + "Qualifier": Object { + "Fn::GetAtt": Array [ + "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", + "Version", + ], + }, + }, + "Type": "AWS::Lambda::EventInvokeConfig", + }, + "StackNextImageLambdaLogRetentionF781777A": Object { + "Properties": Object { + "LogGroupName": Object { + "Fn::Join": Array [ + "", + Array [ + "/aws/lambda/", + Object { + "Ref": "StackNextImageLambda2847952D", + }, + ], + ], + }, + "RetentionInDays": 3, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", + "Arn", + ], + }, + }, + "Type": "Custom::LogRetention", + }, + "StackNextJSDistribution03A07E47": Object { + "Properties": Object { + "DistributionConfig": Object { + "CacheBehaviors": Array [ + Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + "PUT", + "PATCH", + "POST", + "DELETE", + ], + "CachePolicyId": Object { + "Ref": "StackNextImageCache169F453D", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "LambdaFunctionAssociations": Array [ + Object { + "EventType": "origin-request", + "LambdaFunctionARN": Object { + "Ref": "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", + }, + }, + ], + "OriginRequestPolicyId": Object { + "Ref": "StackImageOriginRequest30DFB17C", + }, + "PathPattern": "_next/image*", + "TargetOriginId": "StackNextJSDistributionOrigin227291135", + "ViewerProtocolPolicy": "redirect-to-https", + }, + Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "CachePolicyId": Object { + "Ref": "StackNextLambdaCacheF214CEF2", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "LambdaFunctionAssociations": Array [ + Object { + "EventType": "origin-request", + "IncludeBody": true, + "LambdaFunctionARN": Object { + "Ref": "StackNextLambdaCurrentVersion21F01F8773780683002d58f6f2d89d25524ed542", + }, + }, + Object { + "EventType": "origin-response", + "LambdaFunctionARN": Object { + "Ref": "StackNextLambdaCurrentVersion21F01F8773780683002d58f6f2d89d25524ed542", + }, + }, + ], + "PathPattern": "_next/data/*", + "TargetOriginId": "StackNextJSDistributionOrigin33202980A", + "ViewerProtocolPolicy": "redirect-to-https", + }, + Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "CachePolicyId": Object { + "Ref": "StackNextStaticsCacheC4615915", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "PathPattern": "_next/*", + "TargetOriginId": "StackNextJSDistributionOrigin4BE563FB7", + "ViewerProtocolPolicy": "redirect-to-https", + }, + Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "CachePolicyId": Object { + "Ref": "StackNextStaticsCacheC4615915", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "PathPattern": "static/*", + "TargetOriginId": "StackNextJSDistributionOrigin5E99C79BE", + "ViewerProtocolPolicy": "redirect-to-https", + }, + Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + "PUT", + "PATCH", + "POST", + "DELETE", + ], + "CachePolicyId": Object { + "Ref": "StackNextLambdaCacheF214CEF2", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "LambdaFunctionAssociations": Array [ + Object { + "EventType": "origin-request", + "IncludeBody": true, + "LambdaFunctionARN": Object { + "Ref": "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", + }, + }, + ], + "PathPattern": "api/*", + "TargetOriginId": "StackNextJSDistributionOrigin6F399DA4B", + "ViewerProtocolPolicy": "redirect-to-https", + }, + ], + "DefaultCacheBehavior": Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "CachePolicyId": Object { + "Ref": "StackNextLambdaCacheF214CEF2", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "LambdaFunctionAssociations": Array [ + Object { + "EventType": "origin-request", + "IncludeBody": true, + "LambdaFunctionARN": Object { + "Ref": "StackNextLambdaCurrentVersion21F01F8773780683002d58f6f2d89d25524ed542", + }, + }, + Object { + "EventType": "origin-response", + "LambdaFunctionARN": Object { + "Ref": "StackNextLambdaCurrentVersion21F01F8773780683002d58f6f2d89d25524ed542", + }, + }, + ], + "TargetOriginId": "StackNextJSDistributionOrigin164EFF789", + "ViewerProtocolPolicy": "redirect-to-https", + }, + "DefaultRootObject": "", + "Enabled": true, + "HttpVersion": "http2", + "IPV6Enabled": true, + "Origins": Array [ + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin164EFF789", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin1S3OriginE5C3C6BA", + }, + ], + ], + }, + }, + }, + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin227291135", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin2S3OriginBE3A92C1", + }, + ], + ], + }, + }, + }, + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin33202980A", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin3S3Origin815895A3", + }, + ], + ], + }, + }, + }, + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin4BE563FB7", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin4S3Origin25CF633C", + }, + ], + ], + }, + }, + }, + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin5E99C79BE", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin5S3OriginF7CEDF65", + }, + ], + ], + }, + }, + }, + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin6F399DA4B", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin6S3Origin922D99DB", + }, + ], + ], + }, + }, + }, + ], + }, + }, + "Type": "AWS::CloudFront::Distribution", + }, + "StackNextJSDistributionOrigin1S3OriginE5C3C6BA": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin164EFF789", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextJSDistributionOrigin2S3OriginBE3A92C1": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin227291135", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextJSDistributionOrigin3S3Origin815895A3": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin33202980A", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextJSDistributionOrigin4S3Origin25CF633C": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin4BE563FB7", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextJSDistributionOrigin5S3OriginF7CEDF65": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin5E99C79BE", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextJSDistributionOrigin6S3Origin922D99DB": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin6F399DA4B", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextLambdaCacheF214CEF2": Object { + "Properties": Object { + "CachePolicyConfig": Object { + "DefaultTTL": 0, + "MaxTTL": 31536000, + "MinTTL": 0, + "Name": Object { + "Fn::Join": Array [ + "", + Array [ + "StackNextLambdaCache86499DCE-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "ParametersInCacheKeyAndForwardedToOrigin": Object { + "CookiesConfig": Object { + "CookieBehavior": "all", + }, + "EnableAcceptEncodingBrotli": true, + "EnableAcceptEncodingGzip": true, + "HeadersConfig": Object { + "HeaderBehavior": "none", + }, + "QueryStringsConfig": Object { + "QueryStringBehavior": "all", + }, + }, + }, + }, + "Type": "AWS::CloudFront::CachePolicy", + }, + "StackNextLambdaCurrentVersion21F01F8773780683002d58f6f2d89d25524ed542": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextLambdaF64DCE99", + }, + }, + "Type": "AWS::Lambda::Version", + "UpdateReplacePolicy": "Delete", + }, + "StackNextLambdaCurrentVersionAliasliveB07D2AA0": Object { + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextLambdaF64DCE99", + }, + "FunctionVersion": Object { + "Fn::GetAtt": Array [ + "StackNextLambdaCurrentVersion21F01F8773780683002d58f6f2d89d25524ed542", + "Version", + ], + }, + "Name": "live", + }, + "Type": "AWS::Lambda::Alias", + }, + "StackNextLambdaF64DCE99": Object { + "DependsOn": Array [ + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", + "StackNextEdgeLambdaRole02C429A6", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters71914bdef255ca79db9aee97ee9ea60217c5bedc4e3db0894cbcb167d3021f7fS3BucketA3F5069F", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters71914bdef255ca79db9aee97ee9ea60217c5bedc4e3db0894cbcb167d3021f7fS3VersionKey833A9D1F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters71914bdef255ca79db9aee97ee9ea60217c5bedc4e3db0894cbcb167d3021f7fS3VersionKey833A9D1F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "Default Lambda@Edge for Next CloudFront distribution", + "Handler": "index.handler", + "Role": Object { + "Fn::GetAtt": Array [ + "StackNextEdgeLambdaRole02C429A6", + "Arn", + ], + }, + "Runtime": "nodejs12.x", + }, + "Type": "AWS::Lambda::Function", + }, + "StackNextLambdaLogRetention4645F5D1": Object { + "Properties": Object { + "LogGroupName": Object { + "Fn::Join": Array [ + "", + Array [ + "/aws/lambda/", + Object { + "Ref": "StackNextLambdaF64DCE99", + }, + ], + ], + }, + "RetentionInDays": 3, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", + "Arn", + ], + }, + }, + "Type": "Custom::LogRetention", + }, + "StackNextStaticsCacheC4615915": Object { + "Properties": Object { + "CachePolicyConfig": Object { + "DefaultTTL": 2592000, + "MaxTTL": 2592000, + "MinTTL": 2592000, + "Name": Object { + "Fn::Join": Array [ + "", + Array [ + "StackNextStaticsCacheBB90E053-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "ParametersInCacheKeyAndForwardedToOrigin": Object { + "CookiesConfig": Object { + "CookieBehavior": "none", + }, + "EnableAcceptEncodingBrotli": true, + "EnableAcceptEncodingGzip": true, + "HeadersConfig": Object { + "HeaderBehavior": "none", + }, + "QueryStringsConfig": Object { + "QueryStringBehavior": "none", + }, + }, + }, + }, + "Type": "AWS::CloudFront::CachePolicy", + }, + "StackPublicAssets8F0F4FE8": Object { + "DeletionPolicy": "Delete", + "Type": "AWS::S3::Bucket", + "UpdateReplacePolicy": "Delete", + }, + "StackPublicAssetsAutoDeleteObjectsCustomResource55D84E66": Object { + "DeletionPolicy": "Delete", + "DependsOn": Array [ + "StackPublicAssetsPolicy113B95FD", + ], + "Properties": Object { + "BucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "Arn", + ], + }, + }, + "Type": "Custom::S3AutoDeleteObjects", + "UpdateReplacePolicy": "Delete", + }, + "StackPublicAssetsPolicy113B95FD": Object { + "Properties": Object { + "Bucket": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": "*", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + "s3:DeleteObject*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn", + ], + }, + }, + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin1S3OriginE5C3C6BA", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin2S3OriginBE3A92C1", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin3S3Origin815895A3", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin4S3Origin25CF633C", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin5S3OriginF7CEDF65", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin6S3Origin922D99DB", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::S3::BucketPolicy", + }, + "StackRegenerationFunctionCAB79AA6": Object { + "DependsOn": Array [ + "StackRegenerationFunctionServiceRoleDefaultPolicyC7FB67BD", + "StackRegenerationFunctionServiceRole15AFC289", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3BucketF4667C02", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3VersionKeyC4818F9D", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters0369075cfb8d0347e778b12f9ff9c889fe7e861793fc2e9a74170a6991fd2313S3VersionKeyC4818F9D", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Handler": "index.handler", + "Role": Object { + "Fn::GetAtt": Array [ + "StackRegenerationFunctionServiceRole15AFC289", + "Arn", + ], + }, + "Runtime": "nodejs14.x", + "Timeout": 30, + }, + "Type": "AWS::Lambda::Function", + }, + "StackRegenerationFunctionServiceRole15AFC289": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "lambda.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "ManagedPolicyArns": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + ], + ], + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "StackRegenerationFunctionServiceRoleDefaultPolicyC7FB67BD": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "sqs:ReceiveMessage", + "sqs:ChangeMessageVisibility", + "sqs:GetQueueUrl", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "StackRegenerationQueue2F4428B8", + "Arn", + ], + }, + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + "s3:DeleteObject*", + "s3:PutObject*", + "s3:Abort*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "StackRegenerationFunctionServiceRoleDefaultPolicyC7FB67BD", + "Roles": Array [ + Object { + "Ref": "StackRegenerationFunctionServiceRole15AFC289", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "StackRegenerationFunctionSqsEventSourceStackRegenerationQueueA0F3D7FC227F9DB2": Object { + "Properties": Object { + "EventSourceArn": Object { + "Fn::GetAtt": Array [ + "StackRegenerationQueue2F4428B8", + "Arn", + ], + }, + "FunctionName": Object { + "Ref": "StackRegenerationFunctionCAB79AA6", + }, + }, + "Type": "AWS::Lambda::EventSourceMapping", + }, + "StackRegenerationQueue2F4428B8": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "FifoQueue": true, + "QueueName": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + ".fifo", + ], + ], + }, + }, + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + }, + }, +} +`; + +exports[`CDK Construct Snapshots creates next app with no ISR page 1`] = ` +Object { + "Parameters": Object { + "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748ArtifactHashE2D1074E": Object { + "Description": "Artifact hash for asset \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", + "Type": "String", + }, + "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3Bucket1B468E6A": Object { + "Description": "S3 bucket for asset \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", + "Type": "String", + }, + "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3VersionKeyA7CF013C": Object { + "Description": "S3 key for asset version \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", + "Type": "String", + }, + "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392ArtifactHashE56CD69A": Object { + "Description": "Artifact hash for asset \\"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\\"", + "Type": "String", + }, + "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F": Object { + "Description": "S3 bucket for asset \\"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\\"", + "Type": "String", + }, + "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626": Object { + "Description": "S3 key for asset version \\"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\\"", + "Type": "String", + }, + "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24ArtifactHashBA91B77F": Object { + "Description": "Artifact hash for asset \\"67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24\\"", + "Type": "String", + }, + "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3Bucket4D46ABB5": Object { + "Description": "S3 bucket for asset \\"67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24\\"", + "Type": "String", + }, + "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3VersionKeyB0F28861": Object { + "Description": "S3 key for asset version \\"67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24\\"", + "Type": "String", + }, + "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3ArtifactHash62C7B2C0": Object { + "Description": "Artifact hash for asset \\"75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3\\"", + "Type": "String", + }, + "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5": Object { + "Description": "S3 bucket for asset \\"75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3\\"", + "Type": "String", + }, + "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3VersionKeyDC7D66D8": Object { + "Description": "S3 key for asset version \\"75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3\\"", + "Type": "String", + }, + "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1ArtifactHash78F94626": Object { + "Description": "Artifact hash for asset \\"7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1\\"", + "Type": "String", + }, + "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2": Object { + "Description": "S3 bucket for asset \\"7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1\\"", + "Type": "String", + }, + "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8": Object { + "Description": "S3 key for asset version \\"7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1\\"", + "Type": "String", + }, + "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6ArtifactHash5DD72BC7": Object { + "Description": "Artifact hash for asset \\"7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6\\"", + "Type": "String", + }, + "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3Bucket5C3E4ABA": Object { + "Description": "S3 bucket for asset \\"7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6\\"", + "Type": "String", + }, + "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3VersionKey96DFF457": Object { + "Description": "S3 key for asset version \\"7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6\\"", + "Type": "String", + }, + "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dArtifactHash2788C1DC": Object { + "Description": "Artifact hash for asset \\"aecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61d\\"", + "Type": "String", + }, + "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC": Object { + "Description": "S3 bucket for asset \\"aecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61d\\"", + "Type": "String", + }, + "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3VersionKey99B046A5": Object { + "Description": "S3 key for asset version \\"aecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61d\\"", + "Type": "String", + }, + "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389ArtifactHashA466D3F1": Object { + "Description": "Artifact hash for asset \\"bc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389\\"", + "Type": "String", + }, + "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633": Object { + "Description": "S3 bucket for asset \\"bc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389\\"", + "Type": "String", + }, + "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3VersionKey8DBC717C": Object { + "Description": "S3 key for asset version \\"bc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389\\"", + "Type": "String", + }, + "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfArtifactHash85F58E48": Object { + "Description": "Artifact hash for asset \\"c24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cf\\"", + "Type": "String", + }, + "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3Bucket55EFA30C": Object { + "Description": "S3 bucket for asset \\"c24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cf\\"", + "Type": "String", + }, + "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3VersionKey60329B70": Object { + "Description": "S3 key for asset version \\"c24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cf\\"", + "Type": "String", + }, + "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bArtifactHashC079BB46": Object { + "Description": "Artifact hash for asset \\"dab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6b\\"", + "Type": "String", + }, + "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bS3BucketB5EDC333": Object { + "Description": "S3 bucket for asset \\"dab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6b\\"", + "Type": "String", + }, + "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bS3VersionKeyAB92E59F": Object { + "Description": "S3 key for asset version \\"dab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6b\\"", + "Type": "String", + }, + "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68ArtifactHashD9A515C3": Object { + "Description": "Artifact hash for asset \\"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\\"", + "Type": "String", + }, + "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7": Object { + "Description": "S3 bucket for asset \\"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\\"", + "Type": "String", + }, + "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F": Object { + "Description": "S3 key for asset version \\"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\\"", + "Type": "String", + }, + }, + "Resources": Object { + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": Object { + "DependsOn": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3Bucket55EFA30C", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3VersionKey60329B70", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3VersionKey60329B70", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Handler": "index.handler", + "Layers": Array [ + Object { + "Ref": "StackAssetDeploymentBuildIDAwsCliLayer055D8C68", + }, + ], + "Role": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", + "Arn", + ], + }, + "Runtime": "python3.6", + "Timeout": 900, + }, + "Type": "AWS::Lambda::Function", + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "lambda.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "ManagedPolicyArns": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + ], + ], + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC", + }, + ], + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC", + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + "s3:DeleteObject*", + "s3:PutObject*", + "s3:Abort*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "cloudfront:GetInvalidation", + "cloudfront:CreateInvalidation", + ], + "Effect": "Allow", + "Resource": "*", + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", + }, + ], + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633", + }, + ], + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633", + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5", + }, + ], + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":s3:::", + Object { + "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5", + }, + "/*", + ], + ], + }, + ], + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "Roles": Array [ + Object { + "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": Object { + "DependsOn": Array [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": Object { + "Fn::Join": Array [ + "", + Array [ + "Lambda function for auto-deleting objects in ", + Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + " S3 bucket.", + ], + ], + }, + "Handler": "__entrypoint__.handler", + "MemorySize": 128, + "Role": Object { + "Fn::GetAtt": Array [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn", + ], + }, + "Runtime": "nodejs12.x", + "Timeout": 900, + }, + "Type": "AWS::Lambda::Function", + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "lambda.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "ManagedPolicyArns": Array [ + Object { + "Fn::Sub": "arn:\${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": Object { + "DependsOn": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB", + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3Bucket4D46ABB5", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3VersionKeyB0F28861", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3VersionKeyB0F28861", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Handler": "index.handler", + "Role": Object { + "Fn::GetAtt": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", + "Arn", + ], + }, + "Runtime": "nodejs12.x", + }, + "Type": "AWS::Lambda::Function", + }, + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "lambda.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "ManagedPolicyArns": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + ], + ], + }, + ], + }, + "Type": "AWS::IAM::Role", + }, + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "logs:PutRetentionPolicy", + "logs:DeleteRetentionPolicy", + ], + "Effect": "Allow", + "Resource": "*", + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB", + "Roles": Array [ + Object { + "Ref": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "StackAssetDeploymentBuildIDAwsCliLayer055D8C68": Object { + "Properties": Object { + "Content": Object { + "S3Bucket": Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "/opt/awscli/aws", + }, + "Type": "AWS::Lambda::LayerVersion", + }, + "StackAssetDeploymentBuildIDCustomResourceC7EB618F": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "DestinationBucketKeyPrefix": "/BUILD_ID", + "DestinationBucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "DistributionId": Object { + "Ref": "StackNextJSDistribution03A07E47", + }, + "DistributionPaths": Array [ + "/about", + "/", + "/404", + "/users/*", + "/users", + "/_error", + ], + "Prune": true, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn", + ], + }, + "SourceBucketNames": Array [ + Object { + "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC", + }, + ], + "SourceObjectKeys": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3VersionKey99B046A5", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3VersionKey99B046A5", + }, + ], + }, + ], + }, + ], + ], + }, + ], + }, + "Type": "Custom::CDKBucketDeployment", + "UpdateReplacePolicy": "Delete", + }, + "StackAssetDeploymentnextDataAwsCliLayerC32F288B": Object { + "Properties": Object { + "Content": Object { + "S3Bucket": Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "/opt/awscli/aws", + }, + "Type": "AWS::Lambda::LayerVersion", + }, + "StackAssetDeploymentnextDataCustomResource445B0AAE": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "DestinationBucketKeyPrefix": "_next/data", + "DestinationBucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "Prune": true, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn", + ], + }, + "SourceBucketNames": Array [ + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", + }, + ], + "SourceObjectKeys": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", + }, + ], + }, + ], + }, + ], + ], + }, + ], + "SystemMetadata": Object { + "cache-control": "public, max-age=0, s-maxage=2678400, must-revalidate", + }, + }, + "Type": "Custom::CDKBucketDeployment", + "UpdateReplacePolicy": "Delete", + }, + "StackAssetDeploymentnextStaticAwsCliLayerD5D627D4": Object { + "Properties": Object { + "Content": Object { + "S3Bucket": Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "/opt/awscli/aws", + }, + "Type": "AWS::Lambda::LayerVersion", + }, + "StackAssetDeploymentnextStaticCustomResource9DCCD3BE": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "DestinationBucketKeyPrefix": "_next/static", + "DestinationBucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "Prune": true, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn", + ], + }, + "SourceBucketNames": Array [ + Object { + "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5", + }, + ], + "SourceObjectKeys": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3VersionKeyDC7D66D8", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3VersionKeyDC7D66D8", + }, + ], + }, + ], + }, + ], + ], + }, + ], + "SystemMetadata": Object { + "cache-control": "public, max-age=31536000, immutable", + }, + }, + "Type": "Custom::CDKBucketDeployment", + "UpdateReplacePolicy": "Delete", + }, + "StackAssetDeploymentpublicFilesAwsCliLayerB1EEF9A7": Object { + "Properties": Object { + "Content": Object { + "S3Bucket": Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "/opt/awscli/aws", + }, + "Type": "AWS::Lambda::LayerVersion", + }, + "StackAssetDeploymentpublicFilesCustomResourceC1AC84CF": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "DestinationBucketKeyPrefix": "public", + "DestinationBucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "Prune": true, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn", + ], + }, + "SourceBucketNames": Array [ + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", + }, + ], + "SourceObjectKeys": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", + }, + ], + }, + ], + }, + ], + ], + }, + ], + "SystemMetadata": Object { + "cache-control": "public, max-age=31536000, must-revalidate", + }, + }, + "Type": "Custom::CDKBucketDeployment", + "UpdateReplacePolicy": "Delete", + }, + "StackAssetDeploymentstaticPagesAwsCliLayerB0258334": Object { + "Properties": Object { + "Content": Object { + "S3Bucket": Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "/opt/awscli/aws", + }, + "Type": "AWS::Lambda::LayerVersion", + }, + "StackAssetDeploymentstaticPagesCustomResource9BDB9A03": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "DestinationBucketKeyPrefix": "static-pages", + "DestinationBucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "Prune": true, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn", + ], + }, + "SourceBucketNames": Array [ + Object { + "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633", + }, + ], + "SourceObjectKeys": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3VersionKey8DBC717C", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3VersionKey8DBC717C", + }, + ], + }, + ], + }, + ], + ], + }, + ], + "SystemMetadata": Object { + "cache-control": "public, max-age=0, s-maxage=2678400, must-revalidate", + }, + }, + "Type": "Custom::CDKBucketDeployment", + "UpdateReplacePolicy": "Delete", + }, + "StackImageOriginRequest30DFB17C": Object { + "Properties": Object { + "OriginRequestPolicyConfig": Object { + "CookiesConfig": Object { + "CookieBehavior": "none", + }, + "HeadersConfig": Object { + "HeaderBehavior": "none", + }, + "Name": "StackImageOriginRequestF06FCDA0", + "QueryStringsConfig": Object { + "QueryStringBehavior": "all", + }, + }, + }, + "Type": "AWS::CloudFront::OriginRequestPolicy", + }, + "StackNextApiLambda8BE78FBE": Object { + "DependsOn": Array [ + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", + "StackNextEdgeLambdaRole02C429A6", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3Bucket1B468E6A", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3VersionKeyA7CF013C", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3VersionKeyA7CF013C", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "Default Lambda@Edge for Next API CloudFront distribution", + "Handler": "index.handler", + "Role": Object { + "Fn::GetAtt": Array [ + "StackNextEdgeLambdaRole02C429A6", + "Arn", + ], + }, + "Runtime": "nodejs12.x", + }, + "Type": "AWS::Lambda::Function", + }, + "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextApiLambda8BE78FBE", + }, + }, + "Type": "AWS::Lambda::Version", + "UpdateReplacePolicy": "Delete", + }, + "StackNextApiLambdaCurrentVersionAliaslive8AA37EB3": Object { + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextApiLambda8BE78FBE", + }, + "FunctionVersion": Object { + "Fn::GetAtt": Array [ + "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", + "Version", + ], + }, + "Name": "live", + }, + "Type": "AWS::Lambda::Alias", + }, + "StackNextApiLambdaCurrentVersionEventInvokeConfig473B707A": Object { + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextApiLambda8BE78FBE", + }, + "MaximumRetryAttempts": 1, + "Qualifier": Object { + "Fn::GetAtt": Array [ + "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", + "Version", + ], + }, + }, + "Type": "AWS::Lambda::EventInvokeConfig", + }, + "StackNextApiLambdaLogRetention2569EAED": Object { + "Properties": Object { + "LogGroupName": Object { + "Fn::Join": Array [ + "", + Array [ + "/aws/lambda/", + Object { + "Ref": "StackNextApiLambda8BE78FBE", + }, + ], + ], + }, + "RetentionInDays": 3, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", + "Arn", + ], + }, + }, + "Type": "Custom::LogRetention", + }, + "StackNextEdgeLambdaRole02C429A6": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": Array [ + "lambda.amazonaws.com", + "edgelambda.amazonaws.com", + ], + }, + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "edgelambda.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "ManagedPolicyArns": Array [ + "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", + ], + }, + "Type": "AWS::IAM::Role", + }, + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + "s3:DeleteObject*", + "s3:PutObject*", + "s3:Abort*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", + "Roles": Array [ + Object { + "Ref": "StackNextEdgeLambdaRole02C429A6", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "StackNextImageCache169F453D": Object { + "Properties": Object { + "CachePolicyConfig": Object { + "DefaultTTL": 86400, + "MaxTTL": 31536000, + "MinTTL": 0, + "Name": Object { + "Fn::Join": Array [ + "", + Array [ + "StackNextImageCache78CE64D5-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "ParametersInCacheKeyAndForwardedToOrigin": Object { + "CookiesConfig": Object { + "CookieBehavior": "none", + }, + "EnableAcceptEncodingBrotli": true, + "EnableAcceptEncodingGzip": true, + "HeadersConfig": Object { + "HeaderBehavior": "whitelist", + "Headers": Array [ + "Accept", + ], + }, + "QueryStringsConfig": Object { + "QueryStringBehavior": "all", + }, + }, + }, + }, + "Type": "AWS::CloudFront::CachePolicy", + }, + "StackNextImageLambda2847952D": Object { + "DependsOn": Array [ + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", + "StackNextEdgeLambdaRole02C429A6", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3Bucket5C3E4ABA", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3VersionKey96DFF457", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3VersionKey96DFF457", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "Default Lambda@Edge for Next Image CloudFront distribution", + "Handler": "index.handler", + "Role": Object { + "Fn::GetAtt": Array [ + "StackNextEdgeLambdaRole02C429A6", + "Arn", + ], + }, + "Runtime": "nodejs12.x", + }, + "Type": "AWS::Lambda::Function", + }, + "StackNextImageLambdaCurrentVersionAliasliveE4A66187": Object { + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextImageLambda2847952D", + }, + "FunctionVersion": Object { + "Fn::GetAtt": Array [ + "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", + "Version", + ], + }, + "Name": "live", + }, + "Type": "AWS::Lambda::Alias", + }, + "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextImageLambda2847952D", + }, + }, + "Type": "AWS::Lambda::Version", + "UpdateReplacePolicy": "Delete", + }, + "StackNextImageLambdaCurrentVersionEventInvokeConfig3F977EB2": Object { + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextImageLambda2847952D", + }, + "MaximumRetryAttempts": 1, + "Qualifier": Object { + "Fn::GetAtt": Array [ + "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", + "Version", + ], + }, + }, + "Type": "AWS::Lambda::EventInvokeConfig", + }, + "StackNextImageLambdaLogRetentionF781777A": Object { + "Properties": Object { + "LogGroupName": Object { + "Fn::Join": Array [ + "", + Array [ + "/aws/lambda/", + Object { + "Ref": "StackNextImageLambda2847952D", + }, + ], + ], + }, + "RetentionInDays": 3, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", + "Arn", + ], + }, + }, + "Type": "Custom::LogRetention", + }, + "StackNextJSDistribution03A07E47": Object { + "Properties": Object { + "DistributionConfig": Object { + "CacheBehaviors": Array [ + Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + "PUT", + "PATCH", + "POST", + "DELETE", + ], + "CachePolicyId": Object { + "Ref": "StackNextImageCache169F453D", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "LambdaFunctionAssociations": Array [ + Object { + "EventType": "origin-request", + "LambdaFunctionARN": Object { + "Ref": "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", + }, + }, + ], + "OriginRequestPolicyId": Object { + "Ref": "StackImageOriginRequest30DFB17C", + }, + "PathPattern": "_next/image*", + "TargetOriginId": "StackNextJSDistributionOrigin227291135", + "ViewerProtocolPolicy": "redirect-to-https", + }, + Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "CachePolicyId": Object { + "Ref": "StackNextLambdaCacheF214CEF2", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "LambdaFunctionAssociations": Array [ + Object { + "EventType": "origin-request", + "IncludeBody": true, + "LambdaFunctionARN": Object { + "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", + }, + }, + Object { + "EventType": "origin-response", + "LambdaFunctionARN": Object { + "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", + }, + }, + ], + "PathPattern": "_next/data/*", + "TargetOriginId": "StackNextJSDistributionOrigin33202980A", + "ViewerProtocolPolicy": "redirect-to-https", + }, + Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "CachePolicyId": Object { + "Ref": "StackNextStaticsCacheC4615915", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "PathPattern": "_next/*", + "TargetOriginId": "StackNextJSDistributionOrigin4BE563FB7", + "ViewerProtocolPolicy": "redirect-to-https", + }, + Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "CachePolicyId": Object { + "Ref": "StackNextStaticsCacheC4615915", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "PathPattern": "static/*", + "TargetOriginId": "StackNextJSDistributionOrigin5E99C79BE", + "ViewerProtocolPolicy": "redirect-to-https", + }, + Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + "PUT", + "PATCH", + "POST", + "DELETE", + ], + "CachePolicyId": Object { + "Ref": "StackNextLambdaCacheF214CEF2", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "LambdaFunctionAssociations": Array [ + Object { + "EventType": "origin-request", + "IncludeBody": true, + "LambdaFunctionARN": Object { + "Ref": "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", + }, + }, + ], + "PathPattern": "api/*", + "TargetOriginId": "StackNextJSDistributionOrigin6F399DA4B", + "ViewerProtocolPolicy": "redirect-to-https", + }, + ], + "DefaultCacheBehavior": Object { + "AllowedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "CachePolicyId": Object { + "Ref": "StackNextLambdaCacheF214CEF2", + }, + "CachedMethods": Array [ + "GET", + "HEAD", + "OPTIONS", + ], + "Compress": true, + "LambdaFunctionAssociations": Array [ + Object { + "EventType": "origin-request", + "IncludeBody": true, + "LambdaFunctionARN": Object { + "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", + }, + }, + Object { + "EventType": "origin-response", + "LambdaFunctionARN": Object { + "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", + }, + }, + ], + "TargetOriginId": "StackNextJSDistributionOrigin164EFF789", + "ViewerProtocolPolicy": "redirect-to-https", + }, + "DefaultRootObject": "", + "Enabled": true, + "HttpVersion": "http2", + "IPV6Enabled": true, + "Origins": Array [ + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin164EFF789", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin1S3OriginE5C3C6BA", + }, + ], + ], + }, + }, + }, + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin227291135", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin2S3OriginBE3A92C1", + }, + ], + ], + }, + }, + }, + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin33202980A", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin3S3Origin815895A3", + }, + ], + ], + }, + }, + }, + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin4BE563FB7", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin4S3Origin25CF633C", + }, + ], + ], + }, + }, + }, + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin5E99C79BE", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin5S3OriginF7CEDF65", + }, + ], + ], + }, + }, + }, + Object { + "DomainName": Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "RegionalDomainName", + ], + }, + "Id": "StackNextJSDistributionOrigin6F399DA4B", + "S3OriginConfig": Object { + "OriginAccessIdentity": Object { + "Fn::Join": Array [ + "", + Array [ + "origin-access-identity/cloudfront/", + Object { + "Ref": "StackNextJSDistributionOrigin6S3Origin922D99DB", + }, + ], + ], + }, + }, + }, + ], + }, + }, + "Type": "AWS::CloudFront::Distribution", + }, + "StackNextJSDistributionOrigin1S3OriginE5C3C6BA": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin164EFF789", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextJSDistributionOrigin2S3OriginBE3A92C1": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin227291135", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextJSDistributionOrigin3S3Origin815895A3": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin33202980A", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextJSDistributionOrigin4S3Origin25CF633C": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin4BE563FB7", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextJSDistributionOrigin5S3OriginF7CEDF65": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin5E99C79BE", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextJSDistributionOrigin6S3Origin922D99DB": Object { + "Properties": Object { + "CloudFrontOriginAccessIdentityConfig": Object { + "Comment": "Identity for StackNextJSDistributionOrigin6F399DA4B", + }, + }, + "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", + }, + "StackNextLambdaCacheF214CEF2": Object { + "Properties": Object { + "CachePolicyConfig": Object { + "DefaultTTL": 0, + "MaxTTL": 31536000, + "MinTTL": 0, + "Name": Object { + "Fn::Join": Array [ + "", + Array [ + "StackNextLambdaCache86499DCE-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "ParametersInCacheKeyAndForwardedToOrigin": Object { + "CookiesConfig": Object { + "CookieBehavior": "all", + }, + "EnableAcceptEncodingBrotli": true, + "EnableAcceptEncodingGzip": true, + "HeadersConfig": Object { + "HeaderBehavior": "none", + }, + "QueryStringsConfig": Object { + "QueryStringBehavior": "all", + }, + }, + }, + }, + "Type": "AWS::CloudFront::CachePolicy", + }, + "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05": Object { + "DeletionPolicy": "Delete", + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextLambdaF64DCE99", + }, + }, + "Type": "AWS::Lambda::Version", + "UpdateReplacePolicy": "Delete", + }, + "StackNextLambdaCurrentVersionAliasliveB07D2AA0": Object { + "Properties": Object { + "FunctionName": Object { + "Ref": "StackNextLambdaF64DCE99", + }, + "FunctionVersion": Object { + "Fn::GetAtt": Array [ + "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", + "Version", + ], + }, + "Name": "live", + }, + "Type": "AWS::Lambda::Alias", + }, + "StackNextLambdaF64DCE99": Object { + "DependsOn": Array [ + "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", + "StackNextEdgeLambdaRole02C429A6", + ], + "Properties": Object { + "Code": Object { + "S3Bucket": Object { + "Ref": "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bS3BucketB5EDC333", + }, + "S3Key": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::Select": Array [ + 0, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bS3VersionKeyAB92E59F", + }, + ], + }, + ], + }, + Object { + "Fn::Select": Array [ + 1, + Object { + "Fn::Split": Array [ + "||", + Object { + "Ref": "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bS3VersionKeyAB92E59F", + }, + ], + }, + ], + }, + ], + ], + }, + }, + "Description": "Default Lambda@Edge for Next CloudFront distribution", + "Handler": "index.handler", + "Role": Object { + "Fn::GetAtt": Array [ + "StackNextEdgeLambdaRole02C429A6", + "Arn", + ], + }, + "Runtime": "nodejs12.x", + }, + "Type": "AWS::Lambda::Function", + }, + "StackNextLambdaLogRetention4645F5D1": Object { + "Properties": Object { + "LogGroupName": Object { + "Fn::Join": Array [ + "", + Array [ + "/aws/lambda/", + Object { + "Ref": "StackNextLambdaF64DCE99", + }, + ], + ], + }, + "RetentionInDays": 3, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", + "Arn", + ], + }, + }, + "Type": "Custom::LogRetention", + }, + "StackNextStaticsCacheC4615915": Object { + "Properties": Object { + "CachePolicyConfig": Object { + "DefaultTTL": 2592000, + "MaxTTL": 2592000, + "MinTTL": 2592000, + "Name": Object { + "Fn::Join": Array [ + "", + Array [ + "StackNextStaticsCacheBB90E053-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "ParametersInCacheKeyAndForwardedToOrigin": Object { + "CookiesConfig": Object { + "CookieBehavior": "none", + }, + "EnableAcceptEncodingBrotli": true, + "EnableAcceptEncodingGzip": true, + "HeadersConfig": Object { + "HeaderBehavior": "none", + }, + "QueryStringsConfig": Object { + "QueryStringBehavior": "none", + }, + }, + }, + }, + "Type": "AWS::CloudFront::CachePolicy", + }, + "StackPublicAssets8F0F4FE8": Object { + "DeletionPolicy": "Delete", + "Type": "AWS::S3::Bucket", + "UpdateReplacePolicy": "Delete", + }, + "StackPublicAssetsAutoDeleteObjectsCustomResource55D84E66": Object { + "DeletionPolicy": "Delete", + "DependsOn": Array [ + "StackPublicAssetsPolicy113B95FD", + ], + "Properties": Object { + "BucketName": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "ServiceToken": Object { + "Fn::GetAtt": Array [ + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "Arn", + ], + }, + }, + "Type": "Custom::S3AutoDeleteObjects", + "UpdateReplacePolicy": "Delete", + }, + "StackPublicAssetsPolicy113B95FD": Object { + "Properties": Object { + "Bucket": Object { + "Ref": "StackPublicAssets8F0F4FE8", + }, + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": "*", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + "s3:DeleteObject*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::GetAtt": Array [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn", + ], + }, + }, + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin1S3OriginE5C3C6BA", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin2S3OriginBE3A92C1", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin3S3Origin815895A3", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin4S3Origin25CF633C", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin5S3OriginF7CEDF65", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + Object { + "Action": "s3:GetObject", + "Effect": "Allow", + "Principal": Object { + "CanonicalUser": Object { + "Fn::GetAtt": Array [ + "StackNextJSDistributionOrigin6S3Origin922D99DB", + "S3CanonicalUserId", + ], + }, + }, + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "StackPublicAssets8F0F4FE8", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::S3::BucketPolicy", }, }, } diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/construct.test.ts b/packages/serverless-components/nextjs-cdk-construct/__tests__/construct.test.ts index bb57b54db2..e85ede5495 100644 --- a/packages/serverless-components/nextjs-cdk-construct/__tests__/construct.test.ts +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/construct.test.ts @@ -12,7 +12,7 @@ describe("CDK Construct", () => { it("passes correct lambda options to underlying lambdas when single value passed", () => { const stack = new Stack(); new NextJSLambdaEdge(stack, "Stack", { - serverlessBuildOutDir: path.join(__dirname, "fixtures/next-boilerplate"), + serverlessBuildOutDir: path.join(__dirname, "fixtures/app"), runtime: Runtime.NODEJS_10_X, name: { defaultLambda: "NextDefaultLambda", @@ -39,7 +39,7 @@ describe("CDK Construct", () => { it("passes correct lambda options to underlying lambdas when object passed", () => { const stack = new Stack(); new NextJSLambdaEdge(stack, "Stack", { - serverlessBuildOutDir: path.join(__dirname, "fixtures/next-boilerplate"), + serverlessBuildOutDir: path.join(__dirname, "fixtures/app"), name: { defaultLambda: "NextDefaultLambda", apiLambda: "NextApiLambda", @@ -70,7 +70,7 @@ describe("CDK Construct", () => { it("lambda cache policy passes correct cookies to origin when specified", () => { const stack = new Stack(); new NextJSLambdaEdge(stack, "Stack", { - serverlessBuildOutDir: path.join(__dirname, "fixtures/next-boilerplate"), + serverlessBuildOutDir: path.join(__dirname, "fixtures/app"), whiteListedCookies: ["my-cookie"], cachePolicyName: { lambdaCache: "NextLambdaCache" @@ -97,7 +97,7 @@ describe("CDK Construct", () => { it("lambda cache policy passes all cookies to origin when not specified", () => { const stack = new Stack(); new NextJSLambdaEdge(stack, "Stack", { - serverlessBuildOutDir: path.join(__dirname, "fixtures/next-boilerplate"), + serverlessBuildOutDir: path.join(__dirname, "fixtures/app"), cachePolicyName: { lambdaCache: "NextLambdaCache" } @@ -132,7 +132,7 @@ describe("CDK Construct", () => { zoneName: domainName }); new NextJSLambdaEdge(stack, "Stack", { - serverlessBuildOutDir: path.join(__dirname, "fixtures/next-boilerplate"), + serverlessBuildOutDir: path.join(__dirname, "fixtures/app"), domain: { certificate, domainNames: [domainName], @@ -177,13 +177,33 @@ describe("CDK Construct", () => { it("does not create Route53 records when no domain specified", () => { const stack = new Stack(); new NextJSLambdaEdge(stack, "Stack", { - serverlessBuildOutDir: path.join(__dirname, "fixtures/next-boilerplate") + serverlessBuildOutDir: path.join(__dirname, "fixtures/app") }); const synthesizedStack = SynthUtils.toCloudFormation(stack); expect(synthesizedStack).toCountResources("AWS::Route53::RecordSet", 0); }); + it("does not create an SQS queue if the app has no ISR pages", () => { + const stack = new Stack(); + new NextJSLambdaEdge(stack, "Stack", { + serverlessBuildOutDir: path.join(__dirname, "fixtures/app") + }); + + const synthesizedStack = SynthUtils.toCloudFormation(stack); + expect(synthesizedStack).toCountResources("AWS::SQS::Queue", 0); + }); + + it("does create an SQS queue if the app has ISR pages", () => { + const stack = new Stack(); + new NextJSLambdaEdge(stack, "Stack", { + serverlessBuildOutDir: path.join(__dirname, "fixtures/app-with-isr") + }); + + const synthesizedStack = SynthUtils.toCloudFormation(stack); + expect(synthesizedStack).toCountResources("AWS::SQS::Queue", 1); + }); + it("configure distribution, but not Route53 records, with custom domain outside AWS", () => { const stack = new Stack(); const certificate = Certificate.fromCertificateArn( @@ -193,7 +213,7 @@ describe("CDK Construct", () => { ); const domainName = "domain.com"; new NextJSLambdaEdge(stack, "Stack", { - serverlessBuildOutDir: path.join(__dirname, "fixtures/next-boilerplate"), + serverlessBuildOutDir: path.join(__dirname, "fixtures/app"), domain: { certificate, domainNames: [domainName] @@ -232,7 +252,7 @@ describe("CDK Construct", () => { ); new NextJSLambdaEdge(stack, "Stack", { - serverlessBuildOutDir: path.join(__dirname, "fixtures/next-boilerplate"), + serverlessBuildOutDir: path.join(__dirname, "fixtures/app"), runtime: Runtime.NODEJS_10_X, defaultBehavior: { edgeLambdas: [ diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/api-lambda/index.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/api-lambda/index.js similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/api-lambda/index.js rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/api-lambda/index.js diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/api-lambda/manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/api-lambda/manifest.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/api-lambda/manifest.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/api-lambda/manifest.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/api-lambda/pages/api/users.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/api-lambda/pages/api/users.js similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/api-lambda/pages/api/users.js rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/api-lambda/pages/api/users.js diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/api-lambda/routes-manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/api-lambda/routes-manifest.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/api-lambda/routes-manifest.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/api-lambda/routes-manifest.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/assets/BUILD_ID b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/assets/BUILD_ID similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/assets/BUILD_ID rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/assets/BUILD_ID diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/assets/_next/data/stub.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/assets/_next/data/stub.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/assets/_next/data/stub.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/assets/_next/data/stub.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/assets/_next/static/stub.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/assets/_next/static/stub.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/assets/_next/static/stub.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/assets/_next/static/stub.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/assets/public/stub.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/assets/public/stub.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/assets/public/stub.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/assets/public/stub.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/assets/static-pages/stub.html b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/assets/static-pages/stub.html similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/assets/static-pages/stub.html rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/assets/static-pages/stub.html diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/default-lambda/index.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/default-lambda/index.js similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/default-lambda/index.js rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/default-lambda/index.js diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/default-lambda/manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/default-lambda/manifest.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/default-lambda/manifest.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/default-lambda/manifest.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/default-lambda/prerender-manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/default-lambda/prerender-manifest.json new file mode 100644 index 0000000000..6683c87337 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/default-lambda/prerender-manifest.json @@ -0,0 +1,44 @@ +{ + "version": 2, + "routes": { + "/users": { + "initialRevalidateSeconds": 10, + "srcRoute": null, + "dataRoute": "/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users.json" + }, + "/users/101": { + "initialRevalidateSeconds": 10, + "srcRoute": "/users/[id]", + "dataRoute": "/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/101.json" + }, + "/users/102": { + "initialRevalidateSeconds": 10, + "srcRoute": "/users/[id]", + "dataRoute": "/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/102.json" + }, + "/users/103": { + "initialRevalidateSeconds": 10, + "srcRoute": "/users/[id]", + "dataRoute": "/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/103.json" + }, + "/users/104": { + "initialRevalidateSeconds": 10, + "srcRoute": "/users/[id]", + "dataRoute": "/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/104.json" + } + }, + "dynamicRoutes": { + "/users/[id]": { + "routeRegex": "^/users/([^/]+?)(?:/)?$", + "dataRoute": "/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/[id].json", + "fallback": false, + "dataRouteRegex": "^/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/([^/]+?)\\.json$" + } + }, + "notFoundRoutes": [], + "preview": { + "previewModeId": "64a40f77826dd9cb91c1f640436433dd", + "previewModeSigningKey": "b362d55f91531d2c2a13bff0a008e47b4954b90ec8110e3607b6f810b174f8d1", + "previewModeEncryptionKey": "31bfd880a98a525f77d3edb3d7cc184b9ef10297f5b7db77d0b9a75057c84733" + } +} diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/default-lambda/routes-manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/default-lambda/routes-manifest.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/default-lambda/routes-manifest.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/default-lambda/routes-manifest.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/image-lambda/images-manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/image-lambda/images-manifest.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/image-lambda/images-manifest.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/image-lambda/images-manifest.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/image-lambda/index.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/image-lambda/index.js similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/image-lambda/index.js rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/image-lambda/index.js diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/image-lambda/manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/image-lambda/manifest.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/image-lambda/manifest.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/image-lambda/manifest.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/image-lambda/routes-manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/image-lambda/routes-manifest.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/image-lambda/routes-manifest.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/image-lambda/routes-manifest.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/regeneration-lambda/index.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/regeneration-lambda/index.js similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/regeneration-lambda/index.js rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app-with-isr/regeneration-lambda/index.js diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/index.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/index.js new file mode 100644 index 0000000000..a4da533215 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/index.js @@ -0,0 +1,3 @@ +exports.handler = async () => ({ + statusCode: 200 +}); diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/manifest.json new file mode 100644 index 0000000000..64443e7037 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/manifest.json @@ -0,0 +1,10 @@ +{ + "apis": { + "dynamic": {}, + "nonDynamic": { + "/api/users": "pages/api/users.js" + } + }, + "domainRedirects": {}, + "enableHTTPCompression": false +} diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/pages/api/users.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/pages/api/users.js new file mode 100644 index 0000000000..a4da533215 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/pages/api/users.js @@ -0,0 +1,3 @@ +exports.handler = async () => ({ + statusCode: 200 +}); diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/routes-manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/routes-manifest.json new file mode 100644 index 0000000000..1c38fb2ec7 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/api-lambda/routes-manifest.json @@ -0,0 +1,28 @@ +{ + "version": 3, + "pages404": true, + "basePath": "", + "redirects": [], + "rewrites": [], + "headers": [], + "dynamicRoutes": [ + { + "page": "/users/[id]", + "regex": "^/users/([^/]+?)(?:/)?$", + "routeKeys": { "id": "id" }, + "namedRegex": "^/users/(?[^/]+?)(?:/)?$" + } + ], + "dataRoutes": [ + { + "page": "/users", + "dataRouteRegex": "^/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users.json$" + }, + { + "page": "/users/[id]", + "routeKeys": { "id": "id" }, + "dataRouteRegex": "^/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/([^/]+?)\\.json$", + "namedDataRouteRegex": "^/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/(?[^/]+?)\\.json$" + } + ] +} diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/BUILD_ID b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/BUILD_ID new file mode 100644 index 0000000000..f24873cd5f --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/BUILD_ID @@ -0,0 +1 @@ +IOjzqKr7ylEZVL7Xy7FMd \ No newline at end of file diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/_next/data/stub.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/_next/data/stub.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/_next/static/stub.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/_next/static/stub.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/_next/static/stub.json @@ -0,0 +1 @@ +{} diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/public/stub.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/public/stub.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/static-pages/stub.html b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/static-pages/stub.html new file mode 100644 index 0000000000..bed791c441 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/assets/static-pages/stub.html @@ -0,0 +1,11 @@ + + + + + + Stub + + +

Stub

+ + diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/index.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/index.js new file mode 100644 index 0000000000..a4da533215 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/index.js @@ -0,0 +1,3 @@ +exports.handler = async () => ({ + statusCode: 200 +}); diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/manifest.json new file mode 100644 index 0000000000..3dc6a31aa9 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/manifest.json @@ -0,0 +1,32 @@ +{ + "buildId": "IOjzqKr7ylEZVL7Xy7FMd", + "logLambdaExecutionTimes": true, + "pages": { + "ssr": { + "dynamic": { + "/users/:id": { + "file": "pages/users/[id].js", + "regex": "^\\/users(?:\\/([^\\/#\\?]+?))[\\/#\\?]?$" + } + }, + "nonDynamic": { + "/users": "pages/users.js", + "/_error": "pages/_error.js" + } + }, + "html": { + "dynamic": {}, + "nonDynamic": { + "/about": "pages/about.html", + "/": "pages/index.html", + "/404": "pages/404.html" + } + } + }, + "publicFiles": { + "/planes.jpg": "planes.jpg" + }, + "trailingSlash": false, + "domainRedirects": {}, + "enableHTTPCompression": false +} diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/default-lambda/prerender-manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/prerender-manifest.json similarity index 100% rename from packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/next-boilerplate/default-lambda/prerender-manifest.json rename to packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/prerender-manifest.json diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/routes-manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/routes-manifest.json new file mode 100644 index 0000000000..1c38fb2ec7 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/default-lambda/routes-manifest.json @@ -0,0 +1,28 @@ +{ + "version": 3, + "pages404": true, + "basePath": "", + "redirects": [], + "rewrites": [], + "headers": [], + "dynamicRoutes": [ + { + "page": "/users/[id]", + "regex": "^/users/([^/]+?)(?:/)?$", + "routeKeys": { "id": "id" }, + "namedRegex": "^/users/(?[^/]+?)(?:/)?$" + } + ], + "dataRoutes": [ + { + "page": "/users", + "dataRouteRegex": "^/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users.json$" + }, + { + "page": "/users/[id]", + "routeKeys": { "id": "id" }, + "dataRouteRegex": "^/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/([^/]+?)\\.json$", + "namedDataRouteRegex": "^/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/(?[^/]+?)\\.json$" + } + ] +} diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/images-manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/images-manifest.json new file mode 100644 index 0000000000..9b1a2ac3e7 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/images-manifest.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "images": { + "deviceSizes": [640, 750, 828, 1080, 1200, 1920, 2048, 3840], + "imageSizes": [16, 32, 48, 64, 96, 128, 256, 384], + "path": "/_next/image", + "loader": "default", + "domains": [], + "sizes": [ + 640, + 750, + 828, + 1080, + 1200, + 1920, + 2048, + 3840, + 16, + 32, + 48, + 64, + 96, + 128, + 256, + 384 + ] + } +} diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/index.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/index.js new file mode 100644 index 0000000000..a4da533215 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/index.js @@ -0,0 +1,3 @@ +exports.handler = async () => ({ + statusCode: 200 +}); diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/manifest.json new file mode 100644 index 0000000000..21b66bd721 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/manifest.json @@ -0,0 +1,4 @@ +{ + "domainRedirects": {}, + "enableHTTPCompression": false +} diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/routes-manifest.json b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/routes-manifest.json new file mode 100644 index 0000000000..1c38fb2ec7 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/image-lambda/routes-manifest.json @@ -0,0 +1,28 @@ +{ + "version": 3, + "pages404": true, + "basePath": "", + "redirects": [], + "rewrites": [], + "headers": [], + "dynamicRoutes": [ + { + "page": "/users/[id]", + "regex": "^/users/([^/]+?)(?:/)?$", + "routeKeys": { "id": "id" }, + "namedRegex": "^/users/(?[^/]+?)(?:/)?$" + } + ], + "dataRoutes": [ + { + "page": "/users", + "dataRouteRegex": "^/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users.json$" + }, + { + "page": "/users/[id]", + "routeKeys": { "id": "id" }, + "dataRouteRegex": "^/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/([^/]+?)\\.json$", + "namedDataRouteRegex": "^/_next/data/IOjzqKr7ylEZVL7Xy7FMd/users/(?[^/]+?)\\.json$" + } + ] +} diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/regeneration-lambda/index.js b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/regeneration-lambda/index.js new file mode 100644 index 0000000000..a4da533215 --- /dev/null +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/fixtures/app/regeneration-lambda/index.js @@ -0,0 +1,3 @@ +exports.handler = async () => ({ + statusCode: 200 +}); diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/snapshots.test.ts b/packages/serverless-components/nextjs-cdk-construct/__tests__/snapshots.test.ts index a4b4d1f985..33d3f2d8e0 100644 --- a/packages/serverless-components/nextjs-cdk-construct/__tests__/snapshots.test.ts +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/snapshots.test.ts @@ -4,10 +4,20 @@ import path from "path"; import { NextJSLambdaEdge } from "../src"; describe("CDK Construct Snapshots", () => { - it("creates boilerplate next app", () => { + it("creates next app with no ISR page", () => { const stack = new Stack(); new NextJSLambdaEdge(stack, "Stack", { - serverlessBuildOutDir: path.join(__dirname, "fixtures/next-boilerplate") + serverlessBuildOutDir: path.join(__dirname, "fixtures/app") + }); + + const synthesizedStack = SynthUtils.toCloudFormation(stack); + expect(synthesizedStack).toMatchSnapshot(); + }); + + it("creates next app with ISR pages", () => { + const stack = new Stack(); + new NextJSLambdaEdge(stack, "Stack", { + serverlessBuildOutDir: path.join(__dirname, "fixtures/app-with-isr") }); const synthesizedStack = SynthUtils.toCloudFormation(stack); diff --git a/packages/serverless-components/nextjs-cdk-construct/src/index.ts b/packages/serverless-components/nextjs-cdk-construct/src/index.ts index 80c7ef80d4..7e9bc52c9a 100644 --- a/packages/serverless-components/nextjs-cdk-construct/src/index.ts +++ b/packages/serverless-components/nextjs-cdk-construct/src/index.ts @@ -12,7 +12,8 @@ import { OriginRequestImageHandlerManifest, OriginRequestApiHandlerManifest, OriginRequestDefaultHandlerManifest, - RoutesManifest + RoutesManifest, + PreRenderedManifest } from "@sls-next/lambda-at-edge"; import * as fs from "fs-extra"; import * as path from "path"; @@ -42,6 +43,8 @@ export class NextJSLambdaEdge extends cdk.Construct { private defaultManifest: OriginRequestDefaultHandlerManifest; + private prerenderManifest: PreRenderedManifest; + public distribution: cloudfront.Distribution; public bucket: s3.Bucket; @@ -62,9 +65,9 @@ export class NextJSLambdaEdge extends cdk.Construct { public aRecord?: ARecord; - public regenerationQueue: sqs.Queue; + public regenerationQueue?: sqs.Queue; - public regenerationFunction: lambda.Function; + public regenerationFunction?: lambda.Function; constructor(scope: cdk.Construct, id: string, private props: Props) { super(scope, id); @@ -72,6 +75,7 @@ export class NextJSLambdaEdge extends cdk.Construct { this.routesManifest = this.readRoutesManifest(); this.imageManifest = this.readImageBuildManifest(); this.defaultManifest = this.readDefaultManifest(); + this.prerenderManifest = this.readPrerenderManifest(); this.bucket = new s3.Bucket(this, "PublicAssets", { publicReadAccess: true, @@ -84,31 +88,39 @@ export class NextJSLambdaEdge extends cdk.Construct { ...(props.s3Props || {}) }); - this.regenerationQueue = new sqs.Queue(this, "RegenerationQueue", { - // We call the queue the same name as the bucket so that we can easily - // reference it from within the lambda@edge, given we can't use env vars - // in a lambda@edge - queueName: `${this.bucket.bucketName}.fifo`, - fifo: true, - removalPolicy: cdk.RemovalPolicy.DESTROY - }); - - this.regenerationFunction = new lambda.Function( - this, - "RegenerationFunction", - { - handler: "index.handler", - runtime: lambda.Runtime.NODEJS_14_X, - timeout: Duration.seconds(30), - code: lambda.Code.fromAsset( - path.join(this.props.serverlessBuildOutDir, "regeneration-lambda") - ) - } + const hasISRPages = Object.keys(this.prerenderManifest.routes).some( + (key) => + typeof this.prerenderManifest.routes[key].initialRevalidateSeconds === + "number" ); - this.regenerationFunction.addEventSource( - new lambdaEventSources.SqsEventSource(this.regenerationQueue) - ); + if (hasISRPages) { + this.regenerationQueue = new sqs.Queue(this, "RegenerationQueue", { + // We call the queue the same name as the bucket so that we can easily + // reference it from within the lambda@edge, given we can't use env vars + // in a lambda@edge + queueName: `${this.bucket.bucketName}.fifo`, + fifo: true, + removalPolicy: cdk.RemovalPolicy.DESTROY + }); + + this.regenerationFunction = new lambda.Function( + this, + "RegenerationFunction", + { + handler: "index.handler", + runtime: lambda.Runtime.NODEJS_14_X, + timeout: Duration.seconds(30), + code: lambda.Code.fromAsset( + path.join(this.props.serverlessBuildOutDir, "regeneration-lambda") + ) + } + ); + + this.regenerationFunction.addEventSource( + new lambdaEventSources.SqsEventSource(this.regenerationQueue) + ); + } this.edgeLambdaRole = new Role(this, "NextEdgeLambdaRole", { assumedBy: new CompositePrincipal( @@ -144,11 +156,14 @@ export class NextJSLambdaEdge extends cdk.Construct { }); this.bucket.grantReadWrite(this.defaultNextLambda); - this.bucket.grantReadWrite(this.regenerationFunction); - this.regenerationQueue.grantSendMessages(this.defaultNextLambda); - this.regenerationFunction.grantInvoke(this.defaultNextLambda); this.defaultNextLambda.currentVersion.addAlias("live"); + if (hasISRPages && this.regenerationFunction) { + this.bucket.grantReadWrite(this.regenerationFunction); + this.regenerationQueue?.grantSendMessages(this.defaultNextLambda); + this.regenerationFunction?.grantInvoke(this.defaultNextLambda); + } + const apis = this.apiBuildManifest?.apis; const hasAPIPages = apis && @@ -454,6 +469,15 @@ export class NextJSLambdaEdge extends cdk.Construct { ); } + private readPrerenderManifest(): PreRenderedManifest { + return fs.readJSONSync( + path.join( + this.props.serverlessBuildOutDir, + "default-lambda/prerender-manifest.json" + ) + ); + } + private readApiBuildManifest(): OriginRequestApiHandlerManifest | null { const apiPath = path.join( this.props.serverlessBuildOutDir, diff --git a/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts b/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts index af1f3126c2..ba731c40f0 100644 --- a/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts +++ b/packages/serverless-components/nextjs-component/__tests__/deploy.test.ts @@ -15,12 +15,16 @@ import { import { cleanupFixtureDirectory } from "../src/lib/test-utils"; import { mockUpload } from "aws-sdk"; -describe("deploy tests", () => { +describe.each` + appPath | expectsQueueDeployment | name + ${"./fixtures/simple-app"} | ${false} | ${"without ISR"} + ${"./fixtures/app-with-isr"} | ${true} | ${"with ISR"} +`("deploy tests ($name)", ({ appPath, expectsQueueDeployment }) => { let tmpCwd; let componentOutputs; let consoleWarnSpy; - const fixturePath = path.join(__dirname, "./fixtures/simple-app"); + const fixturePath = path.join(__dirname, appPath); beforeEach(async () => { const realFseRemove = fse.remove.bind({}); @@ -38,10 +42,12 @@ describe("deploy tests", () => { mockS3.mockResolvedValue({ name: "bucket-xyz" }); - mockLambda.mockResolvedValueOnce({ - arn: - "arn:aws:lambda:us-east-1:123456789012:function:regeneration-cachebehavior-func" - }); + if (expectsQueueDeployment) { + mockLambda.mockResolvedValueOnce({ + arn: + "arn:aws:lambda:us-east-1:123456789012:function:regeneration-cachebehavior-func" + }); + } mockLambda.mockResolvedValueOnce({ arn: "arn:aws:lambda:us-east-1:123456789012:function:api-cachebehavior-func" @@ -61,9 +67,12 @@ describe("deploy tests", () => { id: "cloudfrontdistrib", url: "https://cloudfrontdistrib.amazonaws.com" }); - mockSQS.mockResolvedValue({ - arn: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo" - }); + + if (expectsQueueDeployment) { + mockSQS.mockResolvedValue({ + arn: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo" + }); + } const component = new NextjsComponent(); component.context.credentials = { @@ -97,167 +106,200 @@ describe("deploy tests", () => { }); describe("cloudfront", () => { - it("provisions regeneration lambda", () => { - expect(mockLambda).toHaveBeenNthCalledWith(1, { - description: expect.any(String), - handler: "index.handler", - code: path.join(fixturePath, REGENERATION_LAMBDA_CODE_DIR), - memory: 512, - timeout: 10, - runtime: "nodejs12.x", - name: "bucket-xyz", - region: "us-east-1", - role: { - service: ["lambda.amazonaws.com"], - policy: { - Version: "2012-10-17", - Statement: expect.arrayContaining([ - { - Effect: "Allow", - Resource: "*", - Action: [ - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:PutLogEvents" - ] - }, - { - Effect: "Allow", - Resource: `arn:aws:s3:::bucket-xyz/*`, - Action: ["s3:GetObject", "s3:PutObject"] - }, - { - Effect: "Allow", - Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", - Action: ["sqs:SendMessage"] - }, - { - Effect: "Allow", - Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", - Action: [ - "sqs:ReceiveMessage", - "sqs:DeleteMessage", - "sqs:GetQueueAttributes" - ] - } - ]) + if (expectsQueueDeployment) { + it("provisions regeneration lambda", () => { + expect(mockLambda).toHaveBeenNthCalledWith(1, { + description: expect.any(String), + handler: "index.handler", + code: path.join(fixturePath, REGENERATION_LAMBDA_CODE_DIR), + memory: 512, + timeout: 10, + runtime: "nodejs12.x", + name: "bucket-xyz", + region: "us-east-1", + role: { + service: ["lambda.amazonaws.com"], + policy: { + Version: "2012-10-17", + Statement: expect.arrayContaining([ + { + Effect: "Allow", + Resource: "*", + Action: [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ] + }, + { + Effect: "Allow", + Resource: `arn:aws:s3:::bucket-xyz/*`, + Action: ["s3:GetObject", "s3:PutObject"] + }, + { + Effect: "Allow", + Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", + Action: ["sqs:SendMessage"] + }, + { + Effect: "Allow", + Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", + Action: [ + "sqs:ReceiveMessage", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes" + ] + } + ]) + } } - } + }); }); - }); + } it("provisions default lambda", () => { - expect(mockLambda).toHaveBeenNthCalledWith(4, { - description: expect.any(String), - handler: "index.handler", - code: path.join(fixturePath, DEFAULT_LAMBDA_CODE_DIR), - memory: 512, - timeout: 10, - runtime: "nodejs12.x", - role: { - service: ["lambda.amazonaws.com", "edgelambda.amazonaws.com"], - policy: { - Version: "2012-10-17", - Statement: [ - { - Effect: "Allow", - Resource: "*", - Action: [ - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:PutLogEvents" - ] - }, - { - Effect: "Allow", - Resource: `arn:aws:s3:::bucket-xyz/*`, - Action: ["s3:GetObject", "s3:PutObject"] - }, - { - Effect: "Allow", - Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", - Action: ["sqs:SendMessage"] - } - ] + expect(mockLambda).toHaveBeenNthCalledWith( + // The queue would be deployed first, if its not then the calls should be 1 step before. + 3 + Number(expectsQueueDeployment), + { + description: expect.any(String), + handler: "index.handler", + code: path.join(fixturePath, DEFAULT_LAMBDA_CODE_DIR), + memory: 512, + timeout: 10, + runtime: "nodejs12.x", + role: { + service: ["lambda.amazonaws.com", "edgelambda.amazonaws.com"], + policy: { + Version: "2012-10-17", + Statement: [ + { + Effect: "Allow", + Resource: "*", + Action: [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ] + }, + { + Effect: "Allow", + Resource: `arn:aws:s3:::bucket-xyz/*`, + Action: ["s3:GetObject", "s3:PutObject"] + }, + ...(expectsQueueDeployment + ? [ + { + Effect: "Allow", + Resource: + "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", + Action: ["sqs:SendMessage"] + } + ] + : []) + ] + } } } - }); + ); }); it("provisions api lambda", () => { - expect(mockLambda).toHaveBeenNthCalledWith(2, { - description: expect.any(String), - handler: "index.handler", - code: path.join(fixturePath, API_LAMBDA_CODE_DIR), - memory: 512, - timeout: 10, - runtime: "nodejs12.x", - role: { - service: ["lambda.amazonaws.com", "edgelambda.amazonaws.com"], - policy: { - Version: "2012-10-17", - Statement: [ - { - Effect: "Allow", - Resource: "*", - Action: [ - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:PutLogEvents" - ] - }, - { - Effect: "Allow", - Resource: `arn:aws:s3:::bucket-xyz/*`, - Action: ["s3:GetObject", "s3:PutObject"] - }, - { - Effect: "Allow", - Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", - Action: ["sqs:SendMessage"] - } - ] + console.log( + 2 - Number(!expectsQueueDeployment), + expectsQueueDeployment, + Number(!expectsQueueDeployment), + expectsQueueDeployment + ); + expect(mockLambda).toHaveBeenNthCalledWith( + 1 + Number(expectsQueueDeployment), + { + description: expect.any(String), + handler: "index.handler", + code: path.join(fixturePath, API_LAMBDA_CODE_DIR), + memory: 512, + timeout: 10, + runtime: "nodejs12.x", + role: { + service: ["lambda.amazonaws.com", "edgelambda.amazonaws.com"], + policy: { + Version: "2012-10-17", + Statement: [ + { + Effect: "Allow", + Resource: "*", + Action: [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ] + }, + { + Effect: "Allow", + Resource: `arn:aws:s3:::bucket-xyz/*`, + Action: ["s3:GetObject", "s3:PutObject"] + }, + ...(expectsQueueDeployment + ? [ + { + Effect: "Allow", + Resource: + "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", + Action: ["sqs:SendMessage"] + } + ] + : []) + ] + } } } - }); + ); }); it("provisions image lambda", () => { - expect(mockLambda).toHaveBeenNthCalledWith(3, { - description: expect.any(String), - handler: "index.handler", - code: path.join(fixturePath, IMAGE_LAMBDA_CODE_DIR), - memory: 512, - timeout: 10, - runtime: "nodejs12.x", - role: { - service: ["lambda.amazonaws.com", "edgelambda.amazonaws.com"], - policy: { - Version: "2012-10-17", - Statement: [ - { - Effect: "Allow", - Resource: "*", - Action: [ - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:PutLogEvents" - ] - }, - { - Effect: "Allow", - Resource: `arn:aws:s3:::bucket-xyz/*`, - Action: ["s3:GetObject", "s3:PutObject"] - }, - { - Effect: "Allow", - Resource: "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", - Action: ["sqs:SendMessage"] - } - ] + expect(mockLambda).toHaveBeenNthCalledWith( + 2 + Number(expectsQueueDeployment), + { + description: expect.any(String), + handler: "index.handler", + code: path.join(fixturePath, IMAGE_LAMBDA_CODE_DIR), + memory: 512, + timeout: 10, + runtime: "nodejs12.x", + role: { + service: ["lambda.amazonaws.com", "edgelambda.amazonaws.com"], + policy: { + Version: "2012-10-17", + Statement: [ + { + Effect: "Allow", + Resource: "*", + Action: [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ] + }, + { + Effect: "Allow", + Resource: `arn:aws:s3:::bucket-xyz/*`, + Action: ["s3:GetObject", "s3:PutObject"] + }, + ...(expectsQueueDeployment + ? [ + { + Effect: "Allow", + Resource: + "arn:aws:sqs:us-east-1:123456789012:MyQueue.fifo", + Action: ["sqs:SendMessage"] + } + ] + : []) + ] + } } } - }); + ); }); it("creates distribution", () => { diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/BUILD_ID b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/BUILD_ID new file mode 100644 index 0000000000..5ad897a7a0 --- /dev/null +++ b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/BUILD_ID @@ -0,0 +1 @@ +test-build-id \ No newline at end of file diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/build-manifest.json b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/build-manifest.json new file mode 100644 index 0000000000..bf517e5366 --- /dev/null +++ b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/build-manifest.json @@ -0,0 +1,3 @@ +{ + "pages": {} +} diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/images-manifest.json b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/images-manifest.json new file mode 100644 index 0000000000..22ea5d8852 --- /dev/null +++ b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/images-manifest.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "images": { + "deviceSizes": [640, 750, 828, 1080, 1200, 1920, 2048, 3840], + "imageSizes": [16, 32, 48, 64, 96, 128, 256, 384], + "domains": [], + "path": "/_next/image", + "loader": "default", + "sizes": [ + 640, + 750, + 828, + 1080, + 1200, + 1920, + 2048, + 3840, + 16, + 32, + 48, + 64, + 96, + 128, + 256, + 384 + ] + } +} diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/prerender-manifest.json b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/prerender-manifest.json new file mode 100644 index 0000000000..1fd0e6bc77 --- /dev/null +++ b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/prerender-manifest.json @@ -0,0 +1,11 @@ +{ + "version": 2, + "routes": { + "/": { + "initialRevalidateSeconds": 10, + "srcRoute": null, + "dataRoute": "/_next/data/zsWqBqLjpgRmswfQomanp/index.json" + } + }, + "dynamicRoutes": {} +} diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/routes-manifest.json b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/routes-manifest.json new file mode 100644 index 0000000000..c92839d9dc --- /dev/null +++ b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/routes-manifest.json @@ -0,0 +1,9 @@ +{ + "version": 1, + "pages404": true, + "basePath": "", + "redirects": [], + "rewrites": [], + "headers": [], + "dynamicRoutes": [] +} diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages-manifest.json b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages-manifest.json new file mode 100644 index 0000000000..add630f7e1 --- /dev/null +++ b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages-manifest.json @@ -0,0 +1,18 @@ +{ + "/[root]": "pages/[root].js", + "/customers/[customer]": "pages/customers/[customer].js", + "/customers/[customer]/[post]": "pages/customers/[customer]/[post].js", + "/customers/new": "pages/customers/new.js", + "/customers/[customer]/profile": "pages/customers/[customer]/profile.js", + "/customers/[...catchAll]": "pages/customers/[...catchAll].js", + "/api/customers": "pages/api/customers.js", + "/api/customers/[id]": "pages/api/customers/[id].js", + "/api/customers/new": "pages/api/customers/new.js", + "/terms": "pages/terms.html", + "/about": "pages/about.html", + "/blog/[post]": "pages/blog/[post].html", + "/": "pages/index.js", + "/_app": "pages/_app.js", + "/_document": "pages/_document.js", + "/404": "pages/404.html" +} diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/404.html b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/404.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/[root].js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/[root].js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/_error.js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/_error.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/about.html b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/about.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/api/customers.js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/api/customers.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/api/customers/[id].js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/api/customers/[id].js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/api/customers/new.js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/api/customers/new.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/blog.js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/blog.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/blog/[post].html b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/blog/[post].html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[...catchAll].js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[...catchAll].js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[customer].js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[customer].js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[customer]/[post].js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[customer]/[post].js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[customer]/profile.js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/[customer]/profile.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/new.js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/customers/new.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/index.html b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/index.js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/index.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/index.json b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/index.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/terms.html b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/serverless/pages/terms.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/static/chunks/chunk1.js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/static/chunks/chunk1.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/static/test-build-id/placeholder.js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/.next/static/test-build-id/placeholder.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/public/favicon.ico b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/public/favicon.ico new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/public/sub/image.png b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/public/sub/image.png new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/public/sw.js b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/public/sw.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/static/donotdelete.txt b/packages/serverless-components/nextjs-component/__tests__/fixtures/app-with-isr/static/donotdelete.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/serverless-components/nextjs-component/src/component.ts b/packages/serverless-components/nextjs-component/src/component.ts index 255737f0fc..f231866977 100644 --- a/packages/serverless-components/nextjs-component/src/component.ts +++ b/packages/serverless-components/nextjs-component/src/component.ts @@ -433,6 +433,14 @@ class NextjsComponent extends Component { (Object.keys(apiBuildManifest.apis.nonDynamic).length > 0 || Object.keys(apiBuildManifest.apis.dynamic).length > 0); + const hasISRPages = Object.keys( + defaultBuildManifest.pages.ssg.nonDynamic + ).some( + (key) => + typeof defaultBuildManifest.pages.ssg.nonDynamic[key] + .initialRevalidateSeconds === "number" + ); + const readLambdaInputValue = ( inputKey: "memory" | "timeout" | "name" | "runtime", lambdaType: LambdaType, @@ -451,11 +459,14 @@ class NextjsComponent extends Component { return inputValue[lambdaType] || defaultValue; }; - const queue = await sqs({ - name: `${bucketOutputs.name}.fifo`, - visibilityTimeout: "30", - fifoQueue: true - }); + let queue; + if (hasISRPages) { + queue = await sqs({ + name: `${bucketOutputs.name}.fifo`, + visibilityTimeout: "30", + fifoQueue: true + }); + } // default policy const defaultLambdaPolicy: Record = { @@ -475,11 +486,15 @@ class NextjsComponent extends Component { Resource: `arn:aws:s3:::${bucketOutputs.name}/*`, Action: ["s3:GetObject", "s3:PutObject"] }, - { - Effect: "Allow", - Resource: queue.arn, - Action: ["sqs:SendMessage"] - } + ...(queue + ? [ + { + Effect: "Allow", + Resource: queue.arn, + Action: ["sqs:SendMessage"] + } + ] + : []) ] }; @@ -492,55 +507,57 @@ class NextjsComponent extends Component { } } - const regenerationLambdaInput: LambdaInput = { - region: bucketRegion, - description: inputs.description - ? `${inputs.description} (API)` - : "Next.js Regeneration Lambda", - handler: inputs.handler || "index.handler", - code: join(nextConfigPath, REGENERATION_LAMBDA_CODE_DIR), - role: { - service: ["lambda.amazonaws.com"], - policy: { - ...defaultLambdaPolicy, - Statement: [ - ...(defaultLambdaPolicy.Statement as Record[]), - { - Effect: "Allow", - Resource: queue.arn, - Action: [ - "sqs:ReceiveMessage", - "sqs:DeleteMessage", - "sqs:GetQueueAttributes" - ] - } - ] - } - }, - memory: readLambdaInputValue( - "memory", - "regenerationLambda", - 512 - ) as number, - timeout: readLambdaInputValue( - "timeout", - "regenerationLambda", - 10 - ) as number, - runtime: readLambdaInputValue( - "runtime", - "regenerationLambda", - "nodejs12.x" - ) as string, - name: bucketOutputs.name - }; + if (hasISRPages) { + const regenerationLambdaInput: LambdaInput = { + region: bucketRegion, + description: inputs.description + ? `${inputs.description} (API)` + : "Next.js Regeneration Lambda", + handler: inputs.handler || "index.handler", + code: join(nextConfigPath, REGENERATION_LAMBDA_CODE_DIR), + role: { + service: ["lambda.amazonaws.com"], + policy: { + ...defaultLambdaPolicy, + Statement: [ + ...(defaultLambdaPolicy.Statement as Record[]), + { + Effect: "Allow", + Resource: queue.arn, + Action: [ + "sqs:ReceiveMessage", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes" + ] + } + ] + } + }, + memory: readLambdaInputValue( + "memory", + "regenerationLambda", + 512 + ) as number, + timeout: readLambdaInputValue( + "timeout", + "regenerationLambda", + 10 + ) as number, + runtime: readLambdaInputValue( + "runtime", + "regenerationLambda", + "nodejs12.x" + ) as string, + name: bucketOutputs.name + }; - const regenerationLambdaResult = await regenerationLambda( - regenerationLambdaInput - ); - await regenerationLambda.publishVersion(); + const regenerationLambdaResult = await regenerationLambda( + regenerationLambdaInput + ); + await regenerationLambda.publishVersion(); - await sqs.addEventSource(regenerationLambdaResult.name); + await sqs.addEventSource(regenerationLambdaResult.name); + } if (hasAPIPages) { const apiEdgeLambdaInput: LambdaInput = { From bf8038ab186abf74e3e0a77504ebf79346d1ec9f Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 16 May 2021 16:43:02 +0100 Subject: [PATCH 40/48] fix: revert normalise uri call --- .../cypress/integration/static-regeneration.test.ts | 1 + packages/libs/core/src/revalidate.ts | 11 ++++------- packages/libs/lambda-at-edge/src/default-handler.ts | 6 ++---- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts b/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts index b30a41e7bf..eaf3d535e1 100644 --- a/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts +++ b/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts @@ -25,6 +25,7 @@ describe("ISR Tests", () => { // When we reload again the page still should not be cached as this // should be the first time its being served from the origin cy.ensureRouteNotCached(path); + cy.wait(1000); cy.reload(); cy.get("[data-cy=date-text]") .invoke("text") diff --git a/packages/libs/core/src/revalidate.ts b/packages/libs/core/src/revalidate.ts index 2cb1e9f6ca..2d8bb5afc4 100644 --- a/packages/libs/core/src/revalidate.ts +++ b/packages/libs/core/src/revalidate.ts @@ -1,5 +1,4 @@ -import { normalise } from "./basepath"; -import { PageManifest, RoutesManifest } from "./types"; +import { PageManifest } from "./types"; interface StaticRegenerationResponseOptions { // URI of the origin object @@ -8,7 +7,6 @@ interface StaticRegenerationResponseOptions { expiresHeader: string; lastModifiedHeader: string | undefined; manifest: PageManifest; - routesManifest: RoutesManifest; } interface StaticRegenerationResponseValue { @@ -34,10 +32,9 @@ const firstRegenerateExpiryDate = ( export const getStaticRegenerationResponse = ( options: StaticRegenerationResponseOptions ): StaticRegenerationResponseValue | false => { - const normalisedUri = normalise( - options.requestedOriginUri, - options.routesManifest - ); + const normalisedUri = options.requestedOriginUri.endsWith(".html") + ? options.requestedOriginUri.slice(0, options.requestedOriginUri.length - 5) + : options.requestedOriginUri; const initialRevalidateSeconds = options.manifest.pages.ssg.nonDynamic?.[normalisedUri] ?.initialRevalidateSeconds; diff --git a/packages/libs/lambda-at-edge/src/default-handler.ts b/packages/libs/lambda-at-edge/src/default-handler.ts index d3cce854cc..7c0b892b34 100644 --- a/packages/libs/lambda-at-edge/src/default-handler.ts +++ b/packages/libs/lambda-at-edge/src/default-handler.ts @@ -377,8 +377,7 @@ const handleOriginResponse = async ({ requestedOriginUri: uri, expiresHeader: response.headers?.expires?.[0]?.value || "", lastModifiedHeader: response.headers?.["last-modified"]?.[0]?.value || "", - manifest, - routesManifest + manifest }); if (staticRegenerationResponse) { @@ -478,8 +477,7 @@ const handleOriginResponse = async ({ expiresHeader: expires.toJSON(), manifest, requestedOriginUri: uri, - lastModifiedHeader: undefined, - routesManifest + lastModifiedHeader: undefined }) : null; From e49eac4c280da8e5a1ee01fb1ef0648390e98d79 Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 16 May 2021 17:18:46 +0100 Subject: [PATCH 41/48] fix: update snapshot --- .../__snapshots__/snapshots.test.ts.snap | 2347 ----------------- 1 file changed, 2347 deletions(-) diff --git a/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap b/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap index 0a8e7183fe..7682a195fa 100644 --- a/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap +++ b/packages/serverless-components/nextjs-cdk-construct/__tests__/__snapshots__/snapshots.test.ts.snap @@ -1,2352 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`CDK Construct Snapshots creates boilerplate next app 1`] = ` -Object { - "Parameters": Object { - "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748ArtifactHashE2D1074E": Object { - "Description": "Artifact hash for asset \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", - "Type": "String", - }, - "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3Bucket1B468E6A": Object { - "Description": "S3 bucket for asset \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", - "Type": "String", - }, - "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3VersionKeyA7CF013C": Object { - "Description": "S3 key for asset version \\"25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748\\"", - "Type": "String", - }, - "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392ArtifactHashE56CD69A": Object { - "Description": "Artifact hash for asset \\"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\\"", - "Type": "String", - }, - "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F": Object { - "Description": "S3 bucket for asset \\"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\\"", - "Type": "String", - }, - "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626": Object { - "Description": "S3 key for asset version \\"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\\"", - "Type": "String", - }, - "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24ArtifactHashBA91B77F": Object { - "Description": "Artifact hash for asset \\"67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24\\"", - "Type": "String", - }, - "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3Bucket4D46ABB5": Object { - "Description": "S3 bucket for asset \\"67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24\\"", - "Type": "String", - }, - "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3VersionKeyB0F28861": Object { - "Description": "S3 key for asset version \\"67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24\\"", - "Type": "String", - }, - "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3ArtifactHash62C7B2C0": Object { - "Description": "Artifact hash for asset \\"75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3\\"", - "Type": "String", - }, - "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5": Object { - "Description": "S3 bucket for asset \\"75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3\\"", - "Type": "String", - }, - "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3VersionKeyDC7D66D8": Object { - "Description": "S3 key for asset version \\"75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3\\"", - "Type": "String", - }, - "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1ArtifactHash78F94626": Object { - "Description": "Artifact hash for asset \\"7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1\\"", - "Type": "String", - }, - "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2": Object { - "Description": "S3 bucket for asset \\"7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1\\"", - "Type": "String", - }, - "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8": Object { - "Description": "S3 key for asset version \\"7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1\\"", - "Type": "String", - }, - "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6ArtifactHash5DD72BC7": Object { - "Description": "Artifact hash for asset \\"7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6\\"", - "Type": "String", - }, - "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3Bucket5C3E4ABA": Object { - "Description": "S3 bucket for asset \\"7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6\\"", - "Type": "String", - }, - "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3VersionKey96DFF457": Object { - "Description": "S3 key for asset version \\"7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6\\"", - "Type": "String", - }, - "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dArtifactHash2788C1DC": Object { - "Description": "Artifact hash for asset \\"aecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61d\\"", - "Type": "String", - }, - "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC": Object { - "Description": "S3 bucket for asset \\"aecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61d\\"", - "Type": "String", - }, - "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3VersionKey99B046A5": Object { - "Description": "S3 key for asset version \\"aecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61d\\"", - "Type": "String", - }, - "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389ArtifactHashA466D3F1": Object { - "Description": "Artifact hash for asset \\"bc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389\\"", - "Type": "String", - }, - "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633": Object { - "Description": "S3 bucket for asset \\"bc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389\\"", - "Type": "String", - }, - "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3VersionKey8DBC717C": Object { - "Description": "S3 key for asset version \\"bc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389\\"", - "Type": "String", - }, - "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfArtifactHash85F58E48": Object { - "Description": "Artifact hash for asset \\"c24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cf\\"", - "Type": "String", - }, - "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3Bucket55EFA30C": Object { - "Description": "S3 bucket for asset \\"c24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cf\\"", - "Type": "String", - }, - "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3VersionKey60329B70": Object { - "Description": "S3 key for asset version \\"c24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cf\\"", - "Type": "String", - }, - "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bArtifactHashC079BB46": Object { - "Description": "Artifact hash for asset \\"dab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6b\\"", - "Type": "String", - }, - "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bS3BucketB5EDC333": Object { - "Description": "S3 bucket for asset \\"dab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6b\\"", - "Type": "String", - }, - "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bS3VersionKeyAB92E59F": Object { - "Description": "S3 key for asset version \\"dab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6b\\"", - "Type": "String", - }, - "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68ArtifactHashD9A515C3": Object { - "Description": "Artifact hash for asset \\"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\\"", - "Type": "String", - }, - "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7": Object { - "Description": "S3 bucket for asset \\"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\\"", - "Type": "String", - }, - "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F": Object { - "Description": "S3 key for asset version \\"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\\"", - "Type": "String", - }, - }, - "Resources": Object { - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": Object { - "DependsOn": Array [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", - ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { - "Ref": "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3Bucket55EFA30C", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3VersionKey60329B70", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParametersc24b999656e4fe6c609c31bae56a1cf4717a405619c3aa6ba1bc686b8c2c86cfS3VersionKey60329B70", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Handler": "index.handler", - "Layers": Array [ - Object { - "Ref": "StackAssetDeploymentBuildIDAwsCliLayer055D8C68", - }, - ], - "Role": Object { - "Fn::GetAtt": Array [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", - "Arn", - ], - }, - "Runtime": "python3.6", - "Timeout": 900, - }, - "Type": "AWS::Lambda::Function", - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": Object { - "Service": "lambda.amazonaws.com", - }, - }, - ], - "Version": "2012-10-17", - }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", - ], - ], - }, - ], - }, - "Type": "AWS::IAM::Role", - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - ], - "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":s3:::", - Object { - "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC", - }, - ], - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":s3:::", - Object { - "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC", - }, - "/*", - ], - ], - }, - ], - }, - Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - "s3:DeleteObject*", - "s3:PutObject*", - "s3:Abort*", - ], - "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], - ], - }, - ], - }, - Object { - "Action": Array [ - "cloudfront:GetInvalidation", - "cloudfront:CreateInvalidation", - ], - "Effect": "Allow", - "Resource": "*", - }, - Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - ], - "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":s3:::", - Object { - "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", - }, - ], - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":s3:::", - Object { - "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", - }, - "/*", - ], - ], - }, - ], - }, - Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - ], - "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":s3:::", - Object { - "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633", - }, - ], - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":s3:::", - Object { - "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633", - }, - "/*", - ], - ], - }, - ], - }, - Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - ], - "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":s3:::", - Object { - "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5", - }, - ], - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":s3:::", - Object { - "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5", - }, - "/*", - ], - ], - }, - ], - }, - ], - "Version": "2012-10-17", - }, - "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", - "Roles": Array [ - Object { - "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", - }, - ], - }, - "Type": "AWS::IAM::Policy", - }, - "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": Object { - "DependsOn": Array [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { - "Ref": "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Description": Object { - "Fn::Join": Array [ - "", - Array [ - "Lambda function for auto-deleting objects in ", - Object { - "Ref": "StackPublicAssets8F0F4FE8", - }, - " S3 bucket.", - ], - ], - }, - "Handler": "__entrypoint__.handler", - "MemorySize": 128, - "Role": Object { - "Fn::GetAtt": Array [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - "Arn", - ], - }, - "Runtime": "nodejs12.x", - "Timeout": 900, - }, - "Type": "AWS::Lambda::Function", - }, - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": Object { - "Service": "lambda.amazonaws.com", - }, - }, - ], - "Version": "2012-10-17", - }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Sub": "arn:\${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", - }, - ], - }, - "Type": "AWS::IAM::Role", - }, - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": Object { - "DependsOn": Array [ - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB", - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", - ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { - "Ref": "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3Bucket4D46ABB5", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3VersionKeyB0F28861", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters67b7823b74bc135986aa72f889d6a8da058d0c4a20cbc2dfc6f78995fdd2fc24S3VersionKeyB0F28861", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Handler": "index.handler", - "Role": Object { - "Fn::GetAtt": Array [ - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", - "Arn", - ], - }, - "Runtime": "nodejs12.x", - }, - "Type": "AWS::Lambda::Function", - }, - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": Object { - "Service": "lambda.amazonaws.com", - }, - }, - ], - "Version": "2012-10-17", - }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", - ], - ], - }, - ], - }, - "Type": "AWS::IAM::Role", - }, - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ - "logs:PutRetentionPolicy", - "logs:DeleteRetentionPolicy", - ], - "Effect": "Allow", - "Resource": "*", - }, - ], - "Version": "2012-10-17", - }, - "PolicyName": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB", - "Roles": Array [ - Object { - "Ref": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", - }, - ], - }, - "Type": "AWS::IAM::Policy", - }, - "StackAssetDeploymentBuildIDAwsCliLayer055D8C68": Object { - "Properties": Object { - "Content": Object { - "S3Bucket": Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Description": "/opt/awscli/aws", - }, - "Type": "AWS::Lambda::LayerVersion", - }, - "StackAssetDeploymentBuildIDCustomResourceC7EB618F": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "DestinationBucketKeyPrefix": "/BUILD_ID", - "DestinationBucketName": Object { - "Ref": "StackPublicAssets8F0F4FE8", - }, - "DistributionId": Object { - "Ref": "StackNextJSDistribution03A07E47", - }, - "DistributionPaths": Array [ - "/about", - "/", - "/404", - "/users/*", - "/users", - "/_error", - ], - "Prune": true, - "ServiceToken": Object { - "Fn::GetAtt": Array [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", - "Arn", - ], - }, - "SourceBucketNames": Array [ - Object { - "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3Bucket09B7E9DC", - }, - ], - "SourceObjectKeys": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3VersionKey99B046A5", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParametersaecff88ec5fb6dcd1c5e3f1d6cf827ed17bd83a32dff1bcd10c08e335355d61dS3VersionKey99B046A5", - }, - ], - }, - ], - }, - ], - ], - }, - ], - }, - "Type": "Custom::CDKBucketDeployment", - "UpdateReplacePolicy": "Delete", - }, - "StackAssetDeploymentnextDataAwsCliLayerC32F288B": Object { - "Properties": Object { - "Content": Object { - "S3Bucket": Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Description": "/opt/awscli/aws", - }, - "Type": "AWS::Lambda::LayerVersion", - }, - "StackAssetDeploymentnextDataCustomResource445B0AAE": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "DestinationBucketKeyPrefix": "_next/data", - "DestinationBucketName": Object { - "Ref": "StackPublicAssets8F0F4FE8", - }, - "Prune": true, - "ServiceToken": Object { - "Fn::GetAtt": Array [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", - "Arn", - ], - }, - "SourceBucketNames": Array [ - Object { - "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", - }, - ], - "SourceObjectKeys": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", - }, - ], - }, - ], - }, - ], - ], - }, - ], - "SystemMetadata": Object { - "cache-control": "public, max-age=0, s-maxage=2678400, must-revalidate", - }, - }, - "Type": "Custom::CDKBucketDeployment", - "UpdateReplacePolicy": "Delete", - }, - "StackAssetDeploymentnextStaticAwsCliLayerD5D627D4": Object { - "Properties": Object { - "Content": Object { - "S3Bucket": Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Description": "/opt/awscli/aws", - }, - "Type": "AWS::Lambda::LayerVersion", - }, - "StackAssetDeploymentnextStaticCustomResource9DCCD3BE": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "DestinationBucketKeyPrefix": "_next/static", - "DestinationBucketName": Object { - "Ref": "StackPublicAssets8F0F4FE8", - }, - "Prune": true, - "ServiceToken": Object { - "Fn::GetAtt": Array [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", - "Arn", - ], - }, - "SourceBucketNames": Array [ - Object { - "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3BucketF78D27D5", - }, - ], - "SourceObjectKeys": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3VersionKeyDC7D66D8", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters75747c01c8238f97cfebdb953d5cea88564b7e08ec0e4fe04619bc1df9792ce3S3VersionKeyDC7D66D8", - }, - ], - }, - ], - }, - ], - ], - }, - ], - "SystemMetadata": Object { - "cache-control": "public, max-age=31536000, immutable", - }, - }, - "Type": "Custom::CDKBucketDeployment", - "UpdateReplacePolicy": "Delete", - }, - "StackAssetDeploymentpublicFilesAwsCliLayerB1EEF9A7": Object { - "Properties": Object { - "Content": Object { - "S3Bucket": Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Description": "/opt/awscli/aws", - }, - "Type": "AWS::Lambda::LayerVersion", - }, - "StackAssetDeploymentpublicFilesCustomResourceC1AC84CF": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "DestinationBucketKeyPrefix": "public", - "DestinationBucketName": Object { - "Ref": "StackPublicAssets8F0F4FE8", - }, - "Prune": true, - "ServiceToken": Object { - "Fn::GetAtt": Array [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", - "Arn", - ], - }, - "SourceBucketNames": Array [ - Object { - "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3Bucket0004C4F2", - }, - ], - "SourceObjectKeys": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters7a6ed021656ddea4e87a6e7003efc985b39a2f5e1d5b23c50d9c84a27c2fbcc1S3VersionKey684177A8", - }, - ], - }, - ], - }, - ], - ], - }, - ], - "SystemMetadata": Object { - "cache-control": "public, max-age=31536000, must-revalidate", - }, - }, - "Type": "Custom::CDKBucketDeployment", - "UpdateReplacePolicy": "Delete", - }, - "StackAssetDeploymentstaticPagesAwsCliLayerB0258334": Object { - "Properties": Object { - "Content": Object { - "S3Bucket": Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Description": "/opt/awscli/aws", - }, - "Type": "AWS::Lambda::LayerVersion", - }, - "StackAssetDeploymentstaticPagesCustomResource9BDB9A03": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "DestinationBucketKeyPrefix": "static-pages", - "DestinationBucketName": Object { - "Ref": "StackPublicAssets8F0F4FE8", - }, - "Prune": true, - "ServiceToken": Object { - "Fn::GetAtt": Array [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", - "Arn", - ], - }, - "SourceBucketNames": Array [ - Object { - "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3Bucket33190633", - }, - ], - "SourceObjectKeys": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3VersionKey8DBC717C", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParametersbc06ddb828947dc2686bc7343dbed188fb4da2daa22d29b27448869653e68389S3VersionKey8DBC717C", - }, - ], - }, - ], - }, - ], - ], - }, - ], - "SystemMetadata": Object { - "cache-control": "public, max-age=0, s-maxage=2678400, must-revalidate", - }, - }, - "Type": "Custom::CDKBucketDeployment", - "UpdateReplacePolicy": "Delete", - }, - "StackImageOriginRequest30DFB17C": Object { - "Properties": Object { - "OriginRequestPolicyConfig": Object { - "CookiesConfig": Object { - "CookieBehavior": "none", - }, - "HeadersConfig": Object { - "HeaderBehavior": "none", - }, - "Name": "StackImageOriginRequestF06FCDA0", - "QueryStringsConfig": Object { - "QueryStringBehavior": "all", - }, - }, - }, - "Type": "AWS::CloudFront::OriginRequestPolicy", - }, - "StackNextApiLambda8BE78FBE": Object { - "DependsOn": Array [ - "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", - "StackNextEdgeLambdaRole02C429A6", - ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { - "Ref": "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3Bucket1B468E6A", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3VersionKeyA7CF013C", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters25410cc84f19c90d1be36cf1ab651b490f5b65832cb03e0a63e1ae33d8fdf748S3VersionKeyA7CF013C", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Description": "Default Lambda@Edge for Next API CloudFront distribution", - "Handler": "index.handler", - "Role": Object { - "Fn::GetAtt": Array [ - "StackNextEdgeLambdaRole02C429A6", - "Arn", - ], - }, - "Runtime": "nodejs12.x", - }, - "Type": "AWS::Lambda::Function", - }, - "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "FunctionName": Object { - "Ref": "StackNextApiLambda8BE78FBE", - }, - }, - "Type": "AWS::Lambda::Version", - "UpdateReplacePolicy": "Delete", - }, - "StackNextApiLambdaCurrentVersionAliaslive8AA37EB3": Object { - "Properties": Object { - "FunctionName": Object { - "Ref": "StackNextApiLambda8BE78FBE", - }, - "FunctionVersion": Object { - "Fn::GetAtt": Array [ - "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", - "Version", - ], - }, - "Name": "live", - }, - "Type": "AWS::Lambda::Alias", - }, - "StackNextApiLambdaCurrentVersionEventInvokeConfig473B707A": Object { - "Properties": Object { - "FunctionName": Object { - "Ref": "StackNextApiLambda8BE78FBE", - }, - "MaximumRetryAttempts": 1, - "Qualifier": Object { - "Fn::GetAtt": Array [ - "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", - "Version", - ], - }, - }, - "Type": "AWS::Lambda::EventInvokeConfig", - }, - "StackNextApiLambdaLogRetention2569EAED": Object { - "Properties": Object { - "LogGroupName": Object { - "Fn::Join": Array [ - "", - Array [ - "/aws/lambda/", - Object { - "Ref": "StackNextApiLambda8BE78FBE", - }, - ], - ], - }, - "RetentionInDays": 3, - "ServiceToken": Object { - "Fn::GetAtt": Array [ - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", - "Arn", - ], - }, - }, - "Type": "Custom::LogRetention", - }, - "StackNextEdgeLambdaRole02C429A6": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": Object { - "Service": Array [ - "lambda.amazonaws.com", - "edgelambda.amazonaws.com", - ], - }, - }, - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": Object { - "Service": "edgelambda.amazonaws.com", - }, - }, - ], - "Version": "2012-10-17", - }, - "ManagedPolicyArns": Array [ - "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", - ], - }, - "Type": "AWS::IAM::Role", - }, - "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - "s3:DeleteObject*", - "s3:PutObject*", - "s3:Abort*", - ], - "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], - ], - }, - ], - }, - ], - "Version": "2012-10-17", - }, - "PolicyName": "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", - "Roles": Array [ - Object { - "Ref": "StackNextEdgeLambdaRole02C429A6", - }, - ], - }, - "Type": "AWS::IAM::Policy", - }, - "StackNextImageCache169F453D": Object { - "Properties": Object { - "CachePolicyConfig": Object { - "DefaultTTL": 86400, - "MaxTTL": 31536000, - "MinTTL": 0, - "Name": Object { - "Fn::Join": Array [ - "", - Array [ - "StackNextImageCache78CE64D5-", - Object { - "Ref": "AWS::Region", - }, - ], - ], - }, - "ParametersInCacheKeyAndForwardedToOrigin": Object { - "CookiesConfig": Object { - "CookieBehavior": "none", - }, - "EnableAcceptEncodingBrotli": true, - "EnableAcceptEncodingGzip": true, - "HeadersConfig": Object { - "HeaderBehavior": "whitelist", - "Headers": Array [ - "Accept", - ], - }, - "QueryStringsConfig": Object { - "QueryStringBehavior": "all", - }, - }, - }, - }, - "Type": "AWS::CloudFront::CachePolicy", - }, - "StackNextImageLambda2847952D": Object { - "DependsOn": Array [ - "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", - "StackNextEdgeLambdaRole02C429A6", - ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { - "Ref": "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3Bucket5C3E4ABA", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3VersionKey96DFF457", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParameters7df364fb64536fbb8d727d8a675a2751a56fe1308e5ad5fccc8fa3d3e4be7ae6S3VersionKey96DFF457", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Description": "Default Lambda@Edge for Next Image CloudFront distribution", - "Handler": "index.handler", - "Role": Object { - "Fn::GetAtt": Array [ - "StackNextEdgeLambdaRole02C429A6", - "Arn", - ], - }, - "Runtime": "nodejs12.x", - }, - "Type": "AWS::Lambda::Function", - }, - "StackNextImageLambdaCurrentVersionAliasliveE4A66187": Object { - "Properties": Object { - "FunctionName": Object { - "Ref": "StackNextImageLambda2847952D", - }, - "FunctionVersion": Object { - "Fn::GetAtt": Array [ - "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", - "Version", - ], - }, - "Name": "live", - }, - "Type": "AWS::Lambda::Alias", - }, - "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "FunctionName": Object { - "Ref": "StackNextImageLambda2847952D", - }, - }, - "Type": "AWS::Lambda::Version", - "UpdateReplacePolicy": "Delete", - }, - "StackNextImageLambdaCurrentVersionEventInvokeConfig3F977EB2": Object { - "Properties": Object { - "FunctionName": Object { - "Ref": "StackNextImageLambda2847952D", - }, - "MaximumRetryAttempts": 1, - "Qualifier": Object { - "Fn::GetAtt": Array [ - "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", - "Version", - ], - }, - }, - "Type": "AWS::Lambda::EventInvokeConfig", - }, - "StackNextImageLambdaLogRetentionF781777A": Object { - "Properties": Object { - "LogGroupName": Object { - "Fn::Join": Array [ - "", - Array [ - "/aws/lambda/", - Object { - "Ref": "StackNextImageLambda2847952D", - }, - ], - ], - }, - "RetentionInDays": 3, - "ServiceToken": Object { - "Fn::GetAtt": Array [ - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", - "Arn", - ], - }, - }, - "Type": "Custom::LogRetention", - }, - "StackNextJSDistribution03A07E47": Object { - "Properties": Object { - "DistributionConfig": Object { - "CacheBehaviors": Array [ - Object { - "AllowedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - "PUT", - "PATCH", - "POST", - "DELETE", - ], - "CachePolicyId": Object { - "Ref": "StackNextImageCache169F453D", - }, - "CachedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - ], - "Compress": true, - "LambdaFunctionAssociations": Array [ - Object { - "EventType": "origin-request", - "LambdaFunctionARN": Object { - "Ref": "StackNextImageLambdaCurrentVersionDEC920BCb7482786b9f167e17f95c2a094b761b0", - }, - }, - ], - "OriginRequestPolicyId": Object { - "Ref": "StackImageOriginRequest30DFB17C", - }, - "PathPattern": "_next/image*", - "TargetOriginId": "StackNextJSDistributionOrigin227291135", - "ViewerProtocolPolicy": "redirect-to-https", - }, - Object { - "AllowedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - ], - "CachePolicyId": Object { - "Ref": "StackNextLambdaCacheF214CEF2", - }, - "CachedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - ], - "Compress": true, - "LambdaFunctionAssociations": Array [ - Object { - "EventType": "origin-request", - "IncludeBody": true, - "LambdaFunctionARN": Object { - "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", - }, - }, - Object { - "EventType": "origin-response", - "LambdaFunctionARN": Object { - "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", - }, - }, - ], - "PathPattern": "_next/data/*", - "TargetOriginId": "StackNextJSDistributionOrigin33202980A", - "ViewerProtocolPolicy": "redirect-to-https", - }, - Object { - "AllowedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - ], - "CachePolicyId": Object { - "Ref": "StackNextStaticsCacheC4615915", - }, - "CachedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - ], - "Compress": true, - "PathPattern": "_next/*", - "TargetOriginId": "StackNextJSDistributionOrigin4BE563FB7", - "ViewerProtocolPolicy": "redirect-to-https", - }, - Object { - "AllowedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - ], - "CachePolicyId": Object { - "Ref": "StackNextStaticsCacheC4615915", - }, - "CachedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - ], - "Compress": true, - "PathPattern": "static/*", - "TargetOriginId": "StackNextJSDistributionOrigin5E99C79BE", - "ViewerProtocolPolicy": "redirect-to-https", - }, - Object { - "AllowedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - "PUT", - "PATCH", - "POST", - "DELETE", - ], - "CachePolicyId": Object { - "Ref": "StackNextLambdaCacheF214CEF2", - }, - "CachedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - ], - "Compress": true, - "LambdaFunctionAssociations": Array [ - Object { - "EventType": "origin-request", - "IncludeBody": true, - "LambdaFunctionARN": Object { - "Ref": "StackNextApiLambdaCurrentVersion09578A6A7ebfa2a8eff512e3e13102dd0fbe01d0", - }, - }, - ], - "PathPattern": "api/*", - "TargetOriginId": "StackNextJSDistributionOrigin6F399DA4B", - "ViewerProtocolPolicy": "redirect-to-https", - }, - ], - "DefaultCacheBehavior": Object { - "AllowedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - ], - "CachePolicyId": Object { - "Ref": "StackNextLambdaCacheF214CEF2", - }, - "CachedMethods": Array [ - "GET", - "HEAD", - "OPTIONS", - ], - "Compress": true, - "LambdaFunctionAssociations": Array [ - Object { - "EventType": "origin-request", - "IncludeBody": true, - "LambdaFunctionARN": Object { - "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", - }, - }, - Object { - "EventType": "origin-response", - "LambdaFunctionARN": Object { - "Ref": "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", - }, - }, - ], - "TargetOriginId": "StackNextJSDistributionOrigin164EFF789", - "ViewerProtocolPolicy": "redirect-to-https", - }, - "DefaultRootObject": "", - "Enabled": true, - "HttpVersion": "http2", - "IPV6Enabled": true, - "Origins": Array [ - Object { - "DomainName": Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "RegionalDomainName", - ], - }, - "Id": "StackNextJSDistributionOrigin164EFF789", - "S3OriginConfig": Object { - "OriginAccessIdentity": Object { - "Fn::Join": Array [ - "", - Array [ - "origin-access-identity/cloudfront/", - Object { - "Ref": "StackNextJSDistributionOrigin1S3OriginE5C3C6BA", - }, - ], - ], - }, - }, - }, - Object { - "DomainName": Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "RegionalDomainName", - ], - }, - "Id": "StackNextJSDistributionOrigin227291135", - "S3OriginConfig": Object { - "OriginAccessIdentity": Object { - "Fn::Join": Array [ - "", - Array [ - "origin-access-identity/cloudfront/", - Object { - "Ref": "StackNextJSDistributionOrigin2S3OriginBE3A92C1", - }, - ], - ], - }, - }, - }, - Object { - "DomainName": Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "RegionalDomainName", - ], - }, - "Id": "StackNextJSDistributionOrigin33202980A", - "S3OriginConfig": Object { - "OriginAccessIdentity": Object { - "Fn::Join": Array [ - "", - Array [ - "origin-access-identity/cloudfront/", - Object { - "Ref": "StackNextJSDistributionOrigin3S3Origin815895A3", - }, - ], - ], - }, - }, - }, - Object { - "DomainName": Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "RegionalDomainName", - ], - }, - "Id": "StackNextJSDistributionOrigin4BE563FB7", - "S3OriginConfig": Object { - "OriginAccessIdentity": Object { - "Fn::Join": Array [ - "", - Array [ - "origin-access-identity/cloudfront/", - Object { - "Ref": "StackNextJSDistributionOrigin4S3Origin25CF633C", - }, - ], - ], - }, - }, - }, - Object { - "DomainName": Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "RegionalDomainName", - ], - }, - "Id": "StackNextJSDistributionOrigin5E99C79BE", - "S3OriginConfig": Object { - "OriginAccessIdentity": Object { - "Fn::Join": Array [ - "", - Array [ - "origin-access-identity/cloudfront/", - Object { - "Ref": "StackNextJSDistributionOrigin5S3OriginF7CEDF65", - }, - ], - ], - }, - }, - }, - Object { - "DomainName": Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "RegionalDomainName", - ], - }, - "Id": "StackNextJSDistributionOrigin6F399DA4B", - "S3OriginConfig": Object { - "OriginAccessIdentity": Object { - "Fn::Join": Array [ - "", - Array [ - "origin-access-identity/cloudfront/", - Object { - "Ref": "StackNextJSDistributionOrigin6S3Origin922D99DB", - }, - ], - ], - }, - }, - }, - ], - }, - }, - "Type": "AWS::CloudFront::Distribution", - }, - "StackNextJSDistributionOrigin1S3OriginE5C3C6BA": Object { - "Properties": Object { - "CloudFrontOriginAccessIdentityConfig": Object { - "Comment": "Identity for StackNextJSDistributionOrigin164EFF789", - }, - }, - "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", - }, - "StackNextJSDistributionOrigin2S3OriginBE3A92C1": Object { - "Properties": Object { - "CloudFrontOriginAccessIdentityConfig": Object { - "Comment": "Identity for StackNextJSDistributionOrigin227291135", - }, - }, - "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", - }, - "StackNextJSDistributionOrigin3S3Origin815895A3": Object { - "Properties": Object { - "CloudFrontOriginAccessIdentityConfig": Object { - "Comment": "Identity for StackNextJSDistributionOrigin33202980A", - }, - }, - "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", - }, - "StackNextJSDistributionOrigin4S3Origin25CF633C": Object { - "Properties": Object { - "CloudFrontOriginAccessIdentityConfig": Object { - "Comment": "Identity for StackNextJSDistributionOrigin4BE563FB7", - }, - }, - "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", - }, - "StackNextJSDistributionOrigin5S3OriginF7CEDF65": Object { - "Properties": Object { - "CloudFrontOriginAccessIdentityConfig": Object { - "Comment": "Identity for StackNextJSDistributionOrigin5E99C79BE", - }, - }, - "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", - }, - "StackNextJSDistributionOrigin6S3Origin922D99DB": Object { - "Properties": Object { - "CloudFrontOriginAccessIdentityConfig": Object { - "Comment": "Identity for StackNextJSDistributionOrigin6F399DA4B", - }, - }, - "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", - }, - "StackNextLambdaCacheF214CEF2": Object { - "Properties": Object { - "CachePolicyConfig": Object { - "DefaultTTL": 0, - "MaxTTL": 31536000, - "MinTTL": 0, - "Name": Object { - "Fn::Join": Array [ - "", - Array [ - "StackNextLambdaCache86499DCE-", - Object { - "Ref": "AWS::Region", - }, - ], - ], - }, - "ParametersInCacheKeyAndForwardedToOrigin": Object { - "CookiesConfig": Object { - "CookieBehavior": "all", - }, - "EnableAcceptEncodingBrotli": true, - "EnableAcceptEncodingGzip": true, - "HeadersConfig": Object { - "HeaderBehavior": "none", - }, - "QueryStringsConfig": Object { - "QueryStringBehavior": "all", - }, - }, - }, - }, - "Type": "AWS::CloudFront::CachePolicy", - }, - "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "FunctionName": Object { - "Ref": "StackNextLambdaF64DCE99", - }, - }, - "Type": "AWS::Lambda::Version", - "UpdateReplacePolicy": "Delete", - }, - "StackNextLambdaCurrentVersionAliasliveB07D2AA0": Object { - "Properties": Object { - "FunctionName": Object { - "Ref": "StackNextLambdaF64DCE99", - }, - "FunctionVersion": Object { - "Fn::GetAtt": Array [ - "StackNextLambdaCurrentVersion21F01F8771ef2c132584be251714bdf9076e3f05", - "Version", - ], - }, - "Name": "live", - }, - "Type": "AWS::Lambda::Alias", - }, - "StackNextLambdaF64DCE99": Object { - "DependsOn": Array [ - "StackNextEdgeLambdaRoleDefaultPolicy28BC6A5D", - "StackNextEdgeLambdaRole02C429A6", - ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { - "Ref": "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bS3BucketB5EDC333", - }, - "S3Key": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::Select": Array [ - 0, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bS3VersionKeyAB92E59F", - }, - ], - }, - ], - }, - Object { - "Fn::Select": Array [ - 1, - Object { - "Fn::Split": Array [ - "||", - Object { - "Ref": "AssetParametersdab825e6eb19a7b4d78ffba5120b7f3449a9b68c41e7c8a102eb95fbfb194c6bS3VersionKeyAB92E59F", - }, - ], - }, - ], - }, - ], - ], - }, - }, - "Description": "Default Lambda@Edge for Next CloudFront distribution", - "Handler": "index.handler", - "Role": Object { - "Fn::GetAtt": Array [ - "StackNextEdgeLambdaRole02C429A6", - "Arn", - ], - }, - "Runtime": "nodejs12.x", - }, - "Type": "AWS::Lambda::Function", - }, - "StackNextLambdaLogRetention4645F5D1": Object { - "Properties": Object { - "LogGroupName": Object { - "Fn::Join": Array [ - "", - Array [ - "/aws/lambda/", - Object { - "Ref": "StackNextLambdaF64DCE99", - }, - ], - ], - }, - "RetentionInDays": 3, - "ServiceToken": Object { - "Fn::GetAtt": Array [ - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", - "Arn", - ], - }, - }, - "Type": "Custom::LogRetention", - }, - "StackNextStaticsCacheC4615915": Object { - "Properties": Object { - "CachePolicyConfig": Object { - "DefaultTTL": 2592000, - "MaxTTL": 2592000, - "MinTTL": 2592000, - "Name": Object { - "Fn::Join": Array [ - "", - Array [ - "StackNextStaticsCacheBB90E053-", - Object { - "Ref": "AWS::Region", - }, - ], - ], - }, - "ParametersInCacheKeyAndForwardedToOrigin": Object { - "CookiesConfig": Object { - "CookieBehavior": "none", - }, - "EnableAcceptEncodingBrotli": true, - "EnableAcceptEncodingGzip": true, - "HeadersConfig": Object { - "HeaderBehavior": "none", - }, - "QueryStringsConfig": Object { - "QueryStringBehavior": "none", - }, - }, - }, - }, - "Type": "AWS::CloudFront::CachePolicy", - }, - "StackPublicAssets8F0F4FE8": Object { - "DeletionPolicy": "Delete", - "Type": "AWS::S3::Bucket", - "UpdateReplacePolicy": "Delete", - }, - "StackPublicAssetsAutoDeleteObjectsCustomResource55D84E66": Object { - "DeletionPolicy": "Delete", - "DependsOn": Array [ - "StackPublicAssetsPolicy113B95FD", - ], - "Properties": Object { - "BucketName": Object { - "Ref": "StackPublicAssets8F0F4FE8", - }, - "ServiceToken": Object { - "Fn::GetAtt": Array [ - "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", - "Arn", - ], - }, - }, - "Type": "Custom::S3AutoDeleteObjects", - "UpdateReplacePolicy": "Delete", - }, - "StackPublicAssetsPolicy113B95FD": Object { - "Properties": Object { - "Bucket": Object { - "Ref": "StackPublicAssets8F0F4FE8", - }, - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "s3:GetObject", - "Effect": "Allow", - "Principal": "*", - "Resource": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], - ], - }, - }, - Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - "s3:DeleteObject*", - ], - "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::GetAtt": Array [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - "Arn", - ], - }, - }, - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], - ], - }, - ], - }, - Object { - "Action": "s3:GetObject", - "Effect": "Allow", - "Principal": Object { - "CanonicalUser": Object { - "Fn::GetAtt": Array [ - "StackNextJSDistributionOrigin1S3OriginE5C3C6BA", - "S3CanonicalUserId", - ], - }, - }, - "Resource": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], - ], - }, - }, - Object { - "Action": "s3:GetObject", - "Effect": "Allow", - "Principal": Object { - "CanonicalUser": Object { - "Fn::GetAtt": Array [ - "StackNextJSDistributionOrigin2S3OriginBE3A92C1", - "S3CanonicalUserId", - ], - }, - }, - "Resource": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], - ], - }, - }, - Object { - "Action": "s3:GetObject", - "Effect": "Allow", - "Principal": Object { - "CanonicalUser": Object { - "Fn::GetAtt": Array [ - "StackNextJSDistributionOrigin3S3Origin815895A3", - "S3CanonicalUserId", - ], - }, - }, - "Resource": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], - ], - }, - }, - Object { - "Action": "s3:GetObject", - "Effect": "Allow", - "Principal": Object { - "CanonicalUser": Object { - "Fn::GetAtt": Array [ - "StackNextJSDistributionOrigin4S3Origin25CF633C", - "S3CanonicalUserId", - ], - }, - }, - "Resource": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], - ], - }, - }, - Object { - "Action": "s3:GetObject", - "Effect": "Allow", - "Principal": Object { - "CanonicalUser": Object { - "Fn::GetAtt": Array [ - "StackNextJSDistributionOrigin5S3OriginF7CEDF65", - "S3CanonicalUserId", - ], - }, - }, - "Resource": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], - ], - }, - }, - Object { - "Action": "s3:GetObject", - "Effect": "Allow", - "Principal": Object { - "CanonicalUser": Object { - "Fn::GetAtt": Array [ - "StackNextJSDistributionOrigin6S3Origin922D99DB", - "S3CanonicalUserId", - ], - }, - }, - "Resource": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "StackPublicAssets8F0F4FE8", - "Arn", - ], - }, - "/*", - ], - ], - }, - }, - ], - "Version": "2012-10-17", - }, - }, - "Type": "AWS::S3::BucketPolicy", - }, - }, -} -`; - exports[`CDK Construct Snapshots creates next app with ISR pages 1`] = ` Object { "Parameters": Object { From b13cb05a3fe4eb5fd93b37a869d6397893a3e914 Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 16 May 2021 17:58:51 +0100 Subject: [PATCH 42/48] fix: update regeneration fallback test --- .../yarn.lock | 118 +----------------- .../e2e-tests/next-app-with-locales/yarn.lock | 118 +----------------- .../next-app-with-trailing-slash/package.json | 2 +- .../integration/static-regeneration.test.ts | 18 ++- 4 files changed, 26 insertions(+), 230 deletions(-) diff --git a/packages/e2e-tests/next-app-with-locales-using-serverless-trace/yarn.lock b/packages/e2e-tests/next-app-with-locales-using-serverless-trace/yarn.lock index f1013c3b77..1fdd177bf1 100644 --- a/packages/e2e-tests/next-app-with-locales-using-serverless-trace/yarn.lock +++ b/packages/e2e-tests/next-app-with-locales-using-serverless-trace/yarn.lock @@ -1169,22 +1169,10 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" -<<<<<<< HEAD -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - arch@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -======= -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== ->>>>>>> master archy@^1.0.0: version "1.0.0" @@ -1526,20 +1514,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -<<<<<<< HEAD -bl@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - blob-util@^2.0.2: -======= -blob-util@2.0.2: ->>>>>>> master version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2009,22 +1984,10 @@ chokidar@^2.0.4, chokidar@^2.1.1: optionalDependencies: fsevents "^1.2.7" -<<<<<<< HEAD -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== -======= -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ->>>>>>> master cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2414,19 +2377,17 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== -<<<<<<< HEAD dayjs@^1.10.4: version "1.10.4" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== -======= + debug@2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" ->>>>>>> master debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" @@ -2435,7 +2396,6 @@ debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -<<<<<<< HEAD debug@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" @@ -2443,15 +2403,6 @@ debug@4.3.2: dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -======= ->>>>>>> master debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -3396,20 +3347,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -<<<<<<< HEAD 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.0: -======= -ini@^1.3.5: ->>>>>>> master - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - inline-source-map@~0.6.0: version "0.6.2" resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" @@ -3492,22 +3434,15 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -<<<<<<< HEAD -is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== -======= is-callable@^1.1.4, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== ->>>>>>> master +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: ci-info "^3.1.1" @@ -4774,47 +4709,10 @@ postcss@8.2.13: nanoid "^3.1.22" source-map "^0.6.1" -<<<<<<< HEAD -postcss@^7.0.32: - version "7.0.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prebuild-install@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.1.tgz#5902172f7a40eb67305b96c2a695db32636ee26d" - integrity sha512-7GOJrLuow8yeiyv75rmvZyeMGzl8mdEX5gY69d6a6bHWmiPevwqFw+tQavhK0EYMaSg3/KD24cWqeQv1EWsqDQ== - dependencies: - detect-libc "^1.0.3" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^2.7.0" - noop-logger "^0.1.1" - npmlog "^4.0.1" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^3.0.3" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - which-pm-runs "^1.0.0" - pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -======= -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== ->>>>>>> master process-nextick-args@~2.0.0: version "2.0.1" @@ -5656,11 +5554,7 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -<<<<<<< HEAD -supports-color@^8.1.1: -======= -supports-color@^8.0.0: ->>>>>>> master +supports-color@^8.0.0, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== diff --git a/packages/e2e-tests/next-app-with-locales/yarn.lock b/packages/e2e-tests/next-app-with-locales/yarn.lock index fc62cc1939..76dfc43d90 100644 --- a/packages/e2e-tests/next-app-with-locales/yarn.lock +++ b/packages/e2e-tests/next-app-with-locales/yarn.lock @@ -1169,22 +1169,10 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" -<<<<<<< HEAD -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - arch@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -======= -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== ->>>>>>> master archy@^1.0.0: version "1.0.0" @@ -1526,20 +1514,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -<<<<<<< HEAD -bl@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - blob-util@^2.0.2: -======= -blob-util@2.0.2: ->>>>>>> master version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -2009,22 +1984,10 @@ chokidar@^2.0.4, chokidar@^2.1.1: optionalDependencies: fsevents "^1.2.7" -<<<<<<< HEAD -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== -======= -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ->>>>>>> master cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2414,19 +2377,17 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== -<<<<<<< HEAD dayjs@^1.10.4: version "1.10.4" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== -======= + debug@2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" ->>>>>>> master debug@4.1.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" @@ -2435,7 +2396,6 @@ debug@4.1.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -<<<<<<< HEAD debug@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" @@ -2443,15 +2403,6 @@ debug@4.3.2: dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -======= ->>>>>>> master debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -3396,20 +3347,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -<<<<<<< HEAD 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.0: -======= -ini@^1.3.5: ->>>>>>> master - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - inline-source-map@~0.6.0: version "0.6.2" resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" @@ -3492,22 +3434,15 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -<<<<<<< HEAD -is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== -======= is-callable@^1.1.4, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== ->>>>>>> master +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: ci-info "^3.1.1" @@ -4774,47 +4709,10 @@ postcss@8.2.13: nanoid "^3.1.22" source-map "^0.6.1" -<<<<<<< HEAD -postcss@^7.0.32: - version "7.0.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prebuild-install@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.1.tgz#5902172f7a40eb67305b96c2a695db32636ee26d" - integrity sha512-7GOJrLuow8yeiyv75rmvZyeMGzl8mdEX5gY69d6a6bHWmiPevwqFw+tQavhK0EYMaSg3/KD24cWqeQv1EWsqDQ== - dependencies: - detect-libc "^1.0.3" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^2.7.0" - noop-logger "^0.1.1" - npmlog "^4.0.1" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^3.0.3" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - which-pm-runs "^1.0.0" - pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -======= -pretty-bytes@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.0.tgz#b5efc2638cfc0a5e8c369bb0418abb4b386c7c6d" - integrity sha512-ctjMzsPQfGSyThWQ9//I6egmiEL/F0VgHKW4atxRd1V8+CPm0J/hihZJp0nb0GDRLUpICyCZTG1f/lE/42f/VQ== ->>>>>>> master process-nextick-args@~2.0.0: version "2.0.1" @@ -5656,11 +5554,7 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -<<<<<<< HEAD -supports-color@^8.1.1: -======= -supports-color@^8.0.0: ->>>>>>> master +supports-color@^8.0.0, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== diff --git a/packages/e2e-tests/next-app-with-trailing-slash/package.json b/packages/e2e-tests/next-app-with-trailing-slash/package.json index 875219e036..6212a8884b 100644 --- a/packages/e2e-tests/next-app-with-trailing-slash/package.json +++ b/packages/e2e-tests/next-app-with-trailing-slash/package.json @@ -8,7 +8,7 @@ "start": "next start -p $PORT", "serverless": "serverless", "e2e": "cypress run", - "e2e:ci": "ISR_PAGE_PATH=/revalidated-ssg-page DYNAMIC_ISR_PAGE_PATH=/revalidated-ssg-pages/101 SSG_PAGE_PATH=/ssg-page/ SSR_PAGE_PATH=/ssr-page/ APP_NAME=next-app-with-trailing-slash ts-node --project tsconfig.scripts.json ../test-utils/scripts/run-e2e-ci.ts" + "e2e:ci": "SSG_PAGE_PATH=/ssg-page/ SSR_PAGE_PATH=/ssr-page/ APP_NAME=next-app-with-trailing-slash ts-node --project tsconfig.scripts.json ../test-utils/scripts/run-e2e-ci.ts" }, "repository": { "type": "git", diff --git a/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts b/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts index eaf3d535e1..a25910c0d9 100644 --- a/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts +++ b/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts @@ -7,13 +7,21 @@ describe("ISR Tests", () => { // runs describe("SSG page", { retries: 0 }, () => { [ - "/revalidated-ssg-page", + { path: "/revalidated-ssg-page", initialWaitSeconds: 0 }, // Pre-rendered ISR page - "/revalidated-ssg-pages/101", - // Blocking dynamic generated page - "/revalidated-ssg-pages/105" - ].forEach((path) => { + { path: "/revalidated-ssg-pages/101", initialWaitSeconds: 0 }, + // Blocking dynamic generated page. As the page will be created and cached + // on first request, we'll need to wait another 10+1 seconds to be sure + // that we have exceeded the revalidate window. + { path: "/revalidated-ssg-pages/105", initialWaitSeconds: 11 } + ].forEach(({ path, initialWaitSeconds }) => { it(`serves the cached re-rendered page "${path}" after 2 reloads`, () => { + if (initialWaitSeconds) { + cy.ensureRouteNotCached(path); + cy.visit(path); + cy.wait(initialWaitSeconds); + } + // The initial load will have expired in the cache cy.ensureRouteNotCached(path); cy.visit(path); From aaa0916284f27a5b1496f3ede29ff02c10276351 Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 16 May 2021 18:54:04 +0100 Subject: [PATCH 43/48] fix: convert secs to millis --- .../next-app/cypress/integration/static-regeneration.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts b/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts index a25910c0d9..a3b4349cc7 100644 --- a/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts +++ b/packages/e2e-tests/next-app/cypress/integration/static-regeneration.test.ts @@ -19,7 +19,7 @@ describe("ISR Tests", () => { if (initialWaitSeconds) { cy.ensureRouteNotCached(path); cy.visit(path); - cy.wait(initialWaitSeconds); + cy.wait(initialWaitSeconds * 1000); } // The initial load will have expired in the cache From f104d1989fec9b1906d07543648594aebcbdb54b Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 16 May 2021 19:43:18 +0100 Subject: [PATCH 44/48] fix: revert 404 case --- .../cypress/integration/redirects.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts b/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts index 8a3cecf0b5..cb519ff3a1 100644 --- a/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts +++ b/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts @@ -40,7 +40,7 @@ describe("Redirects Tests", () => { { path: "//example.com", expectedPath: "/example.com/", - expectedStatus: 308 + expectedStatus: 404 } ].forEach(({ path, expectedPath, expectedStatus }) => { it(`does not redirect page ${path}`, () => { From bf6ceed305671892b5e44e044ed3aee35bfd8039 Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 16 May 2021 20:21:41 +0100 Subject: [PATCH 45/48] fix: revert 308 case --- .../cypress/integration/redirects.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts b/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts index cb519ff3a1..8a3cecf0b5 100644 --- a/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts +++ b/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts @@ -40,7 +40,7 @@ describe("Redirects Tests", () => { { path: "//example.com", expectedPath: "/example.com/", - expectedStatus: 404 + expectedStatus: 308 } ].forEach(({ path, expectedPath, expectedStatus }) => { it(`does not redirect page ${path}`, () => { From 200f19504b974fcd8cdb55eeeda65dcf595599a2 Mon Sep 17 00:00:00 2001 From: Henry Date: Sun, 16 May 2021 21:34:12 +0100 Subject: [PATCH 46/48] fix: revert 404 case --- .../cypress/integration/redirects.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts b/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts index 8a3cecf0b5..cb519ff3a1 100644 --- a/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts +++ b/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts @@ -40,7 +40,7 @@ describe("Redirects Tests", () => { { path: "//example.com", expectedPath: "/example.com/", - expectedStatus: 308 + expectedStatus: 404 } ].forEach(({ path, expectedPath, expectedStatus }) => { it(`does not redirect page ${path}`, () => { From e2cae313f784e3cf1c8e0e3fab948bc31df8409f Mon Sep 17 00:00:00 2001 From: Henry Date: Mon, 17 May 2021 14:27:43 +0100 Subject: [PATCH 47/48] fix: set cache folder for more reliability(??) --- .github/workflows/e2e-tests.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 5dd711a5f8..305d354f9b 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -96,13 +96,13 @@ jobs: with: node-version: ${{ matrix.node-version }} - - run: yarn --frozen-lockfile + - run: yarn --cache-folder=~/.yc/${{ matrix.app }}/root --frozen-lockfile # TODO: build once and cache for all e2e tests - name: Install test utils run: | cd packages/e2e-tests/test-utils - yarn --frozen-lockfile + yarn --cache-folder=~/.yc/${{ matrix.app }}/test-utils --frozen-lockfile - name: Wait for existing workflow to complete before e2e tests uses: softprops/turnstyle@v1 @@ -122,7 +122,7 @@ jobs: CYPRESS_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed for testing external rewrites to GitHub API without getting throttled run: | cd packages/e2e-tests/$APP_NAME - yarn --frozen-lockfile + yarn --cache-folder=~/.yc/${{ matrix.app }}/app --frozen-lockfile sleep $[($RANDOM % 15) + 1]s # Sleep 1-15 seconds to try to avoid throttling yarn e2e:ci From f4e5218cc31fda2acaed8541770a62b90f135518 Mon Sep 17 00:00:00 2001 From: Henry Date: Mon, 17 May 2021 18:35:18 +0100 Subject: [PATCH 48/48] fix: 404 redirect test, update post cypress bump --- .../cypress/integration/redirects.test.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts b/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts index cb519ff3a1..d0e6b352ce 100644 --- a/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts +++ b/packages/e2e-tests/next-app-with-trailing-slash/cypress/integration/redirects.test.ts @@ -43,13 +43,10 @@ describe("Redirects Tests", () => { expectedStatus: 404 } ].forEach(({ path, expectedPath, expectedStatus }) => { - it(`does not redirect page ${path}`, () => { - // These cases should not redirect ever due to security - cy.ensureRouteHasStatusCode(path, expectedStatus); - + it(`does not redirect page ${path}`, { retries: 0 }, () => { cy.visit(path, { failOnStatusCode: false }); cy.location("pathname").should("eq", expectedPath); - cy.contains("404"); + cy.contains(`${expectedStatus}`); }); }); });