cdk-lambda-subminute 2.0.205 → 2.0.207

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
@@ -3515,7 +3515,7 @@
3515
3515
  },
3516
3516
  "name": "cdk-lambda-subminute",
3517
3517
  "readme": {
3518
- "markdown": "# cdk-lambda-subminute\n[![License](https://img.shields.io/badge/License-Apache%202.0-green)](https://opensource.org/licenses/Apache-2.0) [![Release](https://github.com/HsiehShuJeng/cdk-lambda-subminute/workflows/Release/badge.svg)](https://github.com/HsiehShuJeng/cdk-lambda-subminute/actions/workflows/release.yml) [![npm downloads](https://img.shields.io/npm/dt/cdk-lambda-subminute?label=npm%20downloads&style=plastic)](https://img.shields.io/npm/dt/cdk-lambda-subminute?label=npm%20downloads&style=plastic) [![pypi downloads](https://img.shields.io/pypi/dm/cdk-lambda-subminute?label=pypi%20downloads&style=plastic)](https://img.shields.io/pypi/dm/cdk-lambda-subminute?label=pypi%20downloads&style=plastic) [![NuGet downloads](https://img.shields.io/nuget/dt/Lambda.Subminute?label=NuGet%20downloads&style=plastic)](https://img.shields.io/nuget/dt/Lambda.Subminute?label=NuGet%20downloads&style=plastic) [![repo languages](https://img.shields.io/github/languages/count/HsiehShuJeng/cdk-lambda-subminute?style=plastic)](https://img.shields.io/github/languages/count/HsiehShuJeng/cdk-lambda-subminute?style=plastic)\n\n| npm (JS/TS) | PyPI (Python) | Maven (Java) | Go | NuGet |\n| --- | --- | --- | --- | --- |\n| [Link](https://www.npmjs.com/package/cdk-lambda-subminute) | [Link](https://pypi.org/project/cdk_lambda_subminute/) | [Link](https://search.maven.org/artifact/io.github.hsiehshujeng/cdk-lambda-subminute) | [Link](https://github.com/HsiehShuJeng/cdk-lambda-subminute-go) | [Link](https://www.nuget.org/packages/Lambda.Subminute/) |\n\nThis construct creates a state machine that can invoke a Lambda function per time unit which can be less than one minute, such as invoking every 10 seconds. You only need to craft a Lambda function and then assign it as an argument into the construct. An example is included.\n\n# Serverless Architecture\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/HsiehShuJeng/cdk-lambda-subminute/main/images/cdk_lambda_subminute.png\"/></p>\n\n# Introduction\nThis construct library is reffered to thie AWS Architecture blog post, [*A serverless solution for invoking AWS Lambda at a sub-minute frequency*](https://aws.amazon.com/tw/blogs/architecture/a-serverless-solution-for-invoking-aws-lambda-at-a-sub-minute-frequency/), written by **Emanuele Menga**. I made it as a constrcut library where you only need to care about a target Lambda function, how frequent and how long you want to execute.\n\n# Example\n## Typescript\nYou could also refer to [here](https://github.com/HsiehShuJeng/cdk-lambda-subminute/tree/main/src/demo/typescript).\n```bash\n$ cdk --init language typescript\n$ yarn add cdk-lambda-subminute\n```\n```typescript\nclass TypescriptStack extends cdk.Stack {\n constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n super(scope, id, props);\n\n const targetLabmda = new Function(this, 'targetFunction', {\n code: Code.fromInline('exports.handler = function(event, ctx, cb) { return cb(null, \"hi\"); })'), // It's just a simple function for demonstration purpose only.\n functionName: 'testTargetFunction',\n runtime: Runtime.NODEJS_18_X,\n handler: 'index.handler',\n });\n const cronJobExample = 'cron(50/1 15-17 ? * SUN-SAT *)';\n const subminuteMaster = new LambdaSubminute(this, 'LambdaSubminute', { targetFunction: targetLabmda, cronjobExpression: cronJobExample });\n\n new cdk.CfnOutput(this, 'OStateMachineArn', { value: subminuteMaster.stateMachineArn });\n new cdk.CfnOutput(this, 'OIteratorFunctionArn', { value: subminuteMaster.iteratorFunction.functionArn });\n }\n}\n\nconst app = new cdk.App();\nnew TypescriptStack(app, 'TypescriptStack', {\n});\n```\n## Python\nYou could also refer to [here](https://github.com/HsiehShuJeng/cdk-lambda-subminute/tree/main/src/demo/python).\n```bash\n# upgrading related Python packages\n$ python -m ensurepip --upgrade\n$ python -m pip install --upgrade pip\n$ python -m pip install --upgrade virtualenv\n# initialize a CDK Python project\n$ cdk init --language python\n# make packages installed locally instead of globally\n$ source .venv/bin/activate\n$ cat <<EOL > requirements.txt\naws-cdk.core\naws-cdk.aws-lambda\ncdk-lambda-subminute\nEOL\n$ python -m pip install -r requirements.txt\n```\n```python\nfrom aws_cdk import core as cdk\nfrom aws_cdk.aws_lambda import Code, Function, Runtime\nfrom cdk_lambda_subminute import LambdaSubminute\n\nclass PythonStack(cdk.Stack):\n def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None:\n super().__init__(scope, construct_id, **kwargs)\n\n target_lambda = Function(\n self, \"targetFunction\",\n code=Code.from_inline(\n \"exports.handler = function(event, ctx, cb) { return cb(null, \\\"hi\\\"); })\"),\n function_name=\"testTargetFunction\",\n runtime=Runtime.NODEJS_18_X,\n handler=\"index.handler\"\n )\n cron_job_example = \"cron(10/1 4-5 ? * SUN-SAT *)\"\n subminute_master = LambdaSubminute(\n self, \"LambdaSubminute\",\n target_function=target_lambda,\n cronjob_expression=cron_job_example,\n frequency=7,\n interval_time=8)\n\n cdk.CfnOutput(self, \"OStateMachineArn\",\n value=subminute_master.state_machine_arn)\n cdk.CfnOutput(self, \"OIteratorFunctionArn\",\n value=subminute_master.iterator_function.function_arn)\n```\n```bash\n$ deactivate\n```\n## Java\nYou could also refer to [here](https://github.com/HsiehShuJeng/cdk-lambda-subminute/tree/main/src/demo/java).\n```bash\n$ cdk init --language java\n$ mvn package\n```\n```xml\n.\n.\n<properties>\n <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n <cdk.version>2.76.0</cdk.version>\n <constrcut.verion>2.0.128</constrcut.verion>\n <junit.version>5.7.1</junit.version>\n</properties>\n .\n .\n <dependencies>\n <!-- AWS Cloud Development Kit -->\n <dependency>\n <groupId>software.amazon.awscdk</groupId>\n <artifactId>core</artifactId>\n <version>${cdk.version}</version>\n </dependency>\n <dependency>\n <groupId>software.amazon.awscdk</groupId>\n <artifactId>lambda</artifactId>\n <version>${cdk.version}</version>\n </dependency>\n <dependency>\n <groupId>io.github.hsiehshujeng</groupId>\n <artifactId>cdk-lambda-subminute</artifactId>\n <version>${constrcut.verion}</version>\n </dependency>\n .\n .\n .\n </dependencies>\n```\n```java\npackage com.myorg;\n\nimport software.amazon.awscdk.core.CfnOutput;\nimport software.amazon.awscdk.core.CfnOutputProps;\nimport software.amazon.awscdk.core.Construct;\nimport software.amazon.awscdk.core.Stack;\nimport software.amazon.awscdk.core.StackProps;\nimport software.amazon.awscdk.services.lambda.Code;\nimport software.amazon.awscdk.services.lambda.Function;\nimport software.amazon.awscdk.services.lambda.FunctionProps;\nimport software.amazon.awscdk.services.lambda.Runtime;\nimport io.github.hsiehshujeng.cdk.lambda.subminute.LambdaSubminute;\nimport io.github.hsiehshujeng.cdk.lambda.subminute.LambdaSubminuteProps;\n\npublic class JavaStack extends Stack {\n public JavaStack(final Construct scope, final String id) {\n this(scope, id, null);\n }\n\n public JavaStack(final Construct scope, final String id, final StackProps props) {\n super(scope, id, props);\n\n Function targetLambda = new Function(this, \"targetFunction\",\n FunctionProps.builder()\n .code(Code.fromInline(\"exports.handler = function(event, ctx, cb) { return cb(null, \\\"hi\\\"); })\"))\n .functionName(\"estTargetFunction\")\n .runtime(Runtime.NODEJS_18_X)\n .handler(\"index.handler\")\n .build());\n String cronJobExample = \"cron(50/1 4-5 ? * SUN-SAT *)\";\n LambdaSubminute subminuteMaster = new LambdaSubminute(this, \"LambdaSubminute\", LambdaSubminuteProps.builder()\n .targetFunction(targetLambda)\n .cronjobExpression(cronJobExample)\n .frequency(6)\n .intervalTime(9)\n .build());\n\n new CfnOutput(this, \"OStateMachineArn\",\n CfnOutputProps.builder()\n .value(subminuteMaster.getStateMachineArn())\n .build());\n new CfnOutput(this, \"OIteratorFunctionArn\",\n CfnOutputProps.builder()\n .value(subminuteMaster.getIteratorFunction().getFunctionName())\n .build());\n }\n}\n\n```\n## C#\nYou could also refer to [here](https://github.com/HsiehShuJeng/cdk-lambda-subminute/tree/main/src/demo/csharp).\n```bash\n$ cdk init --language csharp\n$ dotnet add src/Csharp package Amazon.CDK.AWS.Lambda\n$ dotnet add src/Csharp package Lambda.Subminute --version 2.0.128\n```\n```cs\nusing Amazon.CDK;\nusing Amazon.CDK.AWS.Lambda;\nusing ScottHsieh.Cdk;\n\nnamespace Csharp\n{\n public class CsharpStack : Stack\n {\n internal CsharpStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)\n {\n var targetLambda = new Function(this, \"targetFunction\", new FunctionProps\n {\n Code = Code.FromInline(\"exports.handler = function(event, ctx, cb) { return cb(null, \\\"hi\\\"); })\"),\n FunctionName = \"testTargetFunction\",\n Runtime = Runtime.NODEJS_18_X,\n Handler = \"index.handler\"\n });\n string cronJobExample = \"cron(50/1 6-7 ? * SUN-SAT *)\";\n var subminuteMaster = new LambdaSubminute(this, \"LambdaSubminute\", new LambdaSubminuteProps\n {\n TargetFunction = targetLambda,\n CronjobExpression = cronJobExample,\n Frequency = 10,\n IntervalTime = 6,\n });\n\n new CfnOutput(this, \"OStateMachineArn\", new CfnOutputProps\n {\n Value = subminuteMaster.StateMachineArn\n });\n new CfnOutput(this, \"OIteratorFunctionArn\", new CfnOutputProps\n {\n Value = subminuteMaster.IteratorFunction.FunctionArn\n });\n }\n }\n}\n```\n\n# Statemachine Diagram\n![image](https://raw.githubusercontent.com/HsiehShuJeng/cdk-lambda-subminute/main/images/statemachine_diagram.png)\n\n\n# Known issue\nOriginally, I utilized `PythonFuncion` in the module of [**@aws-cdk/aws-lambda-python**](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-lambda-python-readme.html) to build the iterator Lambda function. Every thing works fine, including test, on my local machine (MacBook Pro M1), until it comes to the CI in Github Actions, it awlays gave me the following message:\n```bash\n## cdk version: 1.105.0 (build 4813992)\nBundling did not produce any output. Check that content is written to /asset-output.\n\n 64 | }));\n 65 |\n > 66 | this.function = new PythonFunction(this, 'Iterator', {\n | ^\n 67 | functionName: 'lambda-subminute-iterator',\n 68 | description: 'A function for breaking the limit of 1 minute with the CloudWatch Rules.',\n 69 | logRetention: RetentionDays.THREE_MONTHS,\n\n at AssetStaging.bundle (node_modules/@aws-cdk/core/lib/asset-staging.ts:484:13)\n at AssetStaging.stageByBundling (node_modules/@aws-cdk/core/lib/asset-staging.ts:328:10)\n at stageThisAsset (node_modules/@aws-cdk/core/lib/asset-staging.ts:194:35)\n at Cache.obtain (node_modules/@aws-cdk/core/lib/private/cache.ts:24:13)\n at new AssetStaging (node_modules/@aws-cdk/core/lib/asset-staging.ts:219:44)\n at new Asset (node_modules/@aws-cdk/aws-s3-assets/lib/asset.ts:127:21)\n at AssetCode.bind (node_modules/@aws-cdk/aws-lambda/lib/code.ts:277:20)\n at new Function (node_modules/@aws-cdk/aws-lambda/lib/function.ts:583:29)\n at new PythonFunction (node_modules/@aws-cdk/aws-lambda-python/lib/function.ts:106:5)\n at new IteratorLambda (src/cdk-lambda-subminute.ts:66:21)\n at new LambdaSubminute (src/cdk-lambda-subminute.ts:25:22)\n at Object.<anonymous>.test (test/integ.test.ts:23:3)\n```\nI actually have tried many different methods according to the following threads but to no avail. I'll attempt to test some thoughts or just post the issue onto the CDK Github repo.\n* [Asset Bundling](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3-assets-readme.html#asset-bundling)\n* [Change the bundler's /asset-output local volume mount location #8589](https://github.com/aws/aws-cdk/issues/8589)\n* [(aws-lambda-python: PythonFunction): unable to use bundling in BitBucket #14156](https://github.com/aws/aws-cdk/issues/14516)\n* [BundlingDockerImage.cp() needs to be explained more in the README #11914](https://github.com/aws/aws-cdk/issues/11914)"
3518
+ "markdown": "# cdk-lambda-subminute\n[![License](https://img.shields.io/badge/License-Apache%202.0-green)](https://opensource.org/licenses/Apache-2.0) [![Release](https://github.com/HsiehShuJeng/cdk-lambda-subminute/workflows/Release/badge.svg)](https://github.com/HsiehShuJeng/cdk-lambda-subminute/actions/workflows/release.yml) [![npm downloads](https://img.shields.io/npm/dt/cdk-lambda-subminute?label=npm%20downloads&style=plastic)](https://img.shields.io/npm/dt/cdk-lambda-subminute?label=npm%20downloads&style=plastic) [![pypi downloads](https://img.shields.io/pypi/dm/cdk-lambda-subminute?label=pypi%20downloads&style=plastic)](https://img.shields.io/pypi/dm/cdk-lambda-subminute?label=pypi%20downloads&style=plastic) [![NuGet downloads](https://img.shields.io/nuget/dt/Lambda.Subminute?label=NuGet%20downloads&style=plastic)](https://img.shields.io/nuget/dt/Lambda.Subminute?label=NuGet%20downloads&style=plastic) [![repo languages](https://img.shields.io/github/languages/count/HsiehShuJeng/cdk-lambda-subminute?style=plastic)](https://img.shields.io/github/languages/count/HsiehShuJeng/cdk-lambda-subminute?style=plastic)\n\n| npm (JS/TS) | PyPI (Python) | Maven (Java) | Go | NuGet |\n| --- | --- | --- | --- | --- |\n| [Link](https://www.npmjs.com/package/cdk-lambda-subminute) | [Link](https://pypi.org/project/cdk_lambda_subminute/) | [Link](https://search.maven.org/artifact/io.github.hsiehshujeng/cdk-lambda-subminute) | [Link](https://github.com/HsiehShuJeng/cdk-lambda-subminute-go) | [Link](https://www.nuget.org/packages/Lambda.Subminute/) |\n\nThis construct creates a state machine that can invoke a Lambda function per time unit which can be less than one minute, such as invoking every 10 seconds. You only need to craft a Lambda function and then assign it as an argument into the construct. An example is included.\n\n# Serverless Architecture\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/HsiehShuJeng/cdk-lambda-subminute/main/images/cdk_lambda_subminute.png\"/></p>\n\n# Introduction\nThis construct library is reffered to thie AWS Architecture blog post, [*A serverless solution for invoking AWS Lambda at a sub-minute frequency*](https://aws.amazon.com/tw/blogs/architecture/a-serverless-solution-for-invoking-aws-lambda-at-a-sub-minute-frequency/), written by **Emanuele Menga**. I made it as a constrcut library where you only need to care about a target Lambda function, how frequent and how long you want to execute.\n\n# Example\n## Typescript\nYou could also refer to [here](https://github.com/HsiehShuJeng/cdk-lambda-subminute/tree/main/src/demo/typescript).\n```bash\n$ cdk --init language typescript\n$ yarn add cdk-lambda-subminute\n```\n```typescript\nclass TypescriptStack extends cdk.Stack {\n constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n super(scope, id, props);\n\n const targetLabmda = new Function(this, 'targetFunction', {\n code: Code.fromInline('exports.handler = function(event, ctx, cb) { return cb(null, \"hi\"); })'), // It's just a simple function for demonstration purpose only.\n functionName: 'testTargetFunction',\n runtime: Runtime.NODEJS_18_X,\n handler: 'index.handler',\n });\n const cronJobExample = 'cron(50/1 15-17 ? * SUN-SAT *)';\n const subminuteMaster = new LambdaSubminute(this, 'LambdaSubminute', { targetFunction: targetLabmda, cronjobExpression: cronJobExample });\n\n new cdk.CfnOutput(this, 'OStateMachineArn', { value: subminuteMaster.stateMachineArn });\n new cdk.CfnOutput(this, 'OIteratorFunctionArn', { value: subminuteMaster.iteratorFunction.functionArn });\n }\n}\n\nconst app = new cdk.App();\nnew TypescriptStack(app, 'TypescriptStack', {\n});\n```\n## Python\nYou could also refer to [here](https://github.com/HsiehShuJeng/cdk-lambda-subminute/tree/main/src/demo/python).\n```bash\n# upgrading related Python packages\n$ python -m ensurepip --upgrade\n$ python -m pip install --upgrade pip\n$ python -m pip install --upgrade virtualenv\n# initialize a CDK Python project\n$ cdk init --language python\n# make packages installed locally instead of globally\n$ source .venv/bin/activate\n$ cat <<EOL > requirements.txt\naws-cdk.core\naws-cdk.aws-lambda\ncdk-lambda-subminute\nEOL\n$ python -m pip install -r requirements.txt\n```\n```python\nfrom aws_cdk import core as cdk\nfrom aws_cdk.aws_lambda import Code, Function, Runtime\nfrom cdk_lambda_subminute import LambdaSubminute\n\nclass PythonStack(cdk.Stack):\n def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None:\n super().__init__(scope, construct_id, **kwargs)\n\n target_lambda = Function(\n self, \"targetFunction\",\n code=Code.from_inline(\n \"exports.handler = function(event, ctx, cb) { return cb(null, \\\"hi\\\"); })\"),\n function_name=\"testTargetFunction\",\n runtime=Runtime.NODEJS_18_X,\n handler=\"index.handler\"\n )\n cron_job_example = \"cron(10/1 4-5 ? * SUN-SAT *)\"\n subminute_master = LambdaSubminute(\n self, \"LambdaSubminute\",\n target_function=target_lambda,\n cronjob_expression=cron_job_example,\n frequency=7,\n interval_time=8)\n\n cdk.CfnOutput(self, \"OStateMachineArn\",\n value=subminute_master.state_machine_arn)\n cdk.CfnOutput(self, \"OIteratorFunctionArn\",\n value=subminute_master.iterator_function.function_arn)\n```\n```bash\n$ deactivate\n```\n## Java\nYou could also refer to [here](https://github.com/HsiehShuJeng/cdk-lambda-subminute/tree/main/src/demo/java).\n```bash\n$ cdk init --language java\n$ mvn package\n```\n```xml\n.\n.\n<properties>\n <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n <cdk.version>2.87.0</cdk.version>\n <constrcut.verion>2.0.201</constrcut.verion>\n <junit.version>5.7.1</junit.version>\n</properties>\n .\n .\n <dependencies>\n <!-- AWS Cloud Development Kit -->\n <dependency>\n <groupId>software.amazon.awscdk</groupId>\n <artifactId>core</artifactId>\n <version>${cdk.version}</version>\n </dependency>\n <dependency>\n <groupId>software.amazon.awscdk</groupId>\n <artifactId>lambda</artifactId>\n <version>${cdk.version}</version>\n </dependency>\n <dependency>\n <groupId>io.github.hsiehshujeng</groupId>\n <artifactId>cdk-lambda-subminute</artifactId>\n <version>${constrcut.verion}</version>\n </dependency>\n .\n .\n .\n </dependencies>\n```\n```java\npackage com.myorg;\n\nimport software.amazon.awscdk.core.CfnOutput;\nimport software.amazon.awscdk.core.CfnOutputProps;\nimport software.amazon.awscdk.core.Construct;\nimport software.amazon.awscdk.core.Stack;\nimport software.amazon.awscdk.core.StackProps;\nimport software.amazon.awscdk.services.lambda.Code;\nimport software.amazon.awscdk.services.lambda.Function;\nimport software.amazon.awscdk.services.lambda.FunctionProps;\nimport software.amazon.awscdk.services.lambda.Runtime;\nimport io.github.hsiehshujeng.cdk.lambda.subminute.LambdaSubminute;\nimport io.github.hsiehshujeng.cdk.lambda.subminute.LambdaSubminuteProps;\n\npublic class JavaStack extends Stack {\n public JavaStack(final Construct scope, final String id) {\n this(scope, id, null);\n }\n\n public JavaStack(final Construct scope, final String id, final StackProps props) {\n super(scope, id, props);\n\n Function targetLambda = new Function(this, \"targetFunction\",\n FunctionProps.builder()\n .code(Code.fromInline(\"exports.handler = function(event, ctx, cb) { return cb(null, \\\"hi\\\"); })\"))\n .functionName(\"estTargetFunction\")\n .runtime(Runtime.NODEJS_18_X)\n .handler(\"index.handler\")\n .build());\n String cronJobExample = \"cron(50/1 4-5 ? * SUN-SAT *)\";\n LambdaSubminute subminuteMaster = new LambdaSubminute(this, \"LambdaSubminute\", LambdaSubminuteProps.builder()\n .targetFunction(targetLambda)\n .cronjobExpression(cronJobExample)\n .frequency(6)\n .intervalTime(9)\n .build());\n\n new CfnOutput(this, \"OStateMachineArn\",\n CfnOutputProps.builder()\n .value(subminuteMaster.getStateMachineArn())\n .build());\n new CfnOutput(this, \"OIteratorFunctionArn\",\n CfnOutputProps.builder()\n .value(subminuteMaster.getIteratorFunction().getFunctionName())\n .build());\n }\n}\n\n```\n## C#\nYou could also refer to [here](https://github.com/HsiehShuJeng/cdk-lambda-subminute/tree/main/src/demo/csharp).\n```bash\n$ cdk init --language csharp\n$ dotnet add src/Csharp package Amazon.CDK.AWS.Lambda\n$ dotnet add src/Csharp package Lambda.Subminute --version 2.0.201\n```\n```cs\nusing Amazon.CDK;\nusing Amazon.CDK.AWS.Lambda;\nusing ScottHsieh.Cdk;\n\nnamespace Csharp\n{\n public class CsharpStack : Stack\n {\n internal CsharpStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)\n {\n var targetLambda = new Function(this, \"targetFunction\", new FunctionProps\n {\n Code = Code.FromInline(\"exports.handler = function(event, ctx, cb) { return cb(null, \\\"hi\\\"); })\"),\n FunctionName = \"testTargetFunction\",\n Runtime = Runtime.NODEJS_18_X,\n Handler = \"index.handler\"\n });\n string cronJobExample = \"cron(50/1 6-7 ? * SUN-SAT *)\";\n var subminuteMaster = new LambdaSubminute(this, \"LambdaSubminute\", new LambdaSubminuteProps\n {\n TargetFunction = targetLambda,\n CronjobExpression = cronJobExample,\n Frequency = 10,\n IntervalTime = 6,\n });\n\n new CfnOutput(this, \"OStateMachineArn\", new CfnOutputProps\n {\n Value = subminuteMaster.StateMachineArn\n });\n new CfnOutput(this, \"OIteratorFunctionArn\", new CfnOutputProps\n {\n Value = subminuteMaster.IteratorFunction.FunctionArn\n });\n }\n }\n}\n```\n\n# Statemachine Diagram\n![image](https://raw.githubusercontent.com/HsiehShuJeng/cdk-lambda-subminute/main/images/statemachine_diagram.png)\n\n\n# Known issue\nOriginally, I utilized `PythonFuncion` in the module of [**@aws-cdk/aws-lambda-python**](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-lambda-python-readme.html) to build the iterator Lambda function. Every thing works fine, including test, on my local machine (MacBook Pro M1), until it comes to the CI in Github Actions, it awlays gave me the following message:\n```bash\n## cdk version: 1.105.0 (build 4813992)\nBundling did not produce any output. Check that content is written to /asset-output.\n\n 64 | }));\n 65 |\n > 66 | this.function = new PythonFunction(this, 'Iterator', {\n | ^\n 67 | functionName: 'lambda-subminute-iterator',\n 68 | description: 'A function for breaking the limit of 1 minute with the CloudWatch Rules.',\n 69 | logRetention: RetentionDays.THREE_MONTHS,\n\n at AssetStaging.bundle (node_modules/@aws-cdk/core/lib/asset-staging.ts:484:13)\n at AssetStaging.stageByBundling (node_modules/@aws-cdk/core/lib/asset-staging.ts:328:10)\n at stageThisAsset (node_modules/@aws-cdk/core/lib/asset-staging.ts:194:35)\n at Cache.obtain (node_modules/@aws-cdk/core/lib/private/cache.ts:24:13)\n at new AssetStaging (node_modules/@aws-cdk/core/lib/asset-staging.ts:219:44)\n at new Asset (node_modules/@aws-cdk/aws-s3-assets/lib/asset.ts:127:21)\n at AssetCode.bind (node_modules/@aws-cdk/aws-lambda/lib/code.ts:277:20)\n at new Function (node_modules/@aws-cdk/aws-lambda/lib/function.ts:583:29)\n at new PythonFunction (node_modules/@aws-cdk/aws-lambda-python/lib/function.ts:106:5)\n at new IteratorLambda (src/cdk-lambda-subminute.ts:66:21)\n at new LambdaSubminute (src/cdk-lambda-subminute.ts:25:22)\n at Object.<anonymous>.test (test/integ.test.ts:23:3)\n```\nI actually have tried many different methods according to the following threads but to no avail. I'll attempt to test some thoughts or just post the issue onto the CDK Github repo.\n* [Asset Bundling](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3-assets-readme.html#asset-bundling)\n* [Change the bundler's /asset-output local volume mount location #8589](https://github.com/aws/aws-cdk/issues/8589)\n* [(aws-lambda-python: PythonFunction): unable to use bundling in BitBucket #14156](https://github.com/aws/aws-cdk/issues/14516)\n* [BundlingDockerImage.cp() needs to be explained more in the README #11914](https://github.com/aws/aws-cdk/issues/11914)"
3519
3519
  },
