From b20d510a3ffcc7f9d9c25da4de6b47cdf8bb5a6d Mon Sep 17 00:00:00 2001 From: Jonathan Goldwasser Date: Wed, 22 Dec 2021 14:24:56 +0100 Subject: [PATCH] chore(slack-app): add integration test (#139) --- .gitignore | 11 + .npmignore | 3 + .projen/deps.json | 4 + .projen/tasks.json | 68 ++- package.json | 8 +- .../slack-app-integ.assets.json | 58 +++ .../slack-app-integ.template.json | 426 ++++++++++++++++++ test/slack-app/slack-app.integ.ts | 28 ++ yarn.lock | 93 +++- 9 files changed, 688 insertions(+), 11 deletions(-) create mode 100644 test/slack-app/slack-app.integ.snapshot/slack-app-integ.assets.json create mode 100644 test/slack-app/slack-app.integ.snapshot/slack-app-integ.template.json create mode 100644 test/slack-app/slack-app.integ.ts diff --git a/.gitignore b/.gitignore index 7caf3b38..d6a1e89b 100644 --- a/.gitignore +++ b/.gitignore @@ -50,4 +50,15 @@ junit.xml .jsii tsconfig.json !/API.md +test/slack-app/slack-app.integ.snapshot/asset.* +test/slack-app/slack-app.integ.snapshot/**/asset.* +test/slack-app/slack-app.integ.snapshot/cdk.out +test/slack-app/slack-app.integ.snapshot/**/cdk.out +test/slack-app/slack-app.integ.snapshot/manifest.json +test/slack-app/slack-app.integ.snapshot/**/manifest.json +test/slack-app/slack-app.integ.snapshot/tree.json +test/slack-app/slack-app.integ.snapshot/**/tree.json +test/slack-app/.tmp/slack-app.integ/deploy.cdk.out +test/slack-app/.tmp/slack-app.integ/synth.cdk.out +!test/slack-app/slack-app.integ.snapshot !/.github/workflows/upgrade-master.yml diff --git a/.npmignore b/.npmignore index efe7d677..bb33d979 100644 --- a/.npmignore +++ b/.npmignore @@ -21,3 +21,6 @@ dist tsconfig.tsbuildinfo /.eslintrc.json !.jsii +test/slack-app/.tmp/slack-app.integ/deploy.cdk.out +test/slack-app/.tmp/slack-app.integ/synth.cdk.out +test/slack-app/slack-app.integ.snapshot diff --git a/.projen/deps.json b/.projen/deps.json index 52f9284f..c00016f5 100644 --- a/.projen/deps.json +++ b/.projen/deps.json @@ -129,6 +129,10 @@ "name": "ts-jest", "type": "build" }, + { + "name": "ts-node", + "type": "build" + }, { "name": "typescript", "type": "build" diff --git a/.projen/tasks.json b/.projen/tasks.json index b41f2880..9d3b2c31 100644 --- a/.projen/tasks.json +++ b/.projen/tasks.json @@ -117,6 +117,69 @@ } ] }, + "integ:slack-app:assert": { + "name": "integ:slack-app:assert", + "description": "assert the snapshot of integration test 'slack-app'", + "steps": [ + { + "exec": "[ -d \"test/slack-app/slack-app.integ.snapshot\" ] || (echo \"No snapshot available for integration test 'slack-app'. Run 'projen integ:slack-app:deploy' to capture.\" && exit 1)" + }, + { + "exec": "cdk synth --app \"ts-node -P tsconfig.dev.json test/slack-app/slack-app.integ.ts\" --no-version-reporting --no-path-metadata --no-asset-metadata -o test/slack-app/.tmp/slack-app.integ/synth.cdk.out > /dev/null" + }, + { + "exec": "diff -r -x asset.* -x cdk.out -x manifest.json -x tree.json test/slack-app/slack-app.integ.snapshot/ test/slack-app/.tmp/slack-app.integ/synth.cdk.out/" + } + ] + }, + "integ:slack-app:deploy": { + "name": "integ:slack-app:deploy", + "description": "deploy integration test 'slack-app' and capture snapshot", + "steps": [ + { + "exec": "rm -fr test/slack-app/.tmp/slack-app.integ/deploy.cdk.out" + }, + { + "exec": "cdk deploy --app \"ts-node -P tsconfig.dev.json test/slack-app/slack-app.integ.ts\" --no-version-reporting --no-path-metadata --no-asset-metadata --require-approval=never -o test/slack-app/.tmp/slack-app.integ/deploy.cdk.out" + }, + { + "exec": "rm -fr test/slack-app/slack-app.integ.snapshot" + }, + { + "exec": "mv test/slack-app/.tmp/slack-app.integ/deploy.cdk.out test/slack-app/slack-app.integ.snapshot" + }, + { + "spawn": "integ:slack-app:destroy" + } + ] + }, + "integ:slack-app:destroy": { + "name": "integ:slack-app:destroy", + "description": "destroy integration test 'slack-app'", + "steps": [ + { + "exec": "cdk destroy --app test/slack-app/slack-app.integ.snapshot --no-version-reporting" + } + ] + }, + "integ:slack-app:snapshot": { + "name": "integ:slack-app:snapshot", + "description": "update snapshot for integration test \"slack-app\"", + "steps": [ + { + "exec": "cdk synth --app \"ts-node -P tsconfig.dev.json test/slack-app/slack-app.integ.ts\" --no-version-reporting --no-path-metadata --no-asset-metadata -o test/slack-app/slack-app.integ.snapshot > /dev/null" + } + ] + }, + "integ:slack-app:watch": { + "name": "integ:slack-app:watch", + "description": "watch integration test 'slack-app' (without updating snapshots)", + "steps": [ + { + "exec": "cdk watch --app \"ts-node -P tsconfig.dev.json test/slack-app/slack-app.integ.ts\" --no-version-reporting --no-path-metadata --no-asset-metadata -o test/slack-app/.tmp/slack-app.integ/deploy.cdk.out" + } + ] + }, "package": { "name": "package", "description": "Creates the distribution package", @@ -172,6 +235,9 @@ }, { "spawn": "eslint" + }, + { + "spawn": "integ:slack-app:assert" } ] }, @@ -234,7 +300,7 @@ "exec": "yarn install --check-files" }, { - "exec": "yarn upgrade @aws-cdk/aws-apigatewayv2-alpha @aws-cdk/aws-apigatewayv2-integrations-alpha @types/aws-lambda @types/jest @types/node @types/tsscmp @typescript-eslint/eslint-plugin @typescript-eslint/parser aws-cdk aws-cdk-lib aws-sdk aws-sdk-mock constructs esbuild eslint-import-resolver-node eslint-import-resolver-typescript eslint-plugin-import eslint jest jest-junit jsii jsii-diff jsii-docgen jsii-pacmak json-schema nock npm-check-updates standard-version ts-jest typescript @slack/web-api got @aws-cdk/aws-apigatewayv2-alpha @aws-cdk/aws-apigatewayv2-integrations-alpha aws-cdk-lib constructs" + "exec": "yarn upgrade @aws-cdk/aws-apigatewayv2-alpha @aws-cdk/aws-apigatewayv2-integrations-alpha @types/aws-lambda @types/jest @types/node @types/tsscmp @typescript-eslint/eslint-plugin @typescript-eslint/parser aws-cdk aws-cdk-lib aws-sdk aws-sdk-mock constructs esbuild eslint-import-resolver-node eslint-import-resolver-typescript eslint-plugin-import eslint jest jest-junit jsii jsii-diff jsii-docgen jsii-pacmak json-schema nock npm-check-updates standard-version ts-jest ts-node typescript @slack/web-api got @aws-cdk/aws-apigatewayv2-alpha @aws-cdk/aws-apigatewayv2-integrations-alpha aws-cdk-lib constructs" }, { "exec": "npx projen" diff --git a/package.json b/package.json index d3f1c414..41de19a1 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,11 @@ "default": "npx projen default", "docgen": "npx projen docgen", "eslint": "npx projen eslint", + "integ:slack-app:assert": "npx projen integ:slack-app:assert", + "integ:slack-app:deploy": "npx projen integ:slack-app:deploy", + "integ:slack-app:destroy": "npx projen integ:slack-app:destroy", + "integ:slack-app:snapshot": "npx projen integ:slack-app:snapshot", + "integ:slack-app:watch": "npx projen integ:slack-app:watch", "package": "npx projen package", "post-compile": "npx projen post-compile", "pre-compile": "npx projen pre-compile", @@ -60,9 +65,10 @@ "json-schema": "^0.4.0", "nock": "^13.2.1", "npm-check-updates": "^12", - "projen": "^0.45.3", + "projen": "^0.45.4", "standard-version": "^9", "ts-jest": "^26.5.6", + "ts-node": "^10.4.0", "typescript": "^3.9.10" }, "peerDependencies": { diff --git a/test/slack-app/slack-app.integ.snapshot/slack-app-integ.assets.json b/test/slack-app/slack-app.integ.snapshot/slack-app-integ.assets.json new file mode 100644 index 00000000..93cc282a --- /dev/null +++ b/test/slack-app/slack-app.integ.snapshot/slack-app-integ.assets.json @@ -0,0 +1,58 @@ +{ + "version": "15.0.0", + "files": { + "945cd7d9441a51c1ff66d173b463d1cc1b1cbd908970a93a6d46a3107222ec4a": { + "source": { + "path": "asset.945cd7d9441a51c1ff66d173b463d1cc1b1cbd908970a93a6d46a3107222ec4a", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "945cd7d9441a51c1ff66d173b463d1cc1b1cbd908970a93a6d46a3107222ec4a.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "b120b13d9d868c7622e7db1b68bae4c0f82ffd0227b8c15f2cef38e186ff3827": { + "source": { + "path": "asset.b120b13d9d868c7622e7db1b68bae4c0f82ffd0227b8c15f2cef38e186ff3827", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "b120b13d9d868c7622e7db1b68bae4c0f82ffd0227b8c15f2cef38e186ff3827.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "c691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49c": { + "source": { + "path": "asset.c691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49c", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "c691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49c.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "38d5f904433d3fbbd52fe8aa1604a159e73ff303663513bbbd3b2339a074b943": { + "source": { + "path": "slack-app-integ.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "38d5f904433d3fbbd52fe8aa1604a159e73ff303663513bbbd3b2339a074b943.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/test/slack-app/slack-app.integ.snapshot/slack-app-integ.template.json b/test/slack-app/slack-app.integ.snapshot/slack-app-integ.template.json new file mode 100644 index 00000000..7fad071c --- /dev/null +++ b/test/slack-app/slack-app.integ.snapshot/slack-app-integ.template.json @@ -0,0 +1,426 @@ +{ + "Resources": { + "MyAppCredentialsA49C5B90": { + "Type": "AWS::SecretsManager::Secret", + "Properties": { + "Description": "Credentials for Slack App MyApp", + "GenerateSecretString": {} + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "MyApp3CE31C26": { + "Type": "Custom::SlackApp", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "SlackAppProviderframeworkonEventF1145A70", + "Arn" + ] + }, + "manifest": "{\"display_information\":{\"name\":\"My App\",\"description\":\"A very cool Slack App deployed with CDK\"}}", + "configurationTokenSecretArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":secretsmanager:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":secret:slack-app-config-token" + ] + ] + }, + "credentialsSecretArn": { + "Ref": "MyAppCredentialsA49C5B90" + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "SlackAppProviderhandlerServiceRoleDAC1FDD7": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "SlackAppProviderhandlerServiceRoleDefaultPolicyBAEEA75E": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "secretsmanager:GetSecretValue", + "secretsmanager:DescribeSecret" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":secretsmanager:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":secret:slack-app-config-token-??????" + ] + ] + } + }, + { + "Action": [ + "secretsmanager:PutSecretValue", + "secretsmanager:UpdateSecret" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":secretsmanager:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":secret:slack-app-config-token-??????" + ] + ] + } + }, + { + "Action": [ + "secretsmanager:PutSecretValue", + "secretsmanager:UpdateSecret" + ], + "Effect": "Allow", + "Resource": { + "Ref": "MyAppCredentialsA49C5B90" + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "SlackAppProviderhandlerServiceRoleDefaultPolicyBAEEA75E", + "Roles": [ + { + "Ref": "SlackAppProviderhandlerServiceRoleDAC1FDD7" + } + ] + } + }, + "SlackAppProviderhandler547B4993": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "945cd7d9441a51c1ff66d173b463d1cc1b1cbd908970a93a6d46a3107222ec4a.zip" + }, + "Role": { + "Fn::GetAtt": [ + "SlackAppProviderhandlerServiceRoleDAC1FDD7", + "Arn" + ] + }, + "Environment": { + "Variables": { + "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1" + } + }, + "Handler": "index.handler", + "Runtime": "nodejs12.x" + }, + "DependsOn": [ + "SlackAppProviderhandlerServiceRoleDefaultPolicyBAEEA75E", + "SlackAppProviderhandlerServiceRoleDAC1FDD7" + ] + }, + "SlackAppProviderhandlerLogRetentionA1560DAA": { + "Type": "Custom::LogRetention", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", + "Arn" + ] + }, + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "SlackAppProviderhandler547B4993" + } + ] + ] + }, + "RetentionInDays": 30 + } + }, + "SlackAppProviderframeworkonEventServiceRoleE93E1666": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "SlackAppProviderframeworkonEventServiceRoleDefaultPolicy494BD6CF": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "SlackAppProviderhandler547B4993", + "Arn" + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "SlackAppProviderframeworkonEventServiceRoleDefaultPolicy494BD6CF", + "Roles": [ + { + "Ref": "SlackAppProviderframeworkonEventServiceRoleE93E1666" + } + ] + } + }, + "SlackAppProviderframeworkonEventF1145A70": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "c691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49c.zip" + }, + "Role": { + "Fn::GetAtt": [ + "SlackAppProviderframeworkonEventServiceRoleE93E1666", + "Arn" + ] + }, + "Description": "AWS CDK resource provider framework - onEvent (slack-app-integ/SlackAppProvider/Resource)", + "Environment": { + "Variables": { + "USER_ON_EVENT_FUNCTION_ARN": { + "Fn::GetAtt": [ + "SlackAppProviderhandler547B4993", + "Arn" + ] + } + } + }, + "Handler": "framework.onEvent", + "Runtime": "nodejs12.x", + "Timeout": 900 + }, + "DependsOn": [ + "SlackAppProviderframeworkonEventServiceRoleDefaultPolicy494BD6CF", + "SlackAppProviderframeworkonEventServiceRoleE93E1666" + ] + }, + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "logs:PutRetentionPolicy", + "logs:DeleteRetentionPolicy" + ], + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB", + "Roles": [ + { + "Ref": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB" + } + ] + } + }, + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Handler": "index.handler", + "Runtime": "nodejs14.x", + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "b120b13d9d868c7622e7db1b68bae4c0f82ffd0227b8c15f2cef38e186ff3827.zip" + }, + "Role": { + "Fn::GetAtt": [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", + "Arn" + ] + } + }, + "DependsOn": [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB", + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB" + ] + } + }, + "Outputs": { + "AppId": { + "Value": { + "Fn::GetAtt": [ + "MyApp3CE31C26", + "appId" + ] + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/test/slack-app/slack-app.integ.ts b/test/slack-app/slack-app.integ.ts new file mode 100644 index 00000000..08497327 --- /dev/null +++ b/test/slack-app/slack-app.integ.ts @@ -0,0 +1,28 @@ +import { App, CfnOutput, Stack, StackProps } from 'aws-cdk-lib'; +import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager'; +import { Construct } from 'constructs'; +import { SlackApp } from '../../src'; + +class TestStack extends Stack { + constructor(scope: Construct, id: string, props?: StackProps) { + super(scope, id, props); + + const app = new SlackApp(this, 'MyApp', { + configurationTokenSecret: secretsmanager.Secret.fromSecretNameV2(this, 'Secret', 'slack-app-config-token'), + manifest: Stack.of(this).toJsonString({ + display_information: { + name: 'My App', + description: 'A very cool Slack App deployed with CDK', + }, + }), + }); + + new CfnOutput(this, 'AppId', { + value: app.appId, + }); + } +} + +const app = new App(); +new TestStack(app, 'slack-app-integ'); +app.synth(); diff --git a/yarn.lock b/yarn.lock index bfd6c142..1dbce0f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -344,6 +344,18 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@cspotcode/source-map-consumer@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" + integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== + +"@cspotcode/source-map-support@0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" + integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== + dependencies: + "@cspotcode/source-map-consumer" "0.8.0" + "@eslint/eslintrc@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" @@ -800,6 +812,26 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + +"@tsconfig/node12@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + +"@tsconfig/node16@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + "@types/aws-lambda@^8.10.87": version "8.10.87" resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.87.tgz#5e90af2d4ffb41d3bf9c97080a5c4700ddf06436" @@ -917,9 +949,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*": - version "17.0.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.1.tgz#88d501e84b6185f6489ecee4ba9e8fcec7f29bb2" - integrity sha512-NXKvBVUzIbs6ylBwmOwHFkZS2EXCcjnqr8ZCRNaXBkHAf+3mn/rPcJxwrzuc6movh8fxQAsUUfYklJ/EG+hZqQ== + version "17.0.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.2.tgz#a4c07d47ff737e8ee7e586fe636ff0e1ddff070a" + integrity sha512-JepeIUPFDARgIs0zD/SKPgFsJEAF0X5/qO80llx59gOxFTboS9Amv3S+QfB7lqBId5sFXJ99BN0J6zFRvL9dDA== "@types/node@>=8.9.0": version "16.11.12" @@ -1091,12 +1123,17 @@ acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.6.0: +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.6.0: version "8.6.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== @@ -1246,6 +1283,11 @@ are-we-there-yet@^2.0.0: delegates "^1.0.0" readable-stream "^3.6.0" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2244,6 +2286,11 @@ crc32-stream@^4.0.2: crc-32 "^1.2.0" readable-stream "^3.4.0" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -2513,6 +2560,11 @@ diff-sequences@^26.6.2: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diff@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" @@ -5193,7 +5245,7 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" -make-error@1.x: +make-error@1.x, make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -6197,10 +6249,10 @@ progress@^2.0.0, progress@^2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -projen@^0.45.3: - version "0.45.3" - resolved "https://registry.yarnpkg.com/projen/-/projen-0.45.3.tgz#3b29051fa01d681d7a66519d3710b56c262b6357" - integrity sha512-KlbNjQI7tglP8M1u5gldV8t/czgcVBANFYOriGBT7BgoaG4w7OT6qoRbFoGvOSx374ptfqBZYbXJXUA8dDwSig== +projen@^0.45.4: + version "0.45.4" + resolved "https://registry.yarnpkg.com/projen/-/projen-0.45.4.tgz#dc3ff52debbbd991842ec7add9e1f412e71c591b" + integrity sha512-VYJahJwQ1V0jc6sfXeTU8PYRUYpfxXmMxkf56Jds+JeLAFjUvcf0P6gipAU+OL6X5OOzxQHtON7AOiu53WXjwA== dependencies: "@iarna/toml" "^2.2.5" case "^1.6.3" @@ -7374,6 +7426,24 @@ ts-jest@^26.5.6: semver "7.x" yargs-parser "20.x" +ts-node@^10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.4.0.tgz#680f88945885f4e6cf450e7f0d6223dd404895f7" + integrity sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A== + dependencies: + "@cspotcode/source-map-support" "0.7.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + yn "3.1.1" + tsconfig-paths@^3.11.0, tsconfig-paths@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" @@ -7930,6 +8000,11 @@ yargs@^16.0.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"