diff --git a/.projen/deps.json b/.projen/deps.json
index 4d47585c..32c5f36a 100644
--- a/.projen/deps.json
+++ b/.projen/deps.json
@@ -29,7 +29,7 @@
},
{
"name": "aws-cdk-lib",
- "version": "2.10.0",
+ "version": "2.63.0",
"type": "build"
},
{
@@ -107,7 +107,7 @@
},
{
"name": "aws-cdk-lib",
- "version": "^2.10.0",
+ "version": "^2.63.0",
"type": "peer"
},
{
diff --git a/.projenrc.js b/.projenrc.js
index 83d140bf..1baab5ad 100644
--- a/.projenrc.js
+++ b/.projenrc.js
@@ -4,7 +4,7 @@ const project = new awscdk.AwsCdkConstructLibrary({
author: 'Ej Wang',
authorAddress: 'ej.wang.devs@gmail.com',
- cdkVersion: '2.10.0',
+ cdkVersion: '2.63.0',
autoApproveOptions: {
allowedUsernames: ['flyingImer'],
diff --git a/API.md b/API.md
index 34d5767f..c9efa289 100644
--- a/API.md
+++ b/API.md
@@ -1012,6 +1012,7 @@ const acquireOptions: AcquireOptions = { ... }
| name
| string
| The name for the semaphore. |
| userId
| string
| The semaphore user id to acquire/release resource usage. |
| nextTryWaitTime
| string
| Wait a fixed amount of time (in second) for another try to acquire semaphore if not acquired in previous tries. |
+| taskTimeout
| aws-cdk-lib.aws_stepfunctions.Timeout
| Maximum run time for the execution. |
| timeout
| aws-cdk-lib.Duration
| Maximum run time for the execution. |
---
@@ -1058,7 +1059,22 @@ Wait a fixed amount of time (in second) for another try to acquire semaphore if
---
-##### `timeout`Optional
+##### `taskTimeout`Optional
+
+```typescript
+public readonly taskTimeout: Timeout;
+```
+
+- *Type:* aws-cdk-lib.aws_stepfunctions.Timeout
+- *Default:* No timeout
+
+Maximum run time for the execution.
+
+---
+
+##### ~~`timeout`~~Optional
+
+- *Deprecated:* Use taskTimeout instead
```typescript
public readonly timeout: Duration;
@@ -1312,13 +1328,29 @@ const acquireViaStartExecutionFragmentProps: AcquireViaStartExecutionFragmentPro
| **Name** | **Type** | **Description** |
| --- | --- | --- |
+| taskTimeout
| aws-cdk-lib.aws_stepfunctions.Timeout
| Maximum run time for the execution. |
| timeout
| aws-cdk-lib.Duration
| Maximum run time for the execution. |
| input
| AcquireSemaphoreTaskInput
| *No description.* |
| stateMachine
| aws-cdk-lib.aws_stepfunctions.IStateMachine
| The Step Functions state machine to start the execution on. |
---
-##### `timeout`Optional
+##### `taskTimeout`Optional
+
+```typescript
+public readonly taskTimeout: Timeout;
+```
+
+- *Type:* aws-cdk-lib.aws_stepfunctions.Timeout
+- *Default:* No timeout
+
+Maximum run time for the execution.
+
+---
+
+##### ~~`timeout`~~Optional
+
+- *Deprecated:* Use taskTimeout instead
```typescript
public readonly timeout: Duration;
@@ -1450,6 +1482,7 @@ const releaseOptions: ReleaseOptions = { ... }
| name
| string
| The name for the semaphore. |
| userId
| string
| The semaphore user id to acquire/release resource usage. |
| checkSemaphoreUseFirst
| boolean
| Check if the semaphore use exists before trying to release it. |
+| taskTimeout
| aws-cdk-lib.aws_stepfunctions.Timeout
| Maximum run time for the execution. |
| timeout
| aws-cdk-lib.Duration
| Maximum run time for the execution. |
---
@@ -1501,7 +1534,22 @@ see more about hot partition: https://aws.amazon.com/premiumsupport/knowledge-ce
---
-##### `timeout`Optional
+##### `taskTimeout`Optional
+
+```typescript
+public readonly taskTimeout: Timeout;
+```
+
+- *Type:* aws-cdk-lib.aws_stepfunctions.Timeout
+- *Default:* No timeout
+
+Maximum run time for the execution.
+
+---
+
+##### ~~`timeout`~~Optional
+
+- *Deprecated:* Use taskTimeout instead
```typescript
public readonly timeout: Duration;
@@ -1730,13 +1778,29 @@ const releaseViaStartExecutionFragmentProps: ReleaseViaStartExecutionFragmentPro
| **Name** | **Type** | **Description** |
| --- | --- | --- |
+| taskTimeout
| aws-cdk-lib.aws_stepfunctions.Timeout
| Maximum run time for the execution. |
| timeout
| aws-cdk-lib.Duration
| Maximum run time for the execution. |
| input
| ReleaseSemaphoreTaskInput
| *No description.* |
| stateMachine
| aws-cdk-lib.aws_stepfunctions.IStateMachine
| The Step Functions state machine to start the execution on. |
---
-##### `timeout`Optional
+##### `taskTimeout`Optional
+
+```typescript
+public readonly taskTimeout: Timeout;
+```
+
+- *Type:* aws-cdk-lib.aws_stepfunctions.Timeout
+- *Default:* No timeout
+
+Maximum run time for the execution.
+
+---
+
+##### ~~`timeout`~~Optional
+
+- *Deprecated:* Use taskTimeout instead
```typescript
public readonly timeout: Duration;
@@ -1833,13 +1897,29 @@ const semaphoreStateMachineProps: SemaphoreStateMachineProps = { ... }
| **Name** | **Type** | **Description** |
| --- | --- | --- |
+| taskTimeout
| aws-cdk-lib.aws_stepfunctions.Timeout
| Maximum run time for the execution. |
| timeout
| aws-cdk-lib.Duration
| Maximum run time for the execution. |
| logs
| aws-cdk-lib.aws_stepfunctions.LogOptions
| Defines what execution history events are logged and where they are logged. |
| tracingEnabled
| boolean
| Specifies whether Amazon X-Ray tracing is enabled for this state machine. |
---
-##### `timeout`Optional
+##### `taskTimeout`Optional
+
+```typescript
+public readonly taskTimeout: Timeout;
+```
+
+- *Type:* aws-cdk-lib.aws_stepfunctions.Timeout
+- *Default:* No timeout
+
+Maximum run time for the execution.
+
+---
+
+##### ~~`timeout`~~Optional
+
+- *Deprecated:* Use taskTimeout instead
```typescript
public readonly timeout: Duration;
@@ -1944,11 +2024,27 @@ const semaphoreTimeoutOptions: SemaphoreTimeoutOptions = { ... }
| **Name** | **Type** | **Description** |
| --- | --- | --- |
+| taskTimeout
| aws-cdk-lib.aws_stepfunctions.Timeout
| Maximum run time for the execution. |
| timeout
| aws-cdk-lib.Duration
| Maximum run time for the execution. |
---
-##### `timeout`Optional
+##### `taskTimeout`Optional
+
+```typescript
+public readonly taskTimeout: Timeout;
+```
+
+- *Type:* aws-cdk-lib.aws_stepfunctions.Timeout
+- *Default:* No timeout
+
+Maximum run time for the execution.
+
+---
+
+##### ~~`timeout`~~Optional
+
+- *Deprecated:* Use taskTimeout instead
```typescript
public readonly timeout: Duration;
diff --git a/package.json b/package.json
index 6f2a8ca9..edc7c732 100644
--- a/package.json
+++ b/package.json
@@ -38,13 +38,13 @@
"organization": false
},
"devDependencies": {
- "@aws-cdk/aws-lambda-python-alpha": "^2.52.0-alpha.0",
+ "@aws-cdk/aws-lambda-python-alpha": "2.63.0-alpha.0",
"@types/jest": "^27.5.2",
"@types/node": "^12",
"@typescript-eslint/eslint-plugin": "^5",
"@typescript-eslint/parser": "^5",
"all-contributors-cli": "^6.24.0",
- "aws-cdk-lib": "2.10.0",
+ "aws-cdk-lib": "2.63.0",
"constructs": "10.0.5",
"eslint": "^8",
"eslint-import-resolver-node": "^0.3.6",
@@ -64,7 +64,7 @@
"typescript": "^4.9.3"
},
"peerDependencies": {
- "aws-cdk-lib": "^2.10.0",
+ "aws-cdk-lib": "^2.63.0",
"constructs": "^10.0.5"
},
"keywords": [
diff --git a/src/fragments.ts b/src/fragments.ts
index 34d60df4..caaaf7af 100644
--- a/src/fragments.ts
+++ b/src/fragments.ts
@@ -3,7 +3,14 @@ import { Attribute, AttributeType, ITable } from 'aws-cdk-lib/aws-dynamodb';
import { Choice, Condition, Errors, IChainable, INextable, IntegrationPattern, IStateMachine, JsonPath, Pass, RetryProps, State, StateMachineFragment, TaskInput, Wait, WaitTime } from 'aws-cdk-lib/aws-stepfunctions';
import { DynamoAttributeValue, DynamoGetItem, DynamoProjectionExpression, DynamoPutItem, DynamoReturnValues, DynamoUpdateItem, StepFunctionsStartExecution } from 'aws-cdk-lib/aws-stepfunctions-tasks';
import { Construct } from 'constructs';
-import { isDeterminedNonNegativeInteger } from './private/utils';
+import { SemaphoreTimeoutOptions } from './private/types';
+import { isDeterminedNonNegativeInteger, toTaskTimeout } from './private/utils';
+
+// Re-export SemaphoreTimeoutOptions - since this type is needed in ./private/utils,
+// it would have created a circular dependency to have ./private/utils depend on fragments.ts.
+// Definiting it in ./private/types and then re-exporting it makes it easier to further export via JSII
+// without adding a new entry there.
+export { SemaphoreTimeoutOptions } from './private/types';
export interface SemaphoreTableDefinition {
readonly table: ITable;
@@ -379,15 +386,6 @@ class CheckIfSemaphoreUsedByUserFragment extends StateMachineFragment {
}
}
-export interface SemaphoreTimeoutOptions {
- /**
- * Maximum run time for the execution.
- *
- * @default No timeout
- */
- readonly timeout?: Duration;
-}
-
interface SemaphoreTaskCommonInput {
readonly name: string;
readonly userId: string;
@@ -422,7 +420,7 @@ export class AcquireViaStartExecutionFragment extends StateMachineFragment {
integrationPattern: IntegrationPattern.RUN_JOB,
associateWithParent: true,
input: TaskInput.fromObject(props.input),
- timeout: props.timeout,
+ taskTimeout: toTaskTimeout(props),
});
this.endStates = this.startState.endStates;
}
@@ -438,13 +436,17 @@ export class ReleaseViaStartExecutionFragment extends StateMachineFragment {
constructor(scope: Construct, id: string, props: ReleaseViaStartExecutionFragmentProps) {
super(scope, id);
- this.startState = new StepFunctionsStartExecution(this, 'ReleaseSemaphoreViaStartExecution', {
- stateMachine: props.stateMachine,
- integrationPattern: IntegrationPattern.RUN_JOB,
- associateWithParent: true,
- input: TaskInput.fromObject(props.input),
- timeout: props.timeout,
- });
+ this.startState = new StepFunctionsStartExecution(
+ this,
+ 'ReleaseSemaphoreViaStartExecution',
+ {
+ stateMachine: props.stateMachine,
+ integrationPattern: IntegrationPattern.RUN_JOB,
+ associateWithParent: true,
+ input: TaskInput.fromObject(props.input),
+ taskTimeout: toTaskTimeout(props),
+ },
+ );
this.endStates = this.startState.endStates;
}
}
\ No newline at end of file
diff --git a/src/private/types.ts b/src/private/types.ts
new file mode 100644
index 00000000..ff78c69b
--- /dev/null
+++ b/src/private/types.ts
@@ -0,0 +1,17 @@
+import { Duration } from 'aws-cdk-lib';
+import { Timeout } from 'aws-cdk-lib/aws-stepfunctions';
+
+export interface SemaphoreTimeoutOptions {
+ /**
+ * Maximum run time for the execution.
+ *
+ * @deprecated Use taskTimeout instead
+ * @default No timeout
+ */
+ readonly timeout?: Duration;
+ /**
+ * Maximum run time for the execution.
+ * @default No timeout
+ */
+ readonly taskTimeout?: Timeout;
+}
diff --git a/src/private/utils.ts b/src/private/utils.ts
index 402ef2fe..a068d82b 100644
--- a/src/private/utils.ts
+++ b/src/private/utils.ts
@@ -1,4 +1,5 @@
-import { isPositiveInteger, JsonPath } from 'aws-cdk-lib/aws-stepfunctions';
+import { isPositiveInteger, JsonPath, Timeout } from 'aws-cdk-lib/aws-stepfunctions';
+import { SemaphoreTimeoutOptions } from './types';
/**
* Check if the given literal string is a non negative integer value at compile time.
@@ -11,4 +12,14 @@ export const isDeterminedNonNegativeInteger = (value: string): boolean => {
}
const num = new Number(value);
return !Number.isNaN(num) && isPositiveInteger(num.valueOf());
-};
\ No newline at end of file
+};
+
+/**
+ * As of aws-cdk-lib@2.63.0, `timeout` is a deprecated parameter
+ * and we should be using taskTimeout instead.
+ *
+ * @param props SemaphoreTimeoutOptions
+ * @returns A value for `taskTimeout`
+ */
+export const toTaskTimeout = ({ taskTimeout, timeout }: SemaphoreTimeoutOptions): undefined | Timeout =>
+ taskTimeout ?? (timeout ? Timeout.duration(timeout) : undefined);
diff --git a/test/__snapshots__/construct.test.ts.snap b/test/__snapshots__/construct.test.ts.snap
index b834851d..d12dacdb 100644
--- a/test/__snapshots__/construct.test.ts.snap
+++ b/test/__snapshots__/construct.test.ts.snap
@@ -46,6 +46,7 @@ Object {
"Catch": null,
"Comment": "Get info from DDB for the semaphore item.",
"HeartbeatSeconds": null,
+ "HeartbeatSecondsPath": null,
"InputPath": null,
"Next": "CheckIfFoundSemaphore",
"OutputPath": null,
@@ -75,6 +76,7 @@ Object {
},
],
"TimeoutSeconds": null,
+ "TimeoutSecondsPath": null,
"Type": "Task",
},
"InitializeSemaphore": Object {
@@ -89,6 +91,7 @@ Object {
],
"Comment": "This state handles the case where an item hasn't been created for this semaphore yet. In that case, it will insert an initial item that includes the semaphore name as the key and CurrentInUseCount of 0. The Put to DynamoDB includes a conditional expression to fail if the an item with that key already exists, which avoids a race condition if multiple executions start at the same time. There are other reasons that the previous state could fail and end up here, so this is safe in those cases too.",
"HeartbeatSeconds": null,
+ "HeartbeatSecondsPath": null,
"InputPath": null,
"Next": "TryToAcquireSemaphore",
"OutputPath": null,
@@ -113,6 +116,7 @@ Object {
"ResultPath": null,
"Retry": null,
"TimeoutSeconds": null,
+ "TimeoutSecondsPath": null,
"Type": "Task",
},
"PrepareInput": Object {
@@ -167,6 +171,7 @@ Object {
],
"Comment": "Try to acquire a semaphore using a conditional update to DynamoDB. This update will do two things: 1) increment a counter for the number of held semaphores and 2) add an attribute to the DynamoDB Item with a unique key for this execution and with a value of the time when the semaphore was Acquired. The Update includes a conditional expression that will fail under two circumstances: 1) if the maximum number of semaphores have already been distributed or 2) if the current execution already owns a semaphore. The latter check is important to ensure the same execution doesn't increase the counter more than once. If either of these conditions are not met, then the task will fail with a DynamoDB.ConditionalCheckFailedException error, retry a few times, then if it is still not successful, it will move off to another branch of the workflow. If this is the first time that a given semaphoreName has been used, there will not be a row in DynamoDB, so the update will fail with DynamoDB.AmazonDynamoDBException. In that case, this state sends the workflow to state that will create that row to initialize.",
"HeartbeatSeconds": null,
+ "HeartbeatSecondsPath": null,
"InputPath": null,
"Next": "SemaphoreAcquired",
"OutputPath": null,
@@ -217,6 +222,7 @@ Object {
},
],
"TimeoutSeconds": null,
+ "TimeoutSecondsPath": null,
"Type": "Task",
},
"WaitToAcquireSemaphore": Object {
@@ -239,6 +245,7 @@ Object {
"Comment": null,
"End": true,
"HeartbeatSeconds": null,
+ "HeartbeatSecondsPath": null,
"InputPath": null,
"OutputPath": null,
"Parameters": Object {
@@ -255,6 +262,7 @@ Object {
"ResultPath": null,
"Retry": null,
"TimeoutSeconds": null,
+ "TimeoutSecondsPath": null,
"Type": "Task",
},
},
@@ -308,6 +316,7 @@ Object {
"Catch": null,
"Comment": "Get info from DDB for the semaphore item.",
"HeartbeatSeconds": null,
+ "HeartbeatSecondsPath": null,
"InputPath": null,
"Next": "CheckIfFoundSemaphore",
"OutputPath": null,
@@ -337,6 +346,7 @@ Object {
},
],
"TimeoutSeconds": null,
+ "TimeoutSecondsPath": null,
"Type": "Task",
},
"ParseOriginalInputSnapshot": Object {
@@ -396,6 +406,7 @@ Object {
],
"Comment": "If this semaphoreUserId is still there, then clean it up and release the semaphore",
"HeartbeatSeconds": null,
+ "HeartbeatSecondsPath": null,
"InputPath": null,
"Next": "SemaphoreReleased",
"OutputPath": null,
@@ -440,6 +451,7 @@ Object {
},
],
"TimeoutSeconds": null,
+ "TimeoutSecondsPath": null,
"Type": "Task",
},
},
@@ -483,6 +495,7 @@ Object {
],
"Comment": "If this semaphoreUserId is still there, then clean it up and release the semaphore",
"HeartbeatSeconds": null,
+ "HeartbeatSecondsPath": null,
"InputPath": null,
"Next": "SemaphoreReleased",
"OutputPath": null,
@@ -527,6 +540,7 @@ Object {
},
],
"TimeoutSeconds": null,
+ "TimeoutSecondsPath": null,
"Type": "Task",
},
},
@@ -543,6 +557,7 @@ Object {
"Comment": null,
"End": true,
"HeartbeatSeconds": null,
+ "HeartbeatSecondsPath": null,
"InputPath": null,
"OutputPath": null,
"Parameters": Object {
@@ -557,6 +572,7 @@ Object {
"ResultPath": null,
"Retry": null,
"TimeoutSeconds": null,
+ "TimeoutSecondsPath": null,
"Type": "Task",
},
},
@@ -586,6 +602,9 @@ Object {
"ap-south-1": Object {
"states": "states.ap-south-1.amazonaws.com",
},
+ "ap-south-2": Object {
+ "states": "states.ap-south-2.amazonaws.com",
+ },
"ap-southeast-1": Object {
"states": "states.ap-southeast-1.amazonaws.com",
},
@@ -625,6 +644,9 @@ Object {
"eu-west-3": Object {
"states": "states.eu-west-3.amazonaws.com",
},
+ "me-central-1": Object {
+ "states": "states.me-central-1.amazonaws.com",
+ },
"me-south-1": Object {
"states": "states.me-south-1.amazonaws.com",
},
diff --git a/yarn.lock b/yarn.lock
index e7c34fed..d7f73412 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10,10 +10,25 @@
"@jridgewell/gen-mapping" "^0.1.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@aws-cdk/aws-lambda-python-alpha@^2.52.0-alpha.0":
- version "2.52.0-alpha.0"
- resolved "https://registry.yarnpkg.com/@aws-cdk/aws-lambda-python-alpha/-/aws-lambda-python-alpha-2.52.0-alpha.0.tgz#7be412d141be599e2d17d0f7d436d56715e304c9"
- integrity sha512-pw5QTu0rGCRR+JbVL9pOwaLbA+No2vYtl5UjxpFMeiVT+0DnPvdP2p0jEgnsgWFWK8cugy4+XGDWIjFhllLOtw==
+"@aws-cdk/asset-awscli-v1@^2.2.52":
+ version "2.2.158"
+ resolved "https://registry.yarnpkg.com/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.158.tgz#c391c5d1ff9cf367c33096a98a4947cf8b690099"
+ integrity sha512-Qa9SojPKGfEOA0HPdpHw9NfCm2o7lZ3rU/fXWKOi1QS0LkawI8zhxHC+t29/ljs5Gtg1eZ2kzm5cl/DbccPxng==
+
+"@aws-cdk/asset-kubectl-v20@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.1.tgz#d01c1efb867fb7f2cfd8c8b230b8eae16447e156"
+ integrity sha512-U1ntiX8XiMRRRH5J1IdC+1t5CE89015cwyt5U63Cpk0GnMlN5+h9WsWMlKlPXZR4rdq/m806JRlBMRpBUB2Dhw==
+
+"@aws-cdk/asset-node-proxy-agent-v5@^2.0.42":
+ version "2.0.132"
+ resolved "https://registry.yarnpkg.com/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.132.tgz#29ddb0222d8096a3965dbc7afd8d43f7998c5618"
+ integrity sha512-qYKM06QmQAquucitzZw6KglAF5R/quRJMRhBTmSewmnTU3TGZtIQ3JVqC+hx56bXHRtBDE1VTdTxJlmCS4WE9Q==
+
+"@aws-cdk/aws-lambda-python-alpha@2.63.0-alpha.0":
+ version "2.63.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@aws-cdk/aws-lambda-python-alpha/-/aws-lambda-python-alpha-2.63.0-alpha.0.tgz#6db70edbbf92af0fb19a57357ecdf8ef41e078c2"
+ integrity sha512-UZnzCHXa3BcM4cebs/i4k5khMYCtUTkJztJwo/lI2sAyRGJHKGP2yzxrNp5DS6YygWsUZddDATyjj32azHBEig==
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6":
version "7.18.6"
@@ -1202,19 +1217,22 @@ at-least-node@^1.0.0:
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-aws-cdk-lib@2.10.0:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/aws-cdk-lib/-/aws-cdk-lib-2.10.0.tgz#0afbf3754e92855dbb0b6407f85165c25b1c46da"
- integrity sha512-sMQvQzDqfHumbDOwH2nnyu/sKl7HMi4LkIDRlhW/dLZhYiLvEbwA8ZUclY9g5NuSihF+3G9x1uOjBETBGp+rTg==
+aws-cdk-lib@2.63.0:
+ version "2.63.0"
+ resolved "https://registry.yarnpkg.com/aws-cdk-lib/-/aws-cdk-lib-2.63.0.tgz#edc3ede69bbdbe56e87cfb4b834a7e2241e9dc04"
+ integrity sha512-+thToi/7coSufwaEafgofTaZERXxFUeEwEIp0SGU0wHz6IbPll5yAzoEIkE51kM8AMCMfqwJddYOjM3qs43cPg==
dependencies:
+ "@aws-cdk/asset-awscli-v1" "^2.2.52"
+ "@aws-cdk/asset-kubectl-v20" "^2.1.1"
+ "@aws-cdk/asset-node-proxy-agent-v5" "^2.0.42"
"@balena/dockerignore" "^1.0.2"
case "1.6.3"
fs-extra "^9.1.0"
- ignore "^5.2.0"
- jsonschema "^1.4.0"
- minimatch "^3.0.4"
- punycode "^2.1.1"
- semver "^7.3.5"
+ ignore "^5.2.4"
+ jsonschema "^1.4.1"
+ minimatch "^3.1.2"
+ punycode "^2.3.0"
+ semver "^7.3.8"
yaml "1.10.2"
babel-jest@^27.5.1:
@@ -3003,6 +3021,11 @@ ignore@^5.2.0:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c"
integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==
+ignore@^5.2.4:
+ version "5.2.4"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
+ integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -4012,7 +4035,7 @@ jsonparse@^1.2.0, jsonparse@^1.3.1:
resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
-jsonschema@^1.4.0:
+jsonschema@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab"
integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==
@@ -5038,6 +5061,11 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+punycode@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
+ integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
+
pupa@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"