From 61cf3d5f6bb5a19d5a6b344f6c9d9386658e243f Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Mon, 11 Nov 2024 09:51:19 -0500 Subject: [PATCH] Add integration tests for remaining resources This adds integration tests for the remaining construct libraries. Also adds mapping for one missing CCAPI resource (`AWS::Events::EventBusPolicy`) re #183 --- integration/examples_nodejs_test.go | 9 ++ integration/misc-services/Pulumi.yaml | 3 + integration/misc-services/index.ts | 87 ++++++++++++++++ integration/misc-services/package.json | 15 +++ integration/misc-services/tsconfig.json | 18 ++++ package.json | 4 +- src/aws-resource-mappings.ts | 40 ++++++++ src/cfn-resource-mappings.ts | 5 + tests/aws-resource-mappings.test.ts | 70 ++++++++++++- tests/cdk-resource.test.ts | 61 +++++++++++ tests/cfn-resource-mappings.test.ts | 18 +++- tests/mocks.ts | 4 + yarn.lock | 128 ++++++++++++++---------- 13 files changed, 404 insertions(+), 58 deletions(-) create mode 100644 integration/misc-services/Pulumi.yaml create mode 100644 integration/misc-services/index.ts create mode 100644 integration/misc-services/package.json create mode 100644 integration/misc-services/tsconfig.json diff --git a/integration/examples_nodejs_test.go b/integration/examples_nodejs_test.go index be14c833..8e2bce1d 100644 --- a/integration/examples_nodejs_test.go +++ b/integration/examples_nodejs_test.go @@ -82,6 +82,15 @@ func TestLogs(t *testing.T) { integration.ProgramTest(t, &test) } +func TestMisc(t *testing.T) { + test := getJSBaseOptions(t). + With(integration.ProgramTestOptions{ + Dir: filepath.Join(getCwd(t), "misc-services"), + }) + + integration.ProgramTest(t, &test) +} + func getJSBaseOptions(t *testing.T) integration.ProgramTestOptions { base := getBaseOptions(t) baseJS := base.With(integration.ProgramTestOptions{ diff --git a/integration/misc-services/Pulumi.yaml b/integration/misc-services/Pulumi.yaml new file mode 100644 index 00000000..5197fac9 --- /dev/null +++ b/integration/misc-services/Pulumi.yaml @@ -0,0 +1,3 @@ +name: pulumi-aws-misc +runtime: nodejs +description: misc integration test diff --git a/integration/misc-services/index.ts b/integration/misc-services/index.ts new file mode 100644 index 00000000..8d5dcfde --- /dev/null +++ b/integration/misc-services/index.ts @@ -0,0 +1,87 @@ +import * as events from 'aws-cdk-lib/aws-events'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import * as ssm from 'aws-cdk-lib/aws-ssm'; +import * as ecr from 'aws-cdk-lib/aws-ecr'; +import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; +import * as pulumicdk from '@pulumi/cdk'; +import { SecretValue } from 'aws-cdk-lib'; +import { AwsCliLayer } from 'aws-cdk-lib/lambda-layer-awscli'; + +class MiscServicesStack extends pulumicdk.Stack { + constructor(app: pulumicdk.App, id: string, options?: pulumicdk.StackOptions) { + super(app, id, options); + const repo = new ecr.Repository(this, 'testrepo'); + repo.grantPull(new iam.ServicePrincipal('lambda.amazonaws.com')); + + new ssm.StringParameter(this, 'testparam', { + stringValue: 'testvalue', + }); + + const eventBus = new events.EventBus(this, 'testbus'); + eventBus.addToResourcePolicy( + new iam.PolicyStatement({ + sid: 'testsid', + actions: ['events:PutEvents'], + principals: [new iam.AccountRootPrincipal()], + resources: [eventBus.eventBusArn], + }), + ); + + // This type of event bus policy is created for cross account access + new events.CfnEventBusPolicy(this, 'bus-policy', { + action: 'events:PutEvents', + statementId: 'statement-id', + principal: new iam.AccountRootPrincipal().accountId, + }); + const connection = new events.Connection(this, 'testconn', { + authorization: events.Authorization.basic('user', SecretValue.unsafePlainText('password')), + }); + new events.ApiDestination(this, ' testdest', { + endpoint: 'https://example.com', + connection, + }); + + const fn = new lambda.Function(this, 'testfn', { + runtime: lambda.Runtime.PYTHON_3_12, + handler: 'index.handler', + code: lambda.Code.fromInline('def handler(event, context): return {}'), + }); + fn.addLayers(new AwsCliLayer(this, 'testlayer')); + + const errors = fn.metricErrors(); + const throttles = fn.metricThrottles(); + const throttleAlarm = throttles.createAlarm(this, 'alarm-throttles', { threshold: 1, evaluationPeriods: 1 }); + const errorsAlarm = errors.createAlarm(this, 'alarm-errors', { threshold: 1, evaluationPeriods: 1 }); + const alarmRule = cloudwatch.AlarmRule.anyOf(throttleAlarm, errorsAlarm); + new cloudwatch.CompositeAlarm(this, 'compositealarm', { + alarmRule, + }); + + const dashboard = new cloudwatch.Dashboard(this, 'testdash'); + dashboard.addWidgets( + new cloudwatch.GraphWidget({ + left: [errors], + }), + ); + + new iam.User(this, 'User', { + groups: [new iam.Group(this, 'Group')], + managedPolicies: [ + new iam.ManagedPolicy(this, 'ManagedPolicy', { + statements: [ + new iam.PolicyStatement({ + actions: ['s3:*'], + resources: ['*'], + effect: iam.Effect.DENY, + }), + ], + }), + ], + }); + } +} + +new pulumicdk.App('app', (scope: pulumicdk.App) => { + new MiscServicesStack(scope, 'teststack'); +}); diff --git a/integration/misc-services/package.json b/integration/misc-services/package.json new file mode 100644 index 00000000..888282a9 --- /dev/null +++ b/integration/misc-services/package.json @@ -0,0 +1,15 @@ +{ + "name": "pulumi-aws-cdk", + "devDependencies": { + "@types/node": "^10.0.0" + }, + "dependencies": { + "@pulumi/aws": "^6.0.0", + "@pulumi/aws-native": "^1.5.0", + "@pulumi/cdk": "^0.5.0", + "@pulumi/pulumi": "^3.0.0", + "aws-cdk-lib": "2.149.0", + "constructs": "10.3.0", + "esbuild": "^0.24.0" + } +} diff --git a/integration/misc-services/tsconfig.json b/integration/misc-services/tsconfig.json new file mode 100644 index 00000000..eac442cb --- /dev/null +++ b/integration/misc-services/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "strict": true, + "outDir": "bin", + "target": "es2019", + "module": "commonjs", + "moduleResolution": "node", + "sourceMap": true, + "experimentalDecorators": true, + "pretty": true, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "forceConsistentCasingInFileNames": true + }, + "include": [ + "./*.ts" + ] +} diff --git a/package.json b/package.json index 51acfea8..66e7d675 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ } }, "resolutions": { - "@pulumi/pulumi": "3.121.0", + "@pulumi/pulumi": "3.136.0", "wrap-ansi": "7.0.0", "string-width": "4.1.0" }, @@ -30,7 +30,7 @@ "@pulumi/aws": "^6.32.0", "@pulumi/aws-native": "^1.6.0", "@pulumi/docker": "^4.5.0", - "@pulumi/pulumi": "3.121.0", + "@pulumi/pulumi": "3.136.0", "@types/archiver": "^6.0.2", "@types/fs-extra": "^11.0.4", "@types/jest": "^29.5.2", diff --git a/src/aws-resource-mappings.ts b/src/aws-resource-mappings.ts index 29e699e2..e5f2d412 100644 --- a/src/aws-resource-mappings.ts +++ b/src/aws-resource-mappings.ts @@ -260,6 +260,46 @@ export function mapToAwsResource( ); } + case 'AWS::Events::EventBusPolicy': { + let props: aws.cloudwatch.EventBusPolicyArgs; + if (rawProps.Statement && (rawProps.Principal || rawProps.Action || rawProps.Condition)) { + throw new Error( + 'EventBusPolicy args invalid. Only Statement or StatementId, Principal, Action, and Condition are allowed', + ); + } else if (rawProps.Statement) { + props = { + policy: pulumi.jsonStringify({ + Statement: [rawProps.Statement], + Version: '2012-10-17', + }), + eventBusName: rawProps.EventBusName, + }; + } else { + const region = aws.getRegionOutput({}, options).name; + const partition = aws.getPartitionOutput({}, options).partition; + const busName = rawProps.EventBusName ?? 'default'; + const arn = pulumi.interpolate`arn:${partition}:events:${region}:${rawProps.Principal}:event-bus/${busName}`; + props = { + policy: pulumi.jsonStringify({ + Statement: [ + { + Sid: rawProps.StatementId, + Principal: { + AWS: rawProps.Principal, + }, + Action: rawProps.Action, + Effect: 'Allow', + Resource: arn, + Condition: rawProps.Condition, + }, + ], + Version: '2012-10-17', + }), + eventBusName: rawProps.EventBusName, + }; + } + return new aws.cloudwatch.EventBusPolicy(logicalId, props, options); + } default: return undefined; } diff --git a/src/cfn-resource-mappings.ts b/src/cfn-resource-mappings.ts index 7aed1323..6187cf6b 100644 --- a/src/cfn-resource-mappings.ts +++ b/src/cfn-resource-mappings.ts @@ -34,6 +34,11 @@ export function mapToCfnResource( // lowercase letters. return new aws.s3.Bucket(logicalId.toLowerCase(), props, options); + case 'AWS::ECR::Repository': + // Lowercase the repository name to comply with the Repository resource's naming constraints, which only allow + // lowercase letters. + return new aws.ecr.Repository(logicalId.toLowerCase(), props, options); + // A couple of ApiGateway resources suffer from https://github.com/pulumi/pulumi-cdk/issues/173 // These are very popular resources so handling the workaround here since we can remove these // manual mappings once the issue has been fixed without breaking users diff --git a/tests/aws-resource-mappings.test.ts b/tests/aws-resource-mappings.test.ts index 08e2648c..c5cb43cb 100644 --- a/tests/aws-resource-mappings.test.ts +++ b/tests/aws-resource-mappings.test.ts @@ -1,9 +1,18 @@ import { mapToAwsResource } from '../src/aws-resource-mappings'; -import * as route53 from 'aws-cdk-lib/aws-route53'; import * as aws from '@pulumi/aws'; jest.mock('@pulumi/aws', () => { return { + getRegionOutput: jest.fn().mockImplementation(() => { + return { + name: 'us-east-1', + }; + }), + getPartitionOutput: jest.fn().mockImplementation(() => { + return { + partition: 'aws', + }; + }), apigatewayv2: { Integration: jest.fn().mockImplementation(() => { return {}; @@ -19,6 +28,11 @@ jest.mock('@pulumi/aws', () => { return {}; }), }, + cloudwatch: { + EventBusPolicy: jest.fn().mockImplementation(() => { + return {}; + }), + }, iam: { Policy: jest.fn().mockImplementation(() => { return {}; @@ -41,11 +55,13 @@ jest.mock('@pulumi/aws', () => { }; }); -afterEach(() => { +afterAll(() => { jest.resetAllMocks(); }); -beforeAll(() => {}); +beforeEach(() => { + jest.clearAllMocks(); +}); describe('AWS Resource Mappings', () => { test('maps iam.Policy', () => { @@ -370,4 +386,52 @@ describe('AWS Resource Mappings', () => { {}, ); }); + + test('successfully maps EventBusPolicy resource', () => { + // GIVEN + const cfnType = 'AWS::Events::EventBusPolicy'; + const logicalId = 'my-resource'; + const cfnProps = { + EventBusName: 'eventBus', + Action: 'events:PutEvents', + Principal: '123456789012', + StatementId: 'MyStatement', + }; + // WHEN + mapToAwsResource(logicalId, cfnType, cfnProps, {}); + // THEN + expect(aws.cloudwatch.EventBusPolicy).toHaveBeenCalledWith( + logicalId, + { + eventBusName: 'eventBus', + policy: expect.anything(), + }, + {}, + ); + }); + + test('successfully maps EventBusPolicy resource when statement provided', () => { + // GIVEN + const cfnType = 'AWS::Events::EventBusPolicy'; + const logicalId = 'my-resource'; + const cfnProps = { + EventBusName: 'eventBus', + Statement: { + Effect: 'Allow', + Principal: '123456789012', + Action: 'events:PutEvents', + }, + }; + // WHEN + mapToAwsResource(logicalId, cfnType, cfnProps, {}); + // THEN + expect(aws.cloudwatch.EventBusPolicy).toHaveBeenCalledWith( + logicalId, + { + eventBusName: 'eventBus', + policy: expect.anything(), + }, + {}, + ); + }); }); diff --git a/tests/cdk-resource.test.ts b/tests/cdk-resource.test.ts index 7ca439f8..5894af74 100644 --- a/tests/cdk-resource.test.ts +++ b/tests/cdk-resource.test.ts @@ -1,4 +1,6 @@ import * as route53 from 'aws-cdk-lib/aws-route53'; +import * as events from 'aws-cdk-lib/aws-events'; +import * as iam from 'aws-cdk-lib/aws-iam'; import * as dynamodb from 'aws-cdk-lib/aws-dynamodb'; import { TableArgs } from '@pulumi/aws-native/dynamodb'; import { Key } from 'aws-cdk-lib/aws-kms'; @@ -109,4 +111,63 @@ describe('CDK Construct tests', () => { expect(txt).toBeDefined(); expect(txt?.inputs.records).toEqual(['hello'.repeat(51), 'hello']); }); + + test('EventBusPolicy correctly maps statement', async () => { + await testApp((scope: Construct) => { + const eventBus = new events.EventBus(scope, 'testbus'); + eventBus.addToResourcePolicy( + new iam.PolicyStatement({ + sid: 'testsid', + actions: ['events:PutEvents'], + principals: [new iam.AccountRootPrincipal()], + resources: [eventBus.eventBusArn], + }), + ); + }); + const policy = resources.find((res) => res.type === 'aws:cloudwatch/eventBusPolicy:EventBusPolicy'); + expect(policy).toBeDefined(); + expect(policy?.inputs.policy).toEqual( + JSON.stringify({ + Statement: [ + { + Action: 'events:PutEvents', + Effect: 'Allow', + Principal: { AWS: 'arn:aws:iam::12345678912:root' }, + Resource: 'testbus9BA9ECFC_arn', + Sid: 'cdk-testsid', + }, + ], + Version: '2012-10-17', + }), + ); + }); + + test('EventBusPolicy correctly maps props', async () => { + await testApp((scope: Construct) => { + // This type of event bus policy is created for cross account access + new events.CfnEventBusPolicy(scope, 'buspolicy', { + action: 'events:PutEvents', + statementId: 'statement-id', + principal: '123456789012', + }); + }); + const policy = resources.find( + (res) => res.type === 'aws:cloudwatch/eventBusPolicy:EventBusPolicy' && res.name === 'buspolicy', + ); + expect(policy).toBeDefined(); + expect(policy?.inputs.policy).toEqual( + JSON.stringify({ + Statement: [ + { + Sid: 'statement-id', + Principal: { AWS: '123456789012' }, + Action: 'events:PutEvents', + Effect: 'Allow', + Resource: 'arn:aws:events:us-east-2:123456789012:event-bus/default', + }, + ], + Version: '2012-10-17', + }), + ); + }); }); diff --git a/tests/cfn-resource-mappings.test.ts b/tests/cfn-resource-mappings.test.ts index 4da3cced..3b935ad0 100644 --- a/tests/cfn-resource-mappings.test.ts +++ b/tests/cfn-resource-mappings.test.ts @@ -1,8 +1,6 @@ import { CustomResource } from '@pulumi/pulumi'; -import { setMocks } from './mocks'; import { mapToCfnResource } from '../src/cfn-resource-mappings'; import * as aws from '@pulumi/aws-native'; -import { MockResourceArgs } from '@pulumi/pulumi/runtime'; class MockResource { constructor(args: { [key: string]: any }) { @@ -28,6 +26,11 @@ jest.mock('@pulumi/aws-native', () => { return {}; }), }, + ecr: { + Repository: jest.fn().mockImplementation(() => { + return {}; + }), + }, iam: { Role: jest.fn().mockImplementation(() => { return {}; @@ -82,6 +85,17 @@ describe('Cfn Resource Mappings', () => { expect(aws.s3.Bucket).toHaveBeenCalledWith('my-resource', {}, {}); }); + test('lowercase ecr.Repository name', () => { + // GIVEN + const cfnType = 'AWS::ECR::Repository'; + const logicalId = 'My-resource'; + const cfnProps = {}; + // WHEN + mapToCfnResource(logicalId, cfnType, cfnProps, {}); + // THEN + expect(aws.ecr.Repository).toHaveBeenCalledWith('my-resource', {}, {}); + }); + test('maps s3objectlambda.AccessPoint props', () => { // GIVEN const cfnType = 'AWS::S3ObjectLambda::AccessPoint'; diff --git a/tests/mocks.ts b/tests/mocks.ts index 50048113..a65e0210 100644 --- a/tests/mocks.ts +++ b/tests/mocks.ts @@ -65,6 +65,10 @@ export function setMocks(resources?: MockResourceArgs[]) { return { accountId: '12345678910', }; + case 'aws:index/getPartition:getPartition': + return { + partition: 'aws', + }; case 'aws:index/getRegion:getRegion': return { name: 'us-east-2', diff --git a/yarn.lock b/yarn.lock index 92dbb49b..1510f921 100644 --- a/yarn.lock +++ b/yarn.lock @@ -864,14 +864,14 @@ proc-log "^4.0.0" which "^4.0.0" -"@opentelemetry/api-metrics@0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api-metrics/-/api-metrics-0.32.0.tgz#0f09f78491a4b301ddf54a8b8a38ffa99981f645" - integrity sha512-g1WLhpG8B6iuDyZJFRGsR+JKyZ94m5LEmY2f+duEJ9Xb4XRlLHrZvh6G34OH6GJ8iDHxfHb/sWjJ1ZpkI9yGMQ== +"@opentelemetry/api-logs@0.52.1": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz#52906375da4d64c206b0c4cb8ffa209214654ecc" + integrity sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A== dependencies: "@opentelemetry/api" "^1.0.0" -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.2.0": +"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.9": version "1.9.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== @@ -888,7 +888,7 @@ dependencies: "@opentelemetry/semantic-conventions" "1.27.0" -"@opentelemetry/exporter-zipkin@^1.6.0": +"@opentelemetry/exporter-zipkin@^1.25": version "1.27.0" resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.27.0.tgz#3ed984643797545c34ceb320276ed65d0df24e77" integrity sha512-eGMY3s4QprspFZojqsuQyQpWNFpo+oNVE/aosTbtvAlrJBAlvXcwwsOROOHOd8Y9lkU4i0FpQW482rcXkgwCSw== @@ -898,23 +898,24 @@ "@opentelemetry/sdk-trace-base" "1.27.0" "@opentelemetry/semantic-conventions" "1.27.0" -"@opentelemetry/instrumentation-grpc@^0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.32.0.tgz#5a9705a166f4f10106f502078f2ed4b8681b2ccf" - integrity sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ== +"@opentelemetry/instrumentation-grpc@^0.52": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.52.1.tgz#906ce4756a0eb1b050cd89b6b97dc09efe3ae3e3" + integrity sha512-EdSDiDSAO+XRXk/ZN128qQpBo1I51+Uay/LUPcPQhSRGf7fBPIEUBeOLQiItguGsug5MGOYjql2w/1wCQF3fdQ== dependencies: - "@opentelemetry/api-metrics" "0.32.0" - "@opentelemetry/instrumentation" "0.32.0" - "@opentelemetry/semantic-conventions" "1.6.0" + "@opentelemetry/instrumentation" "0.52.1" + "@opentelemetry/semantic-conventions" "1.25.1" -"@opentelemetry/instrumentation@0.32.0", "@opentelemetry/instrumentation@^0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.32.0.tgz#27c5975a323a2ba83d9bf2ea8b11faaab37c5827" - integrity sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ== +"@opentelemetry/instrumentation@0.52.1", "@opentelemetry/instrumentation@^0.52": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz#2e7e46a38bd7afbf03cf688c862b0b43418b7f48" + integrity sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw== dependencies: - "@opentelemetry/api-metrics" "0.32.0" - require-in-the-middle "^5.0.3" - semver "^7.3.2" + "@opentelemetry/api-logs" "0.52.1" + "@types/shimmer" "^1.0.2" + import-in-the-middle "^1.8.1" + require-in-the-middle "^7.1.1" + semver "^7.5.2" shimmer "^1.2.1" "@opentelemetry/propagator-b3@1.27.0": @@ -931,7 +932,7 @@ dependencies: "@opentelemetry/core" "1.27.0" -"@opentelemetry/resources@1.27.0", "@opentelemetry/resources@^1.6.0": +"@opentelemetry/resources@1.27.0", "@opentelemetry/resources@^1.25": version "1.27.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.27.0.tgz#1f91c270eb95be32f3511e9e6624c1c0f993c4ac" integrity sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ== @@ -939,7 +940,7 @@ "@opentelemetry/core" "1.27.0" "@opentelemetry/semantic-conventions" "1.27.0" -"@opentelemetry/sdk-trace-base@1.27.0", "@opentelemetry/sdk-trace-base@^1.6.0": +"@opentelemetry/sdk-trace-base@1.27.0", "@opentelemetry/sdk-trace-base@^1.25": version "1.27.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.27.0.tgz#2276e4cd0d701a8faba77382b2938853a0907b54" integrity sha512-btz6XTQzwsyJjombpeqCX6LhiMQYpzt2pIYNPnw0IPO/3AhT6yjnf8Mnv3ZC2A4eRYOjqrg+bfaXg9XHDRJDWQ== @@ -948,7 +949,7 @@ "@opentelemetry/resources" "1.27.0" "@opentelemetry/semantic-conventions" "1.27.0" -"@opentelemetry/sdk-trace-node@^1.6.0": +"@opentelemetry/sdk-trace-node@^1.25": version "1.27.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.27.0.tgz#ee890a1fedba6a2a313190ada80e5077865a8684" integrity sha512-dWZp/dVGdUEfRBjBq2BgNuBlFqHCxyyMc8FsN0NX15X07mxSUO0SZRLyK/fdAVrde8nqFI/FEdMH4rgU9fqJfQ== @@ -960,16 +961,16 @@ "@opentelemetry/sdk-trace-base" "1.27.0" semver "^7.5.2" -"@opentelemetry/semantic-conventions@1.27.0", "@opentelemetry/semantic-conventions@^1.6.0": +"@opentelemetry/semantic-conventions@1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz#0deecb386197c5e9c2c28f2f89f51fb8ae9f145e" + integrity sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ== + +"@opentelemetry/semantic-conventions@1.27.0", "@opentelemetry/semantic-conventions@^1.25": version "1.27.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz#1a857dcc95a5ab30122e04417148211e6f945e6c" integrity sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg== -"@opentelemetry/semantic-conventions@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.6.0.tgz#ed410c9eb0070491cff9fe914246ce41f88d6f74" - integrity sha512-aPfcBeLErM/PPiAuAbNFLN5sNbZLc3KZlar27uohllN8Zs6jJbHyJU1y7cMA6W/zuq+thkaG8mujiS+3iD/FWQ== - "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -1053,22 +1054,22 @@ "@pulumi/pulumi" "^3.136.0" semver "^5.4.0" -"@pulumi/pulumi@3.121.0", "@pulumi/pulumi@^3.136.0": - version "3.121.0" - resolved "https://registry.yarnpkg.com/@pulumi/pulumi/-/pulumi-3.121.0.tgz#0671a73a56d4cdf6614837e4a9e2d1e531c9d44b" - integrity sha512-fv9sY1e7nPeGpvlHIMZcErHeZAsbdqOi0Jcb1oxi0NvTU3jy1EZa70q+JdE0dmqYlr43HaSL8SU5+G0/S08wGA== +"@pulumi/pulumi@3.136.0", "@pulumi/pulumi@^3.136.0": + version "3.136.0" + resolved "https://registry.yarnpkg.com/@pulumi/pulumi/-/pulumi-3.136.0.tgz#52bf15335abadbd9a40b07a7ad7d745b7ba89650" + integrity sha512-8RWX7yoxxDXZxXhJyfKrKpetSuSJzIirW16vF4naKoqF0aUDYE+6gGUrFttEfikGxaEXie4YT1UFnwuCGbXhTw== dependencies: "@grpc/grpc-js" "^1.10.1" "@logdna/tail-file" "^2.0.6" "@npmcli/arborist" "^7.3.1" - "@opentelemetry/api" "^1.2.0" - "@opentelemetry/exporter-zipkin" "^1.6.0" - "@opentelemetry/instrumentation" "^0.32.0" - "@opentelemetry/instrumentation-grpc" "^0.32.0" - "@opentelemetry/resources" "^1.6.0" - "@opentelemetry/sdk-trace-base" "^1.6.0" - "@opentelemetry/sdk-trace-node" "^1.6.0" - "@opentelemetry/semantic-conventions" "^1.6.0" + "@opentelemetry/api" "^1.9" + "@opentelemetry/exporter-zipkin" "^1.25" + "@opentelemetry/instrumentation" "^0.52" + "@opentelemetry/instrumentation-grpc" "^0.52" + "@opentelemetry/resources" "^1.25" + "@opentelemetry/sdk-trace-base" "^1.25" + "@opentelemetry/sdk-trace-node" "^1.25" + "@opentelemetry/semantic-conventions" "^1.25" "@pulumi/query" "^0.3.0" "@types/google-protobuf" "^3.15.5" "@types/semver" "^7.5.6" @@ -1373,6 +1374,11 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== +"@types/shimmer@^1.0.2": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/shimmer/-/shimmer-1.2.0.tgz#9b706af96fa06416828842397a70dfbbf1c14ded" + integrity sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg== + "@types/stack-utils@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" @@ -1493,6 +1499,11 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -1510,6 +1521,11 @@ acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.13.0.tgz#2a30d670818ad16ddd6a35d3842dacec9e5d7ca3" integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w== +acorn@^8.8.2: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" @@ -2050,7 +2066,7 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -cjs-module-lexer@^1.0.0: +cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== @@ -2223,7 +2239,7 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: version "4.3.7" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== @@ -2966,6 +2982,16 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-in-the-middle@^1.8.1: + version "1.11.2" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz#dd848e72b63ca6cd7c34df8b8d97fc9baee6174f" + integrity sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA== + dependencies: + acorn "^8.8.2" + acorn-import-attributes "^1.9.5" + cjs-module-lexer "^1.2.2" + module-details-from-path "^1.0.3" + import-local@^3.0.2: version "3.2.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" @@ -4534,14 +4560,14 @@ require-from-string@^2.0.1, require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-in-the-middle@^5.0.3: - version "5.2.0" - resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz#4b71e3cc7f59977100af9beb76bf2d056a5a6de2" - integrity sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg== +require-in-the-middle@^7.1.1: + version "7.4.0" + resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz#606977820d4b5f9be75e5a108ce34cfed25b3bb4" + integrity sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ== dependencies: - debug "^4.1.1" + debug "^4.3.5" module-details-from-path "^1.0.3" - resolve "^1.22.1" + resolve "^1.22.8" resolve-alpn@^1.0.0: version "1.2.1" @@ -4570,7 +4596,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.20.0, resolve@^1.22.1, resolve@^1.7.1: +resolve@^1.20.0, resolve@^1.22.8, resolve@^1.7.1: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -4645,7 +4671,7 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.1.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3: +semver@^7.1.1, semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==