3520
3520
  "repository": {
3521
3521
  "type": "git",
@@ -3964,6 +3964,6 @@
3964
3964
  "symbolId": "src/cdk-lambda-subminute:SubminuteStateMachineProps"
3965
3965
  }
3966
3966
  },
3967
- "version": "2.0.205",
3968
- "fingerprint": "El8vdmfp5IbENI69sIm5fi6eN8lqABaG1xq06t5IA34="
3967
+ "version": "2.0.207",
3968
+ "fingerprint": "MxF7t8Pf/1fdTWAE+tl21cxHkqEwwJ4dc/iRKHwcglQ="
3969
3969
  }
package/README.md CHANGED
@@ -105,8 +105,8 @@ $ mvn package
105
105
  .
106
106
  <properties>
107
107
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
108
- <cdk.version>2.76.0</cdk.version>
109
- <constrcut.verion>2.0.128</constrcut.verion>
108
+ <cdk.version>2.87.0</cdk.version>
109
+ <constrcut.verion>2.0.201</constrcut.verion>
110
110
  <junit.version>5.7.1</junit.version>
111
111
  </properties>
112
112
  .
@@ -188,7 +188,7 @@ You could also refer to [here](https://github.com/HsiehShuJeng/cdk-lambda-submin
188
188
  ```bash
189
189
  $ cdk init --language csharp
190
190
  $ dotnet add src/Csharp package Amazon.CDK.AWS.Lambda
191
- $ dotnet add src/Csharp package Lambda.Subminute --version 2.0.128
191
+ $ dotnet add src/Csharp package Lambda.Subminute --version 2.0.201
192
192
  ```
193
193
  ```cs
194
194
  using Amazon.CDK;
@@ -45,7 +45,7 @@ class LambdaSubminute extends constructs_1.Construct {
45
45
  }
46
46
  exports.LambdaSubminute = LambdaSubminute;
47
47
  _a = JSII_RTTI_SYMBOL_1;
48
- LambdaSubminute[_a] = { fqn: "cdk-lambda-subminute.LambdaSubminute", version: "2.0.205" };
48
+ LambdaSubminute[_a] = { fqn: "cdk-lambda-subminute.LambdaSubminute", version: "2.0.207" };
49
49
  class IteratorLambda extends constructs_1.Construct {
50
50
  constructor(scope, name, props) {
51
51
  super(scope, name);
@@ -85,7 +85,7 @@ class IteratorLambda extends constructs_1.Construct {
85
85
  }
86
86
  exports.IteratorLambda = IteratorLambda;
87
87
  _b = JSII_RTTI_SYMBOL_1;
88
- IteratorLambda[_b] = { fqn: "cdk-lambda-subminute.IteratorLambda", version: "2.0.205" };
88
+ IteratorLambda[_b] = { fqn: "cdk-lambda-subminute.IteratorLambda", version: "2.0.207" };
89
89
  class SubminuteStateMachine extends constructs_1.Construct {
90
90
  constructor(scope, id, props) {
91
91
  super(scope, id);
@@ -160,5 +160,5 @@ class SubminuteStateMachine extends constructs_1.Construct {
160
160
  }
161
161
  exports.SubminuteStateMachine = SubminuteStateMachine;
162
162
  _c = JSII_RTTI_SYMBOL_1;
163
- SubminuteStateMachine[_c] = { fqn: "cdk-lambda-subminute.SubminuteStateMachine", version: "2.0.205" };
163
+ SubminuteStateMachine[_c] = { fqn: "cdk-lambda-subminute.SubminuteStateMachine", version: "2.0.207" };
164
164
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWxhbWJkYS1zdWJtaW51dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2RrLWxhbWJkYS1zdWJtaW51dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLG1DQUFtQztBQUNuQyxpREFBa0Q7QUFDbEQsMERBQTJEO0FBQzNELDJDQUEyQztBQUUzQyx1REFBcUU7QUFDckUscUVBQStEO0FBQy9ELG1EQUFxRDtBQUNyRCxxREFBcUQ7QUFDckQsNkRBQTZEO0FBQzdELDJDQUF1QztBQTRCdkMsTUFBYSxlQUFnQixTQUFRLHNCQUFTO0lBUzVDLFlBQVksTUFBaUIsRUFBRSxJQUFZLEVBQUUsS0FBMkI7UUFDdEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDMUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUNyRixnQkFBZ0IsRUFBRSwrQkFBK0I7WUFDakQsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1lBQ3BDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRTtZQUN0QyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDO1NBQ2hDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztRQUUxRSxNQUFNLFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENB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QyxjQUFjLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVHLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQzlELGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsVUFBVSxFQUFFLGFBQWE7WUFDekIsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDOztBQWJILHNEQTZFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IGV2ZW50cyA9IHJlcXVpcmUoJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnKTtcbmltcG9ydCB0YXJnZXRzID0gcmVxdWlyZSgnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJyk7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5cbmltcG9ydCB7IElGdW5jdGlvbiwgUnVudGltZSwgVHJhY2luZyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgc2ZuIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCAqIGFzIHRhc2tzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zLXRhc2tzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYVN1Ym1pbnV0ZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBpcyBnb2luZyB0byBiZSBleGVjdXRlZCBwZXIgdGltZSB1bml0IGxlc3MgdGhhbiBvbmUgbWludXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0RnVuY3Rpb246IElGdW5jdGlvbjtcbiAgLyoqXG4gICAqIEEgcGF0dGVybiB5b3Ugd2FudCB0aGlzIHN0YXRlbWFjaGluZSB0byBiZSBleGVjdXRlZC5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvZXZlbnRzL1NjaGVkdWxlZEV2ZW50cy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IGNyb24oNTAvMSAxNS0xNyA/ICogKiAqKSBVVEMrMCBiZWluZyBydW4gZXZlcnkgbWludXRlIHN0YXJ0aW5nIGZyb20gMTU6MDAgUE0gdG8gMTc6MDAgUE0uXG4gICAqL1xuICByZWFkb25seSBjcm9uam9iRXhwcmVzc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEhvdyBtYW55IHRpbWVzIHlvdSBpbnRlbnQgdG8gZXhlY3V0ZSBpbiBhIG1pbnV0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgNlxuICAgKi9cbiAgcmVhZG9ubHkgZnJlcXVlbmN5PzogbnVtYmVyO1xuICAvKipcbiAgICogU2Vjb25kcyBmb3IgYW4gaW50ZXJ2YWwsIHRoZSBwcm9kdWN0IG9mIGBmcmVxdWVuY3lgIGFuZCBgaW50ZXJ2YWxUaW1lYCBzaG91bGQgYmUgYXBwcm94aW1hZ2VseSAxIG1pbnV0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHJlYWRvbmx5IGludGVydmFsVGltZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIExhbWJkYVN1Ym1pbnV0ZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIGZ1bmN0aW9uIHRoYXQgcGxheXMgdGhlIHJvbGUgb2YgdGhlIGl0ZXJhdG9yLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlcmF0b3JGdW5jdGlvbjogSUZ1bmN0aW9uO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgc3RhdGUgbWFjaGluZSB0aGF0IGV4ZWN1dGVzIHRoZSB0YXJnZXQgTGFtYmRhIGZ1bmN0aW9uIHBlciB0aW1lIHVuaXQgbGVzcyB0aGFuIG9uZSBtaW51dGUuXG4gICAqL1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmVBcm46IHN0cmluZztcbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IExhbWJkYVN1Ym1pbnV0ZVByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lKTtcbiAgICBjb25zdCBpdGVyYXRvciA9IG5ldyBJdGVyYXRvckxhbWJkYSh0aGlzLCAnSXRlcmF0b3JMYW1iZGEnLCB7IHRhcmdldEZ1bmN0aW9uOiBwcm9wcy50YXJnZXRGdW5jdGlvbiB9KTtcbiAgICB0aGlzLml0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYXRvci5mdW5jdGlvbjtcbiAgICBjb25zdCBzdWJtaW51dGVTdGF0ZU1hY2hpbmUgPSBuZXcgU3VibWludXRlU3RhdGVNYWNoaW5lKHRoaXMsICdTdWJtaW51dGVTdGF0ZU1hY2hpbmUnLCB7XG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lOiAnbGFtYmRhLXN1Ym1pbnV0ZS1zdGF0ZW1hY2hpbmUnLFxuICAgICAgdGFyZ2V0RnVuY3Rpb246IHByb3BzLnRhcmdldEZ1bmN0aW9uLFxuICAgICAgaXRlcmF0b3JGdW5jdGlvbjogdGhpcy5pdGVyYXRvckZ1bmN0aW9uLFxuICAgICAgaW50ZXJ2YWxUaW1lOiBwcm9wcy5pbnRlcnZhbFRpbWUgPz8gMTAsXG4gICAgICBmcmVxdWVuY3k6IHByb3BzLmZyZXF1ZW5jeSA/PyA2LFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGVNYWNoaW5lQXJuID0gc3VibWludXRlU3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm47XG5cbiAgICBjb25zdCBzdGFydFJ1bGUgPSBuZXcgZXZlbnRzLlJ1bGUodGhpcywgJ1N0YXJ0U3VibWludXRlU3RhdGVNYWNoaW5lJywge1xuICAgICAgc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZS5leHByZXNzaW9uKHByb3BzLmNyb25qb2JFeHByZXNzaW9uID8/ICdjcm9uKDUwLzEgMTUtMTcgPyAqICogKiknKSxcbiAgICAgIHJ1bGVOYW1lOiAnc3VibWludXRlLXN0YXRlbWFjaGluZS1sYW1iZGEtcnVsZScsXG4gICAgICBkZXNjcmlwdGlvbjogYEEgcnVsZSB0byBydW4gdGhlIHN1Ym1pbnV0ZSBzdGF0ZSBtYWNoaW5lLCBpLmUuICR7c3VibWludXRlU3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVOYW1lfWAsXG4gICAgfSk7XG4gICAgc3RhcnRSdWxlLmFkZFRhcmdldChuZXcgdGFyZ2V0cy5TZm5TdGF0ZU1hY2hpbmUoXG4gICAgICBzdWJtaW51dGVTdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lLCB7XG4gICAgICAgIGlucHV0OiBldmVudHMuUnVsZVRhcmdldElucHV0LmZyb21PYmplY3Qoe1xuICAgICAgICAgIGl0ZXJhdG9yOiB7XG4gICAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICAgIGNvdW50OiA2LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlcmF0b3JMYW1iZGFQcm9wcyB7XG4gIC8qKlxuICAgICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBpcyBnb2luZyB0byBiZSBleGVjdXRlZCBwZXIgdGltZSB1bml0IGxlc3MgdGhhbiBvbmUgbWludXRlLlxuICAgICAqL1xuICByZWFkb25seSB0YXJnZXRGdW5jdGlvbjogSUZ1bmN0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgSXRlcmF0b3JMYW1iZGEgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICAgKiBBIExhbWJkYSBmdW5jdGlvbiB0aGF0IHBsYXlzIHRoZSByb2xlIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogSXRlcmF0b3JMYW1iZGFQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBuYW1lKTtcbiAgICBjb25zdCBpdGVyYXRvckxhbWJkYVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ0l0ZXJhdG9yTGFtYmRhUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5Db21wb3NpdGVQcmluY2lwYWwoXG4gICAgICAgIG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnbGFtYmRhLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICksXG4gICAgICBkZXNjcmlwdGlvbjogJ0FuIGV4ZWN1dGlvbiByb2xlIGZvciBhIExhbWJkYSBmdW5jdGlvbiB0byBpbnZva2UgYSB0YXJnZXQgTGFtYmRhIEZ1bmN0aW9uIHBlciB0aW1lIHVuaXQgbGVzcyB0aGFuIG9uZSBtaW51dGUnLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZScpLFxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0FXU1hSYXlEYWVtb25Xcml0ZUFjY2VzcycpLFxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFWUENBY2Nlc3NFeGVjdXRpb25Sb2xlJyksXG4gICAgICBdLFxuICAgICAgcm9sZU5hbWU6ICdMYW1iZGEtSXRlcmF0b3ItUm9sZScsXG4gICAgfSk7XG4gICAgY2RrLkRvY2tlclZvbHVtZUNvbnNpc3RlbmN5LkNPTlNJU1RFTlQ7XG5cblxuICAgIGl0ZXJhdG9yTGFtYmRhUm9sZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdUYXJnZXRMYW1iZGFQZXJtaXNzaW9uJyxcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFsnbGFtYmRhOkludm9rZUZ1bmN0aW9uJ10sXG4gICAgICByZXNvdXJjZXM6IFtwcm9wcy50YXJnZXRGdW5jdGlvbi5mdW5jdGlvbkFybl0sXG4gICAgfSkpO1xuXG4gICAgdGhpcy5mdW5jdGlvbiA9IG5ldyBOb2RlanNGdW5jdGlvbih0aGlzLCAnSXRlcmF0b3InLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6ICdsYW1iZGEtc3VibWludXRlLWl0ZXJhdG9yJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBmdW5jdGlvbiBmb3IgYnJlYWtpbmcgdGhlIGxpbWl0IG9mIDEgbWludXRlIHdpdGggdGhlIENsb3VkV2F0Y2ggUnVsZXMuJyxcbiAgICAgIGxvZ1JldGVudGlvbjogUmV0ZW50aW9uRGF5cy5USFJFRV9NT05USFMsXG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgZW50cnk6IGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgJ3Jlc291cmNlcy9pdGVyYXRvci9pdGVyYXRvcl9hZ2VudC50cycpKSA/IHBhdGguam9pbihfX2Rpcm5hbWUsICdyZXNvdXJjZXMvaXRlcmF0b3IvaXRlcmF0b3JfYWdlbnQudHMnKSA6IHBhdGguam9pbihfX2Rpcm5hbWUsICdyZXNvdXJjZXMvaXRlcmF0b3IvaXRlcmF0b3JfYWdlbnQuanMnKSxcbiAgICAgIGhhbmRsZXI6ICdsYW1iZGFIYW5kbGVyJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFRBUkdFVF9GTl9OQU1FOiBwcm9wcy50YXJnZXRGdW5jdGlvbi5mdW5jdGlvbk5hbWUsXG4gICAgICB9LFxuICAgICAgbWVtb3J5U2l6ZTogMTI4LFxuICAgICAgcm9sZTogaXRlcmF0b3JMYW1iZGFSb2xlLFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoNTgpLCAvLyAxIG1pblxuICAgICAgdHJhY2luZzogVHJhY2luZy5BQ1RJVkUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJtaW51dGVTdGF0ZU1hY2hpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiB0aGUgbmFtZSBvZiB0aGUgc3RhdGUgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlTWFjaGluZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIHRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBleGVjdXRlcyB5b3VyIGludGVudGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldEZ1bmN0aW9uOiBJRnVuY3Rpb247XG4gIC8qKlxuICAgKiB0aGUgaXRlcmF0b3IgTGFtYmRhIGZ1bmN0aW9uIGZvciB0aGUgdGFyZ2V0IExhbWJkYSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGl0ZXJhdG9yRnVuY3Rpb246IElGdW5jdGlvbjtcbiAgLyoqXG4gICAqIFNlY29uZHMgZm9yIGFuIGludGVydmFsLCB0aGUgcHJvZHVjdCBvZiBgZnJlcXVlbmN5YCBhbmQgYGludGVydmFsVGltZWAgc2hvdWxkIGJlIGFwcHJveGltYWdlbHkgMSBtaW51dGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICByZWFkb25seSBpbnRlcnZhbFRpbWU6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhvdyBtYW55IHRpbWVzIHlvdSBpbnRlbnQgdG8gZXhlY3V0ZSBpbiBhIG1pbnV0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgNlxuICAgKi9cbiAgcmVhZG9ubHkgZnJlcXVlbmN5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBTdWJtaW51dGVTdGF0ZU1hY2hpbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmU6IHNmbi5TdGF0ZU1hY2hpbmU7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdWJtaW51dGVTdGF0ZU1hY2hpbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3Qgc3RhdGVNYWNoaW5lUm9sZSA9IHRoaXMuX2NyZWF0ZVdvcmtGbG93Um9sZShcbiAgICAgIHByb3BzLnRhcmdldEZ1bmN0aW9uLmZ1bmN0aW9uQXJuLCBwcm9wcy5pdGVyYXRvckZ1bmN0aW9uLmZ1bmN0aW9uQXJuKTtcbiAgICBjb25zdCBqb2JEZWZpbml0aW9uID0gdGhpcy5jcmVhdGVKb2JEZWZpbml0aW9uKHByb3BzLml0ZXJhdG9yRnVuY3Rpb24sIHByb3BzLmludGVydmFsVGltZSwgcHJvcHMuZnJlcXVlbmN5KTtcbiAgICBjb25zdCBzdGF0ZU1hY2hpbmUgPSBuZXcgc2ZuLlN0YXRlTWFjaGluZSh0aGlzLCAnU3RhdGVNYWNoaW5lJywge1xuICAgICAgc3RhdGVNYWNoaW5lTmFtZTogcHJvcHMuc3RhdGVNYWNoaW5lTmFtZSxcbiAgICAgIGRlZmluaXRpb246IGpvYkRlZmluaXRpb24sXG4gICAgICByb2xlOiBzdGF0ZU1hY2hpbmVSb2xlLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGVNYWNoaW5lID0gc3RhdGVNYWNoaW5lO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdGF0ZSBtYWNoaW5lIGZvciBicmVha2luZyB0aGUgbGltaXQgb2YgMSBtaW51dGUgd2l0aCB0aGUgQ2xvdWRXYXRjaCBSdWxlcy5cbiAgICpcbiAgICogQHBhcmFtIGl0ZXJhdG9yRnVuY3Rpb24gVGhlIGl0ZXJhdG9yIExhbWJkYSBmdW5jdGlvbiBmb3IgdGhlIHRhcmdldCBMYWJtZGEgZnVuY2l0b24uXG4gICAqIEBwYXJhbSBpbnRlcnZhbFRpbWUgU2Vjb25kcyBmb3IgYW4gaW50ZXJ2YWwsIHRoZSBwcm9kdWN0IG9mIGBmcmVxdWVuY3lgIGFuZCBgaW50ZXJ2YWxUaW1lYCBzaG91bGQgYmUgYXBwcm94aW1hZ2VseSAxIG1pbnV0ZS5cbiAgICogQHBhcmFtIGZyZXF1ZW5jeSBIb3cgbWFueSB0aW1lcyB5b3UgaW50ZW50IHRvIGV4ZWN1dGUgaW4gYSBtaW51dGUuXG4gICAqIEByZXR1cm5zIFRIZSBqb2IgZGVmaW5pdGlvbiBmb3IgdGhlIHN0YXRlIG1hY2hpbmUuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUpvYkRlZmluaXRpb24gPSAoXG4gICAgaXRlcmF0b3JGdW5jdGlvbjogSUZ1bmN0aW9uLCBpbnRlcnZhbFRpbWU6IG51bWJlciwgZnJlcXVlbmN5OiBudW1iZXIpOiBzZm4uQ2hhaW4gPT4ge1xuICAgIGNvbnN0IGNvbmZpZ3VyZUNvdW50ID0gbmV3IHNmbi5QYXNzKHRoaXMsICdDb25maWd1cmVDb3VudCcsIHtcbiAgICAgIHJlc3VsdDogc2ZuLlJlc3VsdC5mcm9tT2JqZWN0KHtcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgIGNvdW50OiBmcmVxdWVuY3ksXG4gICAgICB9KSxcbiAgICAgIHJlc3VsdFBhdGg6ICckLml0ZXJhdG9yJyxcbiAgICB9KTtcbiAgICBjb25zdCBpdGVyYXRvciA9IG5ldyB0YXNrcy5MYW1iZGFJbnZva2UodGhpcywgJ0l0ZXJhdG9yJywge1xuICAgICAgbGFtYmRhRnVuY3Rpb246IGl0ZXJhdG9yRnVuY3Rpb24sXG4gICAgICByZXN1bHRQYXRoOiAnJC5pdGVyYXRvcicsXG4gICAgICByZXN1bHRTZWxlY3Rvcjoge1xuICAgICAgICAnaW5kZXguJCc6ICckLlBheWxvYWQuaW5kZXgnLFxuICAgICAgICAnY291bnQuJCc6ICckLlBheWxvYWQuY291bnQnLFxuICAgICAgICAnY29udGludWUuJCc6ICckLlBheWxvYWQuY29udGludWUnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCB3YWl0ID0gbmV3IHNmbi5XYWl0KHRoaXMsICdXYWl0IGZvciB0aGUgdGFyZ2V0IExhbWJkYSBmdW5jdGlvbiBmaW5pc2hlZCcsIHtcbiAgICAgIHRpbWU6IHNmbi5XYWl0VGltZS5kdXJhdGlvbihjZGsuRHVyYXRpb24uc2Vjb25kcyhpbnRlcnZhbFRpbWUpKSxcbiAgICB9KTtcbiAgICB3YWl0Lm5leHQoaXRlcmF0b3IpO1xuICAgIGNvbnN0IGRvbmUgPSBuZXcgc2ZuLlBhc3ModGhpcywgJ0RvbmUnKTtcblxuICAgIGNvbnN0IGlzQ291bnRSZWFjaGVkID0gbmV3IHNmbi5DaG9pY2UodGhpcywgJ0lzQ291bnRSZWFjaGVkJyk7XG4gICAgaXNDb3VudFJlYWNoZWQud2hlbihzZm4uQ29uZGl0aW9uLmJvb2xlYW5FcXVhbHMoJyQuaXRlcmF0b3IuY29udGludWUnLCB0cnVlKSwgd2FpdCk7XG4gICAgaXNDb3VudFJlYWNoZWQub3RoZXJ3aXNlKGRvbmUpO1xuICAgIGNvbnN0IGpvYkRlZmluaXRpb24gPSBjb25maWd1cmVDb3VudC5uZXh0KGl0ZXJhdG9yKS5uZXh0KGlzQ291bnRSZWFjaGVkKTtcbiAgICByZXR1cm4gam9iRGVmaW5pdGlvbjtcbiAgfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJvbGUgYW5kIGNvcnJlc3BvbmRpbmcgcG9saWNpZXMgZm9yIHRoZSBzdWJtaW51dGUgc3RhdGUgbWFjaGluZS5cbiAgICpcbiAgICogQHBhcmFtIHRhcmdldEZ1bmN0aW9uQXJuIHRoZSBBUk4gb2YgdGhlIExhbWJkYSBmdW5jdGlvbiB0aGF0IGV4ZWN1dGVzIHlvdXIgaW50ZW50aW9uLlxuICAgKiBAcGFyYW0gaXRlcmF0b3JGdW5jdGlvbkFybiB0aGUgQVJOIG9mIHRoZSBpdGVyYXRvciBMYW1iZGEgZnVuY3Rpb24gZm9yIHRoZSB0YXJnZXQgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKiBAcmV0dXJucyB0aGUgcm9sZSBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbmRpY2F0ZXMuXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVXb3JrRmxvd1JvbGUgPSAodGFyZ2V0RnVuY3Rpb25Bcm46IHN0cmluZywgaXRlcmF0b3JGdW5jdGlvbkFybjogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qgd29ya0Zsb3dFeGVjdXRpb25Sb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdTdGVwRnVuY3Rpb25FeGVjdXRpb25Sb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3N0YXRlcy5hbWF6b25hd3MuY29tJyksXG4gICAgICBkZXNjcmlwdGlvbjogJ0V4ZWN1dGUgYSB3b3JrZmxvdyByZWxhdGVkIHRvIGV4ZWN1dGluZyBhIExhbWJkYSBmdW5jdGlvbiBwZXIgdGltZSB1bml0IGxlc3MgdGhhbiAxIG1pbnV0ZS4nLFxuICAgIH0pO1xuICAgIHdvcmtGbG93RXhlY3V0aW9uUm9sZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdMYW1iZGFJbnZva2VQZXJtaXNzaW9ucycsXG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbJ2xhbWJkYTpJbnZva2VGdW5jdGlvbiddLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIHRhcmdldEZ1bmN0aW9uQXJuLFxuICAgICAgICBpdGVyYXRvckZ1bmN0aW9uQXJuLFxuICAgICAgXSxcbiAgICB9KSk7XG4gICAgcmV0dXJuIHdvcmtGbG93RXhlY3V0aW9uUm9sZTtcbiAgfTtcbn0iXX0=
package/package.json CHANGED
@@ -58,7 +58,7 @@
58
58
  "jsii-pacmak": "^1.84.0",
59
59
  "jsii-rosetta": "1.x",
60
60
  "npm-check-updates": "^16",
61
- "projen": "^0.71.127",
61
+ "projen": "^0.71.128",
62
62
  "source-map-support": "^0.5.21",
63
63
  "standard-version": "^9",
64
64
  "ts-jest": "^27",
@@ -92,7 +92,7 @@
92
92
  ],
93
93
  "main": "lib/index.js",
94
94
  "license": "Apache-2.0",
95
- "version": "2.0.205",
95
+ "version": "2.0.207",
96
96
  "jest": {
97
97
  "testMatch": [
98
98
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",