From f66009c2e9fac26a5f829cbdcc42e4f749ffa08e Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:40:11 -0500 Subject: [PATCH 1/9] Enable preview for create and update Currently if you update a resource, all outputs are shown as computed during preview. This means that downstream resources might show a replacement in the plan if they are using one of those output values. There are some outputs that we know will not change unless the resource is replaced (I'm referring to these as "stable" outputs). For stable outputs we can copy the value from the state in order to show an accurate preview. The problem is that the CCAPI schema has no way of determining programmatically which outputs are stable and which are not. Because of this, this PR introduces a heuristic to determine if an output is a stable output. - Is the value a `readOnlyProperty` in the schema? This indicates that it is a computed output property - Is the property the resource `id`, `arn` or `name`? If the id, arn, or name is a computed property then we can assume that it is a stable property. I don't know of any cases where these change outside of a resource replacement. This is not 100% coverage of stable properties, but it should get us most of the impactful properties. To get close to 100% coverage we will probably need a schema overlay where we can contribute to mapping these stable properties for each resource. closes #1141 --- examples/examples_nodejs_test.go | 22 + examples/stable-outputs-preview/.gitignore | 3 + examples/stable-outputs-preview/Pulumi.yaml | 3 + .../app/index.handler.js | 8 + examples/stable-outputs-preview/index.ts | 49 + .../stable-outputs-preview/package-lock.json | 3725 +++++++++++++++++ examples/stable-outputs-preview/package.json | 13 + examples/stable-outputs-preview/tsconfig.json | 18 + examples/stable-outputs-preview/zip.ts | 48 + .../pulumi-resource-aws-native/metadata.json | 918 ++-- provider/pkg/provider/previewOutputs.go | 218 + provider/pkg/provider/previewOutputs_test.go | 416 ++ provider/pkg/provider/provider.go | 53 +- provider/pkg/provider/provider_test.go | 105 + 14 files changed, 5121 insertions(+), 478 deletions(-) create mode 100644 examples/stable-outputs-preview/.gitignore create mode 100644 examples/stable-outputs-preview/Pulumi.yaml create mode 100644 examples/stable-outputs-preview/app/index.handler.js create mode 100644 examples/stable-outputs-preview/index.ts create mode 100644 examples/stable-outputs-preview/package-lock.json create mode 100644 examples/stable-outputs-preview/package.json create mode 100644 examples/stable-outputs-preview/tsconfig.json create mode 100644 examples/stable-outputs-preview/zip.ts create mode 100644 provider/pkg/provider/previewOutputs.go create mode 100644 provider/pkg/provider/previewOutputs_test.go diff --git a/examples/examples_nodejs_test.go b/examples/examples_nodejs_test.go index debad7ca2f..39ae44640c 100644 --- a/examples/examples_nodejs_test.go +++ b/examples/examples_nodejs_test.go @@ -97,6 +97,28 @@ func TestRefreshChanges(t *testing.T) { assert.Equal(t, 1, len(*updateSummary)) } +func TestPreviewStableProperties(t *testing.T) { + cwd := getCwd(t) + options := []opttest.Option{ + opttest.LocalProviderPath("aws-native", filepath.Join(cwd, "..", "bin")), + opttest.YarnLink("@pulumi/aws-native"), + } + test := pulumitest.NewPulumiTest(t, filepath.Join(cwd, "stable-outputs-preview"), options...) + test.SetConfig(t, "lambdaDescription", "Lambda 1") + defer func() { + test.Destroy(t) + }() + + upResult := test.Up(t) + t.Logf("#%v", upResult.Summary) + + // updating a non-replaceOnChanges property to ensure + // that the downstream resources doesn't show a replacement + test.SetConfig(t, "lambdaDescription", "Lambda 2") + previewResult := test.Preview(t) + assertpreview.HasNoReplacements(t, previewResult) +} + func TestCustomResourceEmulator(t *testing.T) { crossTest := func(t *testing.T, outputs auto.OutputMap) { require.Contains(t, outputs, "cloudformationAmiId") diff --git a/examples/stable-outputs-preview/.gitignore b/examples/stable-outputs-preview/.gitignore new file mode 100644 index 0000000000..cf84eb0ebf --- /dev/null +++ b/examples/stable-outputs-preview/.gitignore @@ -0,0 +1,3 @@ +/bin/ +/node_modules/ +handler.zip diff --git a/examples/stable-outputs-preview/Pulumi.yaml b/examples/stable-outputs-preview/Pulumi.yaml new file mode 100644 index 0000000000..b753c9bca6 --- /dev/null +++ b/examples/stable-outputs-preview/Pulumi.yaml @@ -0,0 +1,3 @@ +name: aws-native-stable-outputs-preview +runtime: nodejs +description: An example program to test stable outputs during preview diff --git a/examples/stable-outputs-preview/app/index.handler.js b/examples/stable-outputs-preview/app/index.handler.js new file mode 100644 index 0000000000..ba808b56bd --- /dev/null +++ b/examples/stable-outputs-preview/app/index.handler.js @@ -0,0 +1,8 @@ +export const handler = async () => { + return { + statusCode: 200, + body: JSON.stringify({ + message: "Hello World!", + }), + }; +}; diff --git a/examples/stable-outputs-preview/index.ts b/examples/stable-outputs-preview/index.ts new file mode 100644 index 0000000000..ff8f749ac2 --- /dev/null +++ b/examples/stable-outputs-preview/index.ts @@ -0,0 +1,49 @@ +import * as pulumi from '@pulumi/pulumi'; +import * as path from 'path'; +import * as ccapi from "@pulumi/aws-native"; +import * as aws from '@pulumi/aws'; +import { zipDirectory } from './zip'; + +const config = new pulumi.Config(); +const desc = config.get('lambdaDescription') ?? 'test lambda'; +const role = new ccapi.iam.Role('lambda-role', { + assumeRolePolicyDocument: { + Version: "2012-10-17", + Statement: [ + { + Effect: "Allow", + Principal: { + Service: "lambda.amazonaws.com", + }, + Action: "sts:AssumeRole", + }, + ], + }, +}); + + +const bucket = new ccapi.s3.Bucket('bucket'); +const object = new aws.s3.BucketObjectv2( + 'object', + { + source: zipDirectory(path.join(__dirname, 'app'), 'handler.zip'), + bucket: bucket.bucketName.apply(bucket => bucket!), + key: 'handler.zip', + }, +); +const handler = new ccapi.lambda.Function('my-function', { + code: { + s3Bucket: bucket.bucketName.apply(bucket => bucket!), + s3Key: object.key, + }, + description: desc, + runtime: 'nodejs20.x', + handler: 'index.handler', + role: role.arn, +}); + +new ccapi.lambda.Permission('chall-permission', { + functionName: handler.arn, + action: 'lambda:InvokeFunction', + principal: 's3.amazonaws.com', +}); diff --git a/examples/stable-outputs-preview/package-lock.json b/examples/stable-outputs-preview/package-lock.json new file mode 100644 index 0000000000..3c3990004b --- /dev/null +++ b/examples/stable-outputs-preview/package-lock.json @@ -0,0 +1,3725 @@ +{ + "name": "aws-native-naming-conventions", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "aws-native-naming-conventions", + "dependencies": { + "@pulumi/aws-native": "^0.8.0", + "@pulumi/pulumi": "^3.74.0" + }, + "devDependencies": { + "@types/node": "^16" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.8.17", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.17.tgz", + "integrity": "sha512-DGuSbtMFbaRsyffMf+VEkVu8HkSXEUfO3UyGJNtqxW9ABdtTIA+2UXAJpwbJS+xfQxuwqLUeELmL6FuZkOqPxw==", + "dependencies": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz", + "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@logdna/tail-file": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@logdna/tail-file/-/tail-file-2.2.0.tgz", + "integrity": "sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng==", + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.0.tgz", + "integrity": "sha512-IgMK9i3sFGNUqPMbjABm0G26g0QCKCUBfglhQ7rQq6WcxbKfEHRcmwsoER4hZcuYqJgkYn2OeuoJIv7Jsftp7g==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-metrics": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-metrics/-/api-metrics-0.32.0.tgz", + "integrity": "sha512-g1WLhpG8B6iuDyZJFRGsR+JKyZ94m5LEmY2f+duEJ9Xb4XRlLHrZvh6G34OH6GJ8iDHxfHb/sWjJ1ZpkI9yGMQ==", + "deprecated": "Please use @opentelemetry/api >= 1.3.0", + "dependencies": { + "@opentelemetry/api": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.9.1.tgz", + "integrity": "sha512-HmycxnnIm00gdmxfD5OkDotL15bGqazLYqQJdcv1uNt22OSc5F/a3Paz3yznmf+/gWdPG8nlq/zd9H0mNXJnGg==", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.9.1.tgz", + "integrity": "sha512-6/qon6tw2I8ZaJnHAQUUn4BqhTbTNRS0WP8/bA0ynaX+Uzp/DDbd0NS0Cq6TMlh8+mrlsyqDE7mO50nmv2Yvlg==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/exporter-zipkin": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.9.1.tgz", + "integrity": "sha512-KBgf3w84luP5vWLlrqVFKmbwFK4lXM//t6K7H4nsg576htbz1RpBbQfybADjPdXTjGHqDTtLiC5MC90hxS7Z2w==", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.32.0.tgz", + "integrity": "sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ==", + "dependencies": { + "@opentelemetry/api-metrics": "0.32.0", + "require-in-the-middle": "^5.0.3", + "semver": "^7.3.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/instrumentation-grpc": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.32.0.tgz", + "integrity": "sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ==", + "dependencies": { + "@opentelemetry/api-metrics": "0.32.0", + "@opentelemetry/instrumentation": "0.32.0", + "@opentelemetry/semantic-conventions": "1.6.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/instrumentation-grpc/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.6.0.tgz", + "integrity": "sha512-aPfcBeLErM/PPiAuAbNFLN5sNbZLc3KZlar27uohllN8Zs6jJbHyJU1y7cMA6W/zuq+thkaG8mujiS+3iD/FWQ==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/propagator-b3": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.9.1.tgz", + "integrity": "sha512-V+/ufHnZSr0YlbNhPg4PIQAZOhP61fVwL0JZJ6qnl9i0jgaZBSAtV99ZvHMxMy0Z1tf+oGj1Hk+S6jRRXL+j1Q==", + "dependencies": { + "@opentelemetry/core": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.9.1.tgz", + "integrity": "sha512-xjG5HnOgu/1f9+GphWr8lqxaU51iFL9HgFdnSQBSFqhM2OeMuzpFt6jmkpZJBAK3oqQ9BG52fHfCdYlw3GOkVQ==", + "dependencies": { + "@opentelemetry/core": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.9.1.tgz", + "integrity": "sha512-VqBGbnAfubI+l+yrtYxeLyOoL358JK57btPMJDd3TCOV3mV5TNBmzvOfmesM4NeTyXuGJByd3XvOHvFezLn3rQ==", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.9.1.tgz", + "integrity": "sha512-Y9gC5M1efhDLYHeeo2MWcDDMmR40z6QpqcWnPCm4Dmh+RHAMf4dnEBBntIe1dDpor686kyU6JV1D29ih1lZpsQ==", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.9.1.tgz", + "integrity": "sha512-wwwCM2G/A0LY3oPLDyO31uRnm9EMNkhhjSxL9cmkK2kM+F915em8K0pXkPWFNGWu0OHkGALWYwH6Oz0P5nVcHA==", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.9.1", + "@opentelemetry/core": "1.9.1", + "@opentelemetry/propagator-b3": "1.9.1", + "@opentelemetry/propagator-jaeger": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.9.1.tgz", + "integrity": "sha512-oPQdbFDmZvjXk5ZDoBGXG8B4tSB/qW5vQunJWQMFUBp7Xe8O1ByPANueJ+Jzg58esEBegyyxZ7LRmfJr7kFcFg==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@pulumi/aws-native": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@pulumi/aws-native/-/aws-native-0.8.0.tgz", + "integrity": "sha512-9deQNYZwZdsAqqviMyRNONPlC4oZY3MrUb8nMS1dhcw4KRPcqnhuHonLZVMo+1X86HkrkVducAHAslwCAfzIeQ==", + "hasInstallScript": true, + "dependencies": { + "@pulumi/pulumi": "^3.0.0", + "@types/glob": "^5.0.35", + "@types/node-fetch": "^2.1.4", + "@types/tmp": "^0.0.33", + "glob": "^7.1.2", + "node-fetch": "^2.3.0", + "shell-quote": "^1.6.1", + "tmp": "^0.0.33" + } + }, + "node_modules/@pulumi/pulumi": { + "version": "3.74.0", + "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.74.0.tgz", + "integrity": "sha512-VKHCH84aiD6FTosr/SmRnp/te1JvpunpPToIG69IlTDMAiDFeRFu/mXUenc1uicWyxG/pKav72f+eKGNdyZqjg==", + "dependencies": { + "@grpc/grpc-js": "^1.8.16", + "@logdna/tail-file": "^2.0.6", + "@opentelemetry/api": "^1.2.0", + "@opentelemetry/exporter-zipkin": "^1.6.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", + "@pulumi/query": "^0.3.0", + "execa": "^5.1.0", + "google-protobuf": "^3.5.0", + "ini": "^2.0.0", + "js-yaml": "^3.14.0", + "minimist": "^1.2.6", + "normalize-package-data": "^3.0.0", + "pkg-dir": "^7.0.0", + "read-package-tree": "^5.3.1", + "require-from-string": "^2.0.1", + "semver": "^7.5.2", + "source-map-support": "^0.5.6", + "ts-node": "^7.0.1", + "typescript": "~3.8.3", + "upath": "^1.1.0" + }, + "engines": { + "node": ">=8.13.0 || >=10.10.0" + } + }, + "node_modules/@pulumi/pulumi/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pulumi/pulumi/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pulumi/query": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@pulumi/query/-/query-0.3.0.tgz", + "integrity": "sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==" + }, + "node_modules/@types/glob": { + "version": "5.0.38", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.38.tgz", + "integrity": "sha512-rTtf75rwyP9G2qO5yRpYtdJ6aU1QqEhWbtW55qEgquEDa6bXW0s2TWZfDm02GuppjEozOWG/F2UnPq5hAQb+gw==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + }, + "node_modules/@types/node": { + "version": "16.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz", + "integrity": "sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-gVC1InwyVrO326wbBZw+AO3u2vRXz/iRWq9jYhpG4W8LXyIgDv3ZmcLQ5Q4Gs+gFMyqx+viFoFT+l3p61QFCmQ==" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "engines": { + "node": "*" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/google-protobuf": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", + "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", + "dependencies": { + "array.prototype.reduce": "^1.0.5", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/protobufjs/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "node_modules/read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "deprecated": "The functionality that this package provided is now in @npmcli/arborist", + "dependencies": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", + "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==", + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@grpc/grpc-js": { + "version": "1.8.17", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.17.tgz", + "integrity": "sha512-DGuSbtMFbaRsyffMf+VEkVu8HkSXEUfO3UyGJNtqxW9ABdtTIA+2UXAJpwbJS+xfQxuwqLUeELmL6FuZkOqPxw==", + "requires": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + } + }, + "@grpc/proto-loader": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz", + "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==", + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^17.7.2" + } + }, + "@logdna/tail-file": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@logdna/tail-file/-/tail-file-2.2.0.tgz", + "integrity": "sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng==" + }, + "@opentelemetry/api": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.0.tgz", + "integrity": "sha512-IgMK9i3sFGNUqPMbjABm0G26g0QCKCUBfglhQ7rQq6WcxbKfEHRcmwsoER4hZcuYqJgkYn2OeuoJIv7Jsftp7g==" + }, + "@opentelemetry/api-metrics": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-metrics/-/api-metrics-0.32.0.tgz", + "integrity": "sha512-g1WLhpG8B6iuDyZJFRGsR+JKyZ94m5LEmY2f+duEJ9Xb4XRlLHrZvh6G34OH6GJ8iDHxfHb/sWjJ1ZpkI9yGMQ==", + "requires": { + "@opentelemetry/api": "^1.0.0" + } + }, + "@opentelemetry/context-async-hooks": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.9.1.tgz", + "integrity": "sha512-HmycxnnIm00gdmxfD5OkDotL15bGqazLYqQJdcv1uNt22OSc5F/a3Paz3yznmf+/gWdPG8nlq/zd9H0mNXJnGg==", + "requires": {} + }, + "@opentelemetry/core": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.9.1.tgz", + "integrity": "sha512-6/qon6tw2I8ZaJnHAQUUn4BqhTbTNRS0WP8/bA0ynaX+Uzp/DDbd0NS0Cq6TMlh8+mrlsyqDE7mO50nmv2Yvlg==", + "requires": { + "@opentelemetry/semantic-conventions": "1.9.1" + } + }, + "@opentelemetry/exporter-zipkin": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.9.1.tgz", + "integrity": "sha512-KBgf3w84luP5vWLlrqVFKmbwFK4lXM//t6K7H4nsg576htbz1RpBbQfybADjPdXTjGHqDTtLiC5MC90hxS7Z2w==", + "requires": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + } + }, + "@opentelemetry/instrumentation": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.32.0.tgz", + "integrity": "sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ==", + "requires": { + "@opentelemetry/api-metrics": "0.32.0", + "require-in-the-middle": "^5.0.3", + "semver": "^7.3.2", + "shimmer": "^1.2.1" + } + }, + "@opentelemetry/instrumentation-grpc": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.32.0.tgz", + "integrity": "sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ==", + "requires": { + "@opentelemetry/api-metrics": "0.32.0", + "@opentelemetry/instrumentation": "0.32.0", + "@opentelemetry/semantic-conventions": "1.6.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.6.0.tgz", + "integrity": "sha512-aPfcBeLErM/PPiAuAbNFLN5sNbZLc3KZlar27uohllN8Zs6jJbHyJU1y7cMA6W/zuq+thkaG8mujiS+3iD/FWQ==" + } + } + }, + "@opentelemetry/propagator-b3": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.9.1.tgz", + "integrity": "sha512-V+/ufHnZSr0YlbNhPg4PIQAZOhP61fVwL0JZJ6qnl9i0jgaZBSAtV99ZvHMxMy0Z1tf+oGj1Hk+S6jRRXL+j1Q==", + "requires": { + "@opentelemetry/core": "1.9.1" + } + }, + "@opentelemetry/propagator-jaeger": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.9.1.tgz", + "integrity": "sha512-xjG5HnOgu/1f9+GphWr8lqxaU51iFL9HgFdnSQBSFqhM2OeMuzpFt6jmkpZJBAK3oqQ9BG52fHfCdYlw3GOkVQ==", + "requires": { + "@opentelemetry/core": "1.9.1" + } + }, + "@opentelemetry/resources": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.9.1.tgz", + "integrity": "sha512-VqBGbnAfubI+l+yrtYxeLyOoL358JK57btPMJDd3TCOV3mV5TNBmzvOfmesM4NeTyXuGJByd3XvOHvFezLn3rQ==", + "requires": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + } + }, + "@opentelemetry/sdk-trace-base": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.9.1.tgz", + "integrity": "sha512-Y9gC5M1efhDLYHeeo2MWcDDMmR40z6QpqcWnPCm4Dmh+RHAMf4dnEBBntIe1dDpor686kyU6JV1D29ih1lZpsQ==", + "requires": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + } + }, + "@opentelemetry/sdk-trace-node": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.9.1.tgz", + "integrity": "sha512-wwwCM2G/A0LY3oPLDyO31uRnm9EMNkhhjSxL9cmkK2kM+F915em8K0pXkPWFNGWu0OHkGALWYwH6Oz0P5nVcHA==", + "requires": { + "@opentelemetry/context-async-hooks": "1.9.1", + "@opentelemetry/core": "1.9.1", + "@opentelemetry/propagator-b3": "1.9.1", + "@opentelemetry/propagator-jaeger": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1", + "semver": "^7.3.5" + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.9.1.tgz", + "integrity": "sha512-oPQdbFDmZvjXk5ZDoBGXG8B4tSB/qW5vQunJWQMFUBp7Xe8O1ByPANueJ+Jzg58esEBegyyxZ7LRmfJr7kFcFg==" + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "@pulumi/aws-native": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@pulumi/aws-native/-/aws-native-0.8.0.tgz", + "integrity": "sha512-9deQNYZwZdsAqqviMyRNONPlC4oZY3MrUb8nMS1dhcw4KRPcqnhuHonLZVMo+1X86HkrkVducAHAslwCAfzIeQ==", + "requires": { + "@pulumi/pulumi": "^3.0.0", + "@types/glob": "^5.0.35", + "@types/node-fetch": "^2.1.4", + "@types/tmp": "^0.0.33", + "glob": "^7.1.2", + "node-fetch": "^2.3.0", + "shell-quote": "^1.6.1", + "tmp": "^0.0.33" + } + }, + "@pulumi/pulumi": { + "version": "3.74.0", + "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.74.0.tgz", + "integrity": "sha512-VKHCH84aiD6FTosr/SmRnp/te1JvpunpPToIG69IlTDMAiDFeRFu/mXUenc1uicWyxG/pKav72f+eKGNdyZqjg==", + "requires": { + "@grpc/grpc-js": "^1.8.16", + "@logdna/tail-file": "^2.0.6", + "@opentelemetry/api": "^1.2.0", + "@opentelemetry/exporter-zipkin": "^1.6.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", + "@pulumi/query": "^0.3.0", + "execa": "^5.1.0", + "google-protobuf": "^3.5.0", + "ini": "^2.0.0", + "js-yaml": "^3.14.0", + "minimist": "^1.2.6", + "normalize-package-data": "^3.0.0", + "pkg-dir": "^7.0.0", + "read-package-tree": "^5.3.1", + "require-from-string": "^2.0.1", + "semver": "^7.5.2", + "source-map-support": "^0.5.6", + "ts-node": "^7.0.1", + "typescript": "~3.8.3", + "upath": "^1.1.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + } + } + }, + "@pulumi/query": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@pulumi/query/-/query-0.3.0.tgz", + "integrity": "sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==" + }, + "@types/glob": { + "version": "5.0.38", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.38.tgz", + "integrity": "sha512-rTtf75rwyP9G2qO5yRpYtdJ6aU1QqEhWbtW55qEgquEDa6bXW0s2TWZfDm02GuppjEozOWG/F2UnPq5hAQb+gw==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + }, + "@types/node": { + "version": "16.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz", + "integrity": "sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==" + }, + "@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "@types/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-gVC1InwyVrO326wbBZw+AO3u2vRXz/iRWq9jYhpG4W8LXyIgDv3ZmcLQ5Q4Gs+gFMyqx+viFoFT+l3p61QFCmQ==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array.prototype.reduce": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==" + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "requires": { + "define-properties": "^1.1.3" + } + }, + "google-protobuf": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", + "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + }, + "internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "requires": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "requires": { + "p-locate": "^6.0.0" + } + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + } + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", + "requires": { + "array.prototype.reduce": "^1.0.5", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "requires": { + "find-up": "^6.3.0" + } + }, + "protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "dependencies": { + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + } + } + }, + "read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "require-in-the-middle": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", + "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", + "requires": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==" + }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==" + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==", + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==" + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==" + } + } +} diff --git a/examples/stable-outputs-preview/package.json b/examples/stable-outputs-preview/package.json new file mode 100644 index 0000000000..e284a6f764 --- /dev/null +++ b/examples/stable-outputs-preview/package.json @@ -0,0 +1,13 @@ +{ + "name": "aws-native-naming-conventions", + "main": "index.ts", + "devDependencies": { + "@types/node": "^16" + }, + "dependencies": { + "@pulumi/aws": "^6.63.0", + "@pulumi/aws-native": "^0.8.0", + "@pulumi/pulumi": "^3.74.0", + "archiver": "^7.0.1" + } +} diff --git a/examples/stable-outputs-preview/tsconfig.json b/examples/stable-outputs-preview/tsconfig.json new file mode 100644 index 0000000000..ab65afa613 --- /dev/null +++ b/examples/stable-outputs-preview/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "strict": true, + "outDir": "bin", + "target": "es2016", + "module": "commonjs", + "moduleResolution": "node", + "sourceMap": true, + "experimentalDecorators": true, + "pretty": true, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.ts" + ] +} diff --git a/examples/stable-outputs-preview/zip.ts b/examples/stable-outputs-preview/zip.ts new file mode 100644 index 0000000000..9c8adb9885 --- /dev/null +++ b/examples/stable-outputs-preview/zip.ts @@ -0,0 +1,48 @@ +import { createWriteStream, promises as fs } from 'fs'; +import * as path from 'path'; +import * as glob from 'glob'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const archiver = require('archiver'); + +export function zipDirectory(directory: string, outputFile: string): Promise { + // eslint-disable-next-line no-async-promise-executor + return new Promise(async (resolve, reject) => { + // The below options are needed to support following symlinks when building zip files: + // - nodir: This will prevent symlinks themselves from being copied into the zip. + // - follow: This will follow symlinks and copy the files within. + const globOptions = { + dot: true, + nodir: true, + follow: true, + cwd: directory, + }; + const files = glob.sync('**', globOptions); // The output here is already sorted + + const output = createWriteStream(outputFile); + + const archive = archiver('zip'); + archive.on('warning', reject); + archive.on('error', reject); + + // archive has been finalized and the output file descriptor has closed, resolve promise + // this has to be done before calling `finalize` since the events may fire immediately after. + // see https://www.npmjs.com/package/archiver + output.once('close', () => resolve(outputFile)); + + archive.pipe(output); + + // Append files serially to ensure file order + for (const file of files) { + const fullPath = path.resolve(directory, file); + const [data, stat] = await Promise.all([fs.readFile(fullPath), fs.stat(fullPath)]); + archive.append(data, { + name: file, + date: new Date('1980-01-01T00:00:00.000Z'), // reset dates to get the same hash for the same content + mode: stat.mode, + }); + } + + await archive.finalize(); + }); +} diff --git a/provider/cmd/pulumi-resource-aws-native/metadata.json b/provider/cmd/pulumi-resource-aws-native/metadata.json index 66edf51d24..d954dbdab7 100644 --- a/provider/cmd/pulumi-resource-aws-native/metadata.json +++ b/provider/cmd/pulumi-resource-aws-native/metadata.json @@ -3584,10 +3584,10 @@ "basePath", "body", "bodyS3Location", - "bodyS3Location/bucket", - "bodyS3Location/etag", - "bodyS3Location/key", - "bodyS3Location/version", + "bodyS3Location/Bucket", + "bodyS3Location/Etag", + "bodyS3Location/Key", + "bodyS3Location/Version", "credentialsArn", "disableSchemaValidation", "failOnWarnings", @@ -5080,8 +5080,8 @@ "createOnly": [ "name", "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "readOnly": [ "arn", @@ -5091,8 +5091,8 @@ "writeOnly": [ "latestVersionNumber", "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "irreversibleNames": { "awsId": "Id" @@ -5186,8 +5186,8 @@ "extensionVersionNumber", "resourceIdentifier", "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "readOnly": [ "arn", @@ -5199,8 +5199,8 @@ "extensionIdentifier", "resourceIdentifier", "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "irreversibleNames": { "awsId": "Id" @@ -6125,7 +6125,7 @@ ], "writeOnly": [ "scalingTargetId", - "targetTrackingScalingPolicyConfiguration/predefinedMetricSpecification/resourceLabel" + "targetTrackingScalingPolicyConfiguration/PredefinedMetricSpecification/ResourceLabel" ], "cfRef": { "property": "Arn" @@ -7515,7 +7515,7 @@ "directoryName" ], "writeOnly": [ - "serviceAccountCredentials/accountPassword" + "serviceAccountCredentials/AccountPassword" ], "primaryIdentifier": [ "directoryName" @@ -7807,8 +7807,8 @@ "apiArn", "apiId", "dns", - "dns/http", - "dns/realtime" + "dns/Http", + "dns/Realtime" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -9531,12 +9531,12 @@ ], "readOnly": [ "creationTime", - "workGroupConfiguration/engineVersion/effectiveEngineVersion", - "workGroupConfigurationUpdates/engineVersion/effectiveEngineVersion" + "workGroupConfiguration/EngineVersion/EffectiveEngineVersion", + "workGroupConfigurationUpdates/EngineVersion/EffectiveEngineVersion" ], "writeOnly": [ "recursiveDeleteOption", - "workGroupConfiguration/additionalConfiguration", + "workGroupConfiguration/AdditionalConfiguration", "workGroupConfigurationUpdates" ], "tagsProperty": "tags", @@ -11325,7 +11325,7 @@ "backupVaultArn" ], "writeOnly": [ - "lockConfiguration/changeableForDays" + "lockConfiguration/ChangeableForDays" ], "tagsProperty": "backupVaultTags", "tagsStyle": "stringMap", @@ -12025,7 +12025,7 @@ ], "createOnly": [ "computeEnvironmentName", - "computeResources/spotIamFleetRole", + "computeResources/SpotIamFleetRole", "eksConfiguration", "tags", "type" @@ -12034,7 +12034,7 @@ "computeEnvironmentArn" ], "writeOnly": [ - "computeResources/updateToLatestImageVersion", + "computeResources/UpdateToLatestImageVersion", "replaceComputeEnvironment", "updatePolicy" ], @@ -12567,7 +12567,7 @@ "updatedAt" ], "writeOnly": [ - "actionGroups/*/skipResourceInUseCheckOnDelete", + "actionGroups/*/SkipResourceInUseCheckOnDelete", "autoPrepare", "skipResourceInUseCheckOnDelete" ], @@ -12895,10 +12895,10 @@ "knowledgeBaseId" ], "createOnly": [ - "dataSourceConfiguration/type", + "dataSourceConfiguration/Type", "knowledgeBaseId", - "vectorIngestionConfiguration/chunkingConfiguration", - "vectorIngestionConfiguration/parsingConfiguration" + "vectorIngestionConfiguration/ChunkingConfiguration", + "vectorIngestionConfiguration/ParsingConfiguration" ], "readOnly": [ "createdAt", @@ -13706,7 +13706,7 @@ "version" ], "writeOnly": [ - "variants/*/templateConfiguration/text/textS3Location" + "variants/*/TemplateConfiguration/Text/TextS3Location" ], "irreversibleNames": { "awsId": "Id" @@ -14372,7 +14372,7 @@ ], "readOnly": [ "accountId", - "subscribers/*/status", + "subscribers/*/Status", "subscriptionArn" ], "writeOnly": [ @@ -14979,14 +14979,14 @@ ], "createOnly": [ "analysisParameters", - "analysisParameters/defaultValue", - "analysisParameters/name", - "analysisParameters/type", + "analysisParameters/DefaultValue", + "analysisParameters/Name", + "analysisParameters/Type", "format", "membershipIdentifier", "name", "source", - "source/text" + "source/Text" ], "readOnly": [ "analysisTemplateIdentifier", @@ -17482,7 +17482,7 @@ ], "readOnly": [ "functionArn", - "functionMetadata/functionArn", + "functionMetadata/FunctionArn", "stage" ], "writeOnly": [ @@ -19945,7 +19945,7 @@ "id" ], "writeOnly": [ - "configurationProperties/*/type" + "configurationProperties/*/Type" ], "irreversibleNames": { "awsId": "Id" @@ -22542,11 +22542,11 @@ ], "readOnly": [ "arn", - "compliance/type", + "compliance/Type", "configRuleId" ], "writeOnly": [ - "source/customPolicyDetails/policyText" + "source/CustomPolicyDetails/PolicyText" ], "cfRef": { "property": "ConfigRuleName" @@ -25880,7 +25880,7 @@ "readOnly": [ "createdAt", "lastUpdatedAt", - "ruleBasedMatching/status", + "ruleBasedMatching/Status", "stats" ], "tagsProperty": "tags", @@ -32130,8 +32130,8 @@ "writeOnly": [ "instanceProfileIdentifier", "migrationProjectIdentifier", - "sourceDataProviderDescriptors/*/dataProviderIdentifier", - "targetDataProviderDescriptors/*/dataProviderIdentifier" + "sourceDataProviderDescriptors/*/DataProviderIdentifier", + "targetDataProviderDescriptors/*/DataProviderIdentifier" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -32607,10 +32607,10 @@ "tableId" ], "writeOnly": [ - "globalSecondaryIndexes/*/writeProvisionedThroughputSettings/writeCapacityAutoScalingSettings/seedCapacity", - "replicas/*/globalSecondaryIndexes/*/readProvisionedThroughputSettings/readCapacityAutoScalingSettings/seedCapacity", - "replicas/*/readProvisionedThroughputSettings/readCapacityAutoScalingSettings/seedCapacity", - "writeProvisionedThroughputSettings/writeCapacityAutoScalingSettings/seedCapacity" + "globalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", + "replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "writeProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" ], "irreversibleNames": { "sseSpecification": "SSESpecification" @@ -34643,8 +34643,8 @@ ], "writeOnly": [ "additionalInfo", - "blockDeviceMappings/*/noDevice", - "blockDeviceMappings/*/virtualName", + "blockDeviceMappings/*/NoDevice", + "blockDeviceMappings/*/VirtualName", "ipv6AddressCount", "ipv6Addresses", "launchTemplate", @@ -37443,7 +37443,7 @@ "id" ], "writeOnly": [ - "securityGroupIngress/*/sourceSecurityGroupName" + "securityGroupIngress/*/SourceSecurityGroupName" ], "irreversibleNames": { "awsId": "Id" @@ -37817,32 +37817,32 @@ "spotFleetRequestConfigData" ], "createOnly": [ - "spotFleetRequestConfigData/allocationStrategy", - "spotFleetRequestConfigData/iamFleetRole", - "spotFleetRequestConfigData/instanceInterruptionBehavior", - "spotFleetRequestConfigData/instancePoolsToUseCount", - "spotFleetRequestConfigData/launchSpecifications", - "spotFleetRequestConfigData/launchTemplateConfigs", - "spotFleetRequestConfigData/loadBalancersConfig", - "spotFleetRequestConfigData/onDemandAllocationStrategy", - "spotFleetRequestConfigData/onDemandMaxTotalPrice", - "spotFleetRequestConfigData/onDemandTargetCapacity", - "spotFleetRequestConfigData/replaceUnhealthyInstances", - "spotFleetRequestConfigData/spotMaintenanceStrategies", - "spotFleetRequestConfigData/spotMaxTotalPrice", - "spotFleetRequestConfigData/spotPrice", - "spotFleetRequestConfigData/tagSpecifications", - "spotFleetRequestConfigData/terminateInstancesWithExpiration", - "spotFleetRequestConfigData/type", - "spotFleetRequestConfigData/validFrom", - "spotFleetRequestConfigData/validUntil" + "spotFleetRequestConfigData/AllocationStrategy", + "spotFleetRequestConfigData/IamFleetRole", + "spotFleetRequestConfigData/InstanceInterruptionBehavior", + "spotFleetRequestConfigData/InstancePoolsToUseCount", + "spotFleetRequestConfigData/LaunchSpecifications", + "spotFleetRequestConfigData/LaunchTemplateConfigs", + "spotFleetRequestConfigData/LoadBalancersConfig", + "spotFleetRequestConfigData/OnDemandAllocationStrategy", + "spotFleetRequestConfigData/OnDemandMaxTotalPrice", + "spotFleetRequestConfigData/OnDemandTargetCapacity", + "spotFleetRequestConfigData/ReplaceUnhealthyInstances", + "spotFleetRequestConfigData/SpotMaintenanceStrategies", + "spotFleetRequestConfigData/SpotMaxTotalPrice", + "spotFleetRequestConfigData/SpotPrice", + "spotFleetRequestConfigData/TagSpecifications", + "spotFleetRequestConfigData/TerminateInstancesWithExpiration", + "spotFleetRequestConfigData/Type", + "spotFleetRequestConfigData/ValidFrom", + "spotFleetRequestConfigData/ValidUntil" ], "readOnly": [ "id" ], "writeOnly": [ - "spotFleetRequestConfigData/launchSpecifications/*/networkInterfaces/*/groups", - "spotFleetRequestConfigData/tagSpecifications" + "spotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups", + "spotFleetRequestConfigData/TagSpecifications" ], "irreversibleNames": { "awsId": "Id" @@ -39443,8 +39443,8 @@ "domainCertificateArn", "endpointDomainPrefix", "endpointType", - "loadBalancerOptions/loadBalancerArn", - "networkInterfaceOptions/networkInterfaceId", + "loadBalancerOptions/LoadBalancerArn", + "networkInterfaceOptions/NetworkInterfaceId", "securityGroupIds" ], "readOnly": [ @@ -41325,8 +41325,8 @@ }, "createOnly": [ "encryptionConfiguration", - "encryptionConfiguration/encryptionType", - "encryptionConfiguration/kmsKey", + "encryptionConfiguration/EncryptionType", + "encryptionConfiguration/KmsKey", "repositoryName" ], "readOnly": [ @@ -41500,7 +41500,7 @@ "sdkName": "name" }, "createOnly": [ - "autoScalingGroupProvider/autoScalingGroupArn", + "autoScalingGroupProvider/AutoScalingGroupArn", "name" ], "tagsProperty": "tags", @@ -42516,17 +42516,17 @@ "createOnly": [ "clientToken", "creationInfo", - "creationInfo/ownerGid", - "creationInfo/ownerUid", - "creationInfo/permissions", + "creationInfo/OwnerGid", + "creationInfo/OwnerUid", + "creationInfo/Permissions", "fileSystemId", "posixUser", - "posixUser/gid", - "posixUser/secondaryGids", - "posixUser/uid", + "posixUser/Gid", + "posixUser/SecondaryGids", + "posixUser/Uid", "rootDirectory", - "rootDirectory/creationInfo", - "rootDirectory/path" + "rootDirectory/CreationInfo", + "rootDirectory/Path" ], "readOnly": [ "accessPointId", @@ -42684,13 +42684,13 @@ "readOnly": [ "arn", "fileSystemId", - "replicationConfiguration/destinations/*/status", - "replicationConfiguration/destinations/*/statusMessage" + "replicationConfiguration/Destinations/*/Status", + "replicationConfiguration/Destinations/*/StatusMessage" ], "writeOnly": [ "bypassPolicyLockoutSafetyCheck", - "replicationConfiguration/destinations/0/availabilityZoneName", - "replicationConfiguration/destinations/0/kmsKeyId" + "replicationConfiguration/Destinations/0/AvailabilityZoneName", + "replicationConfiguration/Destinations/0/KmsKeyId" ], "tagsProperty": "fileSystemTags", "tagsStyle": "keyValueArray", @@ -43197,7 +43197,7 @@ "roleArn" ], "createOnly": [ - "accessConfig/bootstrapClusterCreatorAdminPermissions", + "accessConfig/BootstrapClusterCreatorAdminPermissions", "bootstrapSelfManagedAddons", "encryptionConfig", "kubernetesNetworkConfig", @@ -43213,11 +43213,11 @@ "encryptionConfigKeyArn", "endpoint", "id", - "kubernetesNetworkConfig/serviceIpv6Cidr", + "kubernetesNetworkConfig/ServiceIpv6Cidr", "openIdConnectIssuerUrl" ], "writeOnly": [ - "accessConfig/bootstrapClusterCreatorAdminPermissions", + "accessConfig/BootstrapClusterCreatorAdminPermissions", "bootstrapSelfManagedAddons" ], "irreversibleNames": { @@ -44145,11 +44145,11 @@ "readOnly": [ "arn", "createTime", - "endpoint/address", - "endpoint/port", + "endpoint/Address", + "endpoint/Port", "fullEngineVersion", - "readerEndpoint/address", - "readerEndpoint/port", + "readerEndpoint/Address", + "readerEndpoint/Port", "status" ], "writeOnly": [ @@ -44615,8 +44615,8 @@ ], "writeOnly": [ "environmentId", - "sourceConfiguration/applicationName", - "sourceConfiguration/templateName" + "sourceConfiguration/ApplicationName", + "sourceConfiguration/TemplateName" ], "primaryIdentifier": [ "applicationName", @@ -44756,18 +44756,18 @@ "cnamePrefix", "environmentName", "solutionStackName", - "tier/name", - "tier/type" + "tier/Name", + "tier/Type" ], "readOnly": [ "endpointUrl" ], "writeOnly": [ "optionSettings", - "optionSettings/*/namespace", - "optionSettings/*/optionName", - "optionSettings/*/resourceName", - "optionSettings/*/value", + "optionSettings/*/Namespace", + "optionSettings/*/OptionName", + "optionSettings/*/ResourceName", + "optionSettings/*/Value", "templateName" ], "irreversibleNames": { @@ -44898,7 +44898,7 @@ "listenerArn" ], "writeOnly": [ - "defaultActions/*/authenticateOidcConfig/clientSecret" + "defaultActions/*/AuthenticateOidcConfig/ClientSecret" ], "cfRef": { "property": "ListenerArn" @@ -44979,7 +44979,7 @@ "ruleArn" ], "writeOnly": [ - "actions/*/authenticateOidcConfig/clientSecret", + "actions/*/AuthenticateOidcConfig/ClientSecret", "listenerArn" ], "cfRef": { @@ -46295,7 +46295,7 @@ "workflowArn" ], "writeOnly": [ - "idMappingTechniques/normalizationVersion" + "idMappingTechniques/NormalizationVersion" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -46921,18 +46921,18 @@ ], "readOnly": [ "arn", - "authParameters/connectivityParameters/resourceParameters/resourceAssociationArn", - "invocationConnectivityParameters/resourceParameters/resourceAssociationArn", + "authParameters/ConnectivityParameters/ResourceParameters/ResourceAssociationArn", + "invocationConnectivityParameters/ResourceParameters/ResourceAssociationArn", "secretArn" ], "writeOnly": [ - "authParameters/apiKeyAuthParameters/apiKeyValue", - "authParameters/basicAuthParameters/password", - "authParameters/invocationHttpParameters", - "authParameters/oAuthParameters/clientParameters/clientSecret", - "authParameters/oAuthParameters/oAuthHttpParameters/bodyParameters", - "authParameters/oAuthParameters/oAuthHttpParameters/headerParameters", - "authParameters/oAuthParameters/oAuthHttpParameters/queryStringParameters" + "authParameters/ApiKeyAuthParameters/ApiKeyValue", + "authParameters/BasicAuthParameters/Password", + "authParameters/InvocationHttpParameters", + "authParameters/OAuthParameters/ClientParameters/ClientSecret", + "authParameters/OAuthParameters/OAuthHttpParameters/BodyParameters", + "authParameters/OAuthParameters/OAuthHttpParameters/HeaderParameters", + "authParameters/OAuthParameters/OAuthHttpParameters/QueryStringParameters" ], "cfRef": { "property": "Name" @@ -48196,7 +48196,7 @@ "status" ], "writeOnly": [ - "federationParameters/attributeMap", + "federationParameters/AttributeMap", "superuserParameters", "tags" ], @@ -48324,7 +48324,7 @@ "targets" ], "createOnly": [ - "experimentOptions/accountTargeting", + "experimentOptions/AccountTargeting", "tags" ], "readOnly": [ @@ -48974,29 +48974,29 @@ ], "readOnly": [ "arn", - "associatedModels/*/arn", + "associatedModels/*/Arn", "createdTime", "detectorVersionId", - "eventType/arn", - "eventType/createdTime", - "eventType/entityTypes/*/arn", - "eventType/entityTypes/*/createdTime", - "eventType/entityTypes/*/lastUpdatedTime", - "eventType/eventVariables/*/arn", - "eventType/eventVariables/*/createdTime", - "eventType/eventVariables/*/lastUpdatedTime", - "eventType/labels/*/arn", - "eventType/labels/*/createdTime", - "eventType/labels/*/lastUpdatedTime", - "eventType/lastUpdatedTime", + "eventType/Arn", + "eventType/CreatedTime", + "eventType/EntityTypes/*/Arn", + "eventType/EntityTypes/*/CreatedTime", + "eventType/EntityTypes/*/LastUpdatedTime", + "eventType/EventVariables/*/Arn", + "eventType/EventVariables/*/CreatedTime", + "eventType/EventVariables/*/LastUpdatedTime", + "eventType/Labels/*/Arn", + "eventType/Labels/*/CreatedTime", + "eventType/Labels/*/LastUpdatedTime", + "eventType/LastUpdatedTime", "lastUpdatedTime", - "rules/*/arn", - "rules/*/createdTime", - "rules/*/lastUpdatedTime", - "rules/*/outcomes/*/arn", - "rules/*/outcomes/*/createdTime", - "rules/*/outcomes/*/lastUpdatedTime", - "rules/*/ruleVersion" + "rules/*/Arn", + "rules/*/CreatedTime", + "rules/*/LastUpdatedTime", + "rules/*/Outcomes/*/Arn", + "rules/*/Outcomes/*/CreatedTime", + "rules/*/Outcomes/*/LastUpdatedTime", + "rules/*/RuleVersion" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -49185,15 +49185,15 @@ "readOnly": [ "arn", "createdTime", - "entityTypes/*/arn", - "entityTypes/*/createdTime", - "entityTypes/*/lastUpdatedTime", - "eventVariables/*/arn", - "eventVariables/*/createdTime", - "eventVariables/*/lastUpdatedTime", - "labels/*/arn", - "labels/*/createdTime", - "labels/*/lastUpdatedTime", + "entityTypes/*/Arn", + "entityTypes/*/CreatedTime", + "entityTypes/*/LastUpdatedTime", + "eventVariables/*/Arn", + "eventVariables/*/CreatedTime", + "eventVariables/*/LastUpdatedTime", + "labels/*/Arn", + "labels/*/CreatedTime", + "labels/*/LastUpdatedTime", "lastUpdatedTime" ], "tagsProperty": "tags", @@ -51309,7 +51309,7 @@ "attachmentArn" ], "writeOnly": [ - "resources/*/region" + "resources/*/Region" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -51433,7 +51433,7 @@ "endpointGroupArn" ], "writeOnly": [ - "endpointConfigurations/*/attachmentArn" + "endpointConfigurations/*/AttachmentArn" ], "cfRef": { "property": "EndpointGroupArn" @@ -54705,7 +54705,7 @@ "arn" ], "writeOnly": [ - "loginProfile/password" + "loginProfile/Password" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -60105,9 +60105,9 @@ ], "readOnly": [ "assetArn", - "assetHierarchies/*/id", + "assetHierarchies/*/Id", "assetId", - "assetProperties/*/id" + "assetProperties/*/Id" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -60226,31 +60226,31 @@ ], "readOnly": [ "assetModelArn", - "assetModelCompositeModels/*/compositeModelProperties/*/id", - "assetModelCompositeModels/*/compositeModelProperties/*/type/metric/variables/*/value/propertyId", - "assetModelCompositeModels/*/compositeModelProperties/*/type/transform/variables/*/value/propertyId", - "assetModelCompositeModels/*/id", - "assetModelHierarchies/*/id", + "assetModelCompositeModels/*/CompositeModelProperties/*/Id", + "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/PropertyId", + "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/PropertyId", + "assetModelCompositeModels/*/Id", + "assetModelHierarchies/*/Id", "assetModelId", - "assetModelProperties/*/id", - "assetModelProperties/*/type/metric/variables/*/value/propertyId", - "assetModelProperties/*/type/transform/variables/*/value/propertyId" + "assetModelProperties/*/Id", + "assetModelProperties/*/Type/Metric/Variables/*/Value/PropertyId", + "assetModelProperties/*/Type/Transform/Variables/*/Value/PropertyId" ], "writeOnly": [ - "assetModelCompositeModels/*/compositeModelProperties/*/dataTypeSpec", - "assetModelCompositeModels/*/compositeModelProperties/*/type/metric/variables/*/value/hierarchyId", - "assetModelCompositeModels/*/compositeModelProperties/*/type/metric/variables/*/value/propertyPath/*/name", - "assetModelCompositeModels/*/compositeModelProperties/*/type/transform/variables/*/value/hierarchyExternalId", - "assetModelCompositeModels/*/compositeModelProperties/*/type/transform/variables/*/value/hierarchyId", - "assetModelCompositeModels/*/compositeModelProperties/*/type/transform/variables/*/value/hierarchyLogicalId", - "assetModelCompositeModels/*/compositeModelProperties/*/type/transform/variables/*/value/propertyPath/*/name", - "assetModelProperties/*/dataTypeSpec", - "assetModelProperties/*/type/metric/variables/*/value/hierarchyId", - "assetModelProperties/*/type/metric/variables/*/value/propertyPath/*/name", - "assetModelProperties/*/type/transform/variables/*/value/hierarchyExternalId", - "assetModelProperties/*/type/transform/variables/*/value/hierarchyId", - "assetModelProperties/*/type/transform/variables/*/value/hierarchyLogicalId", - "assetModelProperties/*/type/transform/variables/*/value/propertyPath/*/name" + "assetModelCompositeModels/*/CompositeModelProperties/*/DataTypeSpec", + "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/HierarchyId", + "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/PropertyPath/*/Name", + "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyExternalId", + "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyId", + "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyLogicalId", + "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/PropertyPath/*/Name", + "assetModelProperties/*/DataTypeSpec", + "assetModelProperties/*/Type/Metric/Variables/*/Value/HierarchyId", + "assetModelProperties/*/Type/Metric/Variables/*/Value/PropertyPath/*/Name", + "assetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyExternalId", + "assetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyId", + "assetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyLogicalId", + "assetModelProperties/*/Type/Transform/Variables/*/Value/PropertyPath/*/Name" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -61519,7 +61519,7 @@ "arn", "fuotaTaskStatus", "id", - "loRaWan/startTime" + "loRaWaN/StartTime" ], "irreversibleNames": { "awsId": "Id", @@ -61613,8 +61613,8 @@ "readOnly": [ "arn", "id", - "loRaWan/numberOfDevicesInGroup", - "loRaWan/numberOfDevicesRequested", + "loRaWaN/NumberOfDevicesInGroup", + "loRaWaN/NumberOfDevicesRequested", "status" ], "irreversibleNames": { @@ -61777,22 +61777,22 @@ "readOnly": [ "arn", "id", - "loRaWan/channelMask", - "loRaWan/devStatusReqFreq", - "loRaWan/dlBucketSize", - "loRaWan/dlRate", - "loRaWan/dlRatePolicy", - "loRaWan/drMax", - "loRaWan/drMin", - "loRaWan/hrAllowed", - "loRaWan/minGwDiversity", - "loRaWan/nwkGeoLoc", - "loRaWan/reportDevStatusBattery", - "loRaWan/reportDevStatusMargin", - "loRaWan/targetPer", - "loRaWan/ulBucketSize", - "loRaWan/ulRate", - "loRaWan/ulRatePolicy" + "loRaWaN/ChannelMask", + "loRaWaN/DevStatusReqFreq", + "loRaWaN/DlBucketSize", + "loRaWaN/DlRate", + "loRaWaN/DlRatePolicy", + "loRaWaN/DrMax", + "loRaWaN/DrMin", + "loRaWaN/HrAllowed", + "loRaWaN/MinGwDiversity", + "loRaWaN/NwkGeoLoc", + "loRaWaN/ReportDevStatusBattery", + "loRaWaN/ReportDevStatusMargin", + "loRaWaN/TargetPer", + "loRaWaN/UlBucketSize", + "loRaWaN/UlRate", + "loRaWaN/UlRatePolicy" ], "irreversibleNames": { "awsId": "Id", @@ -62274,10 +62274,10 @@ "createOnly": [ "name", "video", - "video/bitrate", - "video/framerate", - "video/height", - "video/width" + "video/Bitrate", + "video/Framerate", + "video/Height", + "video/Width" ], "readOnly": [ "arn" @@ -62694,18 +62694,18 @@ ], "createOnly": [ "destinationConfiguration", - "destinationConfiguration/s3", - "destinationConfiguration/s3/bucketName", + "destinationConfiguration/S3", + "destinationConfiguration/S3/BucketName", "name", "recordingReconnectWindowSeconds", "renditionConfiguration", - "renditionConfiguration/renditionSelection", - "renditionConfiguration/renditions", + "renditionConfiguration/RenditionSelection", + "renditionConfiguration/Renditions", "thumbnailConfiguration", - "thumbnailConfiguration/recordingMode", - "thumbnailConfiguration/resolution", - "thumbnailConfiguration/storage", - "thumbnailConfiguration/targetIntervalSeconds" + "thumbnailConfiguration/RecordingMode", + "thumbnailConfiguration/Resolution", + "thumbnailConfiguration/Storage", + "thumbnailConfiguration/TargetIntervalSeconds" ], "readOnly": [ "arn", @@ -62828,7 +62828,7 @@ "createOnly": [ "name", "s3", - "s3/bucketName" + "s3/BucketName" ], "readOnly": [ "arn" @@ -64105,8 +64105,8 @@ "applicationName" ], "writeOnly": [ - "applicationConfiguration/applicationCodeConfiguration/codeContent/zipFileContent", - "applicationConfiguration/environmentProperties", + "applicationConfiguration/ApplicationCodeConfiguration/CodeContent/ZipFileContent", + "applicationConfiguration/EnvironmentProperties", "runConfiguration" ], "tagsProperty": "tags", @@ -64279,16 +64279,16 @@ "maxLength": 64 }, "createOnly": [ - "amazonOpenSearchServerlessDestinationConfiguration/vpcConfiguration", - "amazonopensearchserviceDestinationConfiguration/vpcConfiguration", + "amazonOpenSearchServerlessDestinationConfiguration/VpcConfiguration", + "amazonopensearchserviceDestinationConfiguration/VpcConfiguration", "databaseSourceConfiguration", "deliveryStreamName", "deliveryStreamType", - "elasticsearchDestinationConfiguration/vpcConfiguration", + "elasticsearchDestinationConfiguration/VpcConfiguration", "icebergDestinationConfiguration", "kinesisStreamSourceConfiguration", "mskSourceConfiguration", - "snowflakeDestinationConfiguration/snowflakeVpcConfiguration" + "snowflakeDestinationConfiguration/SnowflakeVpcConfiguration" ], "readOnly": [ "arn" @@ -65787,18 +65787,18 @@ "readOnly": [ "arn", "snapStartResponse", - "snapStartResponse/applyOn", - "snapStartResponse/optimizationStatus" + "snapStartResponse/ApplyOn", + "snapStartResponse/OptimizationStatus" ], "writeOnly": [ "code", - "code/imageUri", - "code/s3Bucket", - "code/s3Key", - "code/s3ObjectVersion", - "code/zipFile", + "code/ImageUri", + "code/S3Bucket", + "code/S3Key", + "code/S3ObjectVersion", + "code/ZipFile", "snapStart", - "snapStart/applyOn" + "snapStart/ApplyOn" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -67410,7 +67410,7 @@ "readOnly": [ "containerArn", "principalArn", - "privateRegistryAccess/ecrImagePullerRole/principalArn", + "privateRegistryAccess/EcrImagePullerRole/PrincipalArn", "url" ], "tagsProperty": "tags", @@ -67720,8 +67720,8 @@ "diskArn", "iops", "isAttached", - "location/availabilityZone", - "location/regionName", + "location/AvailabilityZone", + "location/RegionName", "path", "resourceType", "state", @@ -67906,20 +67906,20 @@ "instanceName" ], "readOnly": [ - "hardware/cpuCount", - "hardware/ramSizeInGb", + "hardware/CpuCount", + "hardware/RamSizeInGb", "instanceArn", "ipv6Addresses", "isStaticIp", - "location/availabilityZone", - "location/regionName", - "networking/monthlyTransfer/gbPerMonthAllocated", + "location/AvailabilityZone", + "location/RegionName", + "networking/MonthlyTransfer/GbPerMonthAllocated", "privateIpAddress", "publicIpAddress", "resourceType", "sshKeyName", - "state/code", - "state/name", + "state/Code", + "state/Name", "supportCode", "userName" ], @@ -71005,17 +71005,17 @@ "createOnly": [ "availabilityZone", "name", - "source/name" + "source/Name" ], "readOnly": [ "egressIp", "flowArn", "flowAvailabilityZone", - "mediaStreams/*/fmt", - "source/ingestIp", - "source/sourceArn", - "source/sourceIngestPort", - "vpcInterfaces/*/networkInterfaceIds" + "mediaStreams/*/Fmt", + "source/IngestIp", + "source/SourceArn", + "source/SourceIngestPort", + "vpcInterfaces/*/NetworkInterfaceIds" ], "cfRef": { "property": "FlowArn" @@ -72923,8 +72923,8 @@ "readOnly": [ "arn", "createdAt", - "egressEndpoints/*/packagingConfigurationId", - "egressEndpoints/*/url" + "egressEndpoints/*/PackagingConfigurationId", + "egressEndpoints/*/Url" ], "irreversibleNames": { "awsId": "Id" @@ -73009,10 +73009,10 @@ ], "readOnly": [ "arn", - "hlsIngest/ingestEndpoints/*/id", - "hlsIngest/ingestEndpoints/*/password", - "hlsIngest/ingestEndpoints/*/url", - "hlsIngest/ingestEndpoints/*/username" + "hlsIngest/ingestEndpoints/*/Id", + "hlsIngest/ingestEndpoints/*/Password", + "hlsIngest/ingestEndpoints/*/Url", + "hlsIngest/ingestEndpoints/*/Username" ], "irreversibleNames": { "awsId": "Id" @@ -73752,9 +73752,9 @@ "createdAt", "dashManifestUrls", "hlsManifestUrls", - "hlsManifests/*/url", + "hlsManifests/*/Url", "lowLatencyHlsManifestUrls", - "lowLatencyHlsManifests/*/url", + "lowLatencyHlsManifests/*/Url", "modifiedAt" ], "tagsProperty": "tags", @@ -74221,8 +74221,8 @@ "name" ], "readOnly": [ - "dashConfiguration/manifestEndpointPrefix", - "hlsConfiguration/manifestEndpointPrefix", + "dashConfiguration/ManifestEndpointPrefix", + "hlsConfiguration/ManifestEndpointPrefix", "playbackConfigurationArn", "playbackEndpointPrefix", "sessionInitializationEndpointPrefix" @@ -74750,8 +74750,8 @@ ], "readOnly": [ "arn", - "clusterEndpoint/address", - "clusterEndpoint/port", + "clusterEndpoint/Address", + "clusterEndpoint/Port", "parameterGroupStatus", "status" ], @@ -75286,12 +75286,12 @@ "numberOfBrokerNodes" ], "createOnly": [ - "brokerNodeGroupInfo/brokerAzDistribution", - "brokerNodeGroupInfo/clientSubnets", - "brokerNodeGroupInfo/securityGroups", + "brokerNodeGroupInfo/BrokerAzDistribution", + "brokerNodeGroupInfo/ClientSubnets", + "brokerNodeGroupInfo/SecurityGroups", "clusterName", - "encryptionInfo/encryptionAtRest", - "encryptionInfo/encryptionInTransit/inCluster" + "encryptionInfo/EncryptionAtRest", + "encryptionInfo/EncryptionInTransit/InCluster" ], "readOnly": [ "arn" @@ -75405,9 +75405,9 @@ ], "readOnly": [ "arn", - "latestRevision/creationTime", - "latestRevision/description", - "latestRevision/revision" + "latestRevision/CreationTime", + "latestRevision/Description", + "latestRevision/Revision" ], "writeOnly": [ "serverProperties" @@ -75939,17 +75939,17 @@ "endpointManagement", "kmsKey", "name", - "networkConfiguration/subnetIds" + "networkConfiguration/SubnetIds" ], "readOnly": [ "arn", "celeryExecutorQueue", "databaseVpcEndpointService", - "loggingConfiguration/dagProcessingLogs/cloudWatchLogGroupArn", - "loggingConfiguration/schedulerLogs/cloudWatchLogGroupArn", - "loggingConfiguration/taskLogs/cloudWatchLogGroupArn", - "loggingConfiguration/webserverLogs/cloudWatchLogGroupArn", - "loggingConfiguration/workerLogs/cloudWatchLogGroupArn", + "loggingConfiguration/DagProcessingLogs/CloudWatchLogGroupArn", + "loggingConfiguration/SchedulerLogs/CloudWatchLogGroupArn", + "loggingConfiguration/TaskLogs/CloudWatchLogGroupArn", + "loggingConfiguration/WebserverLogs/CloudWatchLogGroupArn", + "loggingConfiguration/WorkerLogs/CloudWatchLogGroupArn", "webserverUrl", "webserverVpcEndpointService" ], @@ -79980,14 +79980,14 @@ "maxLength": 32 }, "createOnly": [ - "iamIdentityCenterOptions/instanceArn", + "iamIdentityCenterOptions/InstanceArn", "name", "type" ], "readOnly": [ - "iamIdentityCenterOptions/applicationArn", - "iamIdentityCenterOptions/applicationDescription", - "iamIdentityCenterOptions/applicationName", + "iamIdentityCenterOptions/ApplicationArn", + "iamIdentityCenterOptions/ApplicationDescription", + "iamIdentityCenterOptions/ApplicationName", "id" ], "writeOnly": [ @@ -80467,22 +80467,22 @@ "domainName" ], "readOnly": [ - "advancedSecurityOptions/anonymousAuthDisableDate", + "advancedSecurityOptions/AnonymousAuthDisableDate", "arn", "domainArn", "domainEndpoint", "domainEndpointV2", "domainEndpoints", "id", - "identityCenterOptions/identityCenterApplicationArn", - "identityCenterOptions/identityStoreId", + "identityCenterOptions/IdentityCenterApplicationArn", + "identityCenterOptions/IdentityStoreId", "serviceSoftwareOptions" ], "writeOnly": [ - "advancedSecurityOptions/jwtOptions/publicKey", - "advancedSecurityOptions/masterUserOptions", - "advancedSecurityOptions/samlOptions/masterBackendRole", - "advancedSecurityOptions/samlOptions/masterUserName" + "advancedSecurityOptions/JwtOptions/PublicKey", + "advancedSecurityOptions/MasterUserOptions", + "advancedSecurityOptions/SamlOptions/MasterBackendRole", + "advancedSecurityOptions/SamlOptions/MasterUserName" ], "irreversibleNames": { "awsId": "Id", @@ -81494,11 +81494,11 @@ "arn", "createdTime", "packageId", - "storageLocation/binaryPrefixLocation", - "storageLocation/bucket", - "storageLocation/generatedPrefixLocation", - "storageLocation/manifestPrefixLocation", - "storageLocation/repoPrefixLocation" + "storageLocation/BinaryPrefixLocation", + "storageLocation/Bucket", + "storageLocation/GeneratedPrefixLocation", + "storageLocation/ManifestPrefixLocation", + "storageLocation/RepoPrefixLocation" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -82716,19 +82716,19 @@ "createOnly": [ "name", "source", - "sourceParameters/activeMqBrokerParameters/queueName", - "sourceParameters/dynamoDbStreamParameters/startingPosition", - "sourceParameters/kinesisStreamParameters/startingPosition", - "sourceParameters/kinesisStreamParameters/startingPositionTimestamp", - "sourceParameters/managedStreamingKafkaParameters/consumerGroupId", - "sourceParameters/managedStreamingKafkaParameters/startingPosition", - "sourceParameters/managedStreamingKafkaParameters/topicName", - "sourceParameters/rabbitMqBrokerParameters/queueName", - "sourceParameters/rabbitMqBrokerParameters/virtualHost", - "sourceParameters/selfManagedKafkaParameters/additionalBootstrapServers", - "sourceParameters/selfManagedKafkaParameters/consumerGroupId", - "sourceParameters/selfManagedKafkaParameters/startingPosition", - "sourceParameters/selfManagedKafkaParameters/topicName" + "sourceParameters/ActiveMqBrokerParameters/QueueName", + "sourceParameters/DynamoDbStreamParameters/StartingPosition", + "sourceParameters/KinesisStreamParameters/StartingPosition", + "sourceParameters/KinesisStreamParameters/StartingPositionTimestamp", + "sourceParameters/ManagedStreamingKafkaParameters/ConsumerGroupId", + "sourceParameters/ManagedStreamingKafkaParameters/StartingPosition", + "sourceParameters/ManagedStreamingKafkaParameters/TopicName", + "sourceParameters/RabbitMqBrokerParameters/QueueName", + "sourceParameters/RabbitMqBrokerParameters/VirtualHost", + "sourceParameters/SelfManagedKafkaParameters/AdditionalBootstrapServers", + "sourceParameters/SelfManagedKafkaParameters/ConsumerGroupId", + "sourceParameters/SelfManagedKafkaParameters/StartingPosition", + "sourceParameters/SelfManagedKafkaParameters/TopicName" ], "readOnly": [ "arn", @@ -83286,13 +83286,6 @@ "applicationId", "principal" ], - "readOnly": [ - "createdAt", - "dataAccessorArn", - "dataAccessorId", - "idcApplicationArn", - "updatedAt" - ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", "primaryIdentifier": [ @@ -85166,7 +85159,7 @@ "createOnly": [ "awsAccountId", "dataSetId", - "schedule/scheduleId" + "schedule/ScheduleId" ], "readOnly": [ "arn" @@ -86015,8 +86008,8 @@ ], "writeOnly": [ "lockConfiguration", - "lockConfiguration/unlockDelayUnit", - "lockConfiguration/unlockDelayValue" + "lockConfiguration/UnlockDelayUnit", + "lockConfiguration/UnlockDelayValue" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -86734,10 +86727,10 @@ "dbClusterArn", "dbClusterResourceId", "endpoint", - "endpoint/address", - "endpoint/port", - "masterUserSecret/secretArn", - "readEndpoint/address", + "endpoint/Address", + "endpoint/Port", + "masterUserSecret/SecretArn", + "readEndpoint/Address", "storageThroughput" ], "writeOnly": [ @@ -87558,15 +87551,15 @@ "timezone" ], "readOnly": [ - "certificateDetails/caIdentifier", - "certificateDetails/validTill", + "certificateDetails/CaIdentifier", + "certificateDetails/ValidTill", "dbInstanceArn", "dbSystemId", "dbiResourceId", - "endpoint/address", - "endpoint/hostedZoneId", - "endpoint/port", - "masterUserSecret/secretArn" + "endpoint/Address", + "endpoint/HostedZoneId", + "endpoint/Port", + "masterUserSecret/SecretArn" ], "writeOnly": [ "allowMajorVersionUpgrade", @@ -89147,8 +89140,8 @@ "readOnly": [ "clusterNamespaceArn", "deferMaintenanceIdentifier", - "endpoint/address", - "endpoint/port", + "endpoint/Address", + "endpoint/Port", "masterPasswordSecretArn" ], "writeOnly": [ @@ -89248,8 +89241,8 @@ ], "writeOnly": [ "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -89312,8 +89305,8 @@ ], "writeOnly": [ "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -89425,15 +89418,15 @@ "endpointStatus", "port", "vpcEndpoint", - "vpcEndpoint/networkInterfaces/*/availabilityZone", - "vpcEndpoint/networkInterfaces/*/networkInterfaceId", - "vpcEndpoint/networkInterfaces/*/privateIpAddress", - "vpcEndpoint/networkInterfaces/*/subnetId", - "vpcEndpoint/vpcEndpointId", - "vpcEndpoint/vpcId", + "vpcEndpoint/NetworkInterfaces/*/AvailabilityZone", + "vpcEndpoint/NetworkInterfaces/*/NetworkInterfaceId", + "vpcEndpoint/NetworkInterfaces/*/PrivateIpAddress", + "vpcEndpoint/NetworkInterfaces/*/SubnetId", + "vpcEndpoint/VpcEndpointId", + "vpcEndpoint/VpcId", "vpcSecurityGroups", - "vpcSecurityGroups/*/status", - "vpcSecurityGroups/*/vpcSecurityGroupId" + "vpcSecurityGroups/*/Status", + "vpcSecurityGroups/*/VpcSecurityGroupId" ], "primaryIdentifier": [ "endpointName" @@ -89685,8 +89678,8 @@ ], "writeOnly": [ "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -90079,17 +90072,17 @@ ], "readOnly": [ "namespace", - "namespace/adminUsername", - "namespace/creationDate", - "namespace/dbName", - "namespace/defaultIamRoleArn", - "namespace/iamRoles", - "namespace/kmsKeyId", - "namespace/logExports", - "namespace/namespaceArn", - "namespace/namespaceId", - "namespace/namespaceName", - "namespace/status" + "namespace/AdminUsername", + "namespace/CreationDate", + "namespace/DbName", + "namespace/DefaultIamRoleArn", + "namespace/IamRoles", + "namespace/KmsKeyId", + "namespace/LogExports", + "namespace/NamespaceArn", + "namespace/NamespaceId", + "namespace/NamespaceName", + "namespace/Status" ], "writeOnly": [ "adminUserPassword", @@ -90252,28 +90245,28 @@ ], "readOnly": [ "workgroup", - "workgroup/baseCapacity", - "workgroup/configParameters/*/parameterKey", - "workgroup/configParameters/*/parameterValue", - "workgroup/creationDate", - "workgroup/endpoint/address", - "workgroup/endpoint/port", - "workgroup/endpoint/vpcEndpoints/*/networkInterfaces/*/availabilityZone", - "workgroup/endpoint/vpcEndpoints/*/networkInterfaces/*/networkInterfaceId", - "workgroup/endpoint/vpcEndpoints/*/networkInterfaces/*/privateIpAddress", - "workgroup/endpoint/vpcEndpoints/*/networkInterfaces/*/subnetId", - "workgroup/endpoint/vpcEndpoints/*/vpcEndpointId", - "workgroup/endpoint/vpcEndpoints/*/vpcId", - "workgroup/enhancedVpcRouting", - "workgroup/maxCapacity", - "workgroup/namespaceName", - "workgroup/publiclyAccessible", - "workgroup/securityGroupIds", - "workgroup/status", - "workgroup/subnetIds", - "workgroup/workgroupArn", - "workgroup/workgroupId", - "workgroup/workgroupName" + "workgroup/BaseCapacity", + "workgroup/ConfigParameters/*/ParameterKey", + "workgroup/ConfigParameters/*/ParameterValue", + "workgroup/CreationDate", + "workgroup/Endpoint/Address", + "workgroup/Endpoint/Port", + "workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/AvailabilityZone", + "workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/NetworkInterfaceId", + "workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/PrivateIpAddress", + "workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/SubnetId", + "workgroup/Endpoint/VpcEndpoints/*/VpcEndpointId", + "workgroup/Endpoint/VpcEndpoints/*/VpcId", + "workgroup/EnhancedVpcRouting", + "workgroup/MaxCapacity", + "workgroup/NamespaceName", + "workgroup/PubliclyAccessible", + "workgroup/SecurityGroupIds", + "workgroup/Status", + "workgroup/SubnetIds", + "workgroup/WorkgroupArn", + "workgroup/WorkgroupId", + "workgroup/WorkgroupName" ], "writeOnly": [ "baseCapacity", @@ -90602,10 +90595,10 @@ "environmentIdentifier", "routeType", "serviceIdentifier", - "uriPathRoute/appendSourcePath", - "uriPathRoute/includeChildPaths", - "uriPathRoute/methods", - "uriPathRoute/sourcePath" + "uriPathRoute/AppendSourcePath", + "uriPathRoute/IncludeChildPaths", + "uriPathRoute/Methods", + "uriPathRoute/SourcePath" ], "readOnly": [ "arn", @@ -91820,7 +91813,7 @@ "arn" ], "writeOnly": [ - "robotSoftwareSuite/version", + "robotSoftwareSuite/Version", "sources" ], "tagsProperty": "tags", @@ -91986,8 +91979,8 @@ ], "writeOnly": [ "renderingEngine", - "robotSoftwareSuite/version", - "simulationSoftwareSuite/version", + "robotSoftwareSuite/Version", + "simulationSoftwareSuite/Version", "sources" ], "tagsProperty": "tags", @@ -92459,9 +92452,9 @@ "healthCheckConfig" ], "createOnly": [ - "healthCheckConfig/measureLatency", - "healthCheckConfig/requestInterval", - "healthCheckConfig/type" + "healthCheckConfig/MeasureLatency", + "healthCheckConfig/RequestInterval", + "healthCheckConfig/Type" ], "readOnly": [ "healthCheckId" @@ -93617,7 +93610,7 @@ "arn", "creationTime", "creatorRequestId", - "firewallRules/*/firewallThreatProtectionId", + "firewallRules/*/FirewallThreatProtectionId", "id", "modificationTime", "ownerId", @@ -94927,11 +94920,11 @@ ], "writeOnly": [ "accessControl", - "lifecycleConfiguration/rules/*/expiredObjectDeleteMarker", - "lifecycleConfiguration/rules/*/noncurrentVersionExpirationInDays", - "lifecycleConfiguration/rules/*/noncurrentVersionTransition", - "lifecycleConfiguration/rules/*/transition", - "replicationConfiguration/rules/*/prefix" + "lifecycleConfiguration/Rules/*/ExpiredObjectDeleteMarker", + "lifecycleConfiguration/Rules/*/NoncurrentVersionExpirationInDays", + "lifecycleConfiguration/Rules/*/NoncurrentVersionTransition", + "lifecycleConfiguration/Rules/*/Transition", + "replicationConfiguration/Rules/*/Prefix" ], "irreversibleNames": { "websiteUrl": "WebsiteURL" @@ -95086,7 +95079,7 @@ ], "readOnly": [ "policyStatus", - "policyStatus/isPublic" + "policyStatus/IsPublic" ], "cfRef": { "property": "MrapName" @@ -95127,10 +95120,10 @@ "storageLensConfiguration" ], "createOnly": [ - "storageLensConfiguration/id" + "storageLensConfiguration/Id" ], "readOnly": [ - "storageLensConfiguration/storageLensArn" + "storageLensConfiguration/StorageLensArn" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -95363,12 +95356,12 @@ ], "readOnly": [ "alias", - "alias/status", - "alias/value", + "alias/Status", + "alias/Value", "arn", "creationDate", "policyStatus", - "policyStatus/isPublic", + "policyStatus/IsPublic", "publicAccessBlockConfiguration" ], "primaryIdentifier": [ @@ -96053,11 +96046,11 @@ ], "createOnly": [ "clusterName", - "instanceGroups/*/executionRole", - "instanceGroups/*/instanceGroupName", - "instanceGroups/*/instanceType", - "instanceGroups/*/overrideVpcConfig", - "instanceGroups/*/threadsPerCore", + "instanceGroups/*/ExecutionRole", + "instanceGroups/*/InstanceGroupName", + "instanceGroups/*/InstanceType", + "instanceGroups/*/OverrideVpcConfig", + "instanceGroups/*/ThreadsPerCore", "orchestrator", "vpcConfig" ], @@ -96066,7 +96059,7 @@ "clusterStatus", "creationTime", "failureMessage", - "instanceGroups/*/currentCount" + "instanceGroups/*/CurrentCount" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -96221,8 +96214,8 @@ "writeOnly": [ "endpointName", "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArrayCreateOnly", @@ -96280,7 +96273,7 @@ "deviceFleetName" ], "createOnly": [ - "device/deviceName" + "device/DeviceName" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -96519,7 +96512,7 @@ "createOnly": [ "authMode", "domainName", - "domainSettings/rStudioServerProDomainSettings/defaultResourceSpec", + "domainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", "kmsKeyId", "tags", "vpcId" @@ -96779,9 +96772,9 @@ "eventTimeFeatureName", "featureGroupName", "offlineStoreConfig", - "onlineStoreConfig/enableOnlineStore", - "onlineStoreConfig/securityConfig", - "onlineStoreConfig/storageType", + "onlineStoreConfig/EnableOnlineStore", + "onlineStoreConfig/SecurityConfig", + "onlineStoreConfig/StorageType", "recordIdentifierFeatureName", "roleArn", "tags" @@ -97093,13 +97086,13 @@ "inferenceComponentArn", "inferenceComponentStatus", "lastModifiedTime", - "runtimeConfig/currentCopyCount", - "runtimeConfig/desiredCopyCount", - "specification/container/deployedImage" + "runtimeConfig/CurrentCopyCount", + "runtimeConfig/DesiredCopyCount", + "specification/Container/DeployedImage" ], "writeOnly": [ - "runtimeConfig/copyCount", - "specification/container/image" + "runtimeConfig/CopyCount", + "specification/Container/Image" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -97533,8 +97526,8 @@ "writeOnly": [ "endpointName", "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArrayCreateOnly", @@ -97645,13 +97638,13 @@ "securityConfig" ], "readOnly": [ - "createdBy/domainId", - "createdBy/userProfileArn", - "createdBy/userProfileName", + "createdBy/DomainId", + "createdBy/UserProfileArn", + "createdBy/UserProfileName", "creationTime", - "lastModifiedBy/domainId", - "lastModifiedBy/userProfileArn", - "lastModifiedBy/userProfileName", + "lastModifiedBy/DomainId", + "lastModifiedBy/UserProfileArn", + "lastModifiedBy/UserProfileName", "lastModifiedTime", "modelCardArn", "modelCardProcessingStatus", @@ -97813,8 +97806,8 @@ "writeOnly": [ "endpointName", "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArrayCreateOnly", @@ -98341,8 +98334,8 @@ "writeOnly": [ "endpointName", "tags", - "tags/*/key", - "tags/*/value" + "tags/*/Key", + "tags/*/Value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArrayCreateOnly", @@ -98575,10 +98568,6 @@ "name", "type" ], - "readOnly": [ - "arn", - "baseUrl" - ], "writeOnly": [ "clientToken" ], @@ -99052,8 +99041,8 @@ "singleSignOnUserValue", "tags", "userProfileName", - "userSettings/rStudioServerProAppSettings/accessStatus", - "userSettings/rStudioServerProAppSettings/userGroup" + "userSettings/RStudioServerProAppSettings/AccessStatus", + "userSettings/RStudioServerProAppSettings/UserGroup" ], "readOnly": [ "userProfileArn" @@ -99385,17 +99374,17 @@ ], "writeOnly": [ "hostedRotationLambda", - "hostedRotationLambda/excludeCharacters", - "hostedRotationLambda/kmsKeyArn", - "hostedRotationLambda/masterSecretArn", - "hostedRotationLambda/masterSecretKmsKeyArn", - "hostedRotationLambda/rotationLambdaName", - "hostedRotationLambda/rotationType", - "hostedRotationLambda/runtime", - "hostedRotationLambda/superuserSecretArn", - "hostedRotationLambda/superuserSecretKmsKeyArn", - "hostedRotationLambda/vpcSecurityGroupIds", - "hostedRotationLambda/vpcSubnetIds", + "hostedRotationLambda/ExcludeCharacters", + "hostedRotationLambda/KmsKeyArn", + "hostedRotationLambda/MasterSecretArn", + "hostedRotationLambda/MasterSecretKmsKeyArn", + "hostedRotationLambda/RotationLambdaName", + "hostedRotationLambda/RotationType", + "hostedRotationLambda/Runtime", + "hostedRotationLambda/SuperuserSecretArn", + "hostedRotationLambda/SuperuserSecretKmsKeyArn", + "hostedRotationLambda/VpcSecurityGroupIds", + "hostedRotationLambda/VpcSubnetIds", "rotateImmediatelyOnUpdate" ], "irreversibleNames": { @@ -100565,11 +100554,11 @@ "subscriberEndpoint" ], "writeOnly": [ - "notificationConfiguration/httpsNotificationConfiguration/authorizationApiKeyName", - "notificationConfiguration/httpsNotificationConfiguration/authorizationApiKeyValue", - "notificationConfiguration/httpsNotificationConfiguration/endpoint", - "notificationConfiguration/httpsNotificationConfiguration/httpMethod", - "notificationConfiguration/httpsNotificationConfiguration/targetRoleArn" + "notificationConfiguration/HttpsNotificationConfiguration/AuthorizationApiKeyName", + "notificationConfiguration/HttpsNotificationConfiguration/AuthorizationApiKeyValue", + "notificationConfiguration/HttpsNotificationConfiguration/Endpoint", + "notificationConfiguration/HttpsNotificationConfiguration/HttpMethod", + "notificationConfiguration/HttpsNotificationConfiguration/TargetRoleArn" ], "primaryIdentifier": [ "subscriberArn" @@ -101440,8 +101429,8 @@ "dkimDnsTokenValue3" ], "writeOnly": [ - "dkimSigningAttributes/domainSigningPrivateKey", - "dkimSigningAttributes/domainSigningSelector" + "dkimSigningAttributes/DomainSigningPrivateKey", + "dkimSigningAttributes/DomainSigningSelector" ], "irreversibleNames": { "dkimDnsTokenName1": "DkimDNSTokenName1", @@ -102044,7 +102033,7 @@ } }, "createOnly": [ - "template/templateName" + "template/TemplateName" ], "readOnly": [ "id" @@ -104461,8 +104450,8 @@ "configurationDefinitions" ], "createOnly": [ - "configurationDefinitions/*/type", - "configurationDefinitions/*/typeVersion" + "configurationDefinitions/*/Type", + "configurationDefinitions/*/TypeVersion" ], "readOnly": [ "configurationDefinitions/*/id", @@ -105664,18 +105653,18 @@ "name" ], "readOnly": [ - "code/sourceLocationArn", + "code/SourceLocationArn", "id", "state" ], "writeOnly": [ - "code/s3Bucket", - "code/s3Key", - "code/s3ObjectVersion", - "code/script", + "code/S3Bucket", + "code/S3Key", + "code/S3ObjectVersion", + "code/Script", "deleteLambdaResourcesOnCanaryDeletion", "resourcesToReplicateTags", - "runConfig/environmentVariables", + "runConfig/EnvironmentVariables", "startCanaryAfterCreation", "visualReference" ], @@ -107946,10 +107935,6 @@ "resourceConfigurationType", "resourceGatewayId" ], - "readOnly": [ - "arn", - "id" - ], "writeOnly": [ "resourceConfigurationAuthType", "resourceConfigurationGroupId" @@ -108048,10 +108033,6 @@ "subnetIds", "vpcIdentifier" ], - "readOnly": [ - "arn", - "id" - ], "irreversibleNames": { "awsId": "Id" }, @@ -108306,8 +108287,8 @@ "readOnly": [ "arn", "createdAt", - "dnsEntry/domainName", - "dnsEntry/hostedZoneId", + "dnsEntry/DomainName", + "dnsEntry/HostedZoneId", "id", "lastUpdatedAt", "status" @@ -108451,10 +108432,6 @@ "resourceConfigurationId", "serviceNetworkId" ], - "readOnly": [ - "arn", - "id" - ], "irreversibleNames": { "awsId": "Id" }, @@ -108557,8 +108534,8 @@ "readOnly": [ "arn", "createdAt", - "dnsEntry/domainName", - "dnsEntry/hostedZoneId", + "dnsEntry/DomainName", + "dnsEntry/HostedZoneId", "id", "serviceArn", "serviceId", @@ -108787,12 +108764,12 @@ "type" ], "createOnly": [ - "config/ipAddressType", - "config/lambdaEventStructureVersion", - "config/port", - "config/protocol", - "config/protocolVersion", - "config/vpcIdentifier", + "config/IpAddressType", + "config/LambdaEventStructureVersion", + "config/Port", + "config/Protocol", + "config/ProtocolVersion", + "config/VpcIdentifier", "name", "type" ], @@ -109245,8 +109222,8 @@ ], "readOnly": [ "arn", - "availableLabels/*/name", - "consumedLabels/*/name", + "availableLabels/*/Name", + "consumedLabels/*/Name", "id", "labelNamespace" ], @@ -109810,11 +109787,6 @@ "name", "tags" ], - "readOnly": [ - "aiGuardrailArn", - "aiGuardrailId", - "assistantArn" - ], "irreversibleNames": { "aiGuardrailArn": "AIGuardrailArn", "aiGuardrailId": "AIGuardrailId" @@ -109875,12 +109847,6 @@ "assistantId", "modifiedTimeSeconds" ], - "readOnly": [ - "aiGuardrailArn", - "aiGuardrailVersionId", - "assistantArn", - "versionNumber" - ], "irreversibleNames": { "aiGuardrailArn": "AIGuardrailArn", "aiGuardrailId": "AIGuardrailId", @@ -112006,7 +111972,7 @@ "sdkName": "ruleName" }, "createOnly": [ - "samplingRule/version" + "samplingRule/Version" ], "readOnly": [ "ruleArn" diff --git a/provider/pkg/provider/previewOutputs.go b/provider/pkg/provider/previewOutputs.go new file mode 100644 index 0000000000..25da0c2ee5 --- /dev/null +++ b/provider/pkg/provider/previewOutputs.go @@ -0,0 +1,218 @@ +package provider + +import ( + "fmt" + "slices" + "strings" + + "github.com/pulumi/pulumi-aws-native/provider/pkg/metadata" + "github.com/pulumi/pulumi-aws-native/provider/pkg/naming" + "github.com/pulumi/pulumi/pkg/v3/codegen/schema" + "github.com/pulumi/pulumi/sdk/v3/go/common/resource" + "github.com/pulumi/pulumi/sdk/v3/go/common/tokens" +) + +// PreviewOutputs calculates a map of outputs at the time of initial resource creation. +// It takes the provided resource inputs and maps them to the outputs shape, adding unknowns +// for all properties that are not defined in inputs +func PreviewOutputs( + inputs resource.PropertyMap, + types map[string]metadata.CloudAPIType, + props map[string]schema.PropertySpec, + readOnly []string, +) resource.PropertyMap { + result := resource.PropertyMap{} + // Then this is an Extension resource which has all outputs in an "outputs" property + if props == nil { + result["outputs"] = resource.MakeComputed(resource.NewStringProperty("")) + return result + } + return previewResourceOutputs(inputs, types, props, readOnly) +} + +// populateStableOutputs updates the preview outputs with the outputs from +// the prior state, but only in certain cases. +// +// There is no way (based on the schema) to tell which output properties are stable +// (i.e. they will only change if the resource is replaced). Because of this we +// cannot blanket copy all outputs from the prior state. The ones that are not stable +// should remain computed since they could be changing. +// +// Instead, we use some heuristics to determine which outputs are stable and which are not. +// We are making the assumption that Name, Id, and Arn are stable outputs. Sometimes resources +// will have `name`, `id`, and `arn` properties, and sometimes they will have `resourceName`, `resourceId`, +// and `resourceArn` properties. +func populateStableOutputs( + outputsFromInputs resource.PropertyMap, + outputsFromPriorState resource.PropertyMap, + readOnly []string, + resourceTypeName tokens.TypeName, +) resource.PropertyMap { + for _, readOnlyProp := range readOnly { + // For now skip outputs that are part of an array property. + // We have no way of knowing which item in the outputs array corresponds + // to which item from the inputs array (since inputs could be changing). + if strings.Contains(readOnlyProp, "/*/") { + continue + } + if isStableOutput(readOnlyProp, resourceTypeName) { + // nested property. Sometimes the resource Arn is in a nested property + if strings.Contains(readOnlyProp, "/") { + props := strings.Split(readOnlyProp, "/") + current := naming.ToSdkName(props[0]) + key := resource.PropertyKey(current) + if outputFromInput, ok := outputsFromInputs[key]; ok { + if outputFromState, ok := outputsFromPriorState[key]; ok { + outputsFromInputs[key] = resource.NewObjectProperty(populateStableOutputs( + outputFromInput.ObjectValue(), + outputFromState.ObjectValue(), + []string{strings.Join(props[1:], "/")}, + resourceTypeName, + )) + } + } + } else { + key := resource.PropertyKey(naming.ToSdkName(readOnlyProp)) + if output, ok := outputsFromPriorState[key]; ok { + outputsFromInputs[key] = output + } + } + } + } + return outputsFromInputs +} + +// This calculates the outputs of a resource based on the inputs and the output +// properties in the resource schema. +// +// For example, if there is a property "someProperty" that is both an input and +// an output, the underlying type could have readonly properties meaning that part +// of the type is an output only value. Those will not exist as input values +// and will be marked as computed +func previewResourceOutputs( + inputs resource.PropertyMap, + types map[string]metadata.CloudAPIType, + outputs map[string]schema.PropertySpec, + readOnly []string, +) resource.PropertyMap { + result := resource.PropertyMap{} + for name, prop := range outputs { + key := resource.PropertyKey(name) + if inputValue, ok := inputs[key]; ok { + result[key] = previewOutputValue(inputValue, types, &prop.TypeSpec, filterReadOnly(readOnly, name)) + // if the property is a readOnly property, then it's an output only value + // and we should mark it as computed + } else if isReadOnly(readOnly, name) { + result[key] = resource.MakeComputed(resource.NewStringProperty("")) + } + } + return result +} + +// isStableOutput determines if a property is a stable output or not. +// This uses a very conservative heuristic and does not cover all cases. +// +// e.g. sometimes the arn property does not contain the full resource type name +// - `aws-native:sagemaker:ModelExplainabilityJobDefinition` has a property `jobDefinitionArn` +// - `aws-native:securityhub:PolicyAssociation` has a property `associationIdentifier` +// - TODO: in some cases this property is the `primaryIdentifier`. Could we use that as another heuristic? +// a readonly property that is also a primary identifier? It doesn't catch all cases, but would catch more +func isStableOutput(propName string, resourceTypeName tokens.TypeName) bool { + typeName := resourceTypeName.String() + stableOutputsNameOnly := []string{ + fmt.Sprintf("%sName", naming.ToSdkName(typeName)), + fmt.Sprintf("%sId", naming.ToSdkName(typeName)), + fmt.Sprintf("%sArn", naming.ToSdkName(typeName)), + } + // These are the most common properties that are stable outputs + // and are used to determine if an output is stable or not + topLevelStableOutputs := slices.Concat([]string{ + "name", + "id", + "arn", + }, stableOutputsNameOnly) + + // we can't handle arrays because we don't know which item in the array + // the value corresponds to + if isArrayProperty(propName) { + return false + } + + // e.g. aws-native:s3:StorageLens has a storageLensConfiguration/StorageLensArn readOnly property + if strings.Contains(propName, "/") { + parts := strings.Split(propName, "/") + name := parts[len(parts)-1] + // If the property is a nested property then only consider it stable if + // the property contains the resource type name. There are a lot of cases where + // an object has a property called `id` or `arn` that is not the resource id or arn + return slices.Contains(stableOutputsNameOnly, naming.ToSdkName(name)) + } + return slices.Contains(topLevelStableOutputs, naming.ToSdkName(propName)) +} + +func isReadOnly(readOnly []string, key string) bool { + for _, prop := range readOnly { + if naming.ToSdkName(prop) == key { + return true + } + } + return false +} + +func filterReadOnly(readOnly []string, key string) []string { + result := []string{} + for _, prop := range readOnly { + if strings.HasPrefix(prop, key+"/") { + + result = append(result, strings.TrimPrefix(prop, key+"/")) + } + } + return result +} + +func isArrayProperty(prop string) bool { + return strings.Contains(prop, "/*/") +} + +func arrayReadOnly(readOnly []string) []string { + var result []string + for _, prop := range readOnly { + result = append(result, strings.TrimPrefix(prop, "*/")) + } + return result +} + +// previewOutputValue exists to recurse through nested objects and populate computed values +// There are cases where the input and output types are the same, but some properties of the type +// are only output values. +func previewOutputValue( + inputValue resource.PropertyValue, + types map[string]metadata.CloudAPIType, + prop *schema.TypeSpec, + readOnly []string, +) resource.PropertyValue { + switch { + case inputValue.IsArray() && (prop.Type == "array" || prop.Items != nil): + var items []resource.PropertyValue + for _, item := range inputValue.ArrayValue() { + items = append(items, previewOutputValue(item, types, prop.Items, arrayReadOnly(readOnly))) + } + return resource.NewArrayProperty(items) + case inputValue.IsObject() && strings.HasPrefix(prop.Ref, "#/types/"): + typeName := strings.TrimPrefix(prop.Ref, "#/types/") + if t, ok := types[typeName]; ok { + v := previewResourceOutputs(inputValue.ObjectValue(), types, t.Properties, readOnly) + return resource.NewObjectProperty(v) + } + case inputValue.IsObject() && prop.AdditionalProperties != nil: + inputObject := inputValue.ObjectValue() + result := resource.PropertyMap{} + for name, value := range inputObject { + p := value + result[name] = previewOutputValue(p, types, prop.AdditionalProperties, readOnly) + } + return resource.NewObjectProperty(result) + } + // fallback to assuming input is the same as the output + return inputValue +} diff --git a/provider/pkg/provider/previewOutputs_test.go b/provider/pkg/provider/previewOutputs_test.go new file mode 100644 index 0000000000..451205277d --- /dev/null +++ b/provider/pkg/provider/previewOutputs_test.go @@ -0,0 +1,416 @@ +package provider + +import ( + "testing" + + "github.com/pulumi/pulumi-aws-native/provider/pkg/metadata" + "github.com/pulumi/pulumi/pkg/v3/codegen/schema" + "github.com/pulumi/pulumi/sdk/v3/go/common/resource" + "github.com/stretchr/testify/assert" +) + +func TestPrevierOutputs(t *testing.T) { + t.Run("Nested output value", func(t *testing.T) { + result := PreviewOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": "my-access-point", + "objectLambdaConfiguration": map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + "cloudWatchMetricsEnabled": true, + }, + }), + map[string]metadata.CloudAPIType{ + "aws-native:s3objectlambda:AccessPointAlias": { + Properties: map[string]schema.PropertySpec{ + "Status": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + "Value": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + }, + }, + "aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration": { + Properties: map[string]schema.PropertySpec{ + "cloudWatchMetricsEnabled": { + TypeSpec: schema.TypeSpec{Type: "boolean"}, + }, + "allowedFeatures": { + TypeSpec: schema.TypeSpec{ + Type: "array", + Items: &schema.TypeSpec{Type: "string"}, + }, + }, + }, + }, + }, + map[string]schema.PropertySpec{ + "alias": { + TypeSpec: schema.TypeSpec{ + Ref: "#/types/aws-native:s3objectlambda:AccessPointAlias", + }, + }, + "objectLambdaConfiguration": { + TypeSpec: schema.TypeSpec{ + Ref: "#/types/aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration", + }, + }, + }, + []string{"alias", "alias/Status", "alias/Value"}, + ) + assert.Equal(t, resource.PropertyMap{ + "alias": resource.MakeComputed(resource.NewStringProperty("")), + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + "cloudWatchMetricsEnabled": true, + })), + }, result) + }) + + t.Run("Mixed input and output types", func(t *testing.T) { + result := PreviewOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": "my-access-point", + "objectLambdaConfiguration": map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + }, + }), + map[string]metadata.CloudAPIType{ + "aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration": { + Properties: map[string]schema.PropertySpec{ + "cloudWatchMetricsEnabled": { + TypeSpec: schema.TypeSpec{Type: "boolean"}, + }, + "allowedFeatures": { + TypeSpec: schema.TypeSpec{ + Type: "array", + Items: &schema.TypeSpec{Type: "string"}, + }, + }, + }, + }, + }, + map[string]schema.PropertySpec{ + "objectLambdaConfiguration": { + TypeSpec: schema.TypeSpec{ + Ref: "#/types/aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration", + }, + }, + }, + []string{ + "objectLambdaConfiguration/CloudWatchMetricsEnabled", + }, + ) + assert.Equal(t, resource.PropertyMap{ + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + "cloudWatchMetricsEnabled": resource.MakeComputed(resource.NewStringProperty("")), + })), + }, result) + }) + + t.Run("Array with mixed input output types", func(t *testing.T) { + result := PreviewOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "subscribers": []map[string]interface{}{ + { + "address": "address", + }, + }, + }), + map[string]metadata.CloudAPIType{ + "aws-native:ce:AnomalySubscriptionSubscriber": { + Type: "object", + Properties: map[string]schema.PropertySpec{ + "address": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + "status": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + "type": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + }, + }, + }, + map[string]schema.PropertySpec{ + "subscribers": { + TypeSpec: schema.TypeSpec{ + Type: "array", + Items: &schema.TypeSpec{ + Ref: "#/types/aws-native:ce:AnomalySubscriptionSubscriber", + }, + }, + }, + }, + []string{ + "subscribers/*/Status", + }, + ) + assert.Equal(t, resource.PropertyMap{ + "subscribers": resource.NewArrayProperty([]resource.PropertyValue{ + resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "address": "address", + "status": resource.MakeComputed(resource.NewStringProperty("")), + })), + }), + }, result) + }) + + t.Run("Custom resource", func(t *testing.T) { + result := PreviewOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": "my-access-point", + "objectLambdaConfiguration": map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + "cloudWatchMetricsEnabled": true, + "supportingAccessPoint": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-supporting-ap", + }, + }), + nil, + nil, + []string{}, + ) + assert.Equal(t, resource.PropertyMap{ + "outputs": resource.MakeComputed(resource.NewStringProperty("")), + }, result) + }) +} + +func Test_updatePreviewWithOutputs(t *testing.T) { + t.Run("Top level stable output", func(t *testing.T) { + result := populateStableOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "input": "value", + "arn": resource.MakeComputed(resource.NewStringProperty("")), + }), + resource.NewPropertyMapFromMap(map[string]interface{}{ + "input": "value", + "arn": "arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/my-access-point", + }), + []string{ + "Arn", + }, + "accesspoint", + ) + assert.Equal(t, resource.PropertyMap{ + "input": resource.NewStringProperty("value"), + "arn": resource.NewStringProperty("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/my-access-point"), + }, result) + }) + + t.Run("Nested output value resourceNameArn", func(t *testing.T) { + result := populateStableOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + "accessPointArn": resource.MakeComputed(resource.NewStringProperty("")), + }, + "alias": map[string]interface{}{ + "status": resource.MakeComputed(resource.NewStringProperty("")), + }, + }), + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + "accessPointArn": "arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/my-access-point", + }, + "alias": map[string]interface{}{ + "status": "ACTIVE", + }, + }), + []string{ + "objectLambdaConfiguration/AccessPointArn", + "alias", + "alias/Status", + }, + "AccessPoint", + ) + assert.Equal(t, resource.PropertyMap{ + "alias": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "status": resource.MakeComputed(resource.NewStringProperty("")), + })), + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + "accessPointArn": "arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/my-access-point", + })), + }, result) + }) + + t.Run("Nested output value arn isn't stable", func(t *testing.T) { + result := populateStableOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "arn": resource.MakeComputed(resource.NewStringProperty("")), + }, + }), + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "arn": "arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/my-access-point", + }, + }), + []string{ + "objectLambdaConfiguration/Arn", + }, + "AccessPoint", + ) + assert.Equal(t, resource.PropertyMap{ + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "arn": resource.MakeComputed(resource.NewStringProperty("")), + })), + }, result) + }) + + t.Run("Nested output value id isn't stable", func(t *testing.T) { + result := populateStableOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "id": resource.MakeComputed(resource.NewStringProperty("")), + }, + }), + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "id": "my-access-point", + }, + }), + []string{ + "objectLambdaConfiguration/Id", + }, + "AccessPoint", + ) + assert.Equal(t, resource.PropertyMap{ + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "id": resource.MakeComputed(resource.NewStringProperty("")), + })), + }, result) + }) + + t.Run("Nested output value resourceNameId", func(t *testing.T) { + result := populateStableOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "accessPointId": resource.MakeComputed(resource.NewStringProperty("")), + }, + }), + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "accessPointId": "my-access-point", + }, + }), + []string{ + "objectLambdaConfiguration/AccessPointId", + }, + "AccessPoint", + ) + assert.Equal(t, resource.PropertyMap{ + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "accessPointId": "my-access-point", + })), + }, result) + }) + + t.Run("Nested output value resourceNameName", func(t *testing.T) { + result := populateStableOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "accessPointName": resource.MakeComputed(resource.NewStringProperty("")), + }, + }), + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "accessPointName": "my-access-point", + }, + }), + []string{ + "objectLambdaConfiguration/AccessPointName", + }, + "AccessPoint", + ) + assert.Equal(t, resource.PropertyMap{ + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "accessPointName": "my-access-point", + })), + }, result) + }) + + t.Run("Nested output value name isn't stable", func(t *testing.T) { + result := populateStableOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "name": resource.MakeComputed(resource.NewStringProperty("")), + }, + }), + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "name": "my-access-point", + }, + }), + []string{ + "objectLambdaConfiguration/Name", + }, + "AccessPoint", + ) + assert.Equal(t, resource.PropertyMap{ + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": resource.MakeComputed(resource.NewStringProperty("")), + })), + }, result) + }) + + t.Run("only readonly properties can be stable", func(t *testing.T) { + result := populateStableOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": resource.MakeComputed(resource.NewStringProperty("")), + }), + resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": "my-access-point", + }), + []string{}, + "AccessPoint", + ) + assert.Equal(t, resource.PropertyMap{ + "name": resource.MakeComputed(resource.NewStringProperty("")), + }, result) + }) + + t.Run("Array properties ignored", func(t *testing.T) { + result := populateStableOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "arrayValue": []map[string]interface{}{ + { + "allowedFeatures": []string{"GetObject-Range"}, + "arn": resource.MakeComputed(resource.NewStringProperty("")), + }, + }, + }, + }), + resource.NewPropertyMapFromMap(map[string]interface{}{ + "objectLambdaConfiguration": map[string]interface{}{ + "arrayValue": []map[string]interface{}{ + { + "allowedFeatures": []string{"GetObject-Range"}, + "arn": "arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/my-access-point", + }, + }, + }, + }), + []string{ + "objectLambdaConfiguration/ArrayValue/*/Arn", + }, + "AccessPoint", + ) + assert.Equal(t, resource.PropertyMap{ + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "arrayValue": []map[string]interface{}{ + { + "allowedFeatures": []string{"GetObject-Range"}, + "arn": resource.MakeComputed(resource.NewStringProperty("")), + }, + }, + })), + }, result) + + }) +} diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index 9c94614272..9bf2025a04 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -531,7 +531,8 @@ func (p *cfnProvider) Configure(ctx context.Context, req *pulumirpc.ConfigureReq p.configured = true return &pulumirpc.ConfigureResponse{ - AcceptSecrets: true, + AcceptSecrets: true, + SupportsPreview: true, }, nil } @@ -847,8 +848,32 @@ func (p *cfnProvider) Create(ctx context.Context, req *pulumirpc.CreateRequest) } resourceToken := string(urn.Type()) - var id *string + var outputs resource.PropertyMap + if req.GetPreview() { + if _, ok := p.customResources[resourceToken]; ok { + outputs = PreviewOutputs(inputs, nil, nil, nil) + } else { + spec, hasSpec := p.resourceMap.Resources[resourceToken] + if !hasSpec { + return nil, errors.Errorf("Resource type %s not found", resourceToken) + } + outputs = PreviewOutputs(inputs, p.resourceMap.Types, spec.Outputs, spec.ReadOnly) + } + + previewState, err := plugin.MarshalProperties( + outputs, + plugin.MarshalOptions{Label: fmt.Sprintf("%s.checkpoint", label), KeepSecrets: true, KeepUnknowns: true, SkipNulls: true}, + ) + if err != nil { + return nil, err + } + return &pulumirpc.CreateResponse{ + Properties: previewState, + }, nil + } + + var id *string var createErr error timeout := time.Duration(req.GetTimeout()) * time.Second if customResource, ok := p.customResources[resourceToken]; ok { @@ -1077,6 +1102,30 @@ func (p *cfnProvider) Update(ctx context.Context, req *pulumirpc.UpdateRequest) var outputs resource.PropertyMap id := req.GetId() resourceToken := string(urn.Type()) + + if req.GetPreview() { + if _, ok := p.customResources[resourceToken]; ok { + outputs = PreviewOutputs(newInputs, nil, nil, nil) + } else { + spec, hasSpec := p.resourceMap.Resources[resourceToken] + if !hasSpec { + return nil, errors.Errorf("Resource type %s not found", resourceToken) + } + resourceTypeName := urn.Type().Name() + outputs = PreviewOutputs(newInputs, p.resourceMap.Types, spec.Outputs, spec.ReadOnly) + outputs = populateStableOutputs(newInputs, oldState, spec.ReadOnly, resourceTypeName) + } + + previewState, err := plugin.MarshalProperties( + outputs, + plugin.MarshalOptions{Label: fmt.Sprintf("%s.checkpoint", label), KeepSecrets: true, KeepUnknowns: true, SkipNulls: true}, + ) + if err != nil { + return nil, err + } + return &pulumirpc.UpdateResponse{Properties: previewState}, nil + } + if customResource, ok := p.customResources[resourceToken]; ok { timeout := time.Duration(req.GetTimeout()) * time.Second // Custom resource diff --git a/provider/pkg/provider/provider_test.go b/provider/pkg/provider/provider_test.go index 020f1c3472..58d66679d1 100644 --- a/provider/pkg/provider/provider_test.go +++ b/provider/pkg/provider/provider_test.go @@ -102,6 +102,111 @@ func TestConfigure(t *testing.T) { }) } +func TestCreatePreview(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockCCC := client.NewMockCloudControlClient(ctrl) + mockCustomResource := resources.NewMockCustomResource(ctrl) + + ctx, cancel := context.WithCancel(context.Background()) + provider := &cfnProvider{ + name: "test-provider", + resourceMap: &metadata.CloudAPIMetadata{Resources: map[string]metadata.CloudAPIResource{ + "aws-native:s3:Bucket": metadata.CloudAPIResource{ + CfType: "AWS::S3::Bucket", + Outputs: map[string]schema.PropertySpec{ + "arn": {TypeSpec: schema.TypeSpec{Type: "string"}}, + "bucketName": {TypeSpec: schema.TypeSpec{Type: "string"}}, + }, + ReadOnly: []string{"arn", "domainName", "dualStackDomainName", "regionalDomainName", "websiteUrl"}, + }, + }}, + customResources: map[string]resources.CustomResource{"custom:resource": mockCustomResource}, + ccc: mockCCC, + canceler: &cancellationContext{ + context: ctx, + cancel: cancel, + }, + } + + urn := resource.NewURN("stack", "project", "parent", "custom:resource", "name") + + t.Run("Outputs are computed", func(t *testing.T) { + req := &pulumirpc.CreateRequest{ + Urn: string(urn), + Preview: true, + Properties: mustMarshalProperties(t, resource.PropertyMap{"bucketName": resource.NewStringProperty("name")}), + Timeout: float64((5 * time.Minute).Seconds()), + } + req.Urn = string(resource.NewURN("stack", "project", "parent", "aws-native:s3:Bucket", "name")) + + resp, err := provider.Create(ctx, req) + assert.NoError(t, err) + assert.Empty(t, resp.Id) + require.NotNil(t, resp.Properties) + props := mustUnmarshalProperties(t, resp.Properties) + require.True(t, props.HasValue("arn"), "Expected 'arn' property in response") + require.True(t, props.HasValue("bucketName"), "Expected 'bucketName' property in response") + assert.Equal(t, "name", props["bucketName"].StringValue()) + assert.True(t, props["arn"].IsComputed()) + }) +} + +func TestUpdatePreview(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockCCC := client.NewMockCloudControlClient(ctrl) + mockCustomResource := resources.NewMockCustomResource(ctrl) + + ctx, cancel := context.WithCancel(context.Background()) + provider := &cfnProvider{ + name: "test-provider", + resourceMap: &metadata.CloudAPIMetadata{Resources: map[string]metadata.CloudAPIResource{ + "aws-native:s3:Bucket": metadata.CloudAPIResource{ + CfType: "AWS::S3::Bucket", + Outputs: map[string]schema.PropertySpec{ + "arn": {TypeSpec: schema.TypeSpec{Type: "string"}}, + "bucketName": {TypeSpec: schema.TypeSpec{Type: "string"}}, + }, + ReadOnly: []string{"arn", "domainName", "dualStackDomainName", "regionalDomainName", "websiteUrl"}, + }, + }}, + customResources: map[string]resources.CustomResource{"custom:resource": mockCustomResource}, + ccc: mockCCC, + canceler: &cancellationContext{ + context: ctx, + cancel: cancel, + }, + } + + urn := resource.NewURN("stack", "project", "parent", "custom:resource", "name") + + t.Run("Stable outputs appear in preview", func(t *testing.T) { + req := &pulumirpc.UpdateRequest{ + Urn: string(urn), + Preview: true, + Olds: mustMarshalProperties(t, resource.PropertyMap{ + "bucketName": resource.NewStringProperty("name"), + "arn": resource.NewStringProperty("bucketArn"), + }), + News: mustMarshalProperties(t, resource.PropertyMap{"bucketName": resource.NewStringProperty("name")}), + Timeout: float64((5 * time.Minute).Seconds()), + } + req.Urn = string(resource.NewURN("stack", "project", "parent", "aws-native:s3:Bucket", "name")) + + resp, err := provider.Update(ctx, req) + assert.NoError(t, err) + require.NotNil(t, resp.Properties) + props := mustUnmarshalProperties(t, resp.Properties) + require.True(t, props.HasValue("arn"), "Expected 'arn' property in response") + require.True(t, props.HasValue("bucketName"), "Expected 'bucketName' property in response") + assert.Equal(t, "name", props["bucketName"].StringValue()) + assert.Equal(t, "bucketArn", props["arn"].StringValue()) + }) +} + func TestCreate(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() From ea2a53b945ce3fa6b2e33f909e39f8daf58b77ff Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:49:53 -0500 Subject: [PATCH 2/9] remove package-lock file --- .../stable-outputs-preview/package-lock.json | 3725 ----------------- .../pulumi-resource-aws-native/metadata.json | 23 + 2 files changed, 23 insertions(+), 3725 deletions(-) delete mode 100644 examples/stable-outputs-preview/package-lock.json diff --git a/examples/stable-outputs-preview/package-lock.json b/examples/stable-outputs-preview/package-lock.json deleted file mode 100644 index 3c3990004b..0000000000 --- a/examples/stable-outputs-preview/package-lock.json +++ /dev/null @@ -1,3725 +0,0 @@ -{ - "name": "aws-native-naming-conventions", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "aws-native-naming-conventions", - "dependencies": { - "@pulumi/aws-native": "^0.8.0", - "@pulumi/pulumi": "^3.74.0" - }, - "devDependencies": { - "@types/node": "^16" - } - }, - "node_modules/@grpc/grpc-js": { - "version": "1.8.17", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.17.tgz", - "integrity": "sha512-DGuSbtMFbaRsyffMf+VEkVu8HkSXEUfO3UyGJNtqxW9ABdtTIA+2UXAJpwbJS+xfQxuwqLUeELmL6FuZkOqPxw==", - "dependencies": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz", - "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==", - "dependencies": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@logdna/tail-file": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@logdna/tail-file/-/tail-file-2.2.0.tgz", - "integrity": "sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng==", - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.0.tgz", - "integrity": "sha512-IgMK9i3sFGNUqPMbjABm0G26g0QCKCUBfglhQ7rQq6WcxbKfEHRcmwsoER4hZcuYqJgkYn2OeuoJIv7Jsftp7g==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-metrics": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-metrics/-/api-metrics-0.32.0.tgz", - "integrity": "sha512-g1WLhpG8B6iuDyZJFRGsR+JKyZ94m5LEmY2f+duEJ9Xb4XRlLHrZvh6G34OH6GJ8iDHxfHb/sWjJ1ZpkI9yGMQ==", - "deprecated": "Please use @opentelemetry/api >= 1.3.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.9.1.tgz", - "integrity": "sha512-HmycxnnIm00gdmxfD5OkDotL15bGqazLYqQJdcv1uNt22OSc5F/a3Paz3yznmf+/gWdPG8nlq/zd9H0mNXJnGg==", - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.9.1.tgz", - "integrity": "sha512-6/qon6tw2I8ZaJnHAQUUn4BqhTbTNRS0WP8/bA0ynaX+Uzp/DDbd0NS0Cq6TMlh8+mrlsyqDE7mO50nmv2Yvlg==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.9.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.9.1.tgz", - "integrity": "sha512-KBgf3w84luP5vWLlrqVFKmbwFK4lXM//t6K7H4nsg576htbz1RpBbQfybADjPdXTjGHqDTtLiC5MC90hxS7Z2w==", - "dependencies": { - "@opentelemetry/core": "1.9.1", - "@opentelemetry/resources": "1.9.1", - "@opentelemetry/sdk-trace-base": "1.9.1", - "@opentelemetry/semantic-conventions": "1.9.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.32.0.tgz", - "integrity": "sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ==", - "dependencies": { - "@opentelemetry/api-metrics": "0.32.0", - "require-in-the-middle": "^5.0.3", - "semver": "^7.3.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "node_modules/@opentelemetry/instrumentation-grpc": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.32.0.tgz", - "integrity": "sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ==", - "dependencies": { - "@opentelemetry/api-metrics": "0.32.0", - "@opentelemetry/instrumentation": "0.32.0", - "@opentelemetry/semantic-conventions": "1.6.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "node_modules/@opentelemetry/instrumentation-grpc/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.6.0.tgz", - "integrity": "sha512-aPfcBeLErM/PPiAuAbNFLN5sNbZLc3KZlar27uohllN8Zs6jJbHyJU1y7cMA6W/zuq+thkaG8mujiS+3iD/FWQ==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/propagator-b3": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.9.1.tgz", - "integrity": "sha512-V+/ufHnZSr0YlbNhPg4PIQAZOhP61fVwL0JZJ6qnl9i0jgaZBSAtV99ZvHMxMy0Z1tf+oGj1Hk+S6jRRXL+j1Q==", - "dependencies": { - "@opentelemetry/core": "1.9.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.9.1.tgz", - "integrity": "sha512-xjG5HnOgu/1f9+GphWr8lqxaU51iFL9HgFdnSQBSFqhM2OeMuzpFt6jmkpZJBAK3oqQ9BG52fHfCdYlw3GOkVQ==", - "dependencies": { - "@opentelemetry/core": "1.9.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.9.1.tgz", - "integrity": "sha512-VqBGbnAfubI+l+yrtYxeLyOoL358JK57btPMJDd3TCOV3mV5TNBmzvOfmesM4NeTyXuGJByd3XvOHvFezLn3rQ==", - "dependencies": { - "@opentelemetry/core": "1.9.1", - "@opentelemetry/semantic-conventions": "1.9.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.9.1.tgz", - "integrity": "sha512-Y9gC5M1efhDLYHeeo2MWcDDMmR40z6QpqcWnPCm4Dmh+RHAMf4dnEBBntIe1dDpor686kyU6JV1D29ih1lZpsQ==", - "dependencies": { - "@opentelemetry/core": "1.9.1", - "@opentelemetry/resources": "1.9.1", - "@opentelemetry/semantic-conventions": "1.9.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.9.1.tgz", - "integrity": "sha512-wwwCM2G/A0LY3oPLDyO31uRnm9EMNkhhjSxL9cmkK2kM+F915em8K0pXkPWFNGWu0OHkGALWYwH6Oz0P5nVcHA==", - "dependencies": { - "@opentelemetry/context-async-hooks": "1.9.1", - "@opentelemetry/core": "1.9.1", - "@opentelemetry/propagator-b3": "1.9.1", - "@opentelemetry/propagator-jaeger": "1.9.1", - "@opentelemetry/sdk-trace-base": "1.9.1", - "semver": "^7.3.5" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.9.1.tgz", - "integrity": "sha512-oPQdbFDmZvjXk5ZDoBGXG8B4tSB/qW5vQunJWQMFUBp7Xe8O1ByPANueJ+Jzg58esEBegyyxZ7LRmfJr7kFcFg==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@pulumi/aws-native": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@pulumi/aws-native/-/aws-native-0.8.0.tgz", - "integrity": "sha512-9deQNYZwZdsAqqviMyRNONPlC4oZY3MrUb8nMS1dhcw4KRPcqnhuHonLZVMo+1X86HkrkVducAHAslwCAfzIeQ==", - "hasInstallScript": true, - "dependencies": { - "@pulumi/pulumi": "^3.0.0", - "@types/glob": "^5.0.35", - "@types/node-fetch": "^2.1.4", - "@types/tmp": "^0.0.33", - "glob": "^7.1.2", - "node-fetch": "^2.3.0", - "shell-quote": "^1.6.1", - "tmp": "^0.0.33" - } - }, - "node_modules/@pulumi/pulumi": { - "version": "3.74.0", - "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.74.0.tgz", - "integrity": "sha512-VKHCH84aiD6FTosr/SmRnp/te1JvpunpPToIG69IlTDMAiDFeRFu/mXUenc1uicWyxG/pKav72f+eKGNdyZqjg==", - "dependencies": { - "@grpc/grpc-js": "^1.8.16", - "@logdna/tail-file": "^2.0.6", - "@opentelemetry/api": "^1.2.0", - "@opentelemetry/exporter-zipkin": "^1.6.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", - "@pulumi/query": "^0.3.0", - "execa": "^5.1.0", - "google-protobuf": "^3.5.0", - "ini": "^2.0.0", - "js-yaml": "^3.14.0", - "minimist": "^1.2.6", - "normalize-package-data": "^3.0.0", - "pkg-dir": "^7.0.0", - "read-package-tree": "^5.3.1", - "require-from-string": "^2.0.1", - "semver": "^7.5.2", - "source-map-support": "^0.5.6", - "ts-node": "^7.0.1", - "typescript": "~3.8.3", - "upath": "^1.1.0" - }, - "engines": { - "node": ">=8.13.0 || >=10.10.0" - } - }, - "node_modules/@pulumi/pulumi/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@pulumi/pulumi/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@pulumi/query": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@pulumi/query/-/query-0.3.0.tgz", - "integrity": "sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==" - }, - "node_modules/@types/glob": { - "version": "5.0.38", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.38.tgz", - "integrity": "sha512-rTtf75rwyP9G2qO5yRpYtdJ6aU1QqEhWbtW55qEgquEDa6bXW0s2TWZfDm02GuppjEozOWG/F2UnPq5hAQb+gw==", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - }, - "node_modules/@types/node": { - "version": "16.18.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz", - "integrity": "sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==" - }, - "node_modules/@types/node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-gVC1InwyVrO326wbBZw+AO3u2vRXz/iRWq9jYhpG4W8LXyIgDv3ZmcLQ5Q4Gs+gFMyqx+viFoFT+l3p61QFCmQ==" - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", - "engines": { - "node": "*" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/google-protobuf": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", - "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", - "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", - "dependencies": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/protobufjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", - "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/protobufjs/node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "node_modules/read-package-json": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", - "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", - "dependencies": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "node_modules/read-package-tree": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", - "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", - "deprecated": "The functionality that this package provided is now in @npmcli/arborist", - "dependencies": { - "read-package-json": "^2.0.0", - "readdir-scoped-modules": "^1.0.0", - "util-promisify": "^2.1.0" - } - }, - "node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-in-the-middle": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", - "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", - "dependencies": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/ts-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", - "dependencies": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" - }, - "bin": { - "ts-node": "dist/bin.js" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/util-promisify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", - "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==", - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@grpc/grpc-js": { - "version": "1.8.17", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.17.tgz", - "integrity": "sha512-DGuSbtMFbaRsyffMf+VEkVu8HkSXEUfO3UyGJNtqxW9ABdtTIA+2UXAJpwbJS+xfQxuwqLUeELmL6FuZkOqPxw==", - "requires": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - } - }, - "@grpc/proto-loader": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz", - "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==", - "requires": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^17.7.2" - } - }, - "@logdna/tail-file": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@logdna/tail-file/-/tail-file-2.2.0.tgz", - "integrity": "sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng==" - }, - "@opentelemetry/api": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.0.tgz", - "integrity": "sha512-IgMK9i3sFGNUqPMbjABm0G26g0QCKCUBfglhQ7rQq6WcxbKfEHRcmwsoER4hZcuYqJgkYn2OeuoJIv7Jsftp7g==" - }, - "@opentelemetry/api-metrics": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-metrics/-/api-metrics-0.32.0.tgz", - "integrity": "sha512-g1WLhpG8B6iuDyZJFRGsR+JKyZ94m5LEmY2f+duEJ9Xb4XRlLHrZvh6G34OH6GJ8iDHxfHb/sWjJ1ZpkI9yGMQ==", - "requires": { - "@opentelemetry/api": "^1.0.0" - } - }, - "@opentelemetry/context-async-hooks": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.9.1.tgz", - "integrity": "sha512-HmycxnnIm00gdmxfD5OkDotL15bGqazLYqQJdcv1uNt22OSc5F/a3Paz3yznmf+/gWdPG8nlq/zd9H0mNXJnGg==", - "requires": {} - }, - "@opentelemetry/core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.9.1.tgz", - "integrity": "sha512-6/qon6tw2I8ZaJnHAQUUn4BqhTbTNRS0WP8/bA0ynaX+Uzp/DDbd0NS0Cq6TMlh8+mrlsyqDE7mO50nmv2Yvlg==", - "requires": { - "@opentelemetry/semantic-conventions": "1.9.1" - } - }, - "@opentelemetry/exporter-zipkin": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.9.1.tgz", - "integrity": "sha512-KBgf3w84luP5vWLlrqVFKmbwFK4lXM//t6K7H4nsg576htbz1RpBbQfybADjPdXTjGHqDTtLiC5MC90hxS7Z2w==", - "requires": { - "@opentelemetry/core": "1.9.1", - "@opentelemetry/resources": "1.9.1", - "@opentelemetry/sdk-trace-base": "1.9.1", - "@opentelemetry/semantic-conventions": "1.9.1" - } - }, - "@opentelemetry/instrumentation": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.32.0.tgz", - "integrity": "sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ==", - "requires": { - "@opentelemetry/api-metrics": "0.32.0", - "require-in-the-middle": "^5.0.3", - "semver": "^7.3.2", - "shimmer": "^1.2.1" - } - }, - "@opentelemetry/instrumentation-grpc": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.32.0.tgz", - "integrity": "sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ==", - "requires": { - "@opentelemetry/api-metrics": "0.32.0", - "@opentelemetry/instrumentation": "0.32.0", - "@opentelemetry/semantic-conventions": "1.6.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.6.0.tgz", - "integrity": "sha512-aPfcBeLErM/PPiAuAbNFLN5sNbZLc3KZlar27uohllN8Zs6jJbHyJU1y7cMA6W/zuq+thkaG8mujiS+3iD/FWQ==" - } - } - }, - "@opentelemetry/propagator-b3": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.9.1.tgz", - "integrity": "sha512-V+/ufHnZSr0YlbNhPg4PIQAZOhP61fVwL0JZJ6qnl9i0jgaZBSAtV99ZvHMxMy0Z1tf+oGj1Hk+S6jRRXL+j1Q==", - "requires": { - "@opentelemetry/core": "1.9.1" - } - }, - "@opentelemetry/propagator-jaeger": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.9.1.tgz", - "integrity": "sha512-xjG5HnOgu/1f9+GphWr8lqxaU51iFL9HgFdnSQBSFqhM2OeMuzpFt6jmkpZJBAK3oqQ9BG52fHfCdYlw3GOkVQ==", - "requires": { - "@opentelemetry/core": "1.9.1" - } - }, - "@opentelemetry/resources": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.9.1.tgz", - "integrity": "sha512-VqBGbnAfubI+l+yrtYxeLyOoL358JK57btPMJDd3TCOV3mV5TNBmzvOfmesM4NeTyXuGJByd3XvOHvFezLn3rQ==", - "requires": { - "@opentelemetry/core": "1.9.1", - "@opentelemetry/semantic-conventions": "1.9.1" - } - }, - "@opentelemetry/sdk-trace-base": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.9.1.tgz", - "integrity": "sha512-Y9gC5M1efhDLYHeeo2MWcDDMmR40z6QpqcWnPCm4Dmh+RHAMf4dnEBBntIe1dDpor686kyU6JV1D29ih1lZpsQ==", - "requires": { - "@opentelemetry/core": "1.9.1", - "@opentelemetry/resources": "1.9.1", - "@opentelemetry/semantic-conventions": "1.9.1" - } - }, - "@opentelemetry/sdk-trace-node": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.9.1.tgz", - "integrity": "sha512-wwwCM2G/A0LY3oPLDyO31uRnm9EMNkhhjSxL9cmkK2kM+F915em8K0pXkPWFNGWu0OHkGALWYwH6Oz0P5nVcHA==", - "requires": { - "@opentelemetry/context-async-hooks": "1.9.1", - "@opentelemetry/core": "1.9.1", - "@opentelemetry/propagator-b3": "1.9.1", - "@opentelemetry/propagator-jaeger": "1.9.1", - "@opentelemetry/sdk-trace-base": "1.9.1", - "semver": "^7.3.5" - } - }, - "@opentelemetry/semantic-conventions": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.9.1.tgz", - "integrity": "sha512-oPQdbFDmZvjXk5ZDoBGXG8B4tSB/qW5vQunJWQMFUBp7Xe8O1ByPANueJ+Jzg58esEBegyyxZ7LRmfJr7kFcFg==" - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "@pulumi/aws-native": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@pulumi/aws-native/-/aws-native-0.8.0.tgz", - "integrity": "sha512-9deQNYZwZdsAqqviMyRNONPlC4oZY3MrUb8nMS1dhcw4KRPcqnhuHonLZVMo+1X86HkrkVducAHAslwCAfzIeQ==", - "requires": { - "@pulumi/pulumi": "^3.0.0", - "@types/glob": "^5.0.35", - "@types/node-fetch": "^2.1.4", - "@types/tmp": "^0.0.33", - "glob": "^7.1.2", - "node-fetch": "^2.3.0", - "shell-quote": "^1.6.1", - "tmp": "^0.0.33" - } - }, - "@pulumi/pulumi": { - "version": "3.74.0", - "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.74.0.tgz", - "integrity": "sha512-VKHCH84aiD6FTosr/SmRnp/te1JvpunpPToIG69IlTDMAiDFeRFu/mXUenc1uicWyxG/pKav72f+eKGNdyZqjg==", - "requires": { - "@grpc/grpc-js": "^1.8.16", - "@logdna/tail-file": "^2.0.6", - "@opentelemetry/api": "^1.2.0", - "@opentelemetry/exporter-zipkin": "^1.6.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", - "@pulumi/query": "^0.3.0", - "execa": "^5.1.0", - "google-protobuf": "^3.5.0", - "ini": "^2.0.0", - "js-yaml": "^3.14.0", - "minimist": "^1.2.6", - "normalize-package-data": "^3.0.0", - "pkg-dir": "^7.0.0", - "read-package-tree": "^5.3.1", - "require-from-string": "^2.0.1", - "semver": "^7.5.2", - "source-map-support": "^0.5.6", - "ts-node": "^7.0.1", - "typescript": "~3.8.3", - "upath": "^1.1.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - } - } - }, - "@pulumi/query": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@pulumi/query/-/query-0.3.0.tgz", - "integrity": "sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==" - }, - "@types/glob": { - "version": "5.0.38", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.38.tgz", - "integrity": "sha512-rTtf75rwyP9G2qO5yRpYtdJ6aU1QqEhWbtW55qEgquEDa6bXW0s2TWZfDm02GuppjEozOWG/F2UnPq5hAQb+gw==", - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - }, - "@types/node": { - "version": "16.18.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz", - "integrity": "sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==" - }, - "@types/node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "@types/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-gVC1InwyVrO326wbBZw+AO3u2vRXz/iRWq9jYhpG4W8LXyIgDv3ZmcLQ5Q4Gs+gFMyqx+viFoFT+l3p61QFCmQ==" - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==" - }, - "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, - "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "requires": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - } - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "requires": { - "define-properties": "^1.1.3" - } - }, - "google-protobuf": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", - "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - }, - "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "requires": { - "p-locate": "^6.0.0" - } - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } - }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", - "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", - "requires": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - }, - "p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "requires": { - "yocto-queue": "^1.0.0" - } - }, - "p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "requires": { - "p-limit": "^4.0.0" - } - }, - "path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "requires": { - "find-up": "^6.3.0" - } - }, - "protobufjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", - "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "dependencies": { - "long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - } - } - }, - "read-package-json": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", - "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "read-package-tree": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", - "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", - "requires": { - "read-package-json": "^2.0.0", - "readdir-scoped-modules": "^1.0.0", - "util-promisify": "^2.1.0" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "require-in-the-middle": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", - "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", - "requires": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" - } - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==" - }, - "shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "ts-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", - "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" - } - }, - "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - } - }, - "typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==" - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - }, - "util-promisify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", - "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==", - "requires": { - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - }, - "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==" - }, - "yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==" - } - } -} diff --git a/provider/cmd/pulumi-resource-aws-native/metadata.json b/provider/cmd/pulumi-resource-aws-native/metadata.json index d954dbdab7..8b01e569ca 100644 --- a/provider/cmd/pulumi-resource-aws-native/metadata.json +++ b/provider/cmd/pulumi-resource-aws-native/metadata.json @@ -107935,6 +107935,10 @@ "resourceConfigurationType", "resourceGatewayId" ], + "readOnly": [ + "arn", + "id" + ], "writeOnly": [ "resourceConfigurationAuthType", "resourceConfigurationGroupId" @@ -108033,6 +108037,10 @@ "subnetIds", "vpcIdentifier" ], + "readOnly": [ + "arn", + "id" + ], "irreversibleNames": { "awsId": "Id" }, @@ -108432,6 +108440,10 @@ "resourceConfigurationId", "serviceNetworkId" ], + "readOnly": [ + "arn", + "id" + ], "irreversibleNames": { "awsId": "Id" }, @@ -109787,6 +109799,11 @@ "name", "tags" ], + "readOnly": [ + "aiGuardrailArn", + "aiGuardrailId", + "assistantArn" + ], "irreversibleNames": { "aiGuardrailArn": "AIGuardrailArn", "aiGuardrailId": "AIGuardrailId" @@ -109847,6 +109864,12 @@ "assistantId", "modifiedTimeSeconds" ], + "readOnly": [ + "aiGuardrailArn", + "aiGuardrailVersionId", + "assistantArn", + "versionNumber" + ], "irreversibleNames": { "aiGuardrailArn": "AIGuardrailArn", "aiGuardrailId": "AIGuardrailId", From 20b9d99792382a87a746e10b5c83829d5d47f392 Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Fri, 6 Dec 2024 13:09:41 -0500 Subject: [PATCH 3/9] updating todo --- provider/pkg/provider/previewOutputs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/pkg/provider/previewOutputs.go b/provider/pkg/provider/previewOutputs.go index 25da0c2ee5..25c0ae561a 100644 --- a/provider/pkg/provider/previewOutputs.go +++ b/provider/pkg/provider/previewOutputs.go @@ -115,7 +115,7 @@ func previewResourceOutputs( // e.g. sometimes the arn property does not contain the full resource type name // - `aws-native:sagemaker:ModelExplainabilityJobDefinition` has a property `jobDefinitionArn` // - `aws-native:securityhub:PolicyAssociation` has a property `associationIdentifier` -// - TODO: in some cases this property is the `primaryIdentifier`. Could we use that as another heuristic? +// - TODO[pulumi/aws-native#1892]: in some cases this property is the `primaryIdentifier`. Could we use that as another heuristic? // a readonly property that is also a primary identifier? It doesn't catch all cases, but would catch more func isStableOutput(propName string, resourceTypeName tokens.TypeName) bool { typeName := resourceTypeName.String() From b53900890dbe562d0b2399edf0b89f405f80a3da Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Tue, 10 Dec 2024 13:00:01 -0500 Subject: [PATCH 4/9] update metadata.json --- provider/cmd/pulumi-resource-aws-native/metadata.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/provider/cmd/pulumi-resource-aws-native/metadata.json b/provider/cmd/pulumi-resource-aws-native/metadata.json index 8b01e569ca..1f4dccde18 100644 --- a/provider/cmd/pulumi-resource-aws-native/metadata.json +++ b/provider/cmd/pulumi-resource-aws-native/metadata.json @@ -83286,6 +83286,13 @@ "applicationId", "principal" ], + "readOnly": [ + "createdAt", + "dataAccessorArn", + "dataAccessorId", + "idcApplicationArn", + "updatedAt" + ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", "primaryIdentifier": [ @@ -98568,6 +98575,10 @@ "name", "type" ], + "readOnly": [ + "arn", + "baseUrl" + ], "writeOnly": [ "clientToken" ], From db8ebd3a893f7eaa7eb5df88af7c46bc4f477c68 Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Wed, 11 Dec 2024 09:56:55 -0500 Subject: [PATCH 5/9] Updates based on review --- provider/pkg/provider/previewOutputs.go | 121 ++++---- provider/pkg/provider/previewOutputs_test.go | 264 ++++++++++++++++-- provider/pkg/provider/provider.go | 12 +- provider/pkg/provider/provider_test.go | 47 ++++ provider/pkg/resources/cfn_custom_resource.go | 8 + provider/pkg/resources/custom.go | 2 + provider/pkg/resources/extension_resource.go | 8 + .../pkg/resources/mock_custom_resource.go | 14 + provider/pkg/schema/resource_props.go | 4 + 9 files changed, 380 insertions(+), 100 deletions(-) diff --git a/provider/pkg/provider/previewOutputs.go b/provider/pkg/provider/previewOutputs.go index 25c0ae561a..4709b057bc 100644 --- a/provider/pkg/provider/previewOutputs.go +++ b/provider/pkg/provider/previewOutputs.go @@ -7,27 +7,39 @@ import ( "github.com/pulumi/pulumi-aws-native/provider/pkg/metadata" "github.com/pulumi/pulumi-aws-native/provider/pkg/naming" + rSchema "github.com/pulumi/pulumi-aws-native/provider/pkg/schema" "github.com/pulumi/pulumi/pkg/v3/codegen/schema" "github.com/pulumi/pulumi/sdk/v3/go/common/resource" "github.com/pulumi/pulumi/sdk/v3/go/common/tokens" ) -// PreviewOutputs calculates a map of outputs at the time of initial resource creation. -// It takes the provided resource inputs and maps them to the outputs shape, adding unknowns -// for all properties that are not defined in inputs -func PreviewOutputs( +// This calculates the outputs of a resource based on the inputs and the output +// properties in the resource schema. +// +// For example, if there is a property "someProperty" that is both an input and +// an output, the underlying type could have readonly properties meaning that part +// of the type is an output only value. Those will not exist as input values +// and will be marked as computed +func previewResourceOutputs( inputs resource.PropertyMap, types map[string]metadata.CloudAPIType, - props map[string]schema.PropertySpec, + outputs map[string]schema.PropertySpec, readOnly []string, ) resource.PropertyMap { result := resource.PropertyMap{} - // Then this is an Extension resource which has all outputs in an "outputs" property - if props == nil { - result["outputs"] = resource.MakeComputed(resource.NewStringProperty("")) - return result + for name, prop := range outputs { + key := resource.PropertyKey(name) + if inputValue, ok := inputs[key]; ok { + result[key] = previewOutputValue(inputValue, types, &prop.TypeSpec, filterAndReturnNested(readOnly, name)) + // otherwise we could have one of two cases + // 1. the property is an input & output property, but does not have an input value + // 2. the property is a readonly (output only) property + // In either case, the property could be computed so we should default to marking it as computed + } else if isReadOnly(readOnly, name) { + result[key] = resource.MakeComputed(resource.NewStringProperty("")) + } } - return previewResourceOutputs(inputs, types, props, readOnly) + return result } // populateStableOutputs updates the preview outputs with the outputs from @@ -59,7 +71,7 @@ func populateStableOutputs( // nested property. Sometimes the resource Arn is in a nested property if strings.Contains(readOnlyProp, "/") { props := strings.Split(readOnlyProp, "/") - current := naming.ToSdkName(props[0]) + current := props[0] key := resource.PropertyKey(current) if outputFromInput, ok := outputsFromInputs[key]; ok { if outputFromState, ok := outputsFromPriorState[key]; ok { @@ -72,7 +84,7 @@ func populateStableOutputs( } } } else { - key := resource.PropertyKey(naming.ToSdkName(readOnlyProp)) + key := resource.PropertyKey(readOnlyProp) if output, ok := outputsFromPriorState[key]; ok { outputsFromInputs[key] = output } @@ -82,33 +94,6 @@ func populateStableOutputs( return outputsFromInputs } -// This calculates the outputs of a resource based on the inputs and the output -// properties in the resource schema. -// -// For example, if there is a property "someProperty" that is both an input and -// an output, the underlying type could have readonly properties meaning that part -// of the type is an output only value. Those will not exist as input values -// and will be marked as computed -func previewResourceOutputs( - inputs resource.PropertyMap, - types map[string]metadata.CloudAPIType, - outputs map[string]schema.PropertySpec, - readOnly []string, -) resource.PropertyMap { - result := resource.PropertyMap{} - for name, prop := range outputs { - key := resource.PropertyKey(name) - if inputValue, ok := inputs[key]; ok { - result[key] = previewOutputValue(inputValue, types, &prop.TypeSpec, filterReadOnly(readOnly, name)) - // if the property is a readOnly property, then it's an output only value - // and we should mark it as computed - } else if isReadOnly(readOnly, name) { - result[key] = resource.MakeComputed(resource.NewStringProperty("")) - } - } - return result -} - // isStableOutput determines if a property is a stable output or not. // This uses a very conservative heuristic and does not cover all cases. // @@ -118,11 +103,11 @@ func previewResourceOutputs( // - TODO[pulumi/aws-native#1892]: in some cases this property is the `primaryIdentifier`. Could we use that as another heuristic? // a readonly property that is also a primary identifier? It doesn't catch all cases, but would catch more func isStableOutput(propName string, resourceTypeName tokens.TypeName) bool { - typeName := resourceTypeName.String() + typeName := naming.ToSdkName(resourceTypeName.String()) stableOutputsNameOnly := []string{ - fmt.Sprintf("%sName", naming.ToSdkName(typeName)), - fmt.Sprintf("%sId", naming.ToSdkName(typeName)), - fmt.Sprintf("%sArn", naming.ToSdkName(typeName)), + fmt.Sprintf("%sName", typeName), + fmt.Sprintf("%sId", typeName), + fmt.Sprintf("%sArn", typeName), } // These are the most common properties that are stable outputs // and are used to determine if an output is stable or not @@ -134,7 +119,7 @@ func isStableOutput(propName string, resourceTypeName tokens.TypeName) bool { // we can't handle arrays because we don't know which item in the array // the value corresponds to - if isArrayProperty(propName) { + if rSchema.ResourceProperty(propName).IsArrayProperty() { return false } @@ -145,43 +130,38 @@ func isStableOutput(propName string, resourceTypeName tokens.TypeName) bool { // If the property is a nested property then only consider it stable if // the property contains the resource type name. There are a lot of cases where // an object has a property called `id` or `arn` that is not the resource id or arn - return slices.Contains(stableOutputsNameOnly, naming.ToSdkName(name)) + return slices.Contains(stableOutputsNameOnly, name) } - return slices.Contains(topLevelStableOutputs, naming.ToSdkName(propName)) + return slices.Contains(topLevelStableOutputs, propName) } func isReadOnly(readOnly []string, key string) bool { for _, prop := range readOnly { - if naming.ToSdkName(prop) == key { + if prop == key { return true } } return false } -func filterReadOnly(readOnly []string, key string) []string { +// filterAndReturnNested will filter the readOnly nested properties and +// return the nested properties if found +// e.g. +// - if the readOnly properties are ["foo/bar", "foo/bar/baz", "somethingElse"] +// and the key is "foo" +// then the result will be ["bar", "bar/baz"] +func filterAndReturnNested(readOnly []string, key string) []string { result := []string{} for _, prop := range readOnly { - if strings.HasPrefix(prop, key+"/") { - + if strings.HasPrefix(prop, key+"/*/") { + result = append(result, strings.TrimPrefix(prop, key+"/*/")) + } else if strings.HasPrefix(prop, key+"/") { result = append(result, strings.TrimPrefix(prop, key+"/")) } } return result } -func isArrayProperty(prop string) bool { - return strings.Contains(prop, "/*/") -} - -func arrayReadOnly(readOnly []string) []string { - var result []string - for _, prop := range readOnly { - result = append(result, strings.TrimPrefix(prop, "*/")) - } - return result -} - // previewOutputValue exists to recurse through nested objects and populate computed values // There are cases where the input and output types are the same, but some properties of the type // are only output values. @@ -192,10 +172,21 @@ func previewOutputValue( readOnly []string, ) resource.PropertyValue { switch { + case inputValue.IsSecret(): + return resource.NewSecretProperty(&resource.Secret{ + Element: previewOutputValue(inputValue.SecretValue().Element, types, prop, readOnly), + }) + case inputValue.IsOutput(): + return resource.NewOutputProperty(resource.Output{ + Element: previewOutputValue(inputValue.OutputValue().Element, types, prop, readOnly), + Known: inputValue.OutputValue().Known, + Secret: inputValue.OutputValue().Secret, + Dependencies: inputValue.OutputValue().Dependencies, + }) case inputValue.IsArray() && (prop.Type == "array" || prop.Items != nil): var items []resource.PropertyValue for _, item := range inputValue.ArrayValue() { - items = append(items, previewOutputValue(item, types, prop.Items, arrayReadOnly(readOnly))) + items = append(items, previewOutputValue(item, types, prop.Items, readOnly)) } return resource.NewArrayProperty(items) case inputValue.IsObject() && strings.HasPrefix(prop.Ref, "#/types/"): @@ -204,7 +195,9 @@ func previewOutputValue( v := previewResourceOutputs(inputValue.ObjectValue(), types, t.Properties, readOnly) return resource.NewObjectProperty(v) } - case inputValue.IsObject() && prop.AdditionalProperties != nil: + case inputValue.IsObject() && prop.AdditionalProperties != nil && (prop.AdditionalProperties.Ref != "" || prop.AdditionalProperties.Items != nil): + return previewOutputValue(inputValue, types, prop.AdditionalProperties, readOnly) + case inputValue.IsObject() && prop.AdditionalProperties != nil && prop.AdditionalProperties.Ref == "": inputObject := inputValue.ObjectValue() result := resource.PropertyMap{} for name, value := range inputObject { diff --git a/provider/pkg/provider/previewOutputs_test.go b/provider/pkg/provider/previewOutputs_test.go index 451205277d..81598f8a8d 100644 --- a/provider/pkg/provider/previewOutputs_test.go +++ b/provider/pkg/provider/previewOutputs_test.go @@ -11,7 +11,7 @@ import ( func TestPrevierOutputs(t *testing.T) { t.Run("Nested output value", func(t *testing.T) { - result := PreviewOutputs( + result := previewResourceOutputs( resource.NewPropertyMapFromMap(map[string]interface{}{ "name": "my-access-point", "objectLambdaConfiguration": map[string]interface{}{ @@ -22,10 +22,10 @@ func TestPrevierOutputs(t *testing.T) { map[string]metadata.CloudAPIType{ "aws-native:s3objectlambda:AccessPointAlias": { Properties: map[string]schema.PropertySpec{ - "Status": { + "status": { TypeSpec: schema.TypeSpec{Type: "string"}, }, - "Value": { + "value": { TypeSpec: schema.TypeSpec{Type: "string"}, }, }, @@ -56,7 +56,7 @@ func TestPrevierOutputs(t *testing.T) { }, }, }, - []string{"alias", "alias/Status", "alias/Value"}, + []string{"alias", "alias/status", "alias/value"}, ) assert.Equal(t, resource.PropertyMap{ "alias": resource.MakeComputed(resource.NewStringProperty("")), @@ -68,7 +68,7 @@ func TestPrevierOutputs(t *testing.T) { }) t.Run("Mixed input and output types", func(t *testing.T) { - result := PreviewOutputs( + result := previewResourceOutputs( resource.NewPropertyMapFromMap(map[string]interface{}{ "name": "my-access-point", "objectLambdaConfiguration": map[string]interface{}{ @@ -98,7 +98,124 @@ func TestPrevierOutputs(t *testing.T) { }, }, []string{ - "objectLambdaConfiguration/CloudWatchMetricsEnabled", + "objectLambdaConfiguration/cloudWatchMetricsEnabled", + }, + ) + assert.Equal(t, resource.PropertyMap{ + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + "cloudWatchMetricsEnabled": resource.MakeComputed(resource.NewStringProperty("")), + })), + }, result) + }) + + t.Run("with additionalProperties", func(t *testing.T) { + result := previewResourceOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": "my-access-point", + "objectLambdaConfiguration": map[string]interface{}{ + "allowedFeatures": "GetObject-Range", + }, + }), + map[string]metadata.CloudAPIType{}, + map[string]schema.PropertySpec{ + "objectLambdaConfiguration": { + TypeSpec: schema.TypeSpec{ + AdditionalProperties: &schema.TypeSpec{ + Type: "string", + }, + }, + }, + }, + []string{}, + ) + assert.Equal(t, resource.PropertyMap{ + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "allowedFeatures": "GetObject-Range", + })), + }, result) + }) + + t.Run("with additionalProperties Ref", func(t *testing.T) { + result := previewResourceOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": "my-access-point", + "objectLambdaConfiguration": map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + }, + }), + map[string]metadata.CloudAPIType{ + "aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration": { + Properties: map[string]schema.PropertySpec{ + "cloudWatchMetricsEnabled": { + TypeSpec: schema.TypeSpec{Type: "boolean"}, + }, + "allowedFeatures": { + TypeSpec: schema.TypeSpec{ + Type: "array", + Items: &schema.TypeSpec{Type: "string"}, + }, + }, + }, + }, + }, + map[string]schema.PropertySpec{ + "objectLambdaConfiguration": { + TypeSpec: schema.TypeSpec{ + AdditionalProperties: &schema.TypeSpec{ + Ref: "#/types/aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration", + }, + }, + }, + }, + []string{ + "objectLambdaConfiguration/cloudWatchMetricsEnabled", + }, + ) + assert.Equal(t, resource.PropertyMap{ + "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + "cloudWatchMetricsEnabled": resource.MakeComputed(resource.NewStringProperty("")), + })), + }, result) + }) + + t.Run("with additionalProperties Items", func(t *testing.T) { + result := previewResourceOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": "my-access-point", + "objectLambdaConfiguration": map[string]interface{}{ + "allowedFeatures": []string{"GetObject-Range"}, + }, + }), + map[string]metadata.CloudAPIType{ + "aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration": { + Properties: map[string]schema.PropertySpec{ + "cloudWatchMetricsEnabled": { + TypeSpec: schema.TypeSpec{Type: "boolean"}, + }, + "allowedFeatures": { + TypeSpec: schema.TypeSpec{ + AdditionalProperties: &schema.TypeSpec{ + Type: "array", + Items: &schema.TypeSpec{Type: "string"}, + }, + }, + }, + }, + }, + }, + map[string]schema.PropertySpec{ + "objectLambdaConfiguration": { + TypeSpec: schema.TypeSpec{ + AdditionalProperties: &schema.TypeSpec{ + Ref: "#/types/aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration", + }, + }, + }, + }, + []string{ + "objectLambdaConfiguration/cloudWatchMetricsEnabled", }, ) assert.Equal(t, resource.PropertyMap{ @@ -110,7 +227,7 @@ func TestPrevierOutputs(t *testing.T) { }) t.Run("Array with mixed input output types", func(t *testing.T) { - result := PreviewOutputs( + result := previewResourceOutputs( resource.NewPropertyMapFromMap(map[string]interface{}{ "subscribers": []map[string]interface{}{ { @@ -145,7 +262,7 @@ func TestPrevierOutputs(t *testing.T) { }, }, []string{ - "subscribers/*/Status", + "subscribers/*/status", }, ) assert.Equal(t, resource.PropertyMap{ @@ -158,22 +275,109 @@ func TestPrevierOutputs(t *testing.T) { }, result) }) - t.Run("Custom resource", func(t *testing.T) { - result := PreviewOutputs( - resource.NewPropertyMapFromMap(map[string]interface{}{ - "name": "my-access-point", - "objectLambdaConfiguration": map[string]interface{}{ - "allowedFeatures": []string{"GetObject-Range"}, - "cloudWatchMetricsEnabled": true, - "supportingAccessPoint": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-supporting-ap", + t.Run("with secret values", func(t *testing.T) { + result := previewResourceOutputs( + resource.PropertyMap{ + "subscribers": resource.NewSecretProperty(&resource.Secret{Element: resource.NewArrayProperty( + []resource.PropertyValue{ + resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "address": "address", + })), + }, + )}), + }, + map[string]metadata.CloudAPIType{ + "aws-native:ce:AnomalySubscriptionSubscriber": { + Type: "object", + Properties: map[string]schema.PropertySpec{ + "address": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + "status": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + "type": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + }, }, - }), - nil, - nil, - []string{}, + }, + map[string]schema.PropertySpec{ + "subscribers": { + TypeSpec: schema.TypeSpec{ + Type: "array", + Items: &schema.TypeSpec{ + Ref: "#/types/aws-native:ce:AnomalySubscriptionSubscriber", + }, + }, + }, + }, + []string{ + "subscribers/*/status", + }, ) assert.Equal(t, resource.PropertyMap{ - "outputs": resource.MakeComputed(resource.NewStringProperty("")), + "subscribers": resource.NewSecretProperty(&resource.Secret{Element: resource.NewArrayProperty( + []resource.PropertyValue{ + resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "address": "address", + "status": resource.MakeComputed(resource.NewStringProperty("")), + })), + }, + )}), + }, result) + }) + + t.Run("with output values", func(t *testing.T) { + result := previewResourceOutputs( + resource.PropertyMap{ + "subscribers": resource.NewOutputProperty(resource.Output{Element: resource.NewArrayProperty( + []resource.PropertyValue{ + resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "address": "address", + })), + }, + )}), + }, + map[string]metadata.CloudAPIType{ + "aws-native:ce:AnomalySubscriptionSubscriber": { + Type: "object", + Properties: map[string]schema.PropertySpec{ + "address": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + "status": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + "type": { + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + }, + }, + }, + map[string]schema.PropertySpec{ + "subscribers": { + TypeSpec: schema.TypeSpec{ + Type: "array", + Items: &schema.TypeSpec{ + Ref: "#/types/aws-native:ce:AnomalySubscriptionSubscriber", + }, + }, + }, + }, + []string{ + "subscribers/*/status", + }, + ) + assert.Equal(t, resource.PropertyMap{ + "subscribers": resource.NewOutputProperty(resource.Output{Element: resource.NewArrayProperty( + []resource.PropertyValue{ + resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ + "address": "address", + "status": resource.MakeComputed(resource.NewStringProperty("")), + })), + }, + )}), }, result) }) } @@ -190,7 +394,7 @@ func Test_updatePreviewWithOutputs(t *testing.T) { "arn": "arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/my-access-point", }), []string{ - "Arn", + "arn", }, "accesspoint", ) @@ -221,9 +425,9 @@ func Test_updatePreviewWithOutputs(t *testing.T) { }, }), []string{ - "objectLambdaConfiguration/AccessPointArn", + "objectLambdaConfiguration/accessPointArn", "alias", - "alias/Status", + "alias/status", }, "AccessPoint", ) @@ -251,7 +455,7 @@ func Test_updatePreviewWithOutputs(t *testing.T) { }, }), []string{ - "objectLambdaConfiguration/Arn", + "objectLambdaConfiguration/arn", }, "AccessPoint", ) @@ -275,7 +479,7 @@ func Test_updatePreviewWithOutputs(t *testing.T) { }, }), []string{ - "objectLambdaConfiguration/Id", + "objectLambdaConfiguration/id", }, "AccessPoint", ) @@ -299,7 +503,7 @@ func Test_updatePreviewWithOutputs(t *testing.T) { }, }), []string{ - "objectLambdaConfiguration/AccessPointId", + "objectLambdaConfiguration/accessPointId", }, "AccessPoint", ) @@ -323,7 +527,7 @@ func Test_updatePreviewWithOutputs(t *testing.T) { }, }), []string{ - "objectLambdaConfiguration/AccessPointName", + "objectLambdaConfiguration/accessPointName", }, "AccessPoint", ) @@ -347,7 +551,7 @@ func Test_updatePreviewWithOutputs(t *testing.T) { }, }), []string{ - "objectLambdaConfiguration/Name", + "objectLambdaConfiguration/name", }, "AccessPoint", ) @@ -397,7 +601,7 @@ func Test_updatePreviewWithOutputs(t *testing.T) { }, }), []string{ - "objectLambdaConfiguration/ArrayValue/*/Arn", + "objectLambdaConfiguration/arrayValue/*/arn", }, "AccessPoint", ) diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index 9bf2025a04..fef7c3142d 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -851,14 +851,14 @@ func (p *cfnProvider) Create(ctx context.Context, req *pulumirpc.CreateRequest) var outputs resource.PropertyMap if req.GetPreview() { - if _, ok := p.customResources[resourceToken]; ok { - outputs = PreviewOutputs(inputs, nil, nil, nil) + if customResource, ok := p.customResources[resourceToken]; ok { + outputs = customResource.PreviewCustomResourceOutputs() } else { spec, hasSpec := p.resourceMap.Resources[resourceToken] if !hasSpec { return nil, errors.Errorf("Resource type %s not found", resourceToken) } - outputs = PreviewOutputs(inputs, p.resourceMap.Types, spec.Outputs, spec.ReadOnly) + outputs = previewResourceOutputs(inputs, p.resourceMap.Types, spec.Outputs, spec.ReadOnly) } previewState, err := plugin.MarshalProperties( @@ -1104,15 +1104,15 @@ func (p *cfnProvider) Update(ctx context.Context, req *pulumirpc.UpdateRequest) resourceToken := string(urn.Type()) if req.GetPreview() { - if _, ok := p.customResources[resourceToken]; ok { - outputs = PreviewOutputs(newInputs, nil, nil, nil) + if customResource, ok := p.customResources[resourceToken]; ok { + outputs = customResource.PreviewCustomResourceOutputs() } else { spec, hasSpec := p.resourceMap.Resources[resourceToken] if !hasSpec { return nil, errors.Errorf("Resource type %s not found", resourceToken) } resourceTypeName := urn.Type().Name() - outputs = PreviewOutputs(newInputs, p.resourceMap.Types, spec.Outputs, spec.ReadOnly) + outputs = previewResourceOutputs(newInputs, p.resourceMap.Types, spec.Outputs, spec.ReadOnly) outputs = populateStableOutputs(newInputs, oldState, spec.ReadOnly, resourceTypeName) } diff --git a/provider/pkg/provider/provider_test.go b/provider/pkg/provider/provider_test.go index 58d66679d1..34b61221bb 100644 --- a/provider/pkg/provider/provider_test.go +++ b/provider/pkg/provider/provider_test.go @@ -151,6 +151,28 @@ func TestCreatePreview(t *testing.T) { assert.Equal(t, "name", props["bucketName"].StringValue()) assert.True(t, props["arn"].IsComputed()) }) + + t.Run("Outputs are computed for custom resource", func(t *testing.T) { + req := &pulumirpc.CreateRequest{ + Urn: string(urn), + Preview: true, + Properties: mustMarshalProperties(t, resource.PropertyMap{"bucketName": resource.NewStringProperty("name")}), + Timeout: float64((5 * time.Minute).Seconds()), + } + req.Urn = string(resource.NewURN("stack", "project", "parent", "custom:resource", "name")) + + mockCustomResource.EXPECT().PreviewCustomResourceOutputs().Return( + resource.PropertyMap{"outputs": resource.MakeComputed(resource.NewStringProperty(""))}, + ) + + resp, err := provider.Create(ctx, req) + assert.NoError(t, err) + assert.Empty(t, resp.Id) + require.NotNil(t, resp.Properties) + props := mustUnmarshalProperties(t, resp.Properties) + require.True(t, props.HasValue("outputs"), "Expected 'outputs' property in response") + assert.True(t, props["outputs"].IsComputed()) + }) } func TestUpdatePreview(t *testing.T) { @@ -205,6 +227,31 @@ func TestUpdatePreview(t *testing.T) { assert.Equal(t, "name", props["bucketName"].StringValue()) assert.Equal(t, "bucketArn", props["arn"].StringValue()) }) + + t.Run("custom resource", func(t *testing.T) { + req := &pulumirpc.UpdateRequest{ + Urn: string(urn), + Preview: true, + Olds: mustMarshalProperties(t, resource.PropertyMap{ + "bucketName": resource.NewStringProperty("name"), + "arn": resource.NewStringProperty("bucketArn"), + }), + News: mustMarshalProperties(t, resource.PropertyMap{"bucketName": resource.NewStringProperty("name")}), + Timeout: float64((5 * time.Minute).Seconds()), + } + req.Urn = string(resource.NewURN("stack", "project", "parent", "custom:resource", "name")) + + mockCustomResource.EXPECT().PreviewCustomResourceOutputs().Return( + resource.PropertyMap{"data": resource.MakeComputed(resource.NewStringProperty(""))}, + ) + + resp, err := provider.Update(ctx, req) + assert.NoError(t, err) + require.NotNil(t, resp.Properties) + props := mustUnmarshalProperties(t, resp.Properties) + require.True(t, props.HasValue("data"), "Expected 'data' property in response") + assert.True(t, props["data"].IsComputed()) + }) } func TestCreate(t *testing.T) { diff --git a/provider/pkg/resources/cfn_custom_resource.go b/provider/pkg/resources/cfn_custom_resource.go index 3200563f3d..482109377d 100644 --- a/provider/pkg/resources/cfn_custom_resource.go +++ b/provider/pkg/resources/cfn_custom_resource.go @@ -685,3 +685,11 @@ func sanitizeCustomResourceResponse(event *cfn.Event, response *cfn.Response) *c return response } + +// cfn custom resources have outputs returned in a "data" property +// since it can be any arbitrary data, we mark the entire thing as computed +func (c *cfnCustomResource) PreviewCustomResourceOutputs() resource.PropertyMap { + return resource.PropertyMap{ + "data": resource.MakeComputed(resource.NewStringProperty("")), + } +} diff --git a/provider/pkg/resources/custom.go b/provider/pkg/resources/custom.go index f730772ed8..e67ef0491e 100644 --- a/provider/pkg/resources/custom.go +++ b/provider/pkg/resources/custom.go @@ -21,4 +21,6 @@ type CustomResource interface { Update(ctx context.Context, urn resource.URN, id string, inputs, oldInputs, state resource.PropertyMap, timeout time.Duration) (resource.PropertyMap, error) // Delete removes the resource from the cloud provider. Delete(ctx context.Context, urn resource.URN, id string, inputs, state resource.PropertyMap, timeout time.Duration) error + // PreviewCustomResourceOutputs returns the outputs of the resource based on the inputs and the output properties in the resource schema. + PreviewCustomResourceOutputs() resource.PropertyMap } diff --git a/provider/pkg/resources/extension_resource.go b/provider/pkg/resources/extension_resource.go index c3ce163cce..8e05c139b2 100644 --- a/provider/pkg/resources/extension_resource.go +++ b/provider/pkg/resources/extension_resource.go @@ -334,3 +334,11 @@ func (r *ExtensionResourceInputs) AddWriteOnlyProps(resourceState map[string]int } return appended } + +// extension resources have outputs returned in an "outputs" property +// since the outputs can be arbitrary we just mark the entire thing as computed +func (r *extensionResource) PreviewCustomResourceOutputs() resource.PropertyMap { + return resource.PropertyMap{ + "outputs": resource.MakeComputed(resource.NewStringProperty("")), + } +} diff --git a/provider/pkg/resources/mock_custom_resource.go b/provider/pkg/resources/mock_custom_resource.go index e778268c8f..ce398063dd 100644 --- a/provider/pkg/resources/mock_custom_resource.go +++ b/provider/pkg/resources/mock_custom_resource.go @@ -88,6 +88,20 @@ func (mr *MockCustomResourceMockRecorder) Delete(ctx, urn, id, inputs, state, ti return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockCustomResource)(nil).Delete), ctx, urn, id, inputs, state, timeout) } +// PreviewCustomResourceOutputs mocks base method. +func (m *MockCustomResource) PreviewCustomResourceOutputs() resource.PropertyMap { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "PreviewCustomResourceOutputs") + ret0, _ := ret[0].(resource.PropertyMap) + return ret0 +} + +// PreviewCustomResourceOutputs indicates an expected call of PreviewCustomResourceOutputs. +func (mr *MockCustomResourceMockRecorder) PreviewCustomResourceOutputs() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PreviewCustomResourceOutputs", reflect.TypeOf((*MockCustomResource)(nil).PreviewCustomResourceOutputs)) +} + // Read mocks base method. func (m *MockCustomResource) Read(ctx context.Context, urn resource.URN, id string, oldInputs, oldOutputs resource.PropertyMap) (resource.PropertyMap, resource.PropertyMap, bool, error) { m.ctrl.T.Helper() diff --git a/provider/pkg/schema/resource_props.go b/provider/pkg/schema/resource_props.go index 20caadd08f..1aadc35448 100644 --- a/provider/pkg/schema/resource_props.go +++ b/provider/pkg/schema/resource_props.go @@ -29,3 +29,7 @@ func (r ResourceProperty) ToSdkName() string { } return strings.Join(arrayProps, "/*/") } + +func (r ResourceProperty) IsArrayProperty() bool { + return strings.Contains(string(r), "/*/") +} From 85b7c41c475038107a64246f8e24d17f1525c798 Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Wed, 11 Dec 2024 10:01:47 -0500 Subject: [PATCH 6/9] fix typo --- provider/pkg/provider/previewOutputs_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/pkg/provider/previewOutputs_test.go b/provider/pkg/provider/previewOutputs_test.go index 81598f8a8d..81dd3059fe 100644 --- a/provider/pkg/provider/previewOutputs_test.go +++ b/provider/pkg/provider/previewOutputs_test.go @@ -9,7 +9,7 @@ import ( "github.com/stretchr/testify/assert" ) -func TestPrevierOutputs(t *testing.T) { +func TestPreviewOutputs(t *testing.T) { t.Run("Nested output value", func(t *testing.T) { result := previewResourceOutputs( resource.NewPropertyMapFromMap(map[string]interface{}{ From a4ee70822c26bdb8555a30c4c417fea11e9e1bc3 Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Wed, 11 Dec 2024 10:28:31 -0500 Subject: [PATCH 7/9] fixing metadata.json --- .../pulumi-resource-aws-native/metadata.json | 884 +++++++++--------- 1 file changed, 442 insertions(+), 442 deletions(-) diff --git a/provider/cmd/pulumi-resource-aws-native/metadata.json b/provider/cmd/pulumi-resource-aws-native/metadata.json index 1f4dccde18..66edf51d24 100644 --- a/provider/cmd/pulumi-resource-aws-native/metadata.json +++ b/provider/cmd/pulumi-resource-aws-native/metadata.json @@ -3584,10 +3584,10 @@ "basePath", "body", "bodyS3Location", - "bodyS3Location/Bucket", - "bodyS3Location/Etag", - "bodyS3Location/Key", - "bodyS3Location/Version", + "bodyS3Location/bucket", + "bodyS3Location/etag", + "bodyS3Location/key", + "bodyS3Location/version", "credentialsArn", "disableSchemaValidation", "failOnWarnings", @@ -5080,8 +5080,8 @@ "createOnly": [ "name", "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "readOnly": [ "arn", @@ -5091,8 +5091,8 @@ "writeOnly": [ "latestVersionNumber", "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "irreversibleNames": { "awsId": "Id" @@ -5186,8 +5186,8 @@ "extensionVersionNumber", "resourceIdentifier", "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "readOnly": [ "arn", @@ -5199,8 +5199,8 @@ "extensionIdentifier", "resourceIdentifier", "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "irreversibleNames": { "awsId": "Id" @@ -6125,7 +6125,7 @@ ], "writeOnly": [ "scalingTargetId", - "targetTrackingScalingPolicyConfiguration/PredefinedMetricSpecification/ResourceLabel" + "targetTrackingScalingPolicyConfiguration/predefinedMetricSpecification/resourceLabel" ], "cfRef": { "property": "Arn" @@ -7515,7 +7515,7 @@ "directoryName" ], "writeOnly": [ - "serviceAccountCredentials/AccountPassword" + "serviceAccountCredentials/accountPassword" ], "primaryIdentifier": [ "directoryName" @@ -7807,8 +7807,8 @@ "apiArn", "apiId", "dns", - "dns/Http", - "dns/Realtime" + "dns/http", + "dns/realtime" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -9531,12 +9531,12 @@ ], "readOnly": [ "creationTime", - "workGroupConfiguration/EngineVersion/EffectiveEngineVersion", - "workGroupConfigurationUpdates/EngineVersion/EffectiveEngineVersion" + "workGroupConfiguration/engineVersion/effectiveEngineVersion", + "workGroupConfigurationUpdates/engineVersion/effectiveEngineVersion" ], "writeOnly": [ "recursiveDeleteOption", - "workGroupConfiguration/AdditionalConfiguration", + "workGroupConfiguration/additionalConfiguration", "workGroupConfigurationUpdates" ], "tagsProperty": "tags", @@ -11325,7 +11325,7 @@ "backupVaultArn" ], "writeOnly": [ - "lockConfiguration/ChangeableForDays" + "lockConfiguration/changeableForDays" ], "tagsProperty": "backupVaultTags", "tagsStyle": "stringMap", @@ -12025,7 +12025,7 @@ ], "createOnly": [ "computeEnvironmentName", - "computeResources/SpotIamFleetRole", + "computeResources/spotIamFleetRole", "eksConfiguration", "tags", "type" @@ -12034,7 +12034,7 @@ "computeEnvironmentArn" ], "writeOnly": [ - "computeResources/UpdateToLatestImageVersion", + "computeResources/updateToLatestImageVersion", "replaceComputeEnvironment", "updatePolicy" ], @@ -12567,7 +12567,7 @@ "updatedAt" ], "writeOnly": [ - "actionGroups/*/SkipResourceInUseCheckOnDelete", + "actionGroups/*/skipResourceInUseCheckOnDelete", "autoPrepare", "skipResourceInUseCheckOnDelete" ], @@ -12895,10 +12895,10 @@ "knowledgeBaseId" ], "createOnly": [ - "dataSourceConfiguration/Type", + "dataSourceConfiguration/type", "knowledgeBaseId", - "vectorIngestionConfiguration/ChunkingConfiguration", - "vectorIngestionConfiguration/ParsingConfiguration" + "vectorIngestionConfiguration/chunkingConfiguration", + "vectorIngestionConfiguration/parsingConfiguration" ], "readOnly": [ "createdAt", @@ -13706,7 +13706,7 @@ "version" ], "writeOnly": [ - "variants/*/TemplateConfiguration/Text/TextS3Location" + "variants/*/templateConfiguration/text/textS3Location" ], "irreversibleNames": { "awsId": "Id" @@ -14372,7 +14372,7 @@ ], "readOnly": [ "accountId", - "subscribers/*/Status", + "subscribers/*/status", "subscriptionArn" ], "writeOnly": [ @@ -14979,14 +14979,14 @@ ], "createOnly": [ "analysisParameters", - "analysisParameters/DefaultValue", - "analysisParameters/Name", - "analysisParameters/Type", + "analysisParameters/defaultValue", + "analysisParameters/name", + "analysisParameters/type", "format", "membershipIdentifier", "name", "source", - "source/Text" + "source/text" ], "readOnly": [ "analysisTemplateIdentifier", @@ -17482,7 +17482,7 @@ ], "readOnly": [ "functionArn", - "functionMetadata/FunctionArn", + "functionMetadata/functionArn", "stage" ], "writeOnly": [ @@ -19945,7 +19945,7 @@ "id" ], "writeOnly": [ - "configurationProperties/*/Type" + "configurationProperties/*/type" ], "irreversibleNames": { "awsId": "Id" @@ -22542,11 +22542,11 @@ ], "readOnly": [ "arn", - "compliance/Type", + "compliance/type", "configRuleId" ], "writeOnly": [ - "source/CustomPolicyDetails/PolicyText" + "source/customPolicyDetails/policyText" ], "cfRef": { "property": "ConfigRuleName" @@ -25880,7 +25880,7 @@ "readOnly": [ "createdAt", "lastUpdatedAt", - "ruleBasedMatching/Status", + "ruleBasedMatching/status", "stats" ], "tagsProperty": "tags", @@ -32130,8 +32130,8 @@ "writeOnly": [ "instanceProfileIdentifier", "migrationProjectIdentifier", - "sourceDataProviderDescriptors/*/DataProviderIdentifier", - "targetDataProviderDescriptors/*/DataProviderIdentifier" + "sourceDataProviderDescriptors/*/dataProviderIdentifier", + "targetDataProviderDescriptors/*/dataProviderIdentifier" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -32607,10 +32607,10 @@ "tableId" ], "writeOnly": [ - "globalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", - "replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", - "replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", - "writeProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" + "globalSecondaryIndexes/*/writeProvisionedThroughputSettings/writeCapacityAutoScalingSettings/seedCapacity", + "replicas/*/globalSecondaryIndexes/*/readProvisionedThroughputSettings/readCapacityAutoScalingSettings/seedCapacity", + "replicas/*/readProvisionedThroughputSettings/readCapacityAutoScalingSettings/seedCapacity", + "writeProvisionedThroughputSettings/writeCapacityAutoScalingSettings/seedCapacity" ], "irreversibleNames": { "sseSpecification": "SSESpecification" @@ -34643,8 +34643,8 @@ ], "writeOnly": [ "additionalInfo", - "blockDeviceMappings/*/NoDevice", - "blockDeviceMappings/*/VirtualName", + "blockDeviceMappings/*/noDevice", + "blockDeviceMappings/*/virtualName", "ipv6AddressCount", "ipv6Addresses", "launchTemplate", @@ -37443,7 +37443,7 @@ "id" ], "writeOnly": [ - "securityGroupIngress/*/SourceSecurityGroupName" + "securityGroupIngress/*/sourceSecurityGroupName" ], "irreversibleNames": { "awsId": "Id" @@ -37817,32 +37817,32 @@ "spotFleetRequestConfigData" ], "createOnly": [ - "spotFleetRequestConfigData/AllocationStrategy", - "spotFleetRequestConfigData/IamFleetRole", - "spotFleetRequestConfigData/InstanceInterruptionBehavior", - "spotFleetRequestConfigData/InstancePoolsToUseCount", - "spotFleetRequestConfigData/LaunchSpecifications", - "spotFleetRequestConfigData/LaunchTemplateConfigs", - "spotFleetRequestConfigData/LoadBalancersConfig", - "spotFleetRequestConfigData/OnDemandAllocationStrategy", - "spotFleetRequestConfigData/OnDemandMaxTotalPrice", - "spotFleetRequestConfigData/OnDemandTargetCapacity", - "spotFleetRequestConfigData/ReplaceUnhealthyInstances", - "spotFleetRequestConfigData/SpotMaintenanceStrategies", - "spotFleetRequestConfigData/SpotMaxTotalPrice", - "spotFleetRequestConfigData/SpotPrice", - "spotFleetRequestConfigData/TagSpecifications", - "spotFleetRequestConfigData/TerminateInstancesWithExpiration", - "spotFleetRequestConfigData/Type", - "spotFleetRequestConfigData/ValidFrom", - "spotFleetRequestConfigData/ValidUntil" + "spotFleetRequestConfigData/allocationStrategy", + "spotFleetRequestConfigData/iamFleetRole", + "spotFleetRequestConfigData/instanceInterruptionBehavior", + "spotFleetRequestConfigData/instancePoolsToUseCount", + "spotFleetRequestConfigData/launchSpecifications", + "spotFleetRequestConfigData/launchTemplateConfigs", + "spotFleetRequestConfigData/loadBalancersConfig", + "spotFleetRequestConfigData/onDemandAllocationStrategy", + "spotFleetRequestConfigData/onDemandMaxTotalPrice", + "spotFleetRequestConfigData/onDemandTargetCapacity", + "spotFleetRequestConfigData/replaceUnhealthyInstances", + "spotFleetRequestConfigData/spotMaintenanceStrategies", + "spotFleetRequestConfigData/spotMaxTotalPrice", + "spotFleetRequestConfigData/spotPrice", + "spotFleetRequestConfigData/tagSpecifications", + "spotFleetRequestConfigData/terminateInstancesWithExpiration", + "spotFleetRequestConfigData/type", + "spotFleetRequestConfigData/validFrom", + "spotFleetRequestConfigData/validUntil" ], "readOnly": [ "id" ], "writeOnly": [ - "spotFleetRequestConfigData/LaunchSpecifications/*/NetworkInterfaces/*/Groups", - "spotFleetRequestConfigData/TagSpecifications" + "spotFleetRequestConfigData/launchSpecifications/*/networkInterfaces/*/groups", + "spotFleetRequestConfigData/tagSpecifications" ], "irreversibleNames": { "awsId": "Id" @@ -39443,8 +39443,8 @@ "domainCertificateArn", "endpointDomainPrefix", "endpointType", - "loadBalancerOptions/LoadBalancerArn", - "networkInterfaceOptions/NetworkInterfaceId", + "loadBalancerOptions/loadBalancerArn", + "networkInterfaceOptions/networkInterfaceId", "securityGroupIds" ], "readOnly": [ @@ -41325,8 +41325,8 @@ }, "createOnly": [ "encryptionConfiguration", - "encryptionConfiguration/EncryptionType", - "encryptionConfiguration/KmsKey", + "encryptionConfiguration/encryptionType", + "encryptionConfiguration/kmsKey", "repositoryName" ], "readOnly": [ @@ -41500,7 +41500,7 @@ "sdkName": "name" }, "createOnly": [ - "autoScalingGroupProvider/AutoScalingGroupArn", + "autoScalingGroupProvider/autoScalingGroupArn", "name" ], "tagsProperty": "tags", @@ -42516,17 +42516,17 @@ "createOnly": [ "clientToken", "creationInfo", - "creationInfo/OwnerGid", - "creationInfo/OwnerUid", - "creationInfo/Permissions", + "creationInfo/ownerGid", + "creationInfo/ownerUid", + "creationInfo/permissions", "fileSystemId", "posixUser", - "posixUser/Gid", - "posixUser/SecondaryGids", - "posixUser/Uid", + "posixUser/gid", + "posixUser/secondaryGids", + "posixUser/uid", "rootDirectory", - "rootDirectory/CreationInfo", - "rootDirectory/Path" + "rootDirectory/creationInfo", + "rootDirectory/path" ], "readOnly": [ "accessPointId", @@ -42684,13 +42684,13 @@ "readOnly": [ "arn", "fileSystemId", - "replicationConfiguration/Destinations/*/Status", - "replicationConfiguration/Destinations/*/StatusMessage" + "replicationConfiguration/destinations/*/status", + "replicationConfiguration/destinations/*/statusMessage" ], "writeOnly": [ "bypassPolicyLockoutSafetyCheck", - "replicationConfiguration/Destinations/0/AvailabilityZoneName", - "replicationConfiguration/Destinations/0/KmsKeyId" + "replicationConfiguration/destinations/0/availabilityZoneName", + "replicationConfiguration/destinations/0/kmsKeyId" ], "tagsProperty": "fileSystemTags", "tagsStyle": "keyValueArray", @@ -43197,7 +43197,7 @@ "roleArn" ], "createOnly": [ - "accessConfig/BootstrapClusterCreatorAdminPermissions", + "accessConfig/bootstrapClusterCreatorAdminPermissions", "bootstrapSelfManagedAddons", "encryptionConfig", "kubernetesNetworkConfig", @@ -43213,11 +43213,11 @@ "encryptionConfigKeyArn", "endpoint", "id", - "kubernetesNetworkConfig/ServiceIpv6Cidr", + "kubernetesNetworkConfig/serviceIpv6Cidr", "openIdConnectIssuerUrl" ], "writeOnly": [ - "accessConfig/BootstrapClusterCreatorAdminPermissions", + "accessConfig/bootstrapClusterCreatorAdminPermissions", "bootstrapSelfManagedAddons" ], "irreversibleNames": { @@ -44145,11 +44145,11 @@ "readOnly": [ "arn", "createTime", - "endpoint/Address", - "endpoint/Port", + "endpoint/address", + "endpoint/port", "fullEngineVersion", - "readerEndpoint/Address", - "readerEndpoint/Port", + "readerEndpoint/address", + "readerEndpoint/port", "status" ], "writeOnly": [ @@ -44615,8 +44615,8 @@ ], "writeOnly": [ "environmentId", - "sourceConfiguration/ApplicationName", - "sourceConfiguration/TemplateName" + "sourceConfiguration/applicationName", + "sourceConfiguration/templateName" ], "primaryIdentifier": [ "applicationName", @@ -44756,18 +44756,18 @@ "cnamePrefix", "environmentName", "solutionStackName", - "tier/Name", - "tier/Type" + "tier/name", + "tier/type" ], "readOnly": [ "endpointUrl" ], "writeOnly": [ "optionSettings", - "optionSettings/*/Namespace", - "optionSettings/*/OptionName", - "optionSettings/*/ResourceName", - "optionSettings/*/Value", + "optionSettings/*/namespace", + "optionSettings/*/optionName", + "optionSettings/*/resourceName", + "optionSettings/*/value", "templateName" ], "irreversibleNames": { @@ -44898,7 +44898,7 @@ "listenerArn" ], "writeOnly": [ - "defaultActions/*/AuthenticateOidcConfig/ClientSecret" + "defaultActions/*/authenticateOidcConfig/clientSecret" ], "cfRef": { "property": "ListenerArn" @@ -44979,7 +44979,7 @@ "ruleArn" ], "writeOnly": [ - "actions/*/AuthenticateOidcConfig/ClientSecret", + "actions/*/authenticateOidcConfig/clientSecret", "listenerArn" ], "cfRef": { @@ -46295,7 +46295,7 @@ "workflowArn" ], "writeOnly": [ - "idMappingTechniques/NormalizationVersion" + "idMappingTechniques/normalizationVersion" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -46921,18 +46921,18 @@ ], "readOnly": [ "arn", - "authParameters/ConnectivityParameters/ResourceParameters/ResourceAssociationArn", - "invocationConnectivityParameters/ResourceParameters/ResourceAssociationArn", + "authParameters/connectivityParameters/resourceParameters/resourceAssociationArn", + "invocationConnectivityParameters/resourceParameters/resourceAssociationArn", "secretArn" ], "writeOnly": [ - "authParameters/ApiKeyAuthParameters/ApiKeyValue", - "authParameters/BasicAuthParameters/Password", - "authParameters/InvocationHttpParameters", - "authParameters/OAuthParameters/ClientParameters/ClientSecret", - "authParameters/OAuthParameters/OAuthHttpParameters/BodyParameters", - "authParameters/OAuthParameters/OAuthHttpParameters/HeaderParameters", - "authParameters/OAuthParameters/OAuthHttpParameters/QueryStringParameters" + "authParameters/apiKeyAuthParameters/apiKeyValue", + "authParameters/basicAuthParameters/password", + "authParameters/invocationHttpParameters", + "authParameters/oAuthParameters/clientParameters/clientSecret", + "authParameters/oAuthParameters/oAuthHttpParameters/bodyParameters", + "authParameters/oAuthParameters/oAuthHttpParameters/headerParameters", + "authParameters/oAuthParameters/oAuthHttpParameters/queryStringParameters" ], "cfRef": { "property": "Name" @@ -48196,7 +48196,7 @@ "status" ], "writeOnly": [ - "federationParameters/AttributeMap", + "federationParameters/attributeMap", "superuserParameters", "tags" ], @@ -48324,7 +48324,7 @@ "targets" ], "createOnly": [ - "experimentOptions/AccountTargeting", + "experimentOptions/accountTargeting", "tags" ], "readOnly": [ @@ -48974,29 +48974,29 @@ ], "readOnly": [ "arn", - "associatedModels/*/Arn", + "associatedModels/*/arn", "createdTime", "detectorVersionId", - "eventType/Arn", - "eventType/CreatedTime", - "eventType/EntityTypes/*/Arn", - "eventType/EntityTypes/*/CreatedTime", - "eventType/EntityTypes/*/LastUpdatedTime", - "eventType/EventVariables/*/Arn", - "eventType/EventVariables/*/CreatedTime", - "eventType/EventVariables/*/LastUpdatedTime", - "eventType/Labels/*/Arn", - "eventType/Labels/*/CreatedTime", - "eventType/Labels/*/LastUpdatedTime", - "eventType/LastUpdatedTime", + "eventType/arn", + "eventType/createdTime", + "eventType/entityTypes/*/arn", + "eventType/entityTypes/*/createdTime", + "eventType/entityTypes/*/lastUpdatedTime", + "eventType/eventVariables/*/arn", + "eventType/eventVariables/*/createdTime", + "eventType/eventVariables/*/lastUpdatedTime", + "eventType/labels/*/arn", + "eventType/labels/*/createdTime", + "eventType/labels/*/lastUpdatedTime", + "eventType/lastUpdatedTime", "lastUpdatedTime", - "rules/*/Arn", - "rules/*/CreatedTime", - "rules/*/LastUpdatedTime", - "rules/*/Outcomes/*/Arn", - "rules/*/Outcomes/*/CreatedTime", - "rules/*/Outcomes/*/LastUpdatedTime", - "rules/*/RuleVersion" + "rules/*/arn", + "rules/*/createdTime", + "rules/*/lastUpdatedTime", + "rules/*/outcomes/*/arn", + "rules/*/outcomes/*/createdTime", + "rules/*/outcomes/*/lastUpdatedTime", + "rules/*/ruleVersion" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -49185,15 +49185,15 @@ "readOnly": [ "arn", "createdTime", - "entityTypes/*/Arn", - "entityTypes/*/CreatedTime", - "entityTypes/*/LastUpdatedTime", - "eventVariables/*/Arn", - "eventVariables/*/CreatedTime", - "eventVariables/*/LastUpdatedTime", - "labels/*/Arn", - "labels/*/CreatedTime", - "labels/*/LastUpdatedTime", + "entityTypes/*/arn", + "entityTypes/*/createdTime", + "entityTypes/*/lastUpdatedTime", + "eventVariables/*/arn", + "eventVariables/*/createdTime", + "eventVariables/*/lastUpdatedTime", + "labels/*/arn", + "labels/*/createdTime", + "labels/*/lastUpdatedTime", "lastUpdatedTime" ], "tagsProperty": "tags", @@ -51309,7 +51309,7 @@ "attachmentArn" ], "writeOnly": [ - "resources/*/Region" + "resources/*/region" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -51433,7 +51433,7 @@ "endpointGroupArn" ], "writeOnly": [ - "endpointConfigurations/*/AttachmentArn" + "endpointConfigurations/*/attachmentArn" ], "cfRef": { "property": "EndpointGroupArn" @@ -54705,7 +54705,7 @@ "arn" ], "writeOnly": [ - "loginProfile/Password" + "loginProfile/password" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -60105,9 +60105,9 @@ ], "readOnly": [ "assetArn", - "assetHierarchies/*/Id", + "assetHierarchies/*/id", "assetId", - "assetProperties/*/Id" + "assetProperties/*/id" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -60226,31 +60226,31 @@ ], "readOnly": [ "assetModelArn", - "assetModelCompositeModels/*/CompositeModelProperties/*/Id", - "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/PropertyId", - "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/PropertyId", - "assetModelCompositeModels/*/Id", - "assetModelHierarchies/*/Id", + "assetModelCompositeModels/*/compositeModelProperties/*/id", + "assetModelCompositeModels/*/compositeModelProperties/*/type/metric/variables/*/value/propertyId", + "assetModelCompositeModels/*/compositeModelProperties/*/type/transform/variables/*/value/propertyId", + "assetModelCompositeModels/*/id", + "assetModelHierarchies/*/id", "assetModelId", - "assetModelProperties/*/Id", - "assetModelProperties/*/Type/Metric/Variables/*/Value/PropertyId", - "assetModelProperties/*/Type/Transform/Variables/*/Value/PropertyId" + "assetModelProperties/*/id", + "assetModelProperties/*/type/metric/variables/*/value/propertyId", + "assetModelProperties/*/type/transform/variables/*/value/propertyId" ], "writeOnly": [ - "assetModelCompositeModels/*/CompositeModelProperties/*/DataTypeSpec", - "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/HierarchyId", - "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Metric/Variables/*/Value/PropertyPath/*/Name", - "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyExternalId", - "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyId", - "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/HierarchyLogicalId", - "assetModelCompositeModels/*/CompositeModelProperties/*/Type/Transform/Variables/*/Value/PropertyPath/*/Name", - "assetModelProperties/*/DataTypeSpec", - "assetModelProperties/*/Type/Metric/Variables/*/Value/HierarchyId", - "assetModelProperties/*/Type/Metric/Variables/*/Value/PropertyPath/*/Name", - "assetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyExternalId", - "assetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyId", - "assetModelProperties/*/Type/Transform/Variables/*/Value/HierarchyLogicalId", - "assetModelProperties/*/Type/Transform/Variables/*/Value/PropertyPath/*/Name" + "assetModelCompositeModels/*/compositeModelProperties/*/dataTypeSpec", + "assetModelCompositeModels/*/compositeModelProperties/*/type/metric/variables/*/value/hierarchyId", + "assetModelCompositeModels/*/compositeModelProperties/*/type/metric/variables/*/value/propertyPath/*/name", + "assetModelCompositeModels/*/compositeModelProperties/*/type/transform/variables/*/value/hierarchyExternalId", + "assetModelCompositeModels/*/compositeModelProperties/*/type/transform/variables/*/value/hierarchyId", + "assetModelCompositeModels/*/compositeModelProperties/*/type/transform/variables/*/value/hierarchyLogicalId", + "assetModelCompositeModels/*/compositeModelProperties/*/type/transform/variables/*/value/propertyPath/*/name", + "assetModelProperties/*/dataTypeSpec", + "assetModelProperties/*/type/metric/variables/*/value/hierarchyId", + "assetModelProperties/*/type/metric/variables/*/value/propertyPath/*/name", + "assetModelProperties/*/type/transform/variables/*/value/hierarchyExternalId", + "assetModelProperties/*/type/transform/variables/*/value/hierarchyId", + "assetModelProperties/*/type/transform/variables/*/value/hierarchyLogicalId", + "assetModelProperties/*/type/transform/variables/*/value/propertyPath/*/name" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -61519,7 +61519,7 @@ "arn", "fuotaTaskStatus", "id", - "loRaWaN/StartTime" + "loRaWan/startTime" ], "irreversibleNames": { "awsId": "Id", @@ -61613,8 +61613,8 @@ "readOnly": [ "arn", "id", - "loRaWaN/NumberOfDevicesInGroup", - "loRaWaN/NumberOfDevicesRequested", + "loRaWan/numberOfDevicesInGroup", + "loRaWan/numberOfDevicesRequested", "status" ], "irreversibleNames": { @@ -61777,22 +61777,22 @@ "readOnly": [ "arn", "id", - "loRaWaN/ChannelMask", - "loRaWaN/DevStatusReqFreq", - "loRaWaN/DlBucketSize", - "loRaWaN/DlRate", - "loRaWaN/DlRatePolicy", - "loRaWaN/DrMax", - "loRaWaN/DrMin", - "loRaWaN/HrAllowed", - "loRaWaN/MinGwDiversity", - "loRaWaN/NwkGeoLoc", - "loRaWaN/ReportDevStatusBattery", - "loRaWaN/ReportDevStatusMargin", - "loRaWaN/TargetPer", - "loRaWaN/UlBucketSize", - "loRaWaN/UlRate", - "loRaWaN/UlRatePolicy" + "loRaWan/channelMask", + "loRaWan/devStatusReqFreq", + "loRaWan/dlBucketSize", + "loRaWan/dlRate", + "loRaWan/dlRatePolicy", + "loRaWan/drMax", + "loRaWan/drMin", + "loRaWan/hrAllowed", + "loRaWan/minGwDiversity", + "loRaWan/nwkGeoLoc", + "loRaWan/reportDevStatusBattery", + "loRaWan/reportDevStatusMargin", + "loRaWan/targetPer", + "loRaWan/ulBucketSize", + "loRaWan/ulRate", + "loRaWan/ulRatePolicy" ], "irreversibleNames": { "awsId": "Id", @@ -62274,10 +62274,10 @@ "createOnly": [ "name", "video", - "video/Bitrate", - "video/Framerate", - "video/Height", - "video/Width" + "video/bitrate", + "video/framerate", + "video/height", + "video/width" ], "readOnly": [ "arn" @@ -62694,18 +62694,18 @@ ], "createOnly": [ "destinationConfiguration", - "destinationConfiguration/S3", - "destinationConfiguration/S3/BucketName", + "destinationConfiguration/s3", + "destinationConfiguration/s3/bucketName", "name", "recordingReconnectWindowSeconds", "renditionConfiguration", - "renditionConfiguration/RenditionSelection", - "renditionConfiguration/Renditions", + "renditionConfiguration/renditionSelection", + "renditionConfiguration/renditions", "thumbnailConfiguration", - "thumbnailConfiguration/RecordingMode", - "thumbnailConfiguration/Resolution", - "thumbnailConfiguration/Storage", - "thumbnailConfiguration/TargetIntervalSeconds" + "thumbnailConfiguration/recordingMode", + "thumbnailConfiguration/resolution", + "thumbnailConfiguration/storage", + "thumbnailConfiguration/targetIntervalSeconds" ], "readOnly": [ "arn", @@ -62828,7 +62828,7 @@ "createOnly": [ "name", "s3", - "s3/BucketName" + "s3/bucketName" ], "readOnly": [ "arn" @@ -64105,8 +64105,8 @@ "applicationName" ], "writeOnly": [ - "applicationConfiguration/ApplicationCodeConfiguration/CodeContent/ZipFileContent", - "applicationConfiguration/EnvironmentProperties", + "applicationConfiguration/applicationCodeConfiguration/codeContent/zipFileContent", + "applicationConfiguration/environmentProperties", "runConfiguration" ], "tagsProperty": "tags", @@ -64279,16 +64279,16 @@ "maxLength": 64 }, "createOnly": [ - "amazonOpenSearchServerlessDestinationConfiguration/VpcConfiguration", - "amazonopensearchserviceDestinationConfiguration/VpcConfiguration", + "amazonOpenSearchServerlessDestinationConfiguration/vpcConfiguration", + "amazonopensearchserviceDestinationConfiguration/vpcConfiguration", "databaseSourceConfiguration", "deliveryStreamName", "deliveryStreamType", - "elasticsearchDestinationConfiguration/VpcConfiguration", + "elasticsearchDestinationConfiguration/vpcConfiguration", "icebergDestinationConfiguration", "kinesisStreamSourceConfiguration", "mskSourceConfiguration", - "snowflakeDestinationConfiguration/SnowflakeVpcConfiguration" + "snowflakeDestinationConfiguration/snowflakeVpcConfiguration" ], "readOnly": [ "arn" @@ -65787,18 +65787,18 @@ "readOnly": [ "arn", "snapStartResponse", - "snapStartResponse/ApplyOn", - "snapStartResponse/OptimizationStatus" + "snapStartResponse/applyOn", + "snapStartResponse/optimizationStatus" ], "writeOnly": [ "code", - "code/ImageUri", - "code/S3Bucket", - "code/S3Key", - "code/S3ObjectVersion", - "code/ZipFile", + "code/imageUri", + "code/s3Bucket", + "code/s3Key", + "code/s3ObjectVersion", + "code/zipFile", "snapStart", - "snapStart/ApplyOn" + "snapStart/applyOn" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -67410,7 +67410,7 @@ "readOnly": [ "containerArn", "principalArn", - "privateRegistryAccess/EcrImagePullerRole/PrincipalArn", + "privateRegistryAccess/ecrImagePullerRole/principalArn", "url" ], "tagsProperty": "tags", @@ -67720,8 +67720,8 @@ "diskArn", "iops", "isAttached", - "location/AvailabilityZone", - "location/RegionName", + "location/availabilityZone", + "location/regionName", "path", "resourceType", "state", @@ -67906,20 +67906,20 @@ "instanceName" ], "readOnly": [ - "hardware/CpuCount", - "hardware/RamSizeInGb", + "hardware/cpuCount", + "hardware/ramSizeInGb", "instanceArn", "ipv6Addresses", "isStaticIp", - "location/AvailabilityZone", - "location/RegionName", - "networking/MonthlyTransfer/GbPerMonthAllocated", + "location/availabilityZone", + "location/regionName", + "networking/monthlyTransfer/gbPerMonthAllocated", "privateIpAddress", "publicIpAddress", "resourceType", "sshKeyName", - "state/Code", - "state/Name", + "state/code", + "state/name", "supportCode", "userName" ], @@ -71005,17 +71005,17 @@ "createOnly": [ "availabilityZone", "name", - "source/Name" + "source/name" ], "readOnly": [ "egressIp", "flowArn", "flowAvailabilityZone", - "mediaStreams/*/Fmt", - "source/IngestIp", - "source/SourceArn", - "source/SourceIngestPort", - "vpcInterfaces/*/NetworkInterfaceIds" + "mediaStreams/*/fmt", + "source/ingestIp", + "source/sourceArn", + "source/sourceIngestPort", + "vpcInterfaces/*/networkInterfaceIds" ], "cfRef": { "property": "FlowArn" @@ -72923,8 +72923,8 @@ "readOnly": [ "arn", "createdAt", - "egressEndpoints/*/PackagingConfigurationId", - "egressEndpoints/*/Url" + "egressEndpoints/*/packagingConfigurationId", + "egressEndpoints/*/url" ], "irreversibleNames": { "awsId": "Id" @@ -73009,10 +73009,10 @@ ], "readOnly": [ "arn", - "hlsIngest/ingestEndpoints/*/Id", - "hlsIngest/ingestEndpoints/*/Password", - "hlsIngest/ingestEndpoints/*/Url", - "hlsIngest/ingestEndpoints/*/Username" + "hlsIngest/ingestEndpoints/*/id", + "hlsIngest/ingestEndpoints/*/password", + "hlsIngest/ingestEndpoints/*/url", + "hlsIngest/ingestEndpoints/*/username" ], "irreversibleNames": { "awsId": "Id" @@ -73752,9 +73752,9 @@ "createdAt", "dashManifestUrls", "hlsManifestUrls", - "hlsManifests/*/Url", + "hlsManifests/*/url", "lowLatencyHlsManifestUrls", - "lowLatencyHlsManifests/*/Url", + "lowLatencyHlsManifests/*/url", "modifiedAt" ], "tagsProperty": "tags", @@ -74221,8 +74221,8 @@ "name" ], "readOnly": [ - "dashConfiguration/ManifestEndpointPrefix", - "hlsConfiguration/ManifestEndpointPrefix", + "dashConfiguration/manifestEndpointPrefix", + "hlsConfiguration/manifestEndpointPrefix", "playbackConfigurationArn", "playbackEndpointPrefix", "sessionInitializationEndpointPrefix" @@ -74750,8 +74750,8 @@ ], "readOnly": [ "arn", - "clusterEndpoint/Address", - "clusterEndpoint/Port", + "clusterEndpoint/address", + "clusterEndpoint/port", "parameterGroupStatus", "status" ], @@ -75286,12 +75286,12 @@ "numberOfBrokerNodes" ], "createOnly": [ - "brokerNodeGroupInfo/BrokerAzDistribution", - "brokerNodeGroupInfo/ClientSubnets", - "brokerNodeGroupInfo/SecurityGroups", + "brokerNodeGroupInfo/brokerAzDistribution", + "brokerNodeGroupInfo/clientSubnets", + "brokerNodeGroupInfo/securityGroups", "clusterName", - "encryptionInfo/EncryptionAtRest", - "encryptionInfo/EncryptionInTransit/InCluster" + "encryptionInfo/encryptionAtRest", + "encryptionInfo/encryptionInTransit/inCluster" ], "readOnly": [ "arn" @@ -75405,9 +75405,9 @@ ], "readOnly": [ "arn", - "latestRevision/CreationTime", - "latestRevision/Description", - "latestRevision/Revision" + "latestRevision/creationTime", + "latestRevision/description", + "latestRevision/revision" ], "writeOnly": [ "serverProperties" @@ -75939,17 +75939,17 @@ "endpointManagement", "kmsKey", "name", - "networkConfiguration/SubnetIds" + "networkConfiguration/subnetIds" ], "readOnly": [ "arn", "celeryExecutorQueue", "databaseVpcEndpointService", - "loggingConfiguration/DagProcessingLogs/CloudWatchLogGroupArn", - "loggingConfiguration/SchedulerLogs/CloudWatchLogGroupArn", - "loggingConfiguration/TaskLogs/CloudWatchLogGroupArn", - "loggingConfiguration/WebserverLogs/CloudWatchLogGroupArn", - "loggingConfiguration/WorkerLogs/CloudWatchLogGroupArn", + "loggingConfiguration/dagProcessingLogs/cloudWatchLogGroupArn", + "loggingConfiguration/schedulerLogs/cloudWatchLogGroupArn", + "loggingConfiguration/taskLogs/cloudWatchLogGroupArn", + "loggingConfiguration/webserverLogs/cloudWatchLogGroupArn", + "loggingConfiguration/workerLogs/cloudWatchLogGroupArn", "webserverUrl", "webserverVpcEndpointService" ], @@ -79980,14 +79980,14 @@ "maxLength": 32 }, "createOnly": [ - "iamIdentityCenterOptions/InstanceArn", + "iamIdentityCenterOptions/instanceArn", "name", "type" ], "readOnly": [ - "iamIdentityCenterOptions/ApplicationArn", - "iamIdentityCenterOptions/ApplicationDescription", - "iamIdentityCenterOptions/ApplicationName", + "iamIdentityCenterOptions/applicationArn", + "iamIdentityCenterOptions/applicationDescription", + "iamIdentityCenterOptions/applicationName", "id" ], "writeOnly": [ @@ -80467,22 +80467,22 @@ "domainName" ], "readOnly": [ - "advancedSecurityOptions/AnonymousAuthDisableDate", + "advancedSecurityOptions/anonymousAuthDisableDate", "arn", "domainArn", "domainEndpoint", "domainEndpointV2", "domainEndpoints", "id", - "identityCenterOptions/IdentityCenterApplicationArn", - "identityCenterOptions/IdentityStoreId", + "identityCenterOptions/identityCenterApplicationArn", + "identityCenterOptions/identityStoreId", "serviceSoftwareOptions" ], "writeOnly": [ - "advancedSecurityOptions/JwtOptions/PublicKey", - "advancedSecurityOptions/MasterUserOptions", - "advancedSecurityOptions/SamlOptions/MasterBackendRole", - "advancedSecurityOptions/SamlOptions/MasterUserName" + "advancedSecurityOptions/jwtOptions/publicKey", + "advancedSecurityOptions/masterUserOptions", + "advancedSecurityOptions/samlOptions/masterBackendRole", + "advancedSecurityOptions/samlOptions/masterUserName" ], "irreversibleNames": { "awsId": "Id", @@ -81494,11 +81494,11 @@ "arn", "createdTime", "packageId", - "storageLocation/BinaryPrefixLocation", - "storageLocation/Bucket", - "storageLocation/GeneratedPrefixLocation", - "storageLocation/ManifestPrefixLocation", - "storageLocation/RepoPrefixLocation" + "storageLocation/binaryPrefixLocation", + "storageLocation/bucket", + "storageLocation/generatedPrefixLocation", + "storageLocation/manifestPrefixLocation", + "storageLocation/repoPrefixLocation" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -82716,19 +82716,19 @@ "createOnly": [ "name", "source", - "sourceParameters/ActiveMqBrokerParameters/QueueName", - "sourceParameters/DynamoDbStreamParameters/StartingPosition", - "sourceParameters/KinesisStreamParameters/StartingPosition", - "sourceParameters/KinesisStreamParameters/StartingPositionTimestamp", - "sourceParameters/ManagedStreamingKafkaParameters/ConsumerGroupId", - "sourceParameters/ManagedStreamingKafkaParameters/StartingPosition", - "sourceParameters/ManagedStreamingKafkaParameters/TopicName", - "sourceParameters/RabbitMqBrokerParameters/QueueName", - "sourceParameters/RabbitMqBrokerParameters/VirtualHost", - "sourceParameters/SelfManagedKafkaParameters/AdditionalBootstrapServers", - "sourceParameters/SelfManagedKafkaParameters/ConsumerGroupId", - "sourceParameters/SelfManagedKafkaParameters/StartingPosition", - "sourceParameters/SelfManagedKafkaParameters/TopicName" + "sourceParameters/activeMqBrokerParameters/queueName", + "sourceParameters/dynamoDbStreamParameters/startingPosition", + "sourceParameters/kinesisStreamParameters/startingPosition", + "sourceParameters/kinesisStreamParameters/startingPositionTimestamp", + "sourceParameters/managedStreamingKafkaParameters/consumerGroupId", + "sourceParameters/managedStreamingKafkaParameters/startingPosition", + "sourceParameters/managedStreamingKafkaParameters/topicName", + "sourceParameters/rabbitMqBrokerParameters/queueName", + "sourceParameters/rabbitMqBrokerParameters/virtualHost", + "sourceParameters/selfManagedKafkaParameters/additionalBootstrapServers", + "sourceParameters/selfManagedKafkaParameters/consumerGroupId", + "sourceParameters/selfManagedKafkaParameters/startingPosition", + "sourceParameters/selfManagedKafkaParameters/topicName" ], "readOnly": [ "arn", @@ -85166,7 +85166,7 @@ "createOnly": [ "awsAccountId", "dataSetId", - "schedule/ScheduleId" + "schedule/scheduleId" ], "readOnly": [ "arn" @@ -86015,8 +86015,8 @@ ], "writeOnly": [ "lockConfiguration", - "lockConfiguration/UnlockDelayUnit", - "lockConfiguration/UnlockDelayValue" + "lockConfiguration/unlockDelayUnit", + "lockConfiguration/unlockDelayValue" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -86734,10 +86734,10 @@ "dbClusterArn", "dbClusterResourceId", "endpoint", - "endpoint/Address", - "endpoint/Port", - "masterUserSecret/SecretArn", - "readEndpoint/Address", + "endpoint/address", + "endpoint/port", + "masterUserSecret/secretArn", + "readEndpoint/address", "storageThroughput" ], "writeOnly": [ @@ -87558,15 +87558,15 @@ "timezone" ], "readOnly": [ - "certificateDetails/CaIdentifier", - "certificateDetails/ValidTill", + "certificateDetails/caIdentifier", + "certificateDetails/validTill", "dbInstanceArn", "dbSystemId", "dbiResourceId", - "endpoint/Address", - "endpoint/HostedZoneId", - "endpoint/Port", - "masterUserSecret/SecretArn" + "endpoint/address", + "endpoint/hostedZoneId", + "endpoint/port", + "masterUserSecret/secretArn" ], "writeOnly": [ "allowMajorVersionUpgrade", @@ -89147,8 +89147,8 @@ "readOnly": [ "clusterNamespaceArn", "deferMaintenanceIdentifier", - "endpoint/Address", - "endpoint/Port", + "endpoint/address", + "endpoint/port", "masterPasswordSecretArn" ], "writeOnly": [ @@ -89248,8 +89248,8 @@ ], "writeOnly": [ "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -89312,8 +89312,8 @@ ], "writeOnly": [ "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -89425,15 +89425,15 @@ "endpointStatus", "port", "vpcEndpoint", - "vpcEndpoint/NetworkInterfaces/*/AvailabilityZone", - "vpcEndpoint/NetworkInterfaces/*/NetworkInterfaceId", - "vpcEndpoint/NetworkInterfaces/*/PrivateIpAddress", - "vpcEndpoint/NetworkInterfaces/*/SubnetId", - "vpcEndpoint/VpcEndpointId", - "vpcEndpoint/VpcId", + "vpcEndpoint/networkInterfaces/*/availabilityZone", + "vpcEndpoint/networkInterfaces/*/networkInterfaceId", + "vpcEndpoint/networkInterfaces/*/privateIpAddress", + "vpcEndpoint/networkInterfaces/*/subnetId", + "vpcEndpoint/vpcEndpointId", + "vpcEndpoint/vpcId", "vpcSecurityGroups", - "vpcSecurityGroups/*/Status", - "vpcSecurityGroups/*/VpcSecurityGroupId" + "vpcSecurityGroups/*/status", + "vpcSecurityGroups/*/vpcSecurityGroupId" ], "primaryIdentifier": [ "endpointName" @@ -89685,8 +89685,8 @@ ], "writeOnly": [ "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -90079,17 +90079,17 @@ ], "readOnly": [ "namespace", - "namespace/AdminUsername", - "namespace/CreationDate", - "namespace/DbName", - "namespace/DefaultIamRoleArn", - "namespace/IamRoles", - "namespace/KmsKeyId", - "namespace/LogExports", - "namespace/NamespaceArn", - "namespace/NamespaceId", - "namespace/NamespaceName", - "namespace/Status" + "namespace/adminUsername", + "namespace/creationDate", + "namespace/dbName", + "namespace/defaultIamRoleArn", + "namespace/iamRoles", + "namespace/kmsKeyId", + "namespace/logExports", + "namespace/namespaceArn", + "namespace/namespaceId", + "namespace/namespaceName", + "namespace/status" ], "writeOnly": [ "adminUserPassword", @@ -90252,28 +90252,28 @@ ], "readOnly": [ "workgroup", - "workgroup/BaseCapacity", - "workgroup/ConfigParameters/*/ParameterKey", - "workgroup/ConfigParameters/*/ParameterValue", - "workgroup/CreationDate", - "workgroup/Endpoint/Address", - "workgroup/Endpoint/Port", - "workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/AvailabilityZone", - "workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/NetworkInterfaceId", - "workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/PrivateIpAddress", - "workgroup/Endpoint/VpcEndpoints/*/NetworkInterfaces/*/SubnetId", - "workgroup/Endpoint/VpcEndpoints/*/VpcEndpointId", - "workgroup/Endpoint/VpcEndpoints/*/VpcId", - "workgroup/EnhancedVpcRouting", - "workgroup/MaxCapacity", - "workgroup/NamespaceName", - "workgroup/PubliclyAccessible", - "workgroup/SecurityGroupIds", - "workgroup/Status", - "workgroup/SubnetIds", - "workgroup/WorkgroupArn", - "workgroup/WorkgroupId", - "workgroup/WorkgroupName" + "workgroup/baseCapacity", + "workgroup/configParameters/*/parameterKey", + "workgroup/configParameters/*/parameterValue", + "workgroup/creationDate", + "workgroup/endpoint/address", + "workgroup/endpoint/port", + "workgroup/endpoint/vpcEndpoints/*/networkInterfaces/*/availabilityZone", + "workgroup/endpoint/vpcEndpoints/*/networkInterfaces/*/networkInterfaceId", + "workgroup/endpoint/vpcEndpoints/*/networkInterfaces/*/privateIpAddress", + "workgroup/endpoint/vpcEndpoints/*/networkInterfaces/*/subnetId", + "workgroup/endpoint/vpcEndpoints/*/vpcEndpointId", + "workgroup/endpoint/vpcEndpoints/*/vpcId", + "workgroup/enhancedVpcRouting", + "workgroup/maxCapacity", + "workgroup/namespaceName", + "workgroup/publiclyAccessible", + "workgroup/securityGroupIds", + "workgroup/status", + "workgroup/subnetIds", + "workgroup/workgroupArn", + "workgroup/workgroupId", + "workgroup/workgroupName" ], "writeOnly": [ "baseCapacity", @@ -90602,10 +90602,10 @@ "environmentIdentifier", "routeType", "serviceIdentifier", - "uriPathRoute/AppendSourcePath", - "uriPathRoute/IncludeChildPaths", - "uriPathRoute/Methods", - "uriPathRoute/SourcePath" + "uriPathRoute/appendSourcePath", + "uriPathRoute/includeChildPaths", + "uriPathRoute/methods", + "uriPathRoute/sourcePath" ], "readOnly": [ "arn", @@ -91820,7 +91820,7 @@ "arn" ], "writeOnly": [ - "robotSoftwareSuite/Version", + "robotSoftwareSuite/version", "sources" ], "tagsProperty": "tags", @@ -91986,8 +91986,8 @@ ], "writeOnly": [ "renderingEngine", - "robotSoftwareSuite/Version", - "simulationSoftwareSuite/Version", + "robotSoftwareSuite/version", + "simulationSoftwareSuite/version", "sources" ], "tagsProperty": "tags", @@ -92459,9 +92459,9 @@ "healthCheckConfig" ], "createOnly": [ - "healthCheckConfig/MeasureLatency", - "healthCheckConfig/RequestInterval", - "healthCheckConfig/Type" + "healthCheckConfig/measureLatency", + "healthCheckConfig/requestInterval", + "healthCheckConfig/type" ], "readOnly": [ "healthCheckId" @@ -93617,7 +93617,7 @@ "arn", "creationTime", "creatorRequestId", - "firewallRules/*/FirewallThreatProtectionId", + "firewallRules/*/firewallThreatProtectionId", "id", "modificationTime", "ownerId", @@ -94927,11 +94927,11 @@ ], "writeOnly": [ "accessControl", - "lifecycleConfiguration/Rules/*/ExpiredObjectDeleteMarker", - "lifecycleConfiguration/Rules/*/NoncurrentVersionExpirationInDays", - "lifecycleConfiguration/Rules/*/NoncurrentVersionTransition", - "lifecycleConfiguration/Rules/*/Transition", - "replicationConfiguration/Rules/*/Prefix" + "lifecycleConfiguration/rules/*/expiredObjectDeleteMarker", + "lifecycleConfiguration/rules/*/noncurrentVersionExpirationInDays", + "lifecycleConfiguration/rules/*/noncurrentVersionTransition", + "lifecycleConfiguration/rules/*/transition", + "replicationConfiguration/rules/*/prefix" ], "irreversibleNames": { "websiteUrl": "WebsiteURL" @@ -95086,7 +95086,7 @@ ], "readOnly": [ "policyStatus", - "policyStatus/IsPublic" + "policyStatus/isPublic" ], "cfRef": { "property": "MrapName" @@ -95127,10 +95127,10 @@ "storageLensConfiguration" ], "createOnly": [ - "storageLensConfiguration/Id" + "storageLensConfiguration/id" ], "readOnly": [ - "storageLensConfiguration/StorageLensArn" + "storageLensConfiguration/storageLensArn" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -95363,12 +95363,12 @@ ], "readOnly": [ "alias", - "alias/Status", - "alias/Value", + "alias/status", + "alias/value", "arn", "creationDate", "policyStatus", - "policyStatus/IsPublic", + "policyStatus/isPublic", "publicAccessBlockConfiguration" ], "primaryIdentifier": [ @@ -96053,11 +96053,11 @@ ], "createOnly": [ "clusterName", - "instanceGroups/*/ExecutionRole", - "instanceGroups/*/InstanceGroupName", - "instanceGroups/*/InstanceType", - "instanceGroups/*/OverrideVpcConfig", - "instanceGroups/*/ThreadsPerCore", + "instanceGroups/*/executionRole", + "instanceGroups/*/instanceGroupName", + "instanceGroups/*/instanceType", + "instanceGroups/*/overrideVpcConfig", + "instanceGroups/*/threadsPerCore", "orchestrator", "vpcConfig" ], @@ -96066,7 +96066,7 @@ "clusterStatus", "creationTime", "failureMessage", - "instanceGroups/*/CurrentCount" + "instanceGroups/*/currentCount" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -96221,8 +96221,8 @@ "writeOnly": [ "endpointName", "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArrayCreateOnly", @@ -96280,7 +96280,7 @@ "deviceFleetName" ], "createOnly": [ - "device/DeviceName" + "device/deviceName" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -96519,7 +96519,7 @@ "createOnly": [ "authMode", "domainName", - "domainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", + "domainSettings/rStudioServerProDomainSettings/defaultResourceSpec", "kmsKeyId", "tags", "vpcId" @@ -96779,9 +96779,9 @@ "eventTimeFeatureName", "featureGroupName", "offlineStoreConfig", - "onlineStoreConfig/EnableOnlineStore", - "onlineStoreConfig/SecurityConfig", - "onlineStoreConfig/StorageType", + "onlineStoreConfig/enableOnlineStore", + "onlineStoreConfig/securityConfig", + "onlineStoreConfig/storageType", "recordIdentifierFeatureName", "roleArn", "tags" @@ -97093,13 +97093,13 @@ "inferenceComponentArn", "inferenceComponentStatus", "lastModifiedTime", - "runtimeConfig/CurrentCopyCount", - "runtimeConfig/DesiredCopyCount", - "specification/Container/DeployedImage" + "runtimeConfig/currentCopyCount", + "runtimeConfig/desiredCopyCount", + "specification/container/deployedImage" ], "writeOnly": [ - "runtimeConfig/CopyCount", - "specification/Container/Image" + "runtimeConfig/copyCount", + "specification/container/image" ], "tagsProperty": "tags", "tagsStyle": "keyValueArray", @@ -97533,8 +97533,8 @@ "writeOnly": [ "endpointName", "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArrayCreateOnly", @@ -97645,13 +97645,13 @@ "securityConfig" ], "readOnly": [ - "createdBy/DomainId", - "createdBy/UserProfileArn", - "createdBy/UserProfileName", + "createdBy/domainId", + "createdBy/userProfileArn", + "createdBy/userProfileName", "creationTime", - "lastModifiedBy/DomainId", - "lastModifiedBy/UserProfileArn", - "lastModifiedBy/UserProfileName", + "lastModifiedBy/domainId", + "lastModifiedBy/userProfileArn", + "lastModifiedBy/userProfileName", "lastModifiedTime", "modelCardArn", "modelCardProcessingStatus", @@ -97813,8 +97813,8 @@ "writeOnly": [ "endpointName", "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArrayCreateOnly", @@ -98341,8 +98341,8 @@ "writeOnly": [ "endpointName", "tags", - "tags/*/Key", - "tags/*/Value" + "tags/*/key", + "tags/*/value" ], "tagsProperty": "tags", "tagsStyle": "keyValueArrayCreateOnly", @@ -99052,8 +99052,8 @@ "singleSignOnUserValue", "tags", "userProfileName", - "userSettings/RStudioServerProAppSettings/AccessStatus", - "userSettings/RStudioServerProAppSettings/UserGroup" + "userSettings/rStudioServerProAppSettings/accessStatus", + "userSettings/rStudioServerProAppSettings/userGroup" ], "readOnly": [ "userProfileArn" @@ -99385,17 +99385,17 @@ ], "writeOnly": [ "hostedRotationLambda", - "hostedRotationLambda/ExcludeCharacters", - "hostedRotationLambda/KmsKeyArn", - "hostedRotationLambda/MasterSecretArn", - "hostedRotationLambda/MasterSecretKmsKeyArn", - "hostedRotationLambda/RotationLambdaName", - "hostedRotationLambda/RotationType", - "hostedRotationLambda/Runtime", - "hostedRotationLambda/SuperuserSecretArn", - "hostedRotationLambda/SuperuserSecretKmsKeyArn", - "hostedRotationLambda/VpcSecurityGroupIds", - "hostedRotationLambda/VpcSubnetIds", + "hostedRotationLambda/excludeCharacters", + "hostedRotationLambda/kmsKeyArn", + "hostedRotationLambda/masterSecretArn", + "hostedRotationLambda/masterSecretKmsKeyArn", + "hostedRotationLambda/rotationLambdaName", + "hostedRotationLambda/rotationType", + "hostedRotationLambda/runtime", + "hostedRotationLambda/superuserSecretArn", + "hostedRotationLambda/superuserSecretKmsKeyArn", + "hostedRotationLambda/vpcSecurityGroupIds", + "hostedRotationLambda/vpcSubnetIds", "rotateImmediatelyOnUpdate" ], "irreversibleNames": { @@ -100565,11 +100565,11 @@ "subscriberEndpoint" ], "writeOnly": [ - "notificationConfiguration/HttpsNotificationConfiguration/AuthorizationApiKeyName", - "notificationConfiguration/HttpsNotificationConfiguration/AuthorizationApiKeyValue", - "notificationConfiguration/HttpsNotificationConfiguration/Endpoint", - "notificationConfiguration/HttpsNotificationConfiguration/HttpMethod", - "notificationConfiguration/HttpsNotificationConfiguration/TargetRoleArn" + "notificationConfiguration/httpsNotificationConfiguration/authorizationApiKeyName", + "notificationConfiguration/httpsNotificationConfiguration/authorizationApiKeyValue", + "notificationConfiguration/httpsNotificationConfiguration/endpoint", + "notificationConfiguration/httpsNotificationConfiguration/httpMethod", + "notificationConfiguration/httpsNotificationConfiguration/targetRoleArn" ], "primaryIdentifier": [ "subscriberArn" @@ -101440,8 +101440,8 @@ "dkimDnsTokenValue3" ], "writeOnly": [ - "dkimSigningAttributes/DomainSigningPrivateKey", - "dkimSigningAttributes/DomainSigningSelector" + "dkimSigningAttributes/domainSigningPrivateKey", + "dkimSigningAttributes/domainSigningSelector" ], "irreversibleNames": { "dkimDnsTokenName1": "DkimDNSTokenName1", @@ -102044,7 +102044,7 @@ } }, "createOnly": [ - "template/TemplateName" + "template/templateName" ], "readOnly": [ "id" @@ -104461,8 +104461,8 @@ "configurationDefinitions" ], "createOnly": [ - "configurationDefinitions/*/Type", - "configurationDefinitions/*/TypeVersion" + "configurationDefinitions/*/type", + "configurationDefinitions/*/typeVersion" ], "readOnly": [ "configurationDefinitions/*/id", @@ -105664,18 +105664,18 @@ "name" ], "readOnly": [ - "code/SourceLocationArn", + "code/sourceLocationArn", "id", "state" ], "writeOnly": [ - "code/S3Bucket", - "code/S3Key", - "code/S3ObjectVersion", - "code/Script", + "code/s3Bucket", + "code/s3Key", + "code/s3ObjectVersion", + "code/script", "deleteLambdaResourcesOnCanaryDeletion", "resourcesToReplicateTags", - "runConfig/EnvironmentVariables", + "runConfig/environmentVariables", "startCanaryAfterCreation", "visualReference" ], @@ -108306,8 +108306,8 @@ "readOnly": [ "arn", "createdAt", - "dnsEntry/DomainName", - "dnsEntry/HostedZoneId", + "dnsEntry/domainName", + "dnsEntry/hostedZoneId", "id", "lastUpdatedAt", "status" @@ -108557,8 +108557,8 @@ "readOnly": [ "arn", "createdAt", - "dnsEntry/DomainName", - "dnsEntry/HostedZoneId", + "dnsEntry/domainName", + "dnsEntry/hostedZoneId", "id", "serviceArn", "serviceId", @@ -108787,12 +108787,12 @@ "type" ], "createOnly": [ - "config/IpAddressType", - "config/LambdaEventStructureVersion", - "config/Port", - "config/Protocol", - "config/ProtocolVersion", - "config/VpcIdentifier", + "config/ipAddressType", + "config/lambdaEventStructureVersion", + "config/port", + "config/protocol", + "config/protocolVersion", + "config/vpcIdentifier", "name", "type" ], @@ -109245,8 +109245,8 @@ ], "readOnly": [ "arn", - "availableLabels/*/Name", - "consumedLabels/*/Name", + "availableLabels/*/name", + "consumedLabels/*/name", "id", "labelNamespace" ], @@ -112006,7 +112006,7 @@ "sdkName": "ruleName" }, "createOnly": [ - "samplingRule/Version" + "samplingRule/version" ], "readOnly": [ "ruleArn" From a05520a07d3db3565fabfc42563ae3947083a52d Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Wed, 11 Dec 2024 12:19:16 -0500 Subject: [PATCH 8/9] refactor preview outputs into it's own package - combine entrypoint into a single function for both create and update --- .../{provider => outputs}/previewOutputs.go | 26 +++++++- .../previewOutputs_test.go | 59 ++++++++++++++++++- provider/pkg/provider/provider.go | 6 +- 3 files changed, 86 insertions(+), 5 deletions(-) rename provider/pkg/{provider => outputs}/previewOutputs.go (89%) rename provider/pkg/{provider => outputs}/previewOutputs_test.go (92%) diff --git a/provider/pkg/provider/previewOutputs.go b/provider/pkg/outputs/previewOutputs.go similarity index 89% rename from provider/pkg/provider/previewOutputs.go rename to provider/pkg/outputs/previewOutputs.go index 4709b057bc..30d7381049 100644 --- a/provider/pkg/provider/previewOutputs.go +++ b/provider/pkg/outputs/previewOutputs.go @@ -1,4 +1,4 @@ -package provider +package outputs import ( "fmt" @@ -13,6 +13,27 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/common/tokens" ) +// PreviewOutputs calculates the outputs of a resource based on the inputs and the output +// properties in the resource schema. +// +// During an update operation the `outputsFromPriorState` should also be provided +// in order to populate stable outputs from the prior state +func PreviewOutputs( + newInputs resource.PropertyMap, + types map[string]metadata.CloudAPIType, + outputTypes map[string]schema.PropertySpec, + readOnlyProperties []string, + resourceTypeName tokens.TypeName, + // will only be provided during an update operation + outputsFromPriorState *resource.PropertyMap, +) resource.PropertyMap { + outputsFromInputs := previewResourceOutputs(newInputs, types, outputTypes, readOnlyProperties) + if outputsFromPriorState != nil { + return populateStableOutputs(outputsFromInputs, *outputsFromPriorState, readOnlyProperties, resourceTypeName) + } + return outputsFromInputs +} + // This calculates the outputs of a resource based on the inputs and the output // properties in the resource schema. // @@ -55,6 +76,9 @@ func previewResourceOutputs( // will have `name`, `id`, and `arn` properties, and sometimes they will have `resourceName`, `resourceId`, // and `resourceArn` properties. func populateStableOutputs( + // outputsFromInputs has to be the output of previewResourceOutputs + // so it will contain all possible output properties that we might want + // to update outputsFromInputs resource.PropertyMap, outputsFromPriorState resource.PropertyMap, readOnly []string, diff --git a/provider/pkg/provider/previewOutputs_test.go b/provider/pkg/outputs/previewOutputs_test.go similarity index 92% rename from provider/pkg/provider/previewOutputs_test.go rename to provider/pkg/outputs/previewOutputs_test.go index 81dd3059fe..5851973624 100644 --- a/provider/pkg/provider/previewOutputs_test.go +++ b/provider/pkg/outputs/previewOutputs_test.go @@ -1,4 +1,4 @@ -package provider +package outputs import ( "testing" @@ -10,6 +10,63 @@ import ( ) func TestPreviewOutputs(t *testing.T) { + t.Run("Without prior state", func(t *testing.T) { + result := PreviewOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": "my-resource", + }), + map[string]metadata.CloudAPIType{}, + map[string]schema.PropertySpec{ + "name": schema.PropertySpec{ + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + "arn": schema.PropertySpec{ + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + }, + []string{ + "arn", + }, + "AccessPoint", + nil, + ) + assert.Equal(t, resource.PropertyMap{ + "name": resource.NewStringProperty("my-resource"), + "arn": resource.MakeComputed(resource.NewStringProperty("")), + }, result) + }) + + t.Run("With prior state", func(t *testing.T) { + priorOutputs := resource.NewPropertyMapFromMap(map[string]interface{}{ + "arn": "arnvalue", + }) + result := PreviewOutputs( + resource.NewPropertyMapFromMap(map[string]interface{}{ + "name": "my-resource", + }), + map[string]metadata.CloudAPIType{}, + map[string]schema.PropertySpec{ + "name": schema.PropertySpec{ + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + "arn": schema.PropertySpec{ + TypeSpec: schema.TypeSpec{Type: "string"}, + }, + }, + []string{ + "arn", + }, + "AccessPoint", + &priorOutputs, + ) + assert.Equal(t, resource.PropertyMap{ + "name": resource.NewStringProperty("my-resource"), + "arn": resource.NewStringProperty("arnvalue"), + }, result) + }) +} + +func Test_previewResourceOutputs(t *testing.T) { t.Run("Nested output value", func(t *testing.T) { result := previewResourceOutputs( resource.NewPropertyMapFromMap(map[string]interface{}{ diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index fef7c3142d..fea04da65c 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -54,6 +54,7 @@ import ( "github.com/pulumi/pulumi-aws-native/provider/pkg/default_tags" "github.com/pulumi/pulumi-aws-native/provider/pkg/metadata" "github.com/pulumi/pulumi-aws-native/provider/pkg/naming" + pOutputs "github.com/pulumi/pulumi-aws-native/provider/pkg/outputs" "github.com/pulumi/pulumi-aws-native/provider/pkg/resources" "github.com/pulumi/pulumi-aws-native/provider/pkg/schema" "github.com/pulumi/pulumi-aws-native/provider/pkg/version" @@ -858,7 +859,7 @@ func (p *cfnProvider) Create(ctx context.Context, req *pulumirpc.CreateRequest) if !hasSpec { return nil, errors.Errorf("Resource type %s not found", resourceToken) } - outputs = previewResourceOutputs(inputs, p.resourceMap.Types, spec.Outputs, spec.ReadOnly) + outputs = pOutputs.PreviewOutputs(inputs, p.resourceMap.Types, spec.Outputs, spec.ReadOnly, urn.Type().Name(), nil) } previewState, err := plugin.MarshalProperties( @@ -1112,8 +1113,7 @@ func (p *cfnProvider) Update(ctx context.Context, req *pulumirpc.UpdateRequest) return nil, errors.Errorf("Resource type %s not found", resourceToken) } resourceTypeName := urn.Type().Name() - outputs = previewResourceOutputs(newInputs, p.resourceMap.Types, spec.Outputs, spec.ReadOnly) - outputs = populateStableOutputs(newInputs, oldState, spec.ReadOnly, resourceTypeName) + outputs = pOutputs.PreviewOutputs(newInputs, p.resourceMap.Types, spec.Outputs, spec.ReadOnly, resourceTypeName, &oldState) } previewState, err := plugin.MarshalProperties( From 784e3ad8333aea1750e8c877dccde16ecf5dffd9 Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Wed, 11 Dec 2024 12:46:16 -0500 Subject: [PATCH 9/9] additionalProperties will not have readOnly --- provider/pkg/outputs/previewOutputs.go | 7 +- provider/pkg/outputs/previewOutputs_test.go | 90 --------------------- 2 files changed, 3 insertions(+), 94 deletions(-) diff --git a/provider/pkg/outputs/previewOutputs.go b/provider/pkg/outputs/previewOutputs.go index 30d7381049..33d09c4ef1 100644 --- a/provider/pkg/outputs/previewOutputs.go +++ b/provider/pkg/outputs/previewOutputs.go @@ -219,14 +219,13 @@ func previewOutputValue( v := previewResourceOutputs(inputValue.ObjectValue(), types, t.Properties, readOnly) return resource.NewObjectProperty(v) } - case inputValue.IsObject() && prop.AdditionalProperties != nil && (prop.AdditionalProperties.Ref != "" || prop.AdditionalProperties.Items != nil): - return previewOutputValue(inputValue, types, prop.AdditionalProperties, readOnly) - case inputValue.IsObject() && prop.AdditionalProperties != nil && prop.AdditionalProperties.Ref == "": + // AdditionalProperties (map types) + case inputValue.IsObject() && prop.AdditionalProperties != nil: inputObject := inputValue.ObjectValue() result := resource.PropertyMap{} for name, value := range inputObject { p := value - result[name] = previewOutputValue(p, types, prop.AdditionalProperties, readOnly) + result[name] = previewOutputValue(p, types, prop.AdditionalProperties, []string{}) } return resource.NewObjectProperty(result) } diff --git a/provider/pkg/outputs/previewOutputs_test.go b/provider/pkg/outputs/previewOutputs_test.go index 5851973624..b0669a010e 100644 --- a/provider/pkg/outputs/previewOutputs_test.go +++ b/provider/pkg/outputs/previewOutputs_test.go @@ -193,96 +193,6 @@ func Test_previewResourceOutputs(t *testing.T) { }, result) }) - t.Run("with additionalProperties Ref", func(t *testing.T) { - result := previewResourceOutputs( - resource.NewPropertyMapFromMap(map[string]interface{}{ - "name": "my-access-point", - "objectLambdaConfiguration": map[string]interface{}{ - "allowedFeatures": []string{"GetObject-Range"}, - }, - }), - map[string]metadata.CloudAPIType{ - "aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration": { - Properties: map[string]schema.PropertySpec{ - "cloudWatchMetricsEnabled": { - TypeSpec: schema.TypeSpec{Type: "boolean"}, - }, - "allowedFeatures": { - TypeSpec: schema.TypeSpec{ - Type: "array", - Items: &schema.TypeSpec{Type: "string"}, - }, - }, - }, - }, - }, - map[string]schema.PropertySpec{ - "objectLambdaConfiguration": { - TypeSpec: schema.TypeSpec{ - AdditionalProperties: &schema.TypeSpec{ - Ref: "#/types/aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration", - }, - }, - }, - }, - []string{ - "objectLambdaConfiguration/cloudWatchMetricsEnabled", - }, - ) - assert.Equal(t, resource.PropertyMap{ - "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ - "allowedFeatures": []string{"GetObject-Range"}, - "cloudWatchMetricsEnabled": resource.MakeComputed(resource.NewStringProperty("")), - })), - }, result) - }) - - t.Run("with additionalProperties Items", func(t *testing.T) { - result := previewResourceOutputs( - resource.NewPropertyMapFromMap(map[string]interface{}{ - "name": "my-access-point", - "objectLambdaConfiguration": map[string]interface{}{ - "allowedFeatures": []string{"GetObject-Range"}, - }, - }), - map[string]metadata.CloudAPIType{ - "aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration": { - Properties: map[string]schema.PropertySpec{ - "cloudWatchMetricsEnabled": { - TypeSpec: schema.TypeSpec{Type: "boolean"}, - }, - "allowedFeatures": { - TypeSpec: schema.TypeSpec{ - AdditionalProperties: &schema.TypeSpec{ - Type: "array", - Items: &schema.TypeSpec{Type: "string"}, - }, - }, - }, - }, - }, - }, - map[string]schema.PropertySpec{ - "objectLambdaConfiguration": { - TypeSpec: schema.TypeSpec{ - AdditionalProperties: &schema.TypeSpec{ - Ref: "#/types/aws-native:s3objectlambda:AccessPointObjectLambdaConfiguration", - }, - }, - }, - }, - []string{ - "objectLambdaConfiguration/cloudWatchMetricsEnabled", - }, - ) - assert.Equal(t, resource.PropertyMap{ - "objectLambdaConfiguration": resource.NewObjectProperty(resource.NewPropertyMapFromMap(map[string]interface{}{ - "allowedFeatures": []string{"GetObject-Range"}, - "cloudWatchMetricsEnabled": resource.MakeComputed(resource.NewStringProperty("")), - })), - }, result) - }) - t.Run("Array with mixed input output types", func(t *testing.T) { result := previewResourceOutputs( resource.NewPropertyMapFromMap(map[string]interface{}{