diff --git a/.gitignore b/.gitignore
index 3a671bb3..177fb932 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,8 @@
!jest.config.js
*.d.ts
node_modules
-
+*.DS_Store
+*.tgz
# CDK asset staging directory
.cdk.staging
cdk.out
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a7f07cd5..39c05db6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,29 @@
## Released
+## 4.0.0
+### Added
+- A custom resource to retrieve the latest version of the ManagedRuleGroup and check if the specified version is valid.
+- Typescript configuration files for WAF configurations - now it is easier to write custom rules because of the types for [rule statements](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2.CfnWebACL.RuleProperty.html).
+- A function to convert CdkRule to SdkRule - with the introduction of Typescript configuration and CDK interfaces, we now need to convert every CDK rule to an SDK rule to be able to use the [CheckCapacity API call](https://docs.aws.amazon.com/waf/latest/APIReference/API_CheckCapacity.html).
+- ManagedRuleGroupVersions for CloudFormation Output
+- Example Configurations
+ 1. Example WAF configuration against: [OWASP Top Ten](https://owasp.org/www-project-top-ten/)
+ 2. Example configuration for prerequisite stack
+- Added TOOL_KIT_STACKNAME to the TaskFile - to specify the name of the bootstrap stack ([see Bootstrapping your AWS environment](https://docs.aws.amazon.com/cdk/v2/guide/cli.html#cli-bootstrap)).
+- Migrate script to migrate from json to ts config (./values/migrate.ts)
+ - ts node ./values/migrate.ts YOURJSON.json
+- You now need to set the priority for your custom rules. If you want to learn more about processing order of rules and rule groups in a web ACL, check out this [link](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-processing-order.html).
+
+### Fixed
+- Allow sub-statements of IPSetReferenceStatements -> Allow IPSetReferenceStatement.ARN entries that reference an aws-firewall-factory controlled ipset (i.e. the name of the ipset) within AND, OR and NOT statements (as sub-statements).
+- Adjusted WAF Config skeleton generation function for Typescript configuration.
+- Updated dependencies to the latest version
+
+### Removed
+- Json config files for WAF configurations
+- DeployHash generation for new configs - legacy functionality - we will now use Prefix, Stage & FirewallName to create unique WAF and CloudFormation StackNames.
+
## 3.3.1
### Fixed
- example Json Files
@@ -44,7 +67,6 @@
- community-user-agent testcases
- improve owasp testcases
- Update Testing bin Version
-
## 3.2.3
### Fixed
- Bump eslint from 8.41.0 to 8.42.0
@@ -60,7 +82,6 @@
### Added
- Added Linting command `lint` to npm scripts which can be run via `npm run lint`β
-
## 3.2.2
### Fixed
- Bump @aws-sdk/client-pricing from 3.332.0 to 3.341.0
@@ -68,7 +89,6 @@
- Bump @aws-sdk/client-cloudwatch from 3.321.1 to 3.341.0
- Bump @aws-sdk/client-service-quotas from 3.321.1 to 3.342.0
- Bump @aws-sdk/client-fms from 3.332.0 to 3.342.0
-
## 3.2.1
### Fixed
- Bump aws-cdk from 2.74.0 to 2.79.1Β
diff --git a/README.md b/README.md
index 9c8ae28f..2bd67bb8 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
+
[![Mentioned in Awesome CDK](https://awesome.re/mentioned-badge.svg)](https://github.com/kolomied/awesome-cdk)
[![License: Apache2](https://img.shields.io/badge/license-Apache%202-lightgrey.svg)](http://www.apache.org/licenses/) [![cdk](https://img.shields.io/badge/aws_cdk-v2-orange.svg)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)
[![latest](https://img.shields.io/badge/latest-release-yellow.svg)](https://github.com/globaldatanet/aws-firewall-factory/releases)
@@ -7,7 +8,6 @@
[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=AWS%20FIREWALL%20FACTORY%20-%20Deploy%2C%20update%2C%20and%20stage%20your%20WAFs%20while%20managing%20them%20centrally%20via%20FMS&url=https://github.com/globaldatanet/aws-firewall-factory&hashtags=aws,security,waf)
[![roadmap](https://img.shields.io/badge/public-roadmap-yellow.svg)](https://github.com/orgs/globaldatanet/projects/1)
-
**[π§ Feature request](https://github.com/globaldatanet/aws-firewall-factory/issues/new?assignees=&labels=feature-request%2C+enhancement&template=feature_request.md&title=)** | **[π Bug Report](https://github.com/globaldatanet/aws-firewall-factory/issues/new?assignees=&labels=bug%2C+triage&template=bug_report.md&title=)**
@@ -83,38 +83,37 @@ If you want to learn more about the AWS Firewall Factory feel free to look at th
6. Checking of the softlimit quota for [WCU](https://docs.aws.amazon.com/waf/latest/developerguide/how-aws-waf-works.html) set in the AWS account (stop deployment if calculated WCU is above the quota)
-7. Easy configuration of WAF rules trough JSON file.
-
-8. Deployment hash to deploy same WAF more than once for testing and/or blue/green deployments.
-
-9. Stopping deployment if soft limit will be exceeded: **Firewall Manager policies per organization per Region (L-0B28E140)** - **Maximum number of web ACL capacity units in a web ACL in WAF for regional (L-D9F31E8A)**
+7. Easy configuration of WAF rules trough Typescript file.
+
+8. Deploy same WAF more than once for testing and/or blue/green deployments.
-10. **RegexMatchStatement** and **IPSetReferenceStatement** is working now π
+9. Stopping deployment if soft limit will be exceeded: **Firewall Manager policies per organization per Region (L-0B28E140)** - **Maximum number of web ACL capacity units in a web ACL in WAF for regional (L-D9F31E8A)**
-11. You can name your rules. If you define a name in your RulesArray, the name + a Base36 timestamp will be used for the creation of your rule - otherwise a name will be generated. This will help you to query your logs in Athena. The same rule name also applies to the metric by adding "-metric" to the name.
+10. You can name your rules. If you define a name in your RulesArray, the name + a Base36 timestamp will be used for the creation of your rule - otherwise a name will be generated. This will help you to query your logs in Athena.
-12. Support for Captcha - You can add Captcha as an action to your WAFs. This helps you block unwanted bot traffic by requiring users to successfully complete challenges before their web request are allowed to reach AWS WAF protected resources. AWS WAF Captcha is available in the US East (N. Virginia), US West (Oregon), Europe (Frankfurt), South America (Sao Paulo), and Asia Pacific (Singapore) AWS Regions and supports Application Load Balancer, Amazon API Gateway, and AWS AppSync resources.
+11. Support for Captcha - You can add Captcha as an action to your WAFs. This helps you block unwanted bot traffic by requiring users to successfully complete challenges before their web request are allowed to reach AWS WAF protected resources. AWS WAF Captcha is available in the US East (N. Virginia), US West (Oregon), Europe (Frankfurt), South America (Sao Paulo), and Asia Pacific (Singapore) AWS Regions and supports Application Load Balancer, Amazon API Gateway, and AWS AppSync resources.
-13. Added S3LoggingBucketName to JSON. You need to specify the S3 Bucket where logs should be placed in. We also added a prefix for the logs to be AWS conform (Prefix: AWSLogs/*AWS_ACCOUNTID*/FirewallManager/*AWS_REGION*/).
+12. Added S3LoggingBucketName to Configuration. You need to specify the S3 Bucket where logs should be placed in. We also added a prefix for the logs to be AWS conform (Prefix: AWSLogs/*AWS_ACCOUNTID*/FirewallManager/*AWS_REGION*/).
-14. Added testing your WAF with [GoTestWAF](https://github.com/wallarm/gotestwaf). To be able to check your WAF we introduced the **SecuredDomain** parameter in the JSON (which should be your domain) which will be checked using the WAF tool.
+13. Added testing your WAF with [GoTestWAF](https://github.com/wallarm/gotestwaf). To be able to check your WAF we introduced the **SecuredDomain** parameter in the Configuration (which should be your domain) which will be checked using the WAF tool.
-15. TaskFileParameters:
+14. TaskFileParameters:
| Parameter | Value |
|--------------------|----------------------------------------------------------------------------------------------|
| SKIP_QUOTA_CHECK | true (Stop deployment if calculated WCU is above the quota) false (Skipping WCU Check) |
| WAF_TEST | true (testing your waf with GoTestWAF) false (Skipping WAF testing) |
| CREATE_DIAGRAM | true (generating a diagram using draw.io) false (Skipping diagram generation) |
- | CDK_DIFF | true (generating a cdk before invoking cdk deploy) false (Skipping cdk diff) |
+ | PREQUISITES | true (deploys Prerequisites Stack) false (deployment of WAF) |
+ | TOOL_KIT_STACKNAME | To Specify The name of the bootstrap stack ([see Bootstrapping your AWS environment](https://docs.aws.amazon.com/cdk/v2/guide/cli.html#cli-bootstrap)) |
-16. Validation of your ConfigFile using schema validation - if you miss a required parameter in your config file the deployment will stop automatically and show you the missing path.
+15. Validation of your ConfigFile using schema validation - if you miss a required parameter in your config file the deployment will stop automatically and show you the missing path.
-17. PreProcess- and PostProcessRuleGroups - you can decide now where the Custom or ManagedRules should be added to.
+16. PreProcess- and PostProcessRuleGroups - you can decide now where the Custom or ManagedRules should be added to.
- - New Structure see [example json](./values/example-waf.json).
+ - New Structure see [example Configuration](./values/examples).
-18. RuleLabels - A label is a string made up of a prefix, optional namespaces and a name. The components of a label are delimited with a colon. Labels have the following requirements and characteristics:
+17. RuleLabels - A label is a string made up of a prefix, optional namespaces and a name. The components of a label are delimited with a colon. Labels have the following requirements and characteristics:
- Labels are case-sensitive.
@@ -124,9 +123,9 @@ If you want to learn more about the AWS Firewall Factory feel free to look at th
- Components of a label are separated by a colon ( : ).
-19. While Deployment the Price for your WAF will be calculated using the Pricing API
+18. While Deployment the Price for your WAF will be calculated using the Pricing API
-20. Dashboard - The Firewall Factory is able to provision a CloudWatch Dashboard per Firewall.
+19. Dashboard - The Firewall Factory is able to provision a CloudWatch Dashboard per Firewall.
The Dashboard shows:
- Where the WAF is deployed to [AWS Region and Account(s)]
- Which resource type you are securing
@@ -141,7 +140,12 @@ If you want to learn more about the AWS Firewall Factory feel free to look at th
See example:
![FirewallDashboard](./static/FirewallDashboard.jpg)
-21. Centralized IPSets management - No more we'll have to be manually updating ipsets across multiple AWS accounts, it can be defined in code and replicated for use by WAF rules everywhere its needed. Check the examples for defining ipsets and using them in the WebACLs on `values/ip-sets-managed.json`.
+20. Example Configurations
+ 1. Example WAF Configuration againts: [OWASP Top Ten](https://owasp.org/www-project-top-ten/)
+ 2. Example Configuration for Prerequisite Stack
+ 3. Function to generate Skeleton for WAF Configuration
+
+21. Centralized IPSets management - No more we'll have to be manually updating ipsets across multiple AWS accounts, it can be defined in code and replicated for use by WAF rules everywhere its needed. Check the examples for defining ipsets and using them in the WebACLs on `values/examples/ip-sets-managed-test.ts`.
@@ -186,12 +190,10 @@ See example:
### π Deployment via Taskfile
-1. Create new json file for you WAF and configure Rules in the JSON (see [owasptopten.json](values/owasptopten.json) to see structure)
-
-β οΈ When deploying a firewall for the first time, the **DeployHash** must be empty. The AWS Firewall Factory takes care of creating a DeployHash. The DeployHash is used to identify which CloudFormation stack is associated with which configuration file.
+1. Create new ts file for you WAF and configure Rules in the Configuration (see [owasptopten.ts](values/examples/owasptop10.ts) to see structure) or use enter `task generate-waf-skeleton`
-2. Assume AWS Profile `awsume PROFILENAME`
-3. (Optional) Enter `task generateconfig`
+2. Assume AWS Profile `awsume / assume PROFILENAME`
+3. (Optional) Enter `task generate-waf-skeleton`
4. Enter `task deploy config=NAMEOFYOURCONFIGFILE`
## π¦ΈπΌββοΈ Contributors
diff --git a/Taskfile.yml b/Taskfile.yml
index 097e7bac..6a789c25 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -3,8 +3,8 @@ version: '3'
env:
SKIP_QUOTA_CHECK: true
WAF_TEST: false
- CREATE_DIAGRAM: true
- CDK_DIFF: false
+ CREATE_DIAGRAM: false
+ TOOL_KIT_STACKNAME: CDKToolkit
LASTEST_FIREWALLFACTORY_VERSION:
sh: curl --silent "https://api.github.com/repos/globaldatanet/aws-firewall-factory/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/'
vars:
@@ -18,15 +18,11 @@ tasks:
deploy:
desc: Deploy Stack
cmds:
- - task: clean
- - task: cdkdiff
- task: cdkdeploy
- task: creatediagram
- - task: testwaf
synth:
desc: synth Stack
cmds:
- - task: clean
- cdk synth
vars:
ACCOUNT:
@@ -34,44 +30,27 @@ tasks:
TAGS:
sh: cat tags/tags.json | jq -j '.[]|"--tags " + (.Key)+"="+(.Value)+" "'
env:
- PROCESS_PARAMETERS: values/{{.config}}.json
- clean:
- desc: Clean CDK Out
- cmds:
- - rm -rf ./cdk.out
- - rm -rf ./node-modules
- silent: true
- cdkdiff:
+ PROCESS_PARAMETERS: .config
+ diff:
desc: CDK Diff
cmds:
- - if [[ {{.CDK_DIFF}} = true ]];then cdk diff; echo -n "Continue (y/n)?"; read CONT; if [ "$CONT" = "n" ]; then echo "NO" | exit 1; else echo "YES"; fi; else exit 0;fi;
+ - cdk diff
silent: true
interactive: true
env:
- PROCESS_PARAMETERS: values/{{.config}}.json
+ PROCESS_PARAMETERS: "{{.config}}"
PREREQUISITE: "{{.prerequisite}}"
- preconditions:
- - sh: "test {{.config}}"
- msg: "config Variable was not set"
- - sh: "test -f values/{{.config}}.json"
- msg: "Values file not found: values/{{.config}}.json"
cdkdeploy:
desc: CDK Deploy
cmds:
- - cdk deploy --require-approval never {{.TAGS}}
- - rm -f $(find ./cdk.out/*assets.json -type f) &> /dev/null
+ - cdk deploy --require-approval never {{.TAGS}} --toolkit-stack-name {{.TOOL_KIT_STACKNAME}}
vars:
ACCOUNT:
sh: aws sts get-caller-identity |jq -r .Account
TAGS:
sh: cat tags/tags.json | jq -j '.[]|"--tags " + (.Key)+"="+(.Value)+" "'
- preconditions:
- - sh: "test {{.config}}"
- msg: "config Variable was not set"
- - sh: "test -f values/{{.config}}.json"
- msg: "Values file not found: values/{{.config}}.json"
env:
- PROCESS_PARAMETERS: values/{{.config}}.json
+ PROCESS_PARAMETERS: "{{.config}}"
PREREQUISITE: "{{.prerequisite}}"
silent: true
interactive: true
@@ -85,43 +64,19 @@ tasks:
testwaf:
desc: Test of your waf using GoTestWAF
cmds:
+ - echo π§ͺ Testing of your new π₯ WAF using GoTestWAF
- |
- if [[ {{.WAF_TEST}} == true ]]; then
- echo π§ͺ Testing of your new π₯ WAF using GoTestWAF
-
- items=$(cat values/{{.config}}.json | jq -r '.[] | .SecuredDomain[]?')
- for item in ${items[@]}; do
- echo "Using fqdn in π₯ url : $item"
- ./gotestwaf/gotestwaf --url https://$item --workers 50 --blockConnReset --wafName="$(cat values/{{.config}}.json | jq -r '.General.Prefix')-$(cat values/{{.config}}.json | jq -r '.WebAcl.Name')-$(cat values/{{.config}}.json | jq -r '.General.Stage')-$(cat values/{{.config}}.json | jq -r '.General.DeployHash')" --configPath=./gotestwaf/config.yaml --testCasesPath=./gotestwaf/testcases --skipWAFBlockCheck --reportPath "./waf-evaluation-report/$(date '+%Y-%m-%d')" --reportName "$(cat values/{{.config}}.json | jq -r '.General.Prefix')-$(cat values/{{.config}}.json | jq -r '.WebAcl.Name')-$(cat values/{{.config}}.json | jq -r '.General.Stage')-$(cat values/{{.config}}.json | jq -r '.General.DeployHash')"
- done
- else
- echo "β Skipping WAF Testing π§ͺ"
- fi
+ items=$(cat values/{{.config}}.json | jq -r '.[] | .SecuredDomain[]?')
+ for item in ${items[@]}; do
+ echo "Using fqdn in π₯ url : $item"
+ ./gotestwaf/gotestwaf --url https://$item --workers 50 --blockConnReset --wafName="$(cat values/{{.config}}.json | jq -r '.General.Prefix')-$(cat values/{{.config}}.json | jq -r '.WebAcl.Name')-$(cat values/{{.config}}.json | jq -r '.General.Stage')-$(cat values/{{.config}}.json | jq -r '.General.DeployHash')" --configPath=./gotestwaf/config.yaml --testCasesPath=./gotestwaf/testcases --skipWAFBlockCheck --reportPath "./waf-evaluation-report/$(date '+%Y-%m-%d')" --reportName "$(cat values/{{.config}}.json | jq -r '.General.Prefix')-$(cat values/{{.config}}.json | jq -r '.WebAcl.Name')-$(cat values/{{.config}}.json | jq -r '.General.Stage')-$(cat values/{{.config}}.json | jq -r '.General.DeployHash')"
+ done
silent: true
- validateconfig:
- desc: Validates the current config
- cmds:
- - ts-node test/config-loader.ts
- silent: true
- env:
- PROCESS_PARAMETERS: values/{{.config}}.json
preconditions:
- - sh: "test {{.config}}"
- msg: "config Variable was not set"
- - sh: "test -f values/{{.config}}.json"
- msg: "Values file not found: values/{{.config}}.json"
- generateconfig:
- desc: Generate skeleton for a waf configuration file
- cmds:
- - if [[ "{{.config}}" ]] ; then ts-node lib/tools/generate-skeleton.ts >> values/{{.config}}.json ; else ts-node lib/tools/generate-skeleton.ts ; fi
- silent: true
- generateowasptoptenconfig:
- desc: Generate skeleton for a waf configuration file with owasp top 10
- cmds:
- - if [[ "{{.config}}" ]] ; then ts-node lib/tools/get-owasp-top10-waf.ts >> values/{{.config}}.json ; else ts-node lib/tools/get-owasp-top10-waf.ts ; fi
+ - sh: "[ '{{.WAF_TEST}}' != 'true' ]"
+ msg: β Skipping WAF Testing π§ͺ
+ generate-waf-skeleton:
+ desc: Generate Skeleton
silent: true
- generateprerequisitesconfig:
- desc: Generate skeleton for a prerequisites configuration
cmds:
- - if [[ "{{.config}}" ]] ; then ts-node lib/tools/generate-prerequisites-skeleton.ts >> values/{{.config}}.json ; else ts-node lib/tools/generate-prerequisites-skeleton.ts ; fi
- silent: true
\ No newline at end of file
+ - ts-node ./lib/tools/generate-skeleton.ts
\ No newline at end of file
diff --git a/bin/aws-firewall-factory.ts b/bin/aws-firewall-factory.ts
index 28022841..c2d2cc9d 100644
--- a/bin/aws-firewall-factory.ts
+++ b/bin/aws-firewall-factory.ts
@@ -2,47 +2,36 @@
import { FirewallStack } from "../lib/firewall-stack";
import { PrerequisitesStack } from "../lib/prerequisites-stack";
import * as cdk from "aws-cdk-lib";
-import { realpathSync, existsSync } from "fs";
-import { validateWaf, validatePrerequisites, wrongLoggingConfiguration } from "../lib/tools/config-validator";
+import { wrongLoggingConfiguration } from "../lib/tools/config-validator";
import { Config, Prerequisites, PriceRegions, RegionString } from "../lib/types/config";
import { isPolicyQuotaReached, isWcuQuotaReached, setOutputsFromStack, initRuntimeProperties, outputInfoBanner } from "../lib/tools/helpers";
import {isPriceCalculated, getCurrentPrices} from "../lib/tools/price-calculator";
-import { ValidateFunction } from "ajv";
+import * as values from "../values";
+
/**
* relative path to config file imported from the env PROCESS_PARAMETERS
*/
-const CONFIGFILE = process.env.PROCESS_PARAMETERS;
-
-const logInvalidConfigFileAndExit = (config:Config,invalidFileType: "ConfigFile" | "IPSet", validationFilePath: string, ajvValidatorFunction: ValidateFunction): void => {
- outputInfoBanner(config);
- console.log(`\n π§ͺ Validation of your ${invalidFileType}: \n π ` + validationFilePath + "\n\n");
- console.error("\u001B[31m",`π¨ Invalid ${invalidFileType} File π¨ \n\n`,"\x1b[0m" + JSON.stringify(ajvValidatorFunction.errors, null, 2)+ "\n\n");
- process.exit(1);
-};
+const CONFIG_OBJECT_NAME = process.env.PROCESS_PARAMETERS;
-if(!CONFIGFILE || !existsSync(CONFIGFILE)) {
- console.log("Config file ", CONFIGFILE, " not found. - NO CDK ERROR");
+if(!CONFIG_OBJECT_NAME || (values.configs[CONFIG_OBJECT_NAME] === undefined && values.prereq[CONFIG_OBJECT_NAME] === undefined)) {
+ console.log("Configuration ", CONFIG_OBJECT_NAME, " not found.");
process.exit(1);
}
-void (async () => {
- // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment
- const config: Config = require(realpathSync(CONFIGFILE));
- if (!validateWaf(config)) logInvalidConfigFileAndExit(config,"ConfigFile", realpathSync(CONFIGFILE), validateWaf);
+const app = new cdk.App();
+void (async () => {
// ---------------------------------------------------------------------
// Deploying prerequisite stack
-
+ console.log(process.env.PREREQUISITE);
if(process.env.PREREQUISITE === "true") {
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment
- const prerequisites: Prerequisites = require(realpathSync(CONFIGFILE));
- if(!validatePrerequisites(prerequisites)) logInvalidConfigFileAndExit(config,"ConfigFile", realpathSync(CONFIGFILE), validatePrerequisites);
-
- outputInfoBanner(config);
+ const prerequisites: Prerequisites = values.prereq[CONFIG_OBJECT_NAME];
+ outputInfoBanner();
console.log("βΉοΈ Deploying Prerequisites Stack.");
const app = new cdk.App();
- new PrerequisitesStack(app, config.General.Prefix.toUpperCase() + "-AWS-FIREWALL-FACTORY-PREQUISITES", {
+ new PrerequisitesStack(app, prerequisites.General.Prefix.toUpperCase() + "-AWS-FIREWALL-FACTORY-PREQUISITES", {
prerequisites,
env: {
region: process.env.AWS_REGION,
@@ -50,36 +39,44 @@ void (async () => {
},
});
}
-
+
// ---------------------------------------------------------------------
// Deploying Firewall stack
-
+
else {
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
+ const config: Config = values.configs[CONFIG_OBJECT_NAME];
const deploymentRegion= outputInfoBanner(config);
- const isNewStack = (config.General.DeployHash === "");
const runtimeProperties = initRuntimeProperties();
- if(isNewStack){
- console.log("βΉ First Deployment of this WAF.");
- const tempHash = Date.now().toString(36);
- config.General.DeployHash = tempHash;
- console.log("#οΈβ£ Generated Deployment Hash for this WAF: "+ config.General.DeployHash);
- if (process.env.SKIP_QUOTA_CHECK === "true") {
- console.log("βοΈ SKIPPING Quota Check for Policies.");
- } else {
- const policyQuotaReached = await isPolicyQuotaReached(deploymentRegion);
- if (policyQuotaReached) {
- console.error("\u001B[31m","π¨ ERROR: Exit process due Quota Check for Policies π¨ \n\n","\x1b[0m" + "\n\n");
- process.exit(1);
- }
+ if (process.env.SKIP_QUOTA_CHECK === "true") {
+ console.log("βοΈ SKIPPING Quota Check for Policies.βοΈ\n\n");
+ } else {
+ const policyQuotaReached = await isPolicyQuotaReached(deploymentRegion);
+ if (policyQuotaReached) {
+ console.error("\u001B[31m","π¨ ERROR: Exit process due Quota Check for Policies π¨ \n\n","\x1b[0m" + "\n\n");
+ process.exit(1);
}
}
- else{
- await setOutputsFromStack(deploymentRegion, runtimeProperties, config);
+ await setOutputsFromStack(deploymentRegion, runtimeProperties, config);
+ if(config.General.DeployHash){
console.log("#οΈβ£ Deployment Hash for this WAF: "+ config.General.DeployHash);
+ console.log(" β οΈ Legacy functionality βοΈ\n\n");
}
- console.log("π₯ Deploy FMS Policy: " + config.General.Prefix.toUpperCase() + "-" + config.WebAcl.Name.toUpperCase()+ "-" + config.General.Stage + "-" + config.General.DeployHash + "\n β¦ Type: " +config.WebAcl.Type + "\nπ Stackname: ","\u001b[32m",config.General.Prefix.toUpperCase() + "-WAF-" + config.WebAcl.Name.toUpperCase() +"-"+config.General.Stage.toUpperCase() +"-"+config.General.DeployHash.toUpperCase(),"\u001b[0m");
-
+ console.log(`π₯ Deploy FMS Policy: ${config.General.Prefix.toUpperCase()}-WAF-${config.WebAcl.Name.toUpperCase()}-${config.General.Stage.toUpperCase()}${config.General.DeployHash ? "-"+config.General.DeployHash.toUpperCase() : ""}\n β¦ Type:
+ ${config.WebAcl.Type}\nπ Stackname:`);
+ console.log("\u001b[32m",` ${config.General.Prefix.toUpperCase()}-WAF-${config.WebAcl.Name.toUpperCase()}-${config.General.Stage.toUpperCase()}${config.General.DeployHash ? "-"+config.General.DeployHash.toUpperCase() : ""}`,"\u001b[0m");
+ console.log("\n π― Targets:");
+ if(config.WebAcl.IncludeMap.account){
+ for (const account of config.WebAcl.IncludeMap.account) {
+ console.log("\x1b[32m", ` π¬ ${account}`, "\x1b[0m");
+ }
+ }
+ if(config.WebAcl.IncludeMap.orgunit){
+ for (const unit of config.WebAcl.IncludeMap.orgunit) {
+ console.log("\x1b[32m", ` π¬ ${unit}`, "\x1b[0m");
+ }
+ }
console.log("\n π Logging:");
if(config.General.LoggingConfiguration ==="Firehose"){
console.log(" π§― " + config.General.LoggingConfiguration);
@@ -92,8 +89,8 @@ void (async () => {
if(Array.isArray(config.WebAcl.IPSets) && config.WebAcl.IPSets.length > 0) {
console.log("\nπ IPSets");
for(const ipSet of config.WebAcl.IPSets) {
- console.log(" β " + ipSet.Name);
- console.log(" βοΈ [" + ipSet.IPAddressVersion + "] | π [" + config.WebAcl.Scope+ "]");
+ console.log(" β " + ipSet.name);
+ console.log(" βοΈ [" + ipSet.ipAddressVersion + "] | π [" + config.WebAcl.Scope+ "]");
}
}
const wcuQuotaReached = await isWcuQuotaReached(deploymentRegion, runtimeProperties, config);
@@ -105,8 +102,7 @@ void (async () => {
console.error("\u001B[31m"," π¨ ERROR: Amazon S3 bucket name is invalid π¨ ", "\x1b[0m" +"\n πͺ£ Amazon S3 bucket name must begin with \"aws-waf-logs-\" followed by at least one \n of the following characters [a-z0-9_.-]\n\n","\x1b[0m" + "\n\n");
process.exit(1);
}
- const app = new cdk.App();
- new FirewallStack(app, config.General.Prefix.toUpperCase() + "-WAF-" + config.WebAcl.Name.toUpperCase() +"-"+config.General.Stage.toUpperCase() +"-"+config.General.DeployHash.toUpperCase(), {
+ new FirewallStack(app, `${config.General.Prefix.toUpperCase()}-WAF-${config.WebAcl.Name.toUpperCase()}-${config.General.Stage.toUpperCase()}${config.General.DeployHash ? "-"+config.General.DeployHash.toUpperCase() : ""}`, {
config, runtimeProperties: runtimeProperties,
env: {
region: deploymentRegion,
diff --git a/cdk.out/cdk.out b/cdk.out/cdk.out
deleted file mode 100644
index 7925065e..00000000
--- a/cdk.out/cdk.out
+++ /dev/null
@@ -1 +0,0 @@
-{"version":"31.0.0"}
\ No newline at end of file
diff --git a/lib/firewall-stack.ts b/lib/firewall-stack.ts
index 7f88617a..f9b56c7a 100644
--- a/lib/firewall-stack.ts
+++ b/lib/firewall-stack.ts
@@ -3,18 +3,20 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
import * as cdk from "aws-cdk-lib";
import { Construct } from "constructs";
-import cloneDeep from "lodash/cloneDeep";
import { aws_wafv2 as wafv2 } from "aws-cdk-lib";
import { aws_fms as fms } from "aws-cdk-lib";
+import { aws_lambda_nodejs as NodejsFunction } from "aws-cdk-lib";
+import { aws_lambda as lambda } from "aws-cdk-lib";
import { aws_kinesisfirehose as firehouse } from "aws-cdk-lib";
import { aws_iam as iam } from "aws-cdk-lib";
import { aws_logs as logs } from "aws-cdk-lib";
-import { Config, CustomResponseBodies } from "./types/config";
+import { Config, CustomResponseBodies, NONEVERSIONEDMANAGEDRULEGRPOUP } from "./types/config";
import { ManagedRuleGroup, ManagedServiceData, ServiceDataManagedRuleGroup, ServiceDataRuleGroup, Rule } from "./types/fms";
import { RuntimeProperties, ProcessProperties } from "./types/runtimeprops";
import {WafCloudWatchDashboard} from "./constructs/cloudwatch";
-import { promises as fsp } from "fs";
-import { toAwsCamel } from "./tools/helpers";
+import * as path from "path";
+import * as cr from "aws-cdk-lib/custom-resources";
+
export interface ConfigStackProps extends cdk.StackProps {
readonly config: Config;
@@ -85,13 +87,7 @@ export class FirewallStack extends cdk.Stack {
});
new firehouse.CfnDeliveryStream(this, "S3DeliveryStream", {
- deliveryStreamName:
- "aws-waf-logs-" +
- props.config.General.Prefix +
- "-kinesis-wafv2log-" +
- props.config.WebAcl.Name +
- props.config.General.Stage +
- props.config.General.DeployHash,
+ deliveryStreamName: `aws-waf-logs-${props.config.General.Prefix}-kinesis-wafv2log-${props.config.WebAcl.Name}${props.config.General.Stage}${props.config.General.DeployHash? props.config.General.DeployHash : ""}`,
extendedS3DestinationConfiguration: {
bucketArn: "arn:aws:s3:::" + props.config.General.S3LoggingBucketName,
encryptionConfiguration: {
@@ -119,51 +115,80 @@ export class FirewallStack extends cdk.Stack {
const ipSetsNames: string[] =[];
for(const ipSet of props.config.WebAcl.IPSets) {
const addresses: string[] = [];
- for(const address of ipSet.Addresses) {
+ for(const address of ipSet.addresses) {
if(typeof address === "string") addresses.push(address);
- else addresses.push(address.IP);
+ else addresses.push(address.ip);
}
- const cfnipset = new wafv2.CfnIPSet(this, ipSet.Name+props.config.General.DeployHash, {
- name: `${props.config.General.Prefix}-${props.config.General.Stage}-${ipSet.Name}-${props.config.General.DeployHash}`,
- description: ipSet.Description ? ipSet.Description : "IP Set created by AWS Firewall Factory \n used in " +props.config.General.Prefix.toUpperCase() +
- "-" +
- props.config.WebAcl.Name +
- "-" +
- props.config.General.Stage +
- "-" +
- props.config.General.DeployHash + " Firewall",
+ const cfnipset = new wafv2.CfnIPSet(this, ipSet.name, {
+ name: `${props.config.General.Prefix}-${props.config.General.Stage}-${ipSet.name}`,
+ description: ipSet.description ? ipSet.description : `IP Set created by AWS Firewall Factory \n used in ${props.config.General.Prefix.toUpperCase()}-${props.config.WebAcl.Name}-${props.config.General.Stage}-Firewall${props.config.General.DeployHash ? "-"+props.config.General.DeployHash : ""}`,
addresses: addresses,
- ipAddressVersion: ipSet.IPAddressVersion,
+ ipAddressVersion: ipSet.ipAddressVersion,
scope: props.config.WebAcl.Scope,
- tags: ipSet.Tags ? ipSet.Tags : undefined
+ tags: ipSet.tags ? ipSet.tags : undefined
});
- ipSetsNames.push(ipSet.Name);
+ ipSetsNames.push(ipSet.name);
ipSets.push(cfnipset);
}
}
+ // --------------------------------------------------------------------
+
+ // --------------------------------------------------------------------
+ // ManagedRuleGroupsVersion
+ const managedRuleGroupVersionLambdaRole = new iam.Role(this, "managedRuleGroupVersionLambdaRole", {
+ assumedBy: new iam.ServicePrincipal("lambda.amazonaws.com"),
+ });
+ managedRuleGroupVersionLambdaRole.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName(
+ "service-role/AWSLambdaBasicExecutionRole",
+ ),);
+ const wafGetManagedRuleGroupVersion = new iam.PolicyStatement({
+ actions:["wafv2:ListAvailableManagedRuleGroupVersions"],
+ resources: ["*"]});
+
+ managedRuleGroupVersionLambdaRole.addToPolicy(wafGetManagedRuleGroupVersion);
+
+ const managedRuleGroupVersionLambda = new NodejsFunction.NodejsFunction(this, "managedRuleGroupVersionLambdaFunction", {
+ entry: path.join(__dirname, "../lib/lambda/ManagedRuleGRoupVersion/index.ts"),
+ handler: "handler",
+ timeout: cdk.Duration.seconds(30),
+ architecture:lambda.Architecture.ARM_64,
+ role: managedRuleGroupVersionLambdaRole,
+ memorySize: 128,
+ bundling: {
+ minify: true,
+ },
+ logRetention: logs.RetentionDays.TWO_WEEKS,
+ runtime: lambda.Runtime.NODEJS_18_X,
+ });
+
+ const managedRuleGroupVersionProvider = new cr.Provider(this, "CustomResourceProviderManagedRuleGroupVersionLambda", {
+ onEventHandler: managedRuleGroupVersionLambda
+ });
+
// --------------------------------------------------------------------
+
const preProcessRuleGroups = [];
const postProcessRuleGroups = [];
if (props.config.WebAcl.PreProcess.ManagedRuleGroups) {
- preProcessRuleGroups.push(...buildServiceDataManagedRgs(props.config.WebAcl.PreProcess.ManagedRuleGroups));
+ preProcessRuleGroups.push(...buildServiceDataManagedRgs(this, props.config.WebAcl.PreProcess.ManagedRuleGroups, managedRuleGroupVersionProvider, props.config.WebAcl.Scope));
} else {
console.log("\nβΉοΈ No ManagedRuleGroups defined in PreProcess.");
}
if (props.config.WebAcl.PostProcess.ManagedRuleGroups) {
- postProcessRuleGroups.push(...buildServiceDataManagedRgs(props.config.WebAcl.PostProcess.ManagedRuleGroups));
+ postProcessRuleGroups.push(...buildServiceDataManagedRgs(this, props.config.WebAcl.PostProcess.ManagedRuleGroups, managedRuleGroupVersionProvider, props.config.WebAcl.Scope));
} else {
console.log("βΉοΈ No ManagedRuleGroups defined in PostProcess.");
}
if (props.config.WebAcl.PreProcess.CustomRules) {
- const customRgs = buildServiceDataCustomRgs(this, "Pre", props.runtimeProperties.PreProcess.Capacity, props.config.General.DeployHash, props.config.WebAcl.Name, props.config.WebAcl.Scope, props.config.General.Stage, props.runtimeProperties.PreProcess, props.config.General.Prefix, props.config.WebAcl.PreProcess.CustomRules, props.config.WebAcl.PreProcess.CustomResponseBodies);
+ const customRgs = buildServiceDataCustomRgs(this, "Pre", props.runtimeProperties.PreProcess.Capacity, props.config.WebAcl.Name, props.config.WebAcl.Scope, props.config.General.Stage, props.runtimeProperties.PreProcess, props.config.General.Prefix, props.config.WebAcl.PreProcess.CustomRules, props.config.WebAcl.PreProcess.CustomResponseBodies, ipSets, props.config.General.DeployHash);
preProcessRuleGroups.push(...customRgs);
} else {
console.log("\nβΉοΈ No Custom Rules defined in PreProcess.");
}
if (props.config.WebAcl.PostProcess.CustomRules) {
- const customRgs = buildServiceDataCustomRgs(this, "Post", props.runtimeProperties.PostProcess.Capacity, props.config.General.DeployHash, props.config.WebAcl.Name, props.config.WebAcl.Scope, props.config.General.Stage, props.runtimeProperties.PostProcess, props.config.General.Prefix, props.config.WebAcl.PostProcess.CustomRules, props.config.WebAcl.PostProcess.CustomResponseBodies);
+ const customRgs = buildServiceDataCustomRgs(this, "Post", props.runtimeProperties.PostProcess.Capacity, props.config.WebAcl.Name, props.config.WebAcl.Scope, props.config.General.Stage, props.runtimeProperties.PostProcess, props.config.General.Prefix, props.config.WebAcl.PostProcess.CustomRules, props.config.WebAcl.PostProcess.CustomResponseBodies, ipSets, props.config.General.DeployHash);
postProcessRuleGroups.push(...customRgs);
} else {
console.log("\nβΉοΈ No Custom Rules defined in PostProcess.");
@@ -183,20 +208,14 @@ export class FirewallStack extends cdk.Stack {
remediationEnabled: props.config.WebAcl.RemediationEnabled ? props.config.WebAcl.RemediationEnabled : false,
resourceType: props.config.WebAcl.Type,
resourceTypeList: props.config.WebAcl.TypeList ? props.config.WebAcl.TypeList : undefined,
- policyName:
- props.config.General.Prefix.toUpperCase() +
- "-" +
- props.config.WebAcl.Name +
- "-" +
- props.config.General.Stage +
- "-" +
- props.config.General.DeployHash,
+ policyName: `${props.config.General.Prefix.toUpperCase()}-${props.config.WebAcl.Name}-${props.config.General.Stage}${props.config.General.DeployHash ? "-"+props.config.General.DeployHash : ""}`,
includeMap: props.config.WebAcl.IncludeMap,
excludeMap: props.config.WebAcl.ExcludeMap,
securityServicePolicyData: {
type: "WAFV2",
managedServiceData: cdk.Fn.sub(
- JSON.stringify(managedServiceData)
+ JSON.stringify(managedServiceData),
+ subVariables
),
},
resourcesCleanUp: props.config.WebAcl.ResourcesCleanUp ? props.config.WebAcl.ResourcesCleanUp : false,
@@ -216,52 +235,78 @@ export class FirewallStack extends cdk.Stack {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
new WafCloudWatchDashboard(this, "cloudwatch",props.config, MANAGEDRULEGROUPSINFO);
}
- const options = { flag: "w", force: true };
- void (async () => {
- try {
- if (process.env.PROCESS_PARAMETERS) {
- await fsp.writeFile(
- process.env.PROCESS_PARAMETERS,
- JSON.stringify(props.config, null, 2),
- options
- );
- }
- } catch (error) {
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
- console.log("Error " + error);
- }
- })();
}
}
+interface SubVariables {
+ [key: string]: string;
+}
+
const MANAGEDRULEGROUPSINFO: string[]= [""];
-function buildServiceDataManagedRgs(managedRuleGroups: ManagedRuleGroup[]) : ServiceDataManagedRuleGroup[] {
+const subVariables : SubVariables = {};
+
+function buildServiceDataManagedRgs(scope: Construct, managedRuleGroups: ManagedRuleGroup[], managedRuleGroupVersionProvider: cr.Provider, wafScope: string) : ServiceDataManagedRuleGroup[] {
const cfnManagedRuleGroup : ServiceDataManagedRuleGroup[] = [];
for (const managedRuleGroup of managedRuleGroups) {
- cfnManagedRuleGroup.push({
- managedRuleGroupIdentifier: {
- vendorName: managedRuleGroup.Vendor,
- managedRuleGroupName: managedRuleGroup.Name,
- version: managedRuleGroup.Version !== "" ? managedRuleGroup.Version : null,
- versionEnabled: managedRuleGroup.Version !== "" ? true : undefined,
- },
- overrideAction: managedRuleGroup.OverrideAction ? managedRuleGroup.OverrideAction : { type: "NONE" },
- ruleGroupArn: null,
-
- excludeRules: managedRuleGroup.ExcludeRules ? toAwsCamel(managedRuleGroup.ExcludeRules) : [],
- ruleGroupType: "ManagedRuleGroup",
-
- ruleActionOverrides: managedRuleGroup.RuleActionOverrides ? toAwsCamel(managedRuleGroup.RuleActionOverrides) : undefined,
- });
- let version ="";
- if(managedRuleGroup.Version !== ""){
- version = "**"+ managedRuleGroup.Version+"**";
+
+ if(NONEVERSIONEDMANAGEDRULEGRPOUP.find((rulegroup) => rulegroup === managedRuleGroup.name)){
+ console.log("\nβΉοΈ ManagedRuleGroup " + managedRuleGroup.name + " is not versioned. Skip Custom Resource for Versioning.");
+ cfnManagedRuleGroup.push({
+ managedRuleGroupIdentifier: {
+ vendorName: managedRuleGroup.vendor,
+ managedRuleGroupName: managedRuleGroup.name,
+ version: null,
+ versionEnabled: undefined,
+ },
+ overrideAction: managedRuleGroup.overrideAction ? managedRuleGroup.overrideAction : { type: "NONE" },
+ ruleGroupArn: null,
+ excludeRules: managedRuleGroup.excludeRules ? managedRuleGroup.excludeRules : [],
+ ruleGroupType: "ManagedRuleGroup",
+ ruleActionOverrides: managedRuleGroup.ruleActionOverrides ? managedRuleGroup.ruleActionOverrides : undefined,
+ });
+ MANAGEDRULEGROUPSINFO.push(managedRuleGroup.name+" ["+managedRuleGroup.vendor +"]");
+ continue;
+ }
+ else{
+ const crManagedRuleGroupanagedRuleGroupVersion = new cdk.CustomResource(scope, `Cr${managedRuleGroup.name}` , {
+ properties: {
+ VendorName: managedRuleGroup.vendor,
+ Name: managedRuleGroup.name,
+ Scope: wafScope,
+ ManagedRuleGroupVersion: managedRuleGroup.version,
+ Latest: managedRuleGroup.latestVersion ? managedRuleGroup.latestVersion : false
+ },
+ serviceToken: managedRuleGroupVersionProvider.serviceToken,
+ });
+ const cwVersion = "**"+ crManagedRuleGroupanagedRuleGroupVersion.getAttString("Version") +"**";
+ subVariables[managedRuleGroup.name] = crManagedRuleGroupanagedRuleGroupVersion.getAttString("Version");
+ const version = `\${${managedRuleGroup.name}}`;
+
+ // if a version is supplied, create an output
+ new cdk.CfnOutput(scope, `${managedRuleGroup.name}Version`, {
+ value: crManagedRuleGroupanagedRuleGroupVersion.getAttString("Version"),
+ description: `Version of ${managedRuleGroup.name} used in ${managedRuleGroup.name} RuleGroup`
+ });
+
+ cfnManagedRuleGroup.push({
+ managedRuleGroupIdentifier: {
+ vendorName: managedRuleGroup.vendor,
+ managedRuleGroupName: managedRuleGroup.name,
+ version,
+ versionEnabled: managedRuleGroup.versionEnabled ? true : undefined,
+ },
+ overrideAction: managedRuleGroup.overrideAction ? managedRuleGroup.overrideAction : { type: "NONE" },
+ ruleGroupArn: null,
+ excludeRules: managedRuleGroup.excludeRules ? managedRuleGroup.excludeRules : [],
+ ruleGroupType: "ManagedRuleGroup",
+ ruleActionOverrides: managedRuleGroup.ruleActionOverrides ? managedRuleGroup.ruleActionOverrides : undefined,
+ });
+ MANAGEDRULEGROUPSINFO.push(managedRuleGroup.name+" ["+managedRuleGroup.vendor +"] " + cwVersion);
}
- MANAGEDRULEGROUPSINFO.push(managedRuleGroup.Name+" ["+managedRuleGroup.Vendor +"] " + version);
}
return cfnManagedRuleGroup;
}
-function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capacity: number, deployHash: string, webaclName: string, webAclScope: string, stage: string, processRuntimeProps: ProcessProperties, prefix: string, ruleGroupSet: Rule[], customResponseBodies: CustomResponseBodies | undefined) : ServiceDataRuleGroup[] {
+function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capacity: number, webaclName: string, webAclScope: string, stage: string, processRuntimeProps: ProcessProperties, prefix: string, ruleGroupSet: Rule[], customResponseBodies: CustomResponseBodies | undefined, ipSets: cdk.aws_wafv2.CfnIPSet[],deployHash?: string) : ServiceDataRuleGroup[] {
const serviceDataRuleGroup : ServiceDataRuleGroup[] = [];
let icon;
if (type === "Pre") {
@@ -278,85 +323,44 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
if (capacity < 1500) {
const rules = [];
let count = 1;
- for (const statement of ruleGroupSet) {
+ for (const rule of ruleGroupSet) {
let rulename = "";
- if (statement.Name !== undefined) {
- rulename =
- statement.Name + "-" + type.toLocaleLowerCase() + "-" + deployHash;
- } else {
- rulename =
- webaclName +
- "-" +
- type.toLocaleLowerCase() +
- "-" +
- stage +
- "-" +
- count.toString() +
- "-" +
- deployHash;
- }
-
-
-
- // Add Fn::Sub for replacing IPSets logical name with its real ARN after deployment
- const subStatement = cloneDeep(statement.Statement);
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
- if (subStatement.IPSetReferenceStatement && !subStatement.IPSetReferenceStatement.ARN.startsWith("arn")) {
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
- subStatement.IPSetReferenceStatement.ARN = cdk.Fn.getAtt(subStatement.IPSetReferenceStatement.ARN+deployHash, "Arn");
- }
- let cfnRuleProperty;
- if ("Captcha" in statement.Action) {
- cfnRuleProperty = {
- name: rulename,
- priority: count,
-
- action: toAwsCamel(statement.Action),
- statement: toAwsCamel(subStatement),
- visibilityConfig: {
- sampledRequestsEnabled:
- statement.VisibilityConfig.SampledRequestsEnabled,
- cloudWatchMetricsEnabled:
- statement.VisibilityConfig.CloudWatchMetricsEnabled,
- metricName: rulename + "-metric",
- },
- captchaConfig: toAwsCamel(statement.CaptchaConfig),
- ruleLabels: toAwsCamel(statement.RuleLabels),
- };
+ if (rule.name !== undefined) {
+ rulename = `${rule.name}-${type.toLocaleLowerCase()}${deployHash ? "-"+deployHash : ""}`;
} else {
- cfnRuleProperty = {
- name: rulename,
- priority: count,
- action: toAwsCamel(statement.Action),
- statement: toAwsCamel(subStatement),
- visibilityConfig: {
- sampledRequestsEnabled:
- statement.VisibilityConfig.SampledRequestsEnabled,
- cloudWatchMetricsEnabled:
- statement.VisibilityConfig.CloudWatchMetricsEnabled,
- metricName: rulename + "-metric",
- },
- ruleLabels: toAwsCamel(statement.RuleLabels),
- };
+ rulename = `${webaclName}-${type.toLocaleLowerCase()}-${stage}-${count.toString()}${deployHash ? "-"+deployHash : ""}`;
}
+ // transform ipSetReferenceStatements
+ const statement = transformRuleStatements(rule, prefix, stage, ipSets);
+
+ const cfnRuleProperty = {
+ name: rulename,
+ priority: rule.priority,
+ action: rule.action,
+ statement,
+ captchaConfig: (Object.keys(rule.action)[0] === "captcha") ? rule.captchaConfig : undefined,
+ visibilityConfig: {
+ sampledRequestsEnabled:
+ rule.visibilityConfig.sampledRequestsEnabled,
+ cloudWatchMetricsEnabled:
+ rule.visibilityConfig.cloudWatchMetricsEnabled,
+ metricName: rule.visibilityConfig.metricName,
+ },
+ ruleLabels: rule.ruleLabels,
+ };
let cfnRuleProperties: wafv2.CfnRuleGroup.RuleProperty;
- if (statement.RuleLabels) {
- cfnRuleProperties = cfnRuleProperty;
+ if (rule.ruleLabels) {
+ cfnRuleProperties = cfnRuleProperty as wafv2.CfnWebACL.RuleProperty;
} else {
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-unsafe-assignment
const { ruleLabels, ...cfnRulePropertii } = cfnRuleProperty;
- cfnRuleProperties = cfnRulePropertii;
+ cfnRuleProperties = cfnRulePropertii as wafv2.CfnWebACL.RuleProperty;
}
rules.push(cfnRuleProperties);
count += 1;
}
- let name =
- webaclName +
- "-"+type.toLocaleLowerCase()+"-" +
- stage +
- "-" +
- deployHash;
+ let name = `${webaclName}-${type.toLocaleLowerCase()}-${stage}${deployHash ? "-"+deployHash : ""}`;
let rulegroupidentifier = type + "RuleGroup";
if (processRuntimeProps.DeployedRuleGroupCapacities[0]) {
if (
@@ -382,23 +386,9 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
}
if (
- processRuntimeProps.DeployedRuleGroupNames[0] ===
- webaclName +
- "-" +
- type.toLowerCase() +
- "-" +
- stage +
- "-" +
- deployHash
+ processRuntimeProps.DeployedRuleGroupNames[0] === `${webaclName}-${type.toLocaleLowerCase()}-${stage}${deployHash ? "-"+deployHash : ""}`
) {
- name =
- prefix.toUpperCase() +
- "-G" +
- webaclName +
- "-" +
- stage +
- "-" +
- deployHash;
+ name = `${prefix.toUpperCase()}-G${webaclName}-${type.toLocaleLowerCase()}-${stage}${deployHash ? "-"+deployHash : ""}`;
}
console.log(" π¬ New Name: " + name);
console.log(" π New Identifier: " + rulegroupidentifier);
@@ -406,14 +396,14 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
}
// Don't lowercase the first char of the Key of the Custom Response Body,
// only toAwsCamel the properties below the Key
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
let cstResBodies: { [key:string]: any} | undefined = {};
if(customResponseBodies) {
- cstResBodies = Object.keys(customResponseBodies).reduce((acc, curr) => { acc[curr] = toAwsCamel(customResponseBodies[curr]); return acc; }, cstResBodies);
+ cstResBodies = Object.keys(customResponseBodies).reduce((acc, curr) => { acc[curr] = customResponseBodies[curr]; return acc; }, cstResBodies);
}
else {
cstResBodies = undefined;
}
-
new wafv2.CfnRuleGroup(scope, rulegroupidentifier, {
capacity: processRuntimeProps.Capacity,
scope: webAclScope,
@@ -423,14 +413,7 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
visibilityConfig: {
sampledRequestsEnabled: false,
cloudWatchMetricsEnabled: false,
- metricName:
- prefix.toUpperCase() +
- "-" +
- webaclName +
- "-" +
- stage +
- "-" +
- deployHash,
+ metricName: `${prefix.toUpperCase()}-${webaclName}-${stage}${deployHash ? "-"+deployHash : ""}`,
},
});
serviceDataRuleGroup.push({
@@ -460,33 +443,28 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
value:
processRuntimeProps.DeployedRuleGroupNames.toString(),
description: type+"ProcessDeployedRuleGroupNames",
- exportName:
- type+"ProcessDeployedRuleGroupNames" +
- deployHash,
+ exportName: `${type}ProcessDeployedRuleGroupNames${deployHash ? "-"+deployHash : ""}`,
});
new cdk.CfnOutput(scope, type+"ProcessDeployedRuleGroupCapacities", {
value:
processRuntimeProps.DeployedRuleGroupCapacities.toString(),
description: type+"ProcessDeployedRuleGroupCapacities",
- exportName:
- type+"ProcessDeployedRuleGroupCapacities" +
- deployHash,
+ exportName: `${type}ProcessDeployedRuleGroupCapacities${deployHash ? "-"+deployHash : ""}`,
});
new cdk.CfnOutput(scope, type+"ProcessDeployedRuleGroupIdentifier", {
value:
processRuntimeProps.DeployedRuleGroupIdentifier.toString(),
description: type+"ProcessDeployedRuleGroupIdentifier",
- exportName:
- type+"ProcessDeployedRuleGroupIdentifier" +
- deployHash,
+ exportName: `${type}ProcessDeployedRuleGroupIdentifier${deployHash ? "-"+deployHash : ""}`,
});
} else {
const threshold = 1500;
const rulesets: any[] = [];
const indexes: number[] = [];
const rulegroupcapacities = [];
+ //ORDER BY Priority DESC
while (
indexes.length < processRuntimeProps.RuleCapacities.length
) {
@@ -518,16 +496,7 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
processRuntimeProps.DeployedRuleGroupCapacities[count]
) {
rulegroupidentifier = type + "R" + count.toString();
- name =
- webaclName +
- "-" +
- type.toLocaleLowerCase() +
- "-" +
- stage +
- "-" +
- count.toString() +
- "-" +
- deployHash;
+ name = `${webaclName}-${type.toLocaleLowerCase()}-${stage}-${count.toString()}${deployHash ? "-"+deployHash : ""}`;
} else {
console.log(
"\nβοΈ Deploy new RuleGroup because the Capacity has changed for " +
@@ -550,32 +519,11 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
if (
processRuntimeProps.DeployedRuleGroupNames[
count
- ] ===
- webaclName +
- "-" +
- stage +
- "-" +
- count.toString() +
- "-" +
- deployHash
+ ] === `${webaclName}-${type.toLocaleLowerCase()}-${stage}-${count.toString()}${deployHash ? "-"+deployHash : ""}`
) {
- name =
- webaclName +
- "-" +
- stage +
- "-"+ type.toLocaleLowerCase() + "R-" +
- count.toString() +
- "-" +
- deployHash;
+ name = `${prefix.toUpperCase()}-G${webaclName}-${type.toLocaleLowerCase()}-${stage}-${count.toString()}${deployHash ? "-"+deployHash : ""}`;
} else {
- name =
- webaclName +
- "-" +
- stage +
- "-"+ type.toLocaleLowerCase() +"-" +
- count.toString() +
- "-" +
- deployHash;
+ name = `${webaclName}-${type.toLocaleLowerCase()}-${stage}-${count.toString()}${deployHash ? "-"+deployHash : ""}`;
}
console.log(" π¬ New Name: " + name);
}
@@ -597,114 +545,51 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
}
} else {
rulegroupidentifier = type + "R" + count.toString();
- name =
- webaclName +
- "-" +
- stage +
- "-" +
- count.toString() +
- "-" +
- deployHash;
+ name = `${webaclName}-${stage}-${count.toString()}${deployHash ? "-"+deployHash : ""}`;
}
const cfnRuleProperties = [];
let rulegroupcounter = 0;
-
while (rulegroupcounter < rulesets[count].length) {
-
const statementindex = rulesets[count][rulegroupcounter];
let rulename = "";
if (
-
ruleGroupSet[statementindex]
- .Name !== undefined
+ .name !== undefined
) {
const tempHash = Date.now().toString(36);
rulename =
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands, @typescript-eslint/no-unsafe-member-access
ruleGroupSet[statementindex]
- .Name +
+ .name +
"-" +
tempHash;
} else {
- rulename =
- webaclName +
- "-" +
- stage +
- "-"+type.toLocaleLowerCase()+"-" +
- rulegroupcounter.toString() +
- "-" +
- deployHash;
+ rulename = `${webaclName}-${stage}-${type.toLocaleLowerCase()}-${rulegroupcounter.toString()}${deployHash ? "-"+deployHash : ""}`;
}
- let cfnRuleProperty;
-
- // Add Fn::Sub for replacing IPSets logical name with its real ARN after deployment
- const subStatement = cloneDeep(ruleGroupSet[statementindex].Statement);
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
- if (subStatement.IPSetReferenceStatement && !subStatement.IPSetReferenceStatement.ARN.startsWith("arn")) {
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
- subStatement.IPSetReferenceStatement.ARN = cdk.Fn.getAtt(subStatement.IPSetReferenceStatement.ARN+deployHash, "Arn");
- }
-
- if (
- "Captcha" in
- ruleGroupSet[statementindex]
- .Action
- ) {
- cfnRuleProperty = {
- name: rulename,
- priority: rulegroupcounter,
- action: toAwsCamel(
- ruleGroupSet[statementindex]
- .Action
- ),
- statement: toAwsCamel(subStatement),
- visibilityConfig: {
- sampledRequestsEnabled:
- ruleGroupSet[statementindex]
- .VisibilityConfig.SampledRequestsEnabled,
- cloudWatchMetricsEnabled:
- ruleGroupSet[statementindex]
- .VisibilityConfig.CloudWatchMetricsEnabled,
- metricName: rulename + "-metric",
- },
- captchaConfig: toAwsCamel(
- ruleGroupSet[statementindex]
- .CaptchaConfig
- ),
- ruleLabels: toAwsCamel(
- ruleGroupSet[statementindex]
- .RuleLabels
- ),
- };
- } else {
- cfnRuleProperty = {
- name: rulename,
- priority: rulegroupcounter,
- action: toAwsCamel(
+ const statement = transformRuleStatements(ruleGroupSet[statementindex],prefix, stage, ipSets);
+ const cfnRuleProperty = {
+ name: rulename,
+ priority: ruleGroupSet[statementindex].priority,
+ action: ruleGroupSet[statementindex].action,
+ statement,
+ visibilityConfig: {
+ sampledRequestsEnabled:
ruleGroupSet[statementindex]
- .Action
- ),
- statement: toAwsCamel(subStatement),
- visibilityConfig: {
- sampledRequestsEnabled:
- ruleGroupSet[statementindex]
- .VisibilityConfig.SampledRequestsEnabled,
- cloudWatchMetricsEnabled:
- ruleGroupSet[statementindex]
- .VisibilityConfig.CloudWatchMetricsEnabled,
- metricName: rulename + "-metric",
- },
- ruleLabels: toAwsCamel(
+ .visibilityConfig.sampledRequestsEnabled,
+ cloudWatchMetricsEnabled:
ruleGroupSet[statementindex]
- .RuleLabels
- ),
- };
- }
+ .visibilityConfig.cloudWatchMetricsEnabled,
+ metricName: ruleGroupSet[statementindex].visibilityConfig.metricName,
+ },
+ captchaConfig: (Object.keys(ruleGroupSet[statementindex]
+ .action)[0] === "captcha") ? ruleGroupSet[statementindex].captchaConfig : undefined,
+ ruleLabels: ruleGroupSet[statementindex].ruleLabels,
+ };
let cfnRuleProperti: wafv2.CfnRuleGroup.RuleProperty;
if (
ruleGroupSet[statementindex]
- .RuleLabels
+ .ruleLabels
) {
cfnRuleProperti = cfnRuleProperty;
} else {
@@ -716,11 +601,9 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
rulegroupcounter++;
}
- // Don't lowercase the first char of the Key of the Custom Response Body,
- // only toAwsCamel the properties below the Key
let cstResBodies: { [key:string]: any} | undefined = {};
if(customResponseBodies) {
- cstResBodies = Object.keys(customResponseBodies).reduce((acc, curr) => { acc[curr] = toAwsCamel(customResponseBodies[curr]); return acc; }, cstResBodies);
+ cstResBodies = Object.keys(customResponseBodies).reduce((acc, curr) => { acc[curr] = customResponseBodies[curr]; return acc; }, cstResBodies);
}
else {
cstResBodies = undefined;
@@ -735,7 +618,7 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
visibilityConfig: {
sampledRequestsEnabled: false,
cloudWatchMetricsEnabled: false,
- metricName: name + "-metric",
+ metricName: name,
},
});
@@ -771,28 +654,80 @@ function buildServiceDataCustomRgs(scope: Construct, type: "Pre" | "Post", capac
value:
processRuntimeProps.DeployedRuleGroupNames.toString(),
description: type+"ProcessDeployedRuleGroupNames",
- exportName:
- type+"ProcessDeployedRuleGroupNames" +
- deployHash,
+ exportName: `${type}ProcessDeployedRuleGroupNames${deployHash ? "-"+deployHash : ""}`,
});
new cdk.CfnOutput(scope, type+"ProcessDeployedRuleGroupCapacities", {
value:
processRuntimeProps.DeployedRuleGroupCapacities.toString(),
description: type+"ProcessDeployedRuleGroupCapacities",
- exportName:
- type+"ProcessDeployedRuleGroupCapacities" +
- deployHash,
+ exportName: `${type}ProcessDeployedRuleGroupCapacities${deployHash ? "-"+deployHash : ""}`,
});
new cdk.CfnOutput(scope, type+"ProcessDeployedRuleGroupIdentifier", {
value:
processRuntimeProps.DeployedRuleGroupIdentifier.toString(),
description: type+"ProcessDeployedRuleGroupIdentifier",
- exportName:
- type+"ProcessDeployedRuleGroupIdentifier" +
- deployHash,
+ exportName: `${type}ProcessDeployedRuleGroupIdentifier${deployHash ? "-"+deployHash : ""}`,
});
}
return serviceDataRuleGroup;
+}
+
+function getActualIpReferenceStatementInStatement(ipSetReferenceStatement: wafv2.CfnWebACL.IPSetReferenceStatementProperty, prefix: string, stage: string, ipSets: cdk.aws_wafv2.CfnIPSet[]) {
+ let actualIpSetReferenceStatement: wafv2.CfnWebACL.IPSetReferenceStatementProperty;
+ if (ipSetReferenceStatement.arn.startsWith("arn")) {
+ actualIpSetReferenceStatement = ipSetReferenceStatement;
+ } else {
+ const foundIpSet = ipSets.find((ipSet) => ipSet.name === `${prefix}-${stage}-${ipSetReferenceStatement.arn}`);
+ if (foundIpSet === undefined) throw new Error(`IPSet ${ipSetReferenceStatement.arn} not found in stack`);
+ actualIpSetReferenceStatement = {
+ arn: cdk.Fn.getAtt(foundIpSet.logicalId, "Arn").toString(),
+ ipSetForwardedIpConfig: ipSetReferenceStatement.ipSetForwardedIpConfig
+ };
+ }
+ const statement : wafv2.CfnWebACL.StatementProperty = {
+ ipSetReferenceStatement: actualIpSetReferenceStatement
+ };
+ return statement;
+}
+
+function transformRuleStatements(rule: Rule, prefix: string, stage: string, ipSets: cdk.aws_wafv2.CfnIPSet[]) {
+ const ipSetReferenceStatement = rule.statement.ipSetReferenceStatement as wafv2.CfnWebACL.IPSetReferenceStatementProperty | undefined;
+
+ const andStatement = rule.statement.andStatement as wafv2.CfnWebACL.AndStatementProperty | undefined;
+
+ if (andStatement) {
+ const statements = andStatement.statements as cdk.aws_wafv2.CfnWebACL.StatementProperty[];
+ for (let i=0; i => {
+ let ManagedVersionInfo: ManagedRuleGroupVersionResponse;
+ let ParamVersion: string | undefined;
+ let Latest: boolean | undefined;
+ console.log("Lambda is invoked with:" + JSON.stringify(event) +"-"+ JSON.stringify(context));
+
+ const response: CdkCustomResourceResponse = {
+ StackId: event.StackId,
+ RequestId: event.RequestId,
+ LogicalResourceId: event.LogicalResourceId,
+ PhysicalResourceId: `${event.ResourceProperties.Name}-version`,
+ };
+
+ if (event.RequestType === "Delete") {
+ response.Status = "SUCCESS";
+ response.Data = { Result: "Delete Event" };
+ return response;
+ }
+ console.log(`π Searching Managed Rule Version for: \n π¬ ${event.ResourceProperties.VendorName} \n π·οΈ ${event.ResourceProperties.Name} \n π ${event.ResourceProperties.Scope}`);
+ if (event.RequestType === "Update") {
+ console.log("π Update Event");
+ event.OldResourceProperties.Version === "" ? ParamVersion = undefined : ParamVersion = event.OldResourceProperties.Version;
+ }
+ try {
+ event.ResourceProperties.ManagedRuleGroupVersion === "" ? ParamVersion = undefined : ParamVersion = event.ResourceProperties.ManagedRuleGroupVersion;
+ event.ResourceProperties.Latest === undefined ? Latest = undefined : Latest = event.ResourceProperties.Latest;
+ ManagedVersionInfo = await getManagedRuleGroupVersion(event.ResourceProperties.VendorName, event.ResourceProperties.Name, event.ResourceProperties.Scope, ParamVersion, Latest);
+ if(ManagedVersionInfo.State === "SUCCESS"){
+ response.Status = "SUCCESS";
+ response.Data = { Version: ManagedVersionInfo.Version, Result: ManagedVersionInfo.Description };
+ return response;
+ }
+ else{
+ response.Status = "FAILED";
+ response.Data = { Result: ManagedVersionInfo.Description };
+ return response;
+ }
+ }
+ catch (error) {
+ console.log(`β Error: ${error}`);
+ if (error instanceof Error) {
+ response.Reason = error.message;
+ }
+ response.Status = "FAILED";
+ response.Data = { Result: error };
+ return response;
+ }
+};
\ No newline at end of file
diff --git a/lib/lambda/ManagedRuleGroupVersion/services/waf.ts b/lib/lambda/ManagedRuleGroupVersion/services/waf.ts
new file mode 100644
index 00000000..87e1453d
--- /dev/null
+++ b/lib/lambda/ManagedRuleGroupVersion/services/waf.ts
@@ -0,0 +1,76 @@
+/* eslint-disable @typescript-eslint/naming-convention */
+import { WAFV2Client, ListAvailableManagedRuleGroupVersionsCommand} from "@aws-sdk/client-wafv2";
+import {ManagedRuleGroupVersionResponse, PaginatedManagedRuleGroupVersions} from "../types/index";
+
+
+async function getManagedRuleGroupVersions(VendorName: string,Name: string,Scope: string): Promise {
+
+ const client = new WAFV2Client({region: process.env.AWS_DEFAULT_REGION});
+ const allresponse: PaginatedManagedRuleGroupVersions = {Versions: [], CurrentDefaultVersion: "", Error: ""};
+ const input = {
+ VendorName,
+ Name,
+ Scope
+ };
+ const command : ListAvailableManagedRuleGroupVersionsCommand = new ListAvailableManagedRuleGroupVersionsCommand(input);
+ let throttled = false;
+ do {
+ try {
+ const response = await client.send(command);
+ console.log(response);
+ if(response.Versions){
+ allresponse.Versions.push(...response.Versions);
+ }
+ if(response.CurrentDefaultVersion){
+ allresponse.CurrentDefaultVersion = response.CurrentDefaultVersion;
+ }}
+ catch(error: unknown){
+ if (error instanceof Error) {
+ if(error.name.toLocaleLowerCase() === "throttlingexception"){
+ throttled = true;
+ console.log("β±οΈ Throttled - waiting 1 second");
+ await new Promise(r => setTimeout(r, 1000));
+ } else {
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
+ console.log(`β Error: ${error}`);
+ console.log(error.message);
+ console.log(error.name);
+ allresponse.Error = error.message;
+ throttled = false;
+ }
+ }
+ }
+ } while (throttled);
+ return allresponse;
+}
+
+
+export async function getManagedRuleGroupVersion(VendorName: string,Name: string,Scope: string, ParamVersion?: string, Latest?: boolean): Promise {
+ const managerulegroupVersions = await getManagedRuleGroupVersions(VendorName,Name,Scope);
+ if(ParamVersion && managerulegroupVersions.Versions){
+ console.log("π§ͺ Version to check: " + ParamVersion);
+ if(managerulegroupVersions.Versions.filter((MgnVersion) => MgnVersion.Name === ParamVersion)){
+ console.log(`β
Version found - ${ParamVersion} is valid`);
+ return {Version: ParamVersion, State: "SUCCESS", Description: "Specified Version is valid"};
+ }else{
+ console.log("β Specified version not found");
+ return {Version: ParamVersion, State: "FAILED", Description: "Specified Version not found"};
+ }
+ }
+ if(Latest && managerulegroupVersions.CurrentDefaultVersion){
+ console.log("β
Latest version is: " + managerulegroupVersions.CurrentDefaultVersion);
+ return {Version: managerulegroupVersions.CurrentDefaultVersion, State: "SUCCESS", Description: "Version found"};
+ }
+ if(managerulegroupVersions.CurrentDefaultVersion){
+ console.log("β
Latest version is: " + managerulegroupVersions.CurrentDefaultVersion);
+ return {Version: managerulegroupVersions.CurrentDefaultVersion, State: "SUCCESS", Description: "Version found"};
+ }
+ if(managerulegroupVersions.Error){
+ console.log("β Error: " + managerulegroupVersions.Error);
+ return {Version: "", State: "FAILED", Description: managerulegroupVersions.Error};
+ }
+ else{
+ console.log("β Error: Managed Rule Group without Version found");
+ return {Version: "", State: "FAILED", Description: "No Version found"};
+ }
+}
\ No newline at end of file
diff --git a/lib/lambda/ManagedRuleGroupVersion/types/index.ts b/lib/lambda/ManagedRuleGroupVersion/types/index.ts
new file mode 100644
index 00000000..f1f9cf48
--- /dev/null
+++ b/lib/lambda/ManagedRuleGroupVersion/types/index.ts
@@ -0,0 +1,14 @@
+import {ManagedRuleGroupVersion} from "@aws-sdk/client-wafv2";
+export interface ManagedRuleGroupVersionResponse {
+ Version: string,
+ State: "FAILED" | "SUCCESS",
+ Description: string,
+}
+
+
+export interface PaginatedManagedRuleGroupVersions {
+ Versions: ManagedRuleGroupVersion[],
+ CurrentDefaultVersion: string,
+ Error: string,
+}
+
diff --git a/lib/tools/config-validator.ts b/lib/tools/config-validator.ts
index 4d706a4d..824a1380 100644
--- a/lib/tools/config-validator.ts
+++ b/lib/tools/config-validator.ts
@@ -1,33 +1,4 @@
-import Ajv, {JSONSchemaType} from "ajv";
-import { Config , Prerequisites} from "../types/config";
-import { resolve } from "path";
-import * as TJS from "typescript-json-schema";
-
-const settings: TJS.PartialArgs = {
- required: true,
- noExtraProps: true
-};
-
-const compilerOptions: TJS.CompilerOptions = {
- strictNullChecks: true,
-};
-
-const program = TJS.getProgramFromFiles(
- [resolve("lib/types/config.ts")],
- compilerOptions
-);
-
-const wafschema = TJS.generateSchema(program, "Config", settings);
-
-const prerequisitesschema = TJS.generateSchema(program, "Prerequisites", settings);
-
-
-const ajv = new Ajv();
-
-export const validateWaf = ajv.compile(wafschema as JSONSchemaType);
-
-export const validatePrerequisites = ajv.compile(prerequisitesschema as JSONSchemaType);
-
+import { Config } from "../types/config";
/**
* The function will check if s3 bucket is Parameter is starting with aws-waf-logs- if Logging Configuration is set to S3
diff --git a/lib/tools/generate-prerequisites-skeleton.ts b/lib/tools/generate-prerequisites-skeleton.ts
deleted file mode 100644
index d38ffc10..00000000
--- a/lib/tools/generate-prerequisites-skeleton.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Prerequisites } from "../types/config";
-
-const prerequisitesConfig : Prerequisites = {
- General: {
- Prefix: "myPrefix",
- },
- "Logging": {
- "BucketProperties": {
- "BucketName": "aws-firewall-factory-logs",
- "KmsEncryptionKey": true,
- "ObjectLock": {
- "Days": 5,
- "Mode": "GOVERNANCE"
- }
- },
- "FireHoseKey": {
- "KeyAlias": "aws-firewall-factory-firehosekey"
- },
- "CrossAccountIdforPermissions": "123456789012",
- }
-};
-
-console.log(JSON.stringify(prerequisitesConfig, null, 2));
\ No newline at end of file
diff --git a/lib/tools/generate-skeleton.ts b/lib/tools/generate-skeleton.ts
index b0618840..d240bead 100644
--- a/lib/tools/generate-skeleton.ts
+++ b/lib/tools/generate-skeleton.ts
@@ -1,8 +1,13 @@
import { Config } from "../types/config";
+import util from "util";
+import { outputInfoBanner } from "./helpers";
+
+/**
+ * The script will output a example WAF Skeleton Config to the terminal
+ */
const skeletonConfig : Config = {
General: {
- DeployHash: "",
FireHoseKeyArn: "",
Prefix: "myPrefix",
Stage: "dev|int|clone|live",
@@ -20,16 +25,16 @@ const skeletonConfig : Config = {
PreProcess: {
ManagedRuleGroups: [
{
- Vendor: "AWS",
- Name: "AWSManagedRulesAmazonIpReputationList",
- Capacity: 25,
- Version: ""
+ vendor: "AWS",
+ name: "AWSManagedRulesAmazonIpReputationList",
+ capacity: 25,
+ version: ""
},
{
- Vendor: "AWS",
- Name: "AWSManagedRulesCommonRuleSet",
- Capacity: 700,
- Version: "",
+ vendor: "AWS",
+ name: "AWSManagedRulesCommonRuleSet",
+ capacity: 700,
+ version: "",
}
]
},
@@ -41,4 +46,8 @@ const skeletonConfig : Config = {
}
};
-console.log(JSON.stringify(skeletonConfig, null, 2));
\ No newline at end of file
+outputInfoBanner();
+console.log("βΉοΈ Use the following snippet to create a skeleton config file for your Firewall. βΉοΈ\n");
+console.log("import { Config } from \"../../lib/types/config\";\nexport const config: Config = {");
+console.log(util.inspect(skeletonConfig, false, null, true));
+console.log("};");
\ No newline at end of file
diff --git a/lib/tools/get-owasp-top10-waf.ts b/lib/tools/get-owasp-top10-waf.ts
deleted file mode 100644
index 97f29ae7..00000000
--- a/lib/tools/get-owasp-top10-waf.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import { Config } from "../types/config";
-
-const owasptop10Config : Config = {
- General: {
- DeployHash: "",
- FireHoseKeyArn: "",
- Prefix: "myPrefix",
- Stage: "dev|int|clone|live",
- S3LoggingBucketName: "myBucketName",
- SecuredDomain: ["yourapp.."],
- CreateDashboard: true,
- LoggingConfiguration: "Firehose",
- },
- WebAcl: {
- IncludeMap: {
- account: ["123456789123"]
- },
- Name: "myWAF-Name",
- PreProcess: {
- ManagedRuleGroups: [
- {
- "Vendor": "AWS",
- "Name": "AWSManagedRulesAmazonIpReputationList",
- "Version": "",
- "Capacity": 25
- },
- {
- "Vendor": "AWS",
- "Name": "AWSManagedRulesAnonymousIpList",
- "Version": "",
- "Capacity": 50
- },
- {
- "Vendor": "AWS",
- "Name": "AWSManagedRulesBotControlRuleSet",
- "Version": "",
- "Capacity": 50
- },
- {
- "Vendor": "AWS",
- "Name": "AWSManagedRulesCommonRuleSet",
- "Version": "",
- "Capacity": 700
- },
- {
- "Vendor": "AWS",
- "Name": "AWSManagedRulesKnownBadInputsRuleSet",
- "Version": "",
- "Capacity": 200
- },
- {
- "Vendor": "AWS",
- "Name": "AWSManagedRulesSQLiRuleSet",
- "Version": "",
- "Capacity": 200
- }
- ]
- },
- PostProcess: {
-
- },
- Scope: "REGIONAL",
- Type: "AWS::ElasticLoadBalancingV2::LoadBalancer"
- }
-};
-
-console.log(JSON.stringify(owasptop10Config, null, 2));
\ No newline at end of file
diff --git a/lib/tools/helpers.ts b/lib/tools/helpers.ts
index 8f7de33e..5f19e854 100644
--- a/lib/tools/helpers.ts
+++ b/lib/tools/helpers.ts
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/restrict-template-expressions */
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/no-unsafe-call */
/* eslint-disable @typescript-eslint/no-unsafe-argument */
@@ -5,17 +6,19 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-return */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
-import { WAFV2Client, CheckCapacityCommand, CheckCapacityCommandInput, DescribeManagedRuleGroupCommand, DescribeManagedRuleGroupCommandInput, ListAvailableManagedRuleGroupVersionsCommand, ListAvailableManagedRuleGroupVersionsCommandInput } from "@aws-sdk/client-wafv2";
+import { WAFV2Client, CheckCapacityCommand, CheckCapacityCommandInput, DescribeManagedRuleGroupCommand, DescribeManagedRuleGroupCommandInput, ListAvailableManagedRuleGroupVersionsCommand, Rule as SdkRule, ListAvailableManagedRuleGroupVersionsCommandInput} from "@aws-sdk/client-wafv2";
import * as quota from "@aws-sdk/client-service-quotas";
import * as cloudformation from "@aws-sdk/client-cloudformation";
+import { aws_wafv2 as wafv2 } from "aws-cdk-lib";
import { FMSClient, ListPoliciesCommand, ListPoliciesCommandInput } from "@aws-sdk/client-fms";
-import { Rule } from "../types/fms";
import * as lodash from "lodash";
import { RuntimeProperties } from "../types/runtimeprops";
import { Config } from "../types/config";
+import { Rule as FmsRule } from "../types/fms";
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires
import cfonts = require("cfonts");
import * as packageJsonObject from "../../package.json";
+import {transformCdkRuletoSdkRule} from "./transformer";
/**
* Service Quota Code for Firewall Manager Total WAF WCU in account & region
@@ -48,11 +51,11 @@ async function getPolicyCount(deploymentRegion: string): Promise {
* @param rules rules for which you want to calculate the capacity
* @returns the total capacity of the supplied rules
*/
-async function getTotalCapacityOfRules(deploymentRegion: string, scope: "REGIONAL" | "CLOUDFRONT", rules: Rule[]): Promise {
+async function getTotalCapacityOfRules(deploymentRegion: string, scope: "REGIONAL" | "CLOUDFRONT", rules: SdkRule[]): Promise {
const client = new WAFV2Client({ region: deploymentRegion });
const input: CheckCapacityCommandInput = {
Scope: scope,
- Rules: convertPropValuesToUint8Array(rules, "SearchString")
+ Rules: rules,
};
const command = new CheckCapacityCommand(input);
const response : any = await client.send(command);
@@ -177,64 +180,62 @@ export async function getcurrentManagedRuleGroupVersion(deploymentRegion: string
* @param config the config object from the values json
*/
export async function setOutputsFromStack(deploymentRegion: string, runtimeprops: RuntimeProperties, config: Config): Promise{
- const stackName =
- config.General.Prefix.toUpperCase() +
- "-WAF-" +
- config.WebAcl.Name.toUpperCase() +
- "-" +
- config.General.Stage.toUpperCase() +
- "-" +
- config.General.DeployHash.toUpperCase();
-
+ const stackName = `${config.General.Prefix.toUpperCase()}-WAF-${config.WebAcl.Name.toUpperCase()}-${config.General.Stage.toUpperCase()}${config.General.DeployHash ? "-"+config.General.DeployHash.toUpperCase() : ""}`;
const cloudformationClient = new cloudformation.CloudFormationClient({ region: deploymentRegion });
const params ={
StackName: stackName
};
const command = new cloudformation.DescribeStacksCommand(params);
- const responsestack = await cloudformationClient.send(command);
- if(responsestack.Stacks?.[0].StackName && responsestack.Stacks?.[0].Outputs !== undefined){
- for(const output of responsestack.Stacks?.[0]?.Outputs ?? []){
- if(output.OutputKey === "DeployedRuleGroupNames")
- {
- runtimeprops.PreProcess.DeployedRuleGroupNames = output.OutputValue?.split(",",output.OutputValue?.length) || [];
- }
- else if(output.OutputKey === "DeployedRuleGroupIdentifier")
- {
- runtimeprops.PreProcess.DeployedRuleGroupIdentifier = output.OutputValue?.split(",",output.OutputValue?.length) || [];
- }
- else if(output.OutputKey === "DeployedRuleGroupCapacities")
- {
- const arrayOfNumbers = output.OutputValue?.split(",",output.OutputValue?.length).map(Number) || [];
- runtimeprops.PreProcess.DeployedRuleGroupCapacities = arrayOfNumbers;
- }
- if(output.OutputKey === "PreProcessDeployedRuleGroupNames")
- {
- runtimeprops.PreProcess.DeployedRuleGroupNames = output.OutputValue?.split(",",output.OutputValue?.length) || [];
- }
- else if(output.OutputKey === "PreProcessDeployedRuleGroupIdentifier")
- {
- runtimeprops.PreProcess.DeployedRuleGroupIdentifier = output.OutputValue?.split(",",output.OutputValue?.length) || [];
- }
- else if(output.OutputKey === "PreProcessDeployedRuleGroupCapacities")
- {
- const arrayOfNumbers = output.OutputValue?.split(",",output.OutputValue?.length).map(Number) || [];
- runtimeprops.PreProcess.DeployedRuleGroupCapacities = arrayOfNumbers;
- }
- if(output.OutputKey === "PostProcessDeployedRuleGroupNames")
- {
- runtimeprops.PostProcess.DeployedRuleGroupNames = output.OutputValue?.split(",",output.OutputValue?.length) || [];
- }
- else if(output.OutputKey === "PostProcessDeployedRuleGroupIdentifier")
- {
- runtimeprops.PostProcess.DeployedRuleGroupIdentifier = output.OutputValue?.split(",",output.OutputValue?.length) || [];
- }
- else if(output.OutputKey === "PostProcessDeployedRuleGroupCapacities")
- {
- const arrayOfNumbers = output.OutputValue?.split(",",output.OutputValue?.length).map(Number) || [];
- runtimeprops.PostProcess.DeployedRuleGroupCapacities = arrayOfNumbers;
+ try{
+ const responsestack = await cloudformationClient.send(command);
+ console.log("π« Get Outputs from existing CloudFormation Stack.\n");
+ if(responsestack.Stacks?.[0].StackName && responsestack.Stacks?.[0].Outputs !== undefined){
+ for(const output of responsestack.Stacks?.[0]?.Outputs ?? []){
+ if(output.OutputKey === "DeployedRuleGroupNames")
+ {
+ runtimeprops.PreProcess.DeployedRuleGroupNames = output.OutputValue?.split(",",output.OutputValue?.length) || [];
+ }
+ else if(output.OutputKey === "DeployedRuleGroupIdentifier")
+ {
+ runtimeprops.PreProcess.DeployedRuleGroupIdentifier = output.OutputValue?.split(",",output.OutputValue?.length) || [];
+ }
+ else if(output.OutputKey === "DeployedRuleGroupCapacities")
+ {
+ const arrayOfNumbers = output.OutputValue?.split(",",output.OutputValue?.length).map(Number) || [];
+ runtimeprops.PreProcess.DeployedRuleGroupCapacities = arrayOfNumbers;
+ }
+ if(output.OutputKey === "PreProcessDeployedRuleGroupNames")
+ {
+ runtimeprops.PreProcess.DeployedRuleGroupNames = output.OutputValue?.split(",",output.OutputValue?.length) || [];
+ }
+ else if(output.OutputKey === "PreProcessDeployedRuleGroupIdentifier")
+ {
+ runtimeprops.PreProcess.DeployedRuleGroupIdentifier = output.OutputValue?.split(",",output.OutputValue?.length) || [];
+ }
+ else if(output.OutputKey === "PreProcessDeployedRuleGroupCapacities")
+ {
+ const arrayOfNumbers = output.OutputValue?.split(",",output.OutputValue?.length).map(Number) || [];
+ runtimeprops.PreProcess.DeployedRuleGroupCapacities = arrayOfNumbers;
+ }
+ if(output.OutputKey === "PostProcessDeployedRuleGroupNames")
+ {
+ runtimeprops.PostProcess.DeployedRuleGroupNames = output.OutputValue?.split(",",output.OutputValue?.length) || [];
+ }
+ else if(output.OutputKey === "PostProcessDeployedRuleGroupIdentifier")
+ {
+ runtimeprops.PostProcess.DeployedRuleGroupIdentifier = output.OutputValue?.split(",",output.OutputValue?.length) || [];
+ }
+ else if(output.OutputKey === "PostProcessDeployedRuleGroupCapacities")
+ {
+ const arrayOfNumbers = output.OutputValue?.split(",",output.OutputValue?.length).map(Number) || [];
+ runtimeprops.PostProcess.DeployedRuleGroupCapacities = arrayOfNumbers;
+ }
}
}
}
+ catch (e){
+ console.log("π Creating new CloudFormation Stack.\n");
+ }
}
/**
@@ -248,158 +249,24 @@ async function calculateCapacities(
deploymentRegion: string,
runtimeProperties: RuntimeProperties
): Promise {
-
- let count = 0;
console.log("\nπ Get CustomRule Capacity:");
if (!config.WebAcl.PreProcess.CustomRules) {
console.log(
"\n β Skip Rule Capacity Calculation for PreProcess Custom Rules."
);
} else {
- while (count < config.WebAcl.PreProcess.CustomRules.length) {
- // Manually calculate and return capacity if rule has a ipset statements with a logical ID entry (e.g. ${IPsString.Arn})
- // This means the IPSet will be created by this repo, maybe it doesn't exists yet. That fails this function. That's why the code below is needed.
- const ipSetReferenceStatement = config.WebAcl.PreProcess.CustomRules[count].Statement.IPSetReferenceStatement;
- if(ipSetReferenceStatement && !ipSetReferenceStatement.ARN.startsWith("arn:aws:")) {
- runtimeProperties.PreProcess.CustomRuleCount += 1;
- if("Captcha" in config.WebAcl.PreProcess.CustomRules[count].Action) runtimeProperties.PreProcess.CustomCaptchaRuleCount += 1;
- // Capacity for IPSet statements:
- // "WCUs β 2 WCU for most. If you configure the statement to use forwarded IP addresses and specify a position of ANY, increase the WCU usage by 4."
- // https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-ipset-match.html
- let ipSetRuleCapacity = 2;
- if(ipSetReferenceStatement.IPSetForwardedIPConfig?.Position === "ANY") ipSetRuleCapacity += 4;
- runtimeProperties.PreProcess.RuleCapacities.push(ipSetRuleCapacity);
-
- count++;
- continue;
- }
- runtimeProperties.PreProcess.CustomRuleCount += 1;
- if ("Captcha" in config.WebAcl.PreProcess.CustomRules[count].Action) {
- runtimeProperties.PreProcess.CustomCaptchaRuleCount += 1;
- const rules : Rule[] = [];
- const { CloudWatchMetricsEnabled: cloudWatchMetricsEnabled, SampledRequestsEnabled: sampledRequestsEnabled } =
- config.WebAcl.PreProcess.CustomRules[count].VisibilityConfig;
- const rule: Rule = {
- Statement: config.WebAcl.PreProcess.CustomRules[count].Statement,
- Name: "Rule",
- Action: config.WebAcl.PreProcess.CustomRules[count].Action,
- CaptchaConfig:
- config.WebAcl.PreProcess.CustomRules[count].CaptchaConfig,
- VisibilityConfig: {
- CloudWatchMetricsEnabled: cloudWatchMetricsEnabled,
- SampledRequestsEnabled: sampledRequestsEnabled,
- MetricName: "Metric" + Math.random().toString(),
- },
- };
- if (config.WebAcl.PreProcess.CustomRules[count].RuleLabels) {
- rule.RuleLabels =
- config.WebAcl.PreProcess.CustomRules[count].RuleLabels;
- }
- rules.push(rule);
- const capacity = await getTotalCapacityOfRules(
- deploymentRegion,
- config.WebAcl.Scope,
- rules
- );
- runtimeProperties.PreProcess.RuleCapacities.push(capacity);
- } else {
- const ruleCalculatedCapacityJson = [];
- const { CloudWatchMetricsEnabled: cloudWatchMetricsEnabled, SampledRequestsEnabled: sampledRequestsEnabled } =
- config.WebAcl.PreProcess.CustomRules[count].VisibilityConfig;
- const tempTemplate: Rule = {
- Statement: config.WebAcl.PreProcess.CustomRules[count].Statement,
- Name: "Rule",
- Action: config.WebAcl.PreProcess.CustomRules[count].Action,
- VisibilityConfig: {
- CloudWatchMetricsEnabled: cloudWatchMetricsEnabled,
- SampledRequestsEnabled: sampledRequestsEnabled,
- MetricName: "Metric" + Math.random().toString(),
- },
- };
- if (config.WebAcl.PreProcess.CustomRules[count].RuleLabels) {
- tempTemplate.RuleLabels =
- config.WebAcl.PreProcess.CustomRules[count].RuleLabels;
- }
- ruleCalculatedCapacityJson.push(tempTemplate);
- const capacity = await getTotalCapacityOfRules(
- deploymentRegion,
- config.WebAcl.Scope,
- ruleCalculatedCapacityJson
- );
- runtimeProperties.PreProcess.RuleCapacities.push(capacity);
- }
- count++;
- }
- runtimeProperties.PreProcess.Capacity = runtimeProperties.PreProcess.RuleCapacities.reduce(
- function (a, b) {
- return a + b;
- },
- 0
- );
+ runtimeProperties.PreProcess.CustomRuleCount = config.WebAcl.PreProcess.CustomRules.length;
+ runtimeProperties.PreProcess.CustomCaptchaRuleCount = config.WebAcl.PreProcess.CustomRules.filter(rule => rule.action.captcha).length;
+ runtimeProperties.PreProcess.Capacity = (await calculateCustomRulesCapacities(config.WebAcl.PreProcess.CustomRules, deploymentRegion, config.WebAcl.Scope)).reduce((a,b) => a+b, 0);
}
- count = 0;
- let postProcessCapacity = 0;
if (!config.WebAcl.PostProcess.CustomRules) {
console.log(
"\n β Skip Rule Capacity Calculation for PostProcess Custom Rules."
);
} else {
- while (count < config.WebAcl.PostProcess.CustomRules.length) {
- // Manually calculate and return capacity if rule has a ipset statements with a logical ID entry (e.g. ${IPsString.Arn})
- // This means the IPSet will be created by this repo, maybe it doesn't exists yet. That fails this function. That's why the code below is needed.
- const ipSetReferenceStatement = config.WebAcl.PostProcess.CustomRules[count].Statement.IPSetReferenceStatement;
- if(ipSetReferenceStatement && !ipSetReferenceStatement.ARN.startsWith("arn:aws:")) {
- runtimeProperties.PostProcess.CustomRuleCount += 1;
- if("Captcha" in config.WebAcl.PostProcess.CustomRules[count].Action) runtimeProperties.PostProcess.CustomCaptchaRuleCount += 1;
- // Capacity for IPSet statements:
- // "WCUs β 2 WCU for most. If you configure the statement to use forwarded IP addresses and specify a position of ANY, increase the WCU usage by 4."
- // https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-ipset-match.html
- let ipSetRuleCapacity = 2;
- if(ipSetReferenceStatement.IPSetForwardedIPConfig?.Position === "ANY") ipSetRuleCapacity += 4;
- runtimeProperties.PostProcess.RuleCapacities.push(ipSetRuleCapacity);
-
- count++;
- continue;
- }
-
- runtimeProperties.PostProcess.CustomRuleCount += 1;
- const ruleCalculatedCapacityJson = [];
- const { CloudWatchMetricsEnabled: cloudWatchMetricsEnabled, SampledRequestsEnabled: sampledRequestsEnabled } =
- config.WebAcl.PostProcess.CustomRules[count].VisibilityConfig;
- const rule: Rule = {
- Statement: config.WebAcl.PostProcess.CustomRules[count].Statement,
- Name: "Rule",
- Action: config.WebAcl.PostProcess.CustomRules[count].Action,
- VisibilityConfig: {
- CloudWatchMetricsEnabled: cloudWatchMetricsEnabled,
- SampledRequestsEnabled: sampledRequestsEnabled,
- MetricName: "Metric" + Math.random().toString(),
- },
- };
- if ("Captcha" in config.WebAcl.PostProcess.CustomRules[count].Action) {
- runtimeProperties.PostProcess.CustomCaptchaRuleCount += 1;
- rule.CaptchaConfig =
- config.WebAcl.PostProcess.CustomRules[count].CaptchaConfig;
- }
- if (config.WebAcl.PostProcess.CustomRules[count].RuleLabels) {
- rule.RuleLabels =
- config.WebAcl.PostProcess.CustomRules[count].RuleLabels;
- }
- ruleCalculatedCapacityJson.push(rule);
- const capacity = await getTotalCapacityOfRules(
- deploymentRegion,
- config.WebAcl.Scope,
- ruleCalculatedCapacityJson
- );
- runtimeProperties.PostProcess.RuleCapacities.push(capacity);
- count++;
- }
- postProcessCapacity = runtimeProperties.PostProcess.RuleCapacities.reduce(
- function (a, b) {
- return a + b;
- },
- 0
- );
+ runtimeProperties.PostProcess.CustomRuleCount = config.WebAcl.PostProcess.CustomRules.length;
+ runtimeProperties.PostProcess.CustomCaptchaRuleCount = config.WebAcl.PostProcess.CustomRules.filter(rule => rule.action.captcha).length;
+ runtimeProperties.PostProcess.Capacity = (await calculateCustomRulesCapacities(config.WebAcl.PostProcess.CustomRules, deploymentRegion, config.WebAcl.Scope)).reduce((a,b) => a+b, 0);
}
console.log("\nπ Get ManagedRule Capacity:\n");
if (!config.WebAcl.PreProcess.ManagedRuleGroups) {
@@ -407,27 +274,27 @@ async function calculateCapacities(
} else {
console.log(" π₯ PreProcess: ");
for (const managedrule of config.WebAcl.PreProcess.ManagedRuleGroups) {
- managedrule.Version ? managedrule.Version : managedrule.Version = await getcurrentManagedRuleGroupVersion(deploymentRegion, managedrule.Vendor, managedrule.Name, config.WebAcl.Scope);
+ managedrule.version ? managedrule.version : managedrule.version = await getcurrentManagedRuleGroupVersion(deploymentRegion, managedrule.vendor, managedrule.name, config.WebAcl.Scope);
const capacity = await getManagedRuleCapacity(
deploymentRegion,
- managedrule.Vendor,
- managedrule.Name,
+ managedrule.vendor,
+ managedrule.name,
config.WebAcl.Scope,
- managedrule.Version
+ managedrule.version
);
- managedrule.Capacity = capacity;
+ managedrule.capacity = capacity;
console.log(
" β Capacity for " +
- managedrule.Name +
+ managedrule.name +
" is [" +
- managedrule.Capacity +
+ managedrule.capacity +
"]"
);
- managedrule.Version ? console.log(" π· Latest " + managedrule.Version) : console.log("");
+ managedrule.version ? console.log(" π· Specified " + managedrule.version) : console.log("");
runtimeProperties.ManagedRuleCapacity += capacity;
runtimeProperties.PreProcess.ManagedRuleGroupCount += 1;
- managedrule.Name === "AWSManagedRulesBotControlRuleSet" ? runtimeProperties.PreProcess.ManagedRuleBotControlCount +=1 : "";
- managedrule.Name === "AWSManagedRulesATPRuleSet" ? runtimeProperties.PreProcess.ManagedRuleATPCount += 1 : "";
+ managedrule.name === "AWSManagedRulesBotControlRuleSet" ? runtimeProperties.PreProcess.ManagedRuleBotControlCount +=1 : "";
+ managedrule.name === "AWSManagedRulesATPRuleSet" ? runtimeProperties.PreProcess.ManagedRuleATPCount += 1 : "";
}
}
if (!config.WebAcl.PostProcess.ManagedRuleGroups) {
@@ -435,30 +302,140 @@ async function calculateCapacities(
} else {
console.log("\n π₯ PostProcess: ");
for (const managedrule of config.WebAcl.PostProcess.ManagedRuleGroups) {
- managedrule.Version ? managedrule.Version : managedrule.Version = await getcurrentManagedRuleGroupVersion(deploymentRegion, managedrule.Vendor, managedrule.Name, config.WebAcl.Scope);
+ managedrule.version ? managedrule.version : managedrule.version = await getcurrentManagedRuleGroupVersion(deploymentRegion, managedrule.vendor, managedrule.name, config.WebAcl.Scope);
const capacity = await getManagedRuleCapacity(
deploymentRegion,
- managedrule.Vendor,
- managedrule.Name,
+ managedrule.vendor,
+ managedrule.name,
config.WebAcl.Scope,
- managedrule.Version
+ managedrule.version
);
- managedrule.Capacity = capacity;
+ managedrule.capacity = capacity;
console.log(
" β Capacity for " +
- managedrule.Name +
+ managedrule.name +
" is [" +
- managedrule.Capacity +
+ managedrule.capacity +
"]"
);
- managedrule.Version ? console.log(" π· Latest " + managedrule.Version) : console.log("");
+ managedrule.version ? console.log(" π· Specified " + managedrule.version) : console.log("");
runtimeProperties.ManagedRuleCapacity += capacity;
runtimeProperties.PostProcess.ManagedRuleGroupCount += 1;
- managedrule.Name === "AWSManagedRulesBotControlRuleSet" ? runtimeProperties.PostProcess.ManagedRuleBotControlCount +=1 : "";
- managedrule.Name === "AWSManagedRulesATPRuleSet" ? runtimeProperties.PostProcess.ManagedRuleATPCount += 1 : "";
+ managedrule.name === "AWSManagedRulesBotControlRuleSet" ? runtimeProperties.PostProcess.ManagedRuleBotControlCount +=1 : "";
+ managedrule.name === "AWSManagedRulesATPRuleSet" ? runtimeProperties.PostProcess.ManagedRuleATPCount += 1 : "";
}
}
- runtimeProperties.PostProcess.Capacity = postProcessCapacity;
+}
+
+/**
+ *
+ * @param customRules PreProcess Custom Rules or PostProcess Custom Rules
+ * @param deploymentRegion the AWS region, e.g. eu-central-1
+ * @param scope the scope of the WebACL, e.g. REGIONAL or CLOUDFRONT
+ * @returns an array with the capacities of the supplied custom rules
+ */
+async function calculateCustomRulesCapacities(customRules: FmsRule[], deploymentRegion: string, scope: "REGIONAL" | "CLOUDFRONT") {
+ const capacities = [];
+ for (const customRule of customRules) {
+ // Manually calculate and return capacity if rule has a ipset statements with a logical ID entry (e.g. ${IPsString.Arn})
+ // This means the IPSet will be created by this repo, maybe it doesn't exists yet. That fails this function. That's why the code below is needed.
+ const ipSetReferenceStatement = customRule.statement.ipSetReferenceStatement as wafv2.CfnWebACL.IPSetReferenceStatementProperty | undefined;
+ // in case rule has an andStatement
+ const andStatement = customRule.statement.andStatement as wafv2.CfnWebACL.AndStatementProperty | undefined;
+ // in case rule has an orStatement
+ const orStatement = customRule.statement.orStatement as wafv2.CfnWebACL.OrStatementProperty | undefined;
+ if(ipSetReferenceStatement && !ipSetReferenceStatement.arn.startsWith("arn:aws:")) {
+ // Capacity for IPSet statements:
+ // "WCUs β 1 WCU for most. If you configure the statement to use forwarded IP addresses and specify a position of ANY, increase the WCU usage by 4."
+ // https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-ipset-match.html
+ capacities.push(calculateIpsSetStatementCapacity(ipSetReferenceStatement));
+ } else if(andStatement && andStatement.statements) {
+ for (const statement of andStatement.statements as wafv2.CfnWebACL.StatementProperty[]) {
+ const statementIpSetReferenceStatement = statement.ipSetReferenceStatement as wafv2.CfnWebACL.IPSetReferenceStatementProperty | undefined;
+ if(statementIpSetReferenceStatement && !statementIpSetReferenceStatement.arn.startsWith("arn:aws:")) {
+ capacities.push(calculateIpsSetStatementCapacity(statementIpSetReferenceStatement));
+ }
+ }
+ const filteredAndStatements = {
+ statements: (andStatement.statements as wafv2.CfnWebACL.StatementProperty[]).filter(statement => !statement.ipSetReferenceStatement || (statement.ipSetReferenceStatement && statement.ipSetReferenceStatement as wafv2.CfnWebACL.IPSetReferenceStatementProperty).arn.startsWith("arn:aws:"))
+ };
+ if (filteredAndStatements && filteredAndStatements.statements && filteredAndStatements.statements.length > 0) {
+ const calcRule = buildCustomRuleWithoutIpReferenceStatements(customRule, filteredAndStatements, false);
+ const capacity = await calculateCustomRuleStatementsCapacity(calcRule, deploymentRegion, scope);
+ capacities.push(capacity);
+ }
+ }
+ else if(orStatement && orStatement.statements) {
+ for (const statement of orStatement.statements as wafv2.CfnWebACL.StatementProperty[]) {
+ const statementIpSetReferenceStatement = statement.ipSetReferenceStatement as wafv2.CfnWebACL.IPSetReferenceStatementProperty | undefined;
+ if(statementIpSetReferenceStatement && !statementIpSetReferenceStatement.arn.startsWith("arn:aws:")) {
+ capacities.push(calculateIpsSetStatementCapacity(statementIpSetReferenceStatement));
+ }
+ }
+ const filteredOrStatements = {
+ statements: (orStatement.statements as wafv2.CfnWebACL.StatementProperty[]).filter(statement => !statement.ipSetReferenceStatement)
+ };
+ if (filteredOrStatements && filteredOrStatements.statements && filteredOrStatements.statements.length > 0) {
+ const calcRule = buildCustomRuleWithoutIpReferenceStatements(customRule, filteredOrStatements, false);
+ const capacity = await calculateCustomRuleStatementsCapacity(calcRule, deploymentRegion, scope);
+ capacities.push(capacity);
+ }
+ }
+ else {
+ capacities.push(await calculateCustomRuleStatementsCapacity(customRule, deploymentRegion, scope));
+ }
+ }
+ return capacities;
+}
+
+/**
+ * Implementation of the calculation of the capacity for IPSet statements according to https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-ipset-match.html
+ * @param ipSetReferenceStatement the IPSetReferenceStatement
+ * @returns the capacity of the IPSet statement
+ */
+function calculateIpsSetStatementCapacity(ipSetReferenceStatement: wafv2.CfnWebACL.IPSetReferenceStatementProperty) {
+ let ipSetRuleCapacity = 1;
+ const ipSetForwardedIpConfig = ipSetReferenceStatement.ipSetForwardedIpConfig as wafv2.CfnWebACL.IPSetForwardedIPConfigurationProperty | undefined;
+ if(ipSetForwardedIpConfig && ipSetForwardedIpConfig.position === "ANY") ipSetRuleCapacity = 4;
+ return ipSetRuleCapacity;
+}
+
+async function calculateCustomRuleStatementsCapacity(customRule: FmsRule, deploymentRegion: string, scope: "REGIONAL" | "CLOUDFRONT") {
+ const ruleCalculatedCapacityJson = [];
+ const rule = transformCdkRuletoSdkRule(customRule);
+ ruleCalculatedCapacityJson.push(rule);
+ const capacity = await getTotalCapacityOfRules(
+ deploymentRegion,
+ scope,
+ ruleCalculatedCapacityJson
+ );
+ return capacity;
+}
+
+function buildCustomRuleWithoutIpReferenceStatements(customRule: FmsRule, concatenatedStatement: wafv2.CfnWebACL.AndStatementProperty | wafv2.CfnWebACL.OrStatementProperty, isOrStatement: boolean) {
+ const statements = concatenatedStatement.statements as wafv2.CfnWebACL.StatementProperty[];
+ let statement;
+ if (statements.length === 1) {
+ statement = statements[0];
+ } else if (isOrStatement) {
+ statement = {
+ orStatement: concatenatedStatement
+ };
+ } else {
+ statement = {
+ andStatement: concatenatedStatement
+ };
+ }
+ const tempCalcRule : FmsRule = {
+ name: customRule.name,
+ priority: customRule.priority,
+ visibilityConfig: customRule.visibilityConfig,
+ ruleLabels: customRule.ruleLabels,
+ captchaConfig: customRule.captchaConfig,
+ statement,
+ action: customRule.action
+ };
+ return tempCalcRule;
}
/**
@@ -562,7 +539,7 @@ export function initRuntimeProperties() : RuntimeProperties {
* @param propertyName name of the properties which have to be converted
* @returns converted Rules
*/
-function convertPropValuesToUint8Array(rulesObject: any, propertyName: string): any {
+export function convertPropValuesToUint8Array(rulesObject: any, propertyName: string): any {
const convertedObject: any = {};
let value: any;
if (rulesObject instanceof Array) {
@@ -594,7 +571,7 @@ function convertPropValuesToUint8Array(rulesObject: any, propertyName: string):
* @param stringToConvert string which has to be converted to Uint8Array
* @returns the desired Uint8Array representation of the string
*/
-function convertStringToUint8Array(stringToConvert: string): Uint8Array {
+export function convertStringToUint8Array(stringToConvert: string): Uint8Array {
const buf = new ArrayBuffer(stringToConvert.length * 2); // 2 bytes for each char
const bufView = new Uint8Array(buf);
for (let i = 0, strLen = stringToConvert.length; i < strLen; i++) {
@@ -603,51 +580,6 @@ function convertStringToUint8Array(stringToConvert: string): Uint8Array {
return bufView;
}
-/**
- * Function to transform property names into camel case like AWS needs it
- * @param o object which property names has to be transformed to camel case
- * @returns the object with the transformed property names in camel case
- */
-// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
-export function toAwsCamel(o: any): any {
- let newO: any, origKey: any, newKey: any, value: any;
- if (o instanceof Array) {
- return o.map(function(value) {
- if (typeof value === "object") {
- value = toAwsCamel(value);
- }
- if(value === "aRN"){
- value = "arn";
- }
- if(value === "iPSetReferenceStatement"){
- value = "ipSetReferenceStatement";
- }
- return value;
- });
- } else {
- newO = {};
- for (origKey in o) {
- if (Object.prototype.hasOwnProperty.call(o, origKey)) {
- newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString();
- if(newKey === "aRN"){
- newKey = "arn";
- }
- if(newKey === "iPSetReferenceStatement"){
- newKey = "ipSetReferenceStatement";
- }
- value = o[origKey];
- if (value instanceof Array || (value !== null && value.constructor === Object)) {
- value = toAwsCamel(value);
- if(value === "aRN"){
- value = "arn";
- }
- }
- newO[newKey] = value;
- }
- }
- }
- return newO;
-}
/**
* Version of the AWS Firewall Factory - extracted from package.json
@@ -660,29 +592,32 @@ const FIREWALL_FACTORY_VERSION = packageJsonObject.version;
* @param config configuration object of the values.json
* @return deploymentRegion AWS region, e.g. eu-central-1
*/
-export const outputInfoBanner = (config:Config): string => {
+export const outputInfoBanner = (config?:Config) => {
/**
* the region into which the stack is deployed
*/
let deploymentRegion = "";
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
- cfonts.say("AWS FIREWALL FACTORY", {font: "block",align: "left",colors: ["#00ecbd"],background: "transparent",letterSpacing: 0,lineHeight: 0,space: true,maxLength: "13",gradient: false,independentGradient: false,transitionGradient: false,env: "node",width:"80%"});
+ cfonts.say("AWS FIREWALL FACTORY", {font: "block",align: "center",colors: ["#00ecbd"],background: "transparent",letterSpacing: 0,lineHeight: 0,space: true,maxLength: "13",gradient: false,independentGradient: false,transitionGradient: false,env: "node",width:"80%"});
console.log("\n Β© by globaldatanet");
- console.log("\nπ· Version: ","\x1b[4m",FIREWALL_FACTORY_VERSION,"\x1b[0m");
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
- console.log("π€ AWS Account used: ","\x1b[33m","\n " + process.env.CDK_DEFAULT_ACCOUNT,"\x1b[0m");
- if(process.env.PREREQUISITE === "true"){
- console.log("π CDK deployment region:","\x1b[33m","\n "+process.env.AWS_REGION,"\x1b[0m \n");
- }
- else{
- if(config.WebAcl.Scope === "CLOUDFRONT"){
- deploymentRegion = "us-east-1";
+ console.log("\nπ· Version: ","\x1B[1m",FIREWALL_FACTORY_VERSION,"\x1b[0m");
+ if(config){
+ console.log("\nπ€ AWS FMS Administrator Account: ");
+ console.log("\x1b[33m",` ${process.env.CDK_DEFAULT_ACCOUNT}`,"\x1b[0m");
+ if(process.env.PREREQUISITE === "true"){
+ console.log("π Deployment region:");
+ console.log("\x1b[32m",` ${process.env.AWS_REGION}`,"\x1b[0m \n\n");
}
else{
- deploymentRegion = process.env.REGION || "eu-central-1";
+ if(config.WebAcl.Scope === "CLOUDFRONT"){
+ deploymentRegion = "us-east-1";
+ }
+ else{
+ deploymentRegion = process.env.REGION || "eu-central-1";
+ }
+ console.log("π CDK deployment region:");
+ console.log("\x1b[32m",` ${deploymentRegion}`,"\x1b[0m \n");
}
- console.log("π CDK deployment region:","\x1b[33m","\n "+deploymentRegion,"\x1b[0m \n");
}
return deploymentRegion;
};
\ No newline at end of file
diff --git a/lib/tools/transformer.ts b/lib/tools/transformer.ts
new file mode 100644
index 00000000..f13c4f07
--- /dev/null
+++ b/lib/tools/transformer.ts
@@ -0,0 +1,1328 @@
+/* eslint-disable @typescript-eslint/no-unsafe-call */
+/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
+/* eslint-disable @typescript-eslint/no-unsafe-member-access */
+/* eslint-disable @typescript-eslint/no-unsafe-assignment */
+/* eslint-disable @typescript-eslint/naming-convention */
+import { aws_wafv2 as wafv2 } from "aws-cdk-lib";
+import { NotStatement, LabelMatchStatement, OrStatement, AndStatement, XssMatchStatement, SqliMatchStatement, RegexPatternSetReferenceStatement, Statement,
+ IPSetReferenceStatement, SizeConstraintStatement, Rule, RegexMatchStatement, RateBasedStatement,
+ ByteMatchStatement, GeoMatchStatement } from "@aws-sdk/client-wafv2";
+import {convertStringToUint8Array} from "./helpers";
+
+/**
+ * The function will map a CDK ByteMatchStatement Property to a SDK ByteMatchStatement Property
+ * @param statement object of a CDK ByteMatchStatement Property
+ * @return configuration object of a SDK ByteMatchStatement Property
+ */
+export function transformByteMatchStatement(statement: wafv2.CfnWebACL.ByteMatchStatementProperty): ByteMatchStatement {
+ const bmst = statement as wafv2.CfnWebACL.ByteMatchStatementProperty | undefined;
+ let ByteMatchStatement = undefined;
+ if (bmst) {
+ let FieldToMatch = undefined;
+ if (bmst.fieldToMatch) {
+ const ftm = bmst.fieldToMatch as wafv2.CfnWebACL.FieldToMatchProperty;
+ let Body = undefined;
+ if (ftm.body) {
+ const ftmBody = ftm.body as wafv2.CfnWebACL.BodyProperty;
+ Body = {
+ OversizeHandling: ftmBody.oversizeHandling ? ftmBody.oversizeHandling as string : undefined,
+ };
+ }
+ let SingleHeader = undefined;
+ if(ftm.singleHeader){
+ SingleHeader = {
+ Name: ftm.singleHeader.name,
+ };
+ }
+ let SingleQueryArgument = undefined;
+ if(ftm.singleQueryArgument){
+ SingleQueryArgument ={
+ Name: ftm.singleQueryArgument.name,
+ };
+ }
+ let UriPath = undefined;
+ if(ftm.uriPath){
+ UriPath ={
+ Path: ftm.uriPath.path,
+ };
+ }
+ let JsonBody = undefined;
+ if (ftm.jsonBody) {
+ const ftmJsonBody = ftm.jsonBody as wafv2.CfnWebACL.JsonBodyProperty;
+ let IncludedPaths = undefined;
+ let MatchPattern = undefined;
+ if(ftmJsonBody.matchPattern){
+ const mp = ftmJsonBody.matchPattern as wafv2.CfnWebACL.JsonMatchPatternProperty;
+ IncludedPaths = mp.includedPaths as string[];
+ MatchPattern = {
+ IncludedPaths,
+ All: mp.all,
+ };
+ }
+ JsonBody = {
+ OversizeHandling: ftmJsonBody.oversizeHandling ? ftmJsonBody.oversizeHandling as string : undefined,
+ MatchPattern,
+ };
+ }
+ let Cookies = undefined;
+ if(ftm.cookies){
+ const fmtCookies = ftm.cookies as wafv2.CfnWebACL.CookiesProperty;
+ let MatchPattern = undefined;
+ if(fmtCookies.matchPattern){
+ const cmp = fmtCookies.matchPattern as wafv2.CfnWebACL.CookieMatchPatternProperty;
+ MatchPattern = {
+ IncludedCookies: cmp.includedCookies as string[],
+ ExcludedCookies: cmp.excludedCookies as string[],
+ All: cmp.all,
+ };
+ }
+ Cookies = {
+ MatchPattern,
+ MatchScope: fmtCookies.matchScope,
+ OversizeHandling: fmtCookies.oversizeHandling as string,
+ };
+ }
+ let Headers = undefined;
+ if(ftm.headers){
+ const fmtHeaders = ftm.headers as wafv2.CfnWebACL.HeadersProperty;
+ let MatchPattern = undefined;
+ if(fmtHeaders.matchPattern){
+ const hmp = fmtHeaders.matchPattern as wafv2.CfnWebACL.HeaderMatchPatternProperty;
+ MatchPattern = {
+ IncludedHeaders: hmp.includedHeaders as string[],
+ ExcludedHeaders: hmp.excludedHeaders as string[],
+ All: hmp.all,
+ };
+ }
+ Headers = {
+ MatchPattern,
+ MatchScope: fmtHeaders.matchScope,
+ OversizeHandling: fmtHeaders.oversizeHandling as string,
+ };
+ }
+ FieldToMatch = {
+ AllQueryArguments: ftm.allQueryArguments,
+ Body,
+ SingleHeader,
+ UriPath,
+ SingleQueryArgument,
+ Method: ftm.method,
+ QueryString: ftm.queryString,
+ JsonBody,
+ Cookies,
+ Headers
+ };
+ }
+ let TextTransformations = undefined;
+ if (bmst.textTransformations) {
+ TextTransformations = [];
+ (bmst.textTransformations as wafv2.CfnWebACL.TextTransformationProperty[]).forEach((tt) => {
+ TextTransformations?.push({
+ Priority: tt.priority,
+ Type: tt.type
+ });
+ });
+ }
+ ByteMatchStatement = {
+ PositionalConstraint: bmst.positionalConstraint ? bmst.positionalConstraint : undefined,
+ SearchString: bmst.searchString ? convertStringToUint8Array(bmst.searchString) : undefined,
+ TextTransformations,
+ FieldToMatch
+ };
+ }
+ return ByteMatchStatement as ByteMatchStatement;
+}
+
+/**
+ * The function will map a CDK RegexMatchStatement Property to a SDK RegexMatchStatement Property
+ * @param statement object of a CDK RegexMatchStatement Property
+ * @return configuration object of a SDK RegexMatchStatement Property
+ */
+export function transformRegexMatchStatement(statement: wafv2.CfnWebACL.RegexMatchStatementProperty): RegexMatchStatement {
+ const rest = statement as wafv2.CfnWebACL.RegexMatchStatementProperty | undefined;
+ let RegexMatchStatement = undefined;
+ if (rest) {
+ let FieldToMatch = undefined;
+ if (rest.fieldToMatch) {
+ const ftm = rest.fieldToMatch as wafv2.CfnWebACL.FieldToMatchProperty;
+ let Body = undefined;
+ if (ftm.body) {
+ const ftmBody = ftm.body as wafv2.CfnWebACL.BodyProperty;
+ Body = {
+ OversizeHandling: ftmBody.oversizeHandling ? ftmBody.oversizeHandling as string : undefined,
+ };
+ }
+ let SingleHeader = undefined;
+ if(ftm.singleHeader){
+ SingleHeader = {
+ Name: ftm.singleHeader.name,
+ };
+ }
+ let SingleQueryArgument = undefined;
+ if(ftm.singleQueryArgument){
+ SingleQueryArgument ={
+ Name: ftm.singleQueryArgument.name,
+ };
+ }
+ let UriPath = undefined;
+ if(ftm.uriPath){
+ UriPath ={
+ Path: ftm.uriPath.path,
+ };
+ }
+ let JsonBody = undefined;
+ if (ftm.jsonBody) {
+ const ftmJsonBody = ftm.jsonBody as wafv2.CfnWebACL.JsonBodyProperty;
+ let IncludedPaths = undefined;
+ let MatchPattern = undefined;
+ if(ftmJsonBody.matchPattern){
+ const mp = ftmJsonBody.matchPattern as wafv2.CfnWebACL.JsonMatchPatternProperty;
+ IncludedPaths = mp.includedPaths as string[];
+ MatchPattern = {
+ IncludedPaths,
+ All: mp.all,
+ };
+ }
+ JsonBody = {
+ OversizeHandling: ftmJsonBody.oversizeHandling ? ftmJsonBody.oversizeHandling as string : undefined,
+ MatchPattern,
+ };
+ }
+ let Cookies = undefined;
+ if(ftm.cookies){
+ const fmtCookies = ftm.cookies as wafv2.CfnWebACL.CookiesProperty;
+ let MatchPattern = undefined;
+ if(fmtCookies.matchPattern){
+ const cmp = fmtCookies.matchPattern as wafv2.CfnWebACL.CookieMatchPatternProperty;
+ MatchPattern = {
+ IncludedCookies: cmp.includedCookies as string[],
+ ExcludedCookies: cmp.excludedCookies as string[],
+ All: cmp.all,
+ };
+ }
+ Cookies = {
+ MatchPattern,
+ MatchScope: fmtCookies.matchScope,
+ OversizeHandling: fmtCookies.oversizeHandling as string,
+ };
+ }
+ let Headers = undefined;
+ if(ftm.headers){
+ const fmtHeaders = ftm.headers as wafv2.CfnWebACL.HeadersProperty;
+ let MatchPattern = undefined;
+ if(fmtHeaders.matchPattern){
+ const hmp = fmtHeaders.matchPattern as wafv2.CfnWebACL.HeaderMatchPatternProperty;
+ MatchPattern = {
+ IncludedHeaders: hmp.includedHeaders as string[],
+ ExcludedHeaders: hmp.excludedHeaders as string[],
+ All: hmp.all,
+ };
+ }
+ Headers = {
+ MatchPattern,
+ MatchScope: fmtHeaders.matchScope,
+ OversizeHandling: fmtHeaders.oversizeHandling as string,
+ };
+ }
+ FieldToMatch = {
+ AllQueryArguments: ftm.allQueryArguments,
+ Body,
+ SingleHeader,
+ UriPath,
+ SingleQueryArgument,
+ Method: ftm.method,
+ QueryString: ftm.queryString,
+ JsonBody,
+ Cookies,
+ Headers
+ };
+ }
+ let TextTransformations = undefined;
+ if (rest.textTransformations) {
+ TextTransformations = [];
+ (rest.textTransformations as wafv2.CfnWebACL.TextTransformationProperty[]).forEach((tt) => {
+ TextTransformations?.push({
+ Priority: tt.priority,
+ Type: tt.type
+ });
+ });
+ }
+ RegexMatchStatement = {
+ RegexString: rest.regexString,
+ TextTransformations,
+ FieldToMatch
+ };
+ }
+ return RegexMatchStatement as RegexMatchStatement;
+}
+
+/**
+ * The function will map a CDK GeoMatchStatement Property to a SDK GeoMatchStatement Property
+ * @param statement object of a CDK GeoMatchStatement Property
+ * @return configuration object of a SDK GeoMatchStatement Property
+ */
+export function transformGeoMatchStatement(statement: wafv2.CfnWebACL.GeoMatchStatementProperty): GeoMatchStatement {
+ const gmst = statement as wafv2.CfnWebACL.GeoMatchStatementProperty | undefined;
+ let GeoMatchStatement = undefined;
+ if (gmst) {
+ let ForwardedIPConfig = undefined;
+ if (gmst.forwardedIpConfig) {
+ const fic = gmst.forwardedIpConfig as wafv2.CfnWebACL.ForwardedIPConfigurationProperty;
+ ForwardedIPConfig ={
+ FallbackBehavior: fic.fallbackBehavior,
+ HeaderName: fic.headerName
+ };
+ }
+ GeoMatchStatement = {
+ ForwardedIPConfig,
+ CountryCodes: gmst.countryCodes
+ };
+ }
+ return GeoMatchStatement as GeoMatchStatement;
+}
+
+/**
+ * The function will map a CDK SizeConstraintStatement Property to a SDK SizeConstraintStatement Property
+ * @param statement object of a CDK SizeConstraintStatement Property
+ * @return configuration object of a SDK SizeConstraintStatement Property
+ */
+export function transformSizeConstraintStatement(statement: wafv2.CfnWebACL.SizeConstraintStatementProperty): SizeConstraintStatement {
+ const szst = statement as wafv2.CfnWebACL.SizeConstraintStatementProperty | undefined;
+ let SizeConstraintStatement = undefined;
+ if (szst) {
+ let FieldToMatch = undefined;
+ if (szst.fieldToMatch) {
+ const ftm = szst.fieldToMatch as wafv2.CfnWebACL.FieldToMatchProperty;
+ let Body = undefined;
+ if (ftm.body) {
+ const ftmBody = ftm.body as wafv2.CfnWebACL.BodyProperty;
+ Body = {
+ OversizeHandling: ftmBody.oversizeHandling ? ftmBody.oversizeHandling as string : undefined,
+ };
+ }
+ let SingleHeader = undefined;
+ if(ftm.singleHeader){
+ SingleHeader = {
+ Name: ftm.singleHeader.name,
+ };
+ }
+ let SingleQueryArgument = undefined;
+ if(ftm.singleQueryArgument){
+ SingleQueryArgument ={
+ Name: ftm.singleQueryArgument.name,
+ };
+ }
+ let UriPath = undefined;
+ if(ftm.uriPath){
+ UriPath ={
+ Path: ftm.uriPath.path,
+ };
+ }
+ let JsonBody = undefined;
+ if (ftm.jsonBody) {
+ const ftmJsonBody = ftm.jsonBody as wafv2.CfnWebACL.JsonBodyProperty;
+ let IncludedPaths = undefined;
+ let MatchPattern = undefined;
+ if(ftmJsonBody.matchPattern){
+ const mp = ftmJsonBody.matchPattern as wafv2.CfnWebACL.JsonMatchPatternProperty;
+ IncludedPaths = mp.includedPaths as string[];
+ MatchPattern = {
+ IncludedPaths,
+ All: mp.all,
+ };
+ }
+ JsonBody = {
+ OversizeHandling: ftmJsonBody.oversizeHandling ? ftmJsonBody.oversizeHandling as string : undefined,
+ MatchPattern,
+ };
+ }
+ let Cookies = undefined;
+ if(ftm.cookies){
+ const fmtCookies = ftm.cookies as wafv2.CfnWebACL.CookiesProperty;
+ let MatchPattern = undefined;
+ if(fmtCookies.matchPattern){
+ const cmp = fmtCookies.matchPattern as wafv2.CfnWebACL.CookieMatchPatternProperty;
+ MatchPattern = {
+ IncludedCookies: cmp.includedCookies as string[],
+ ExcludedCookies: cmp.excludedCookies as string[],
+ All: cmp.all,
+ };
+ }
+ Cookies = {
+ MatchPattern,
+ MatchScope: fmtCookies.matchScope,
+ OversizeHandling: fmtCookies.oversizeHandling as string,
+ };
+ }
+ let Headers = undefined;
+ if(ftm.headers){
+ const fmtHeaders = ftm.headers as wafv2.CfnWebACL.HeadersProperty;
+ let MatchPattern = undefined;
+ if(fmtHeaders.matchPattern){
+ const hmp = fmtHeaders.matchPattern as wafv2.CfnWebACL.HeaderMatchPatternProperty;
+ MatchPattern = {
+ IncludedHeaders: hmp.includedHeaders as string[],
+ ExcludedHeaders: hmp.excludedHeaders as string[],
+ All: hmp.all,
+ };
+ }
+ Headers = {
+ MatchPattern,
+ MatchScope: fmtHeaders.matchScope,
+ OversizeHandling: fmtHeaders.oversizeHandling as string,
+ };
+ }
+
+ FieldToMatch = {
+ AllQueryArguments: ftm.allQueryArguments,
+ Body,
+ SingleHeader,
+ UriPath,
+ SingleQueryArgument,
+ Method: ftm.method,
+ QueryString: ftm.queryString,
+ JsonBody,
+ Cookies,
+ Headers
+ };
+ }
+ let TextTransformations = undefined;
+ if (szst.textTransformations) {
+ TextTransformations = [];
+ (szst.textTransformations as wafv2.CfnWebACL.TextTransformationProperty[]).forEach((tt) => {
+ TextTransformations?.push({
+ Priority: tt.priority,
+ Type: tt.type
+ });
+ });
+ }
+ SizeConstraintStatement = {
+ TextTransformations,
+ FieldToMatch,
+ ComparisonOperator: szst.comparisonOperator,
+ Size: szst.size,
+ };
+ }
+ return SizeConstraintStatement as SizeConstraintStatement;
+}
+
+/**
+ * The function will map a CDK IPSetReferenceStatement Property to a SDK IPSetReferenceStatement Property
+ * @param statement object of a CDK IPSetReferenceStatement Property
+ * @return configuration object of a SDK IPSetReferenceStatement Property
+ */
+export function transformIPSetReferenceStatement(statement: wafv2.CfnWebACL.IPSetReferenceStatementProperty): IPSetReferenceStatement {
+ const ipsst = statement as wafv2.CfnWebACL.IPSetReferenceStatementProperty | undefined;
+ let IPSetReferenceStatement = undefined;
+ if (ipsst) {
+ let IPSetForwardedIPConfig = undefined;
+ if (ipsst.ipSetForwardedIpConfig) {
+ const fic = ipsst.ipSetForwardedIpConfig as wafv2.CfnWebACL.IPSetForwardedIPConfigurationProperty;
+ IPSetForwardedIPConfig = {
+ FallbackBehavior: fic.fallbackBehavior,
+ HeaderName: fic.headerName,
+ Position: fic.position,
+ };
+ }
+ IPSetReferenceStatement = {
+ ARN: ipsst.arn,
+ IPSetForwardedIPConfig,
+ };
+ }
+ return IPSetReferenceStatement as IPSetReferenceStatement;
+}
+
+/**
+ * The function will map a CDK RegexPatternSetReferenceStatement Property to a SDK RegexPatternSetReferenceStatement Property
+ * @param statement object of a CDK RegexPatternSetReferenceStatement Property
+ * @return configuration object of a SDK RegexPatternSetReferenceStatement Property
+ */
+export function transformRegexPatternSetReferenceStatement(statement: wafv2.CfnWebACL.RegexPatternSetReferenceStatementProperty): RegexPatternSetReferenceStatement {
+ const regpst = statement as wafv2.CfnWebACL.RegexPatternSetReferenceStatementProperty | undefined;
+ let RegexPatternSetReferenceStatement = undefined;
+ if (regpst) {
+ let FieldToMatch = undefined;
+ if (regpst.fieldToMatch) {
+ const ftm = regpst.fieldToMatch as wafv2.CfnWebACL.FieldToMatchProperty;
+ let Body = undefined;
+ if (ftm.body) {
+ const ftmBody = ftm.body as wafv2.CfnWebACL.BodyProperty;
+ Body = {
+ OversizeHandling: ftmBody.oversizeHandling ? ftmBody.oversizeHandling as string : undefined,
+ };
+ }
+ let SingleHeader = undefined;
+ if(ftm.singleHeader){
+ SingleHeader = {
+ Name: ftm.singleHeader.name,
+ };
+ }
+ let SingleQueryArgument = undefined;
+ if(ftm.singleQueryArgument){
+ SingleQueryArgument ={
+ Name: ftm.singleQueryArgument.name,
+ };
+ }
+ let UriPath = undefined;
+ if(ftm.uriPath){
+ UriPath ={
+ Path: ftm.uriPath.path,
+ };
+ }
+ let JsonBody = undefined;
+ if (ftm.jsonBody) {
+ const ftmJsonBody = ftm.jsonBody as wafv2.CfnWebACL.JsonBodyProperty;
+ let IncludedPaths = undefined;
+ let MatchPattern = undefined;
+ if(ftmJsonBody.matchPattern){
+ const mp = ftmJsonBody.matchPattern as wafv2.CfnWebACL.JsonMatchPatternProperty;
+ IncludedPaths = mp.includedPaths as string[];
+ MatchPattern = {
+ IncludedPaths,
+ All: mp.all,
+ };
+ }
+ JsonBody = {
+ OversizeHandling: ftmJsonBody.oversizeHandling ? ftmJsonBody.oversizeHandling as string : undefined,
+ MatchPattern,
+ };
+ }
+ let Cookies = undefined;
+ if(ftm.cookies){
+ const fmtCookies = ftm.cookies as wafv2.CfnWebACL.CookiesProperty;
+ let MatchPattern = undefined;
+ if(fmtCookies.matchPattern){
+ const cmp = fmtCookies.matchPattern as wafv2.CfnWebACL.CookieMatchPatternProperty;
+ MatchPattern = {
+ IncludedCookies: cmp.includedCookies as string[],
+ ExcludedCookies: cmp.excludedCookies as string[],
+ All: cmp.all,
+ };
+ }
+ Cookies = {
+ MatchPattern,
+ MatchScope: fmtCookies.matchScope,
+ OversizeHandling: fmtCookies.oversizeHandling as string,
+ };
+ }
+ let Headers = undefined;
+ if(ftm.headers){
+ const fmtHeaders = ftm.headers as wafv2.CfnWebACL.HeadersProperty;
+ let MatchPattern = undefined;
+ if(fmtHeaders.matchPattern){
+ const hmp = fmtHeaders.matchPattern as wafv2.CfnWebACL.HeaderMatchPatternProperty;
+ MatchPattern = {
+ IncludedHeaders: hmp.includedHeaders as string[],
+ ExcludedHeaders: hmp.excludedHeaders as string[],
+ All: hmp.all,
+ };
+ }
+ Headers = {
+ MatchPattern,
+ MatchScope: fmtHeaders.matchScope,
+ OversizeHandling: fmtHeaders.oversizeHandling as string,
+ };
+ }
+ FieldToMatch = {
+ AllQueryArguments: ftm.allQueryArguments,
+ Body,
+ SingleHeader,
+ UriPath,
+ SingleQueryArgument,
+ Method: ftm.method,
+ QueryString: ftm.queryString,
+ JsonBody,
+ Cookies,
+ Headers
+ };
+ }
+ let TextTransformations = undefined;
+ if (regpst.textTransformations) {
+ TextTransformations = [];
+ (regpst.textTransformations as wafv2.CfnWebACL.TextTransformationProperty[]).forEach((tt) => {
+ TextTransformations?.push({
+ Priority: tt.priority,
+ Type: tt.type
+ });
+ });
+ }
+ RegexPatternSetReferenceStatement = {
+ TextTransformations,
+ FieldToMatch,
+ ARN: regpst.arn,
+ };
+ }
+ return RegexPatternSetReferenceStatement as RegexPatternSetReferenceStatement;
+}
+
+/**
+ * The function will map a CDK SqliMatchStatement Property to a SDK SqliMatchStatement Property
+ * @param statement object of a CDK SqliMatchStatement Property
+ * @return configuration object of a SDK SqliMatchStatement Property
+ */
+export function transformSqliMatchStatement(statement: wafv2.CfnWebACL.SqliMatchStatementProperty): SqliMatchStatement {
+ const sqlst = statement as wafv2.CfnWebACL.SqliMatchStatementProperty | undefined;
+ let SqliMatchStatement = undefined;
+ if (sqlst) {
+ let FieldToMatch = undefined;
+ if (sqlst.fieldToMatch) {
+ const ftm = sqlst.fieldToMatch as wafv2.CfnWebACL.FieldToMatchProperty;
+ let Body = undefined;
+ if (ftm.body) {
+ const ftmBody = ftm.body as wafv2.CfnWebACL.BodyProperty;
+ Body = {
+ OversizeHandling: ftmBody.oversizeHandling ? ftmBody.oversizeHandling as string : undefined,
+ };
+ }
+ let SingleHeader = undefined;
+ if(ftm.singleHeader){
+ SingleHeader = {
+ Name: ftm.singleHeader.name,
+ };
+ }
+ let SingleQueryArgument = undefined;
+ if(ftm.singleQueryArgument){
+ SingleQueryArgument ={
+ Name: ftm.singleQueryArgument.name,
+ };
+ }
+ let UriPath = undefined;
+ if(ftm.uriPath){
+ UriPath ={
+ Path: ftm.uriPath.path,
+ };
+ }
+ let JsonBody = undefined;
+ if (ftm.jsonBody) {
+ const ftmJsonBody = ftm.jsonBody as wafv2.CfnWebACL.JsonBodyProperty;
+ let IncludedPaths = undefined;
+ let MatchPattern = undefined;
+ if(ftmJsonBody.matchPattern){
+ const mp = ftmJsonBody.matchPattern as wafv2.CfnWebACL.JsonMatchPatternProperty;
+ IncludedPaths = mp.includedPaths as string[];
+ MatchPattern = {
+ IncludedPaths,
+ All: mp.all,
+ };
+ }
+ JsonBody = {
+ OversizeHandling: ftmJsonBody.oversizeHandling ? ftmJsonBody.oversizeHandling as string : undefined,
+ MatchPattern,
+ };
+ }
+ let Cookies = undefined;
+ if(ftm.cookies){
+ const fmtCookies = ftm.cookies as wafv2.CfnWebACL.CookiesProperty;
+ let MatchPattern = undefined;
+ if(fmtCookies.matchPattern){
+ const cmp = fmtCookies.matchPattern as wafv2.CfnWebACL.CookieMatchPatternProperty;
+ MatchPattern = {
+ IncludedCookies: cmp.includedCookies as string[],
+ ExcludedCookies: cmp.excludedCookies as string[],
+ All: cmp.all,
+ };
+ }
+ Cookies = {
+ MatchPattern,
+ MatchScope: fmtCookies.matchScope,
+ OversizeHandling: fmtCookies.oversizeHandling as string,
+ };
+ }
+ let Headers = undefined;
+ if(ftm.headers){
+ const fmtHeaders = ftm.headers as wafv2.CfnWebACL.HeadersProperty;
+ let MatchPattern = undefined;
+ if(fmtHeaders.matchPattern){
+ const hmp = fmtHeaders.matchPattern as wafv2.CfnWebACL.HeaderMatchPatternProperty;
+ MatchPattern = {
+ IncludedHeaders: hmp.includedHeaders as string[],
+ ExcludedHeaders: hmp.excludedHeaders as string[],
+ All: hmp.all,
+ };
+ }
+ Headers = {
+ MatchPattern,
+ MatchScope: fmtHeaders.matchScope,
+ OversizeHandling: fmtHeaders.oversizeHandling as string,
+ };
+ }
+ FieldToMatch = {
+ AllQueryArguments: ftm.allQueryArguments,
+ Body,
+ SingleHeader,
+ UriPath,
+ SingleQueryArgument,
+ Method: ftm.method,
+ QueryString: ftm.queryString,
+ JsonBody,
+ Cookies,
+ Headers
+ };
+ }
+ let TextTransformations = undefined;
+ if (sqlst.textTransformations) {
+ TextTransformations = [];
+ (sqlst.textTransformations as wafv2.CfnWebACL.TextTransformationProperty[]).forEach((tt) => {
+ TextTransformations?.push({
+ Priority: tt.priority,
+ Type: tt.type
+ });
+ });
+ }
+ SqliMatchStatement = {
+ TextTransformations,
+ FieldToMatch,
+ SensitivityLevel: sqlst.sensitivityLevel,
+ };
+ }
+ return SqliMatchStatement as SqliMatchStatement;
+}
+
+/**
+ * The function will map a CDK XssMatchStatement Property to a SDK XssMatchStatement Property
+ * @param statement object of a CDK XssMatchStatement Property
+ * @return configuration object of a SDK XssMatchStatement Property
+ */
+export function transformXssMatchStatement(statement: wafv2.CfnWebACL.XssMatchStatementProperty): XssMatchStatement {
+ const xsst = statement as wafv2.CfnWebACL.XssMatchStatementProperty | undefined;
+ let XssMatchStatement = undefined;
+ if (xsst) {
+ let FieldToMatch = undefined;
+ if (xsst.fieldToMatch) {
+ const ftm = xsst.fieldToMatch as wafv2.CfnWebACL.FieldToMatchProperty;
+ let Body = undefined;
+ if (ftm.body) {
+ const ftmBody = ftm.body as wafv2.CfnWebACL.BodyProperty;
+ Body = {
+ OversizeHandling: ftmBody.oversizeHandling ? ftmBody.oversizeHandling as string : undefined,
+ };
+ }
+ let SingleHeader = undefined;
+ if(ftm.singleHeader){
+ SingleHeader = {
+ Name: ftm.singleHeader.name,
+ };
+ }
+ let SingleQueryArgument = undefined;
+ if(ftm.singleQueryArgument){
+ SingleQueryArgument ={
+ Name: ftm.singleQueryArgument.name,
+ };
+ }
+ let UriPath = undefined;
+ if(ftm.uriPath){
+ UriPath ={
+ Path: ftm.uriPath.path,
+ };
+ }
+ let JsonBody = undefined;
+ if (ftm.jsonBody) {
+ const ftmJsonBody = ftm.jsonBody as wafv2.CfnWebACL.JsonBodyProperty;
+ let IncludedPaths = undefined;
+ let MatchPattern = undefined;
+ if(ftmJsonBody.matchPattern){
+ const mp = ftmJsonBody.matchPattern as wafv2.CfnWebACL.JsonMatchPatternProperty;
+ IncludedPaths = mp.includedPaths as string[];
+ MatchPattern = {
+ IncludedPaths,
+ All: mp.all,
+ };
+ }
+ JsonBody = {
+ OversizeHandling: ftmJsonBody.oversizeHandling ? ftmJsonBody.oversizeHandling as string : undefined,
+ MatchPattern,
+ };
+ }
+ let Cookies = undefined;
+ if(ftm.cookies){
+ const fmtCookies = ftm.cookies as wafv2.CfnWebACL.CookiesProperty;
+ let MatchPattern = undefined;
+ if(fmtCookies.matchPattern){
+ const cmp = fmtCookies.matchPattern as wafv2.CfnWebACL.CookieMatchPatternProperty;
+ MatchPattern = {
+ IncludedCookies: cmp.includedCookies as string[],
+ ExcludedCookies: cmp.excludedCookies as string[],
+ All: cmp.all,
+ };
+ }
+ Cookies = {
+ MatchPattern,
+ MatchScope: fmtCookies.matchScope,
+ OversizeHandling: fmtCookies.oversizeHandling as string,
+ };
+ }
+ let Headers = undefined;
+ if(ftm.headers){
+ const fmtHeaders = ftm.headers as wafv2.CfnWebACL.HeadersProperty;
+ let MatchPattern = undefined;
+ if(fmtHeaders.matchPattern){
+ const hmp = fmtHeaders.matchPattern as wafv2.CfnWebACL.HeaderMatchPatternProperty;
+ MatchPattern = {
+ IncludedHeaders: hmp.includedHeaders as string[],
+ ExcludedHeaders: hmp.excludedHeaders as string[],
+ All: hmp.all,
+ };
+ }
+ Headers = {
+ MatchPattern,
+ MatchScope: fmtHeaders.matchScope,
+ OversizeHandling: fmtHeaders.oversizeHandling as string,
+ };
+ }
+ FieldToMatch = {
+ AllQueryArguments: ftm.allQueryArguments,
+ Body,
+ SingleHeader,
+ UriPath,
+ SingleQueryArgument,
+ Method: ftm.method,
+ QueryString: ftm.queryString,
+ JsonBody,
+ Cookies,
+ Headers
+ };
+ }
+ let TextTransformations = undefined;
+ if (xsst.textTransformations) {
+ TextTransformations = [];
+ (xsst.textTransformations as wafv2.CfnWebACL.TextTransformationProperty[]).forEach((tt) => {
+ TextTransformations?.push({
+ Priority: tt.priority,
+ Type: tt.type
+ });
+ });
+ }
+ XssMatchStatement ={
+ TextTransformations,
+ FieldToMatch,
+ };
+ }
+ return XssMatchStatement as XssMatchStatement;
+}
+
+/**
+ * The function will map a CDK And/OrStatement Property to a SDK And/OrStatement Property Property
+ * @param statement object of a CDK And/OrStatement Property Property
+ * @return configuration object of a SDK And/OrStatement Property Property
+ */
+export function transformConcatenatedStatement(statement: wafv2.CfnWebACL.AndStatementProperty | wafv2.CfnWebACL.OrStatementProperty, isandStatement:boolean): AndStatement | OrStatement | undefined {
+ const Statements = [];
+ let ConcatenatedStatement = undefined;
+ if(statement.statements && Array.isArray(statement.statements)){
+ for (const currentstatement of statement.statements as wafv2.CfnWebACL.StatementProperty[]) {
+ const Statement: Statement ={};
+ let ByteMatchStatement = undefined;
+ let GeoMatchStatement = undefined;
+ let IPSetReferenceStatement = undefined;
+ let RegexPatternSetReferenceStatement = undefined;
+ let SizeConstraintStatement = undefined;
+ let SqliMatchStatement = undefined;
+ let XssMatchStatement = undefined;
+ let LabelMatchStatement = undefined;
+ let NotStatement = undefined;
+ let RegexMatchStatement = undefined;
+ let RateBasedStatement = undefined;
+ switch(Object.keys(currentstatement)[0]){
+ case "byteMatchStatement":
+ ByteMatchStatement = transformByteMatchStatement(currentstatement.byteMatchStatement as wafv2.CfnWebACL.ByteMatchStatementProperty);
+ Statement.ByteMatchStatement = ByteMatchStatement as ByteMatchStatement;
+ break;
+ case "geoMatchStatement":
+ GeoMatchStatement = transformGeoMatchStatement(currentstatement.geoMatchStatement as wafv2.CfnWebACL.GeoMatchStatementProperty);
+ Statement.GeoMatchStatement = GeoMatchStatement as GeoMatchStatement;
+ break;
+ case "ipSetReferenceStatement":
+ IPSetReferenceStatement = transformIPSetReferenceStatement(currentstatement.ipSetReferenceStatement as wafv2.CfnWebACL.IPSetReferenceStatementProperty);
+ Statement.IPSetReferenceStatement = IPSetReferenceStatement as IPSetReferenceStatement;
+ break;
+ case "regexPatternSetReferenceStatement":
+ RegexPatternSetReferenceStatement = transformRegexPatternSetReferenceStatement(currentstatement.regexPatternSetReferenceStatement as wafv2.CfnWebACL.RegexPatternSetReferenceStatementProperty);
+ Statement.RegexPatternSetReferenceStatement = RegexPatternSetReferenceStatement as RegexPatternSetReferenceStatement;
+ break;
+ case "sizeConstraintStatement":
+ SizeConstraintStatement = transformSizeConstraintStatement(currentstatement.sizeConstraintStatement as wafv2.CfnWebACL.SizeConstraintStatementProperty);
+ Statement.SizeConstraintStatement = SizeConstraintStatement as SizeConstraintStatement;
+ break;
+ case "sqliMatchStatement":
+ SqliMatchStatement = transformSqliMatchStatement(currentstatement.sqliMatchStatement as wafv2.CfnWebACL.SqliMatchStatementProperty);
+ Statement.SqliMatchStatement = SqliMatchStatement as SqliMatchStatement;
+ break;
+ case "xssMatchStatement":
+ XssMatchStatement = transformXssMatchStatement(currentstatement.xssMatchStatement as wafv2.CfnWebACL.XssMatchStatementProperty);
+ Statement.XssMatchStatement = XssMatchStatement as XssMatchStatement;
+ break;
+ case "labelMatchStatement":
+ LabelMatchStatement = transformLabelMatchStatement(currentstatement.labelMatchStatement as wafv2.CfnWebACL.LabelMatchStatementProperty);
+ Statement.LabelMatchStatement = LabelMatchStatement as LabelMatchStatement;
+ break;
+ case "notStatement":
+ NotStatement = tranformNotStatement(currentstatement.notStatement as wafv2.CfnWebACL.NotStatementProperty);
+ Statement.NotStatement = NotStatement as NotStatement;
+ break;
+ case "regexMatchStatement":
+ RegexMatchStatement = transformRegexMatchStatement(currentstatement.regexMatchStatement as wafv2.CfnWebACL.RegexMatchStatementProperty);
+ Statement.RegexMatchStatement = RegexMatchStatement as RegexMatchStatement;
+ break;
+ case "rateBasedStatement":
+ RateBasedStatement = tranformRateBasedStatement(currentstatement.rateBasedStatement as wafv2.CfnWebACL.RateBasedStatementProperty);
+ Statement.RateBasedStatement = RateBasedStatement as RateBasedStatement;
+ break;
+ default:
+ break;
+ }
+ Statements.push(Statement);
+ }
+ ConcatenatedStatement = {Statements};
+ if(isandStatement){
+ return ConcatenatedStatement as AndStatement;
+ }
+ else{
+ return ConcatenatedStatement as OrStatement;
+ }
+ }
+ else{
+ return undefined;
+ }
+}
+
+/**
+ * The function will map a CDK LabelMatchStatement Property to a SDK LabelMatchStatement Property
+ * @param statement object of a CDK LabelMatchStatement Property
+ * @return configuration object of a SDK LabelMatchStatement Property
+ */
+export function transformLabelMatchStatement(statement: wafv2.CfnWebACL.LabelMatchStatementProperty): LabelMatchStatement {
+ const lst = statement as wafv2.CfnWebACL.LabelMatchStatementProperty | undefined;
+ let LabelMatchStatement = undefined;
+ if (lst) {
+ LabelMatchStatement = {
+ Scope: lst.scope,
+ Key: lst.key,
+ };
+ }
+ return LabelMatchStatement as LabelMatchStatement;
+}
+
+/**
+ * The function will map a CDK NotStatement Property to a SDK NotStatement Property
+ * @param statement object of a CDK NotStatement Property
+ * @return configuration object of a SDK NotStatement Property
+ */
+export function tranformNotStatement(statement: wafv2.CfnWebACL.NotStatementProperty): NotStatement {
+ const nst = statement as wafv2.CfnWebACL.NotStatementProperty | undefined;
+ let NotStatement = undefined;
+ if (nst && nst.statement) {
+ const Statement: Statement ={};
+ let ByteMatchStatement = undefined;
+ let GeoMatchStatement = undefined;
+ let IPSetReferenceStatement = undefined;
+ let RegexPatternSetReferenceStatement = undefined;
+ let SizeConstraintStatement = undefined;
+ let SqliMatchStatement = undefined;
+ let XssMatchStatement = undefined;
+ let LabelMatchStatement = undefined;
+ let RegexMatchStatement = undefined;
+ let RateBasedStatement = undefined;
+ switch(Object.keys(nst.statement)[0]){
+ case "byteMatchStatement":
+ ByteMatchStatement = transformByteMatchStatement((nst.statement as wafv2.CfnWebACL.StatementProperty).byteMatchStatement as wafv2.CfnWebACL.ByteMatchStatementProperty);
+ Statement.ByteMatchStatement = ByteMatchStatement as ByteMatchStatement;
+ break;
+ case "geoMatchStatement":
+ GeoMatchStatement = transformGeoMatchStatement((nst.statement as wafv2.CfnWebACL.StatementProperty).geoMatchStatement as wafv2.CfnWebACL.GeoMatchStatementProperty);
+ Statement.GeoMatchStatement = GeoMatchStatement as GeoMatchStatement;
+ break;
+ case "ipSetReferenceStatement":
+ IPSetReferenceStatement = transformIPSetReferenceStatement((nst.statement as wafv2.CfnWebACL.StatementProperty).ipSetReferenceStatement as wafv2.CfnWebACL.IPSetReferenceStatementProperty);
+ Statement.IPSetReferenceStatement = IPSetReferenceStatement as IPSetReferenceStatement;
+ break;
+ case "regexPatternSetReferenceStatement":
+ RegexPatternSetReferenceStatement = transformRegexPatternSetReferenceStatement((nst.statement as wafv2.CfnWebACL.StatementProperty).regexPatternSetReferenceStatement as wafv2.CfnWebACL.RegexPatternSetReferenceStatementProperty);
+ Statement.RegexPatternSetReferenceStatement = RegexPatternSetReferenceStatement as RegexPatternSetReferenceStatement;
+ break;
+ case "sizeConstraintStatement":
+ SizeConstraintStatement = transformSizeConstraintStatement((nst.statement as wafv2.CfnWebACL.StatementProperty).sizeConstraintStatement as wafv2.CfnWebACL.SizeConstraintStatementProperty);
+ Statement.SizeConstraintStatement = SizeConstraintStatement as SizeConstraintStatement;
+ break;
+ case "sqliMatchStatement":
+ SqliMatchStatement = transformSqliMatchStatement((nst.statement as wafv2.CfnWebACL.StatementProperty).sqliMatchStatement as wafv2.CfnWebACL.SqliMatchStatementProperty);
+ Statement.SqliMatchStatement = SqliMatchStatement as SqliMatchStatement;
+ break;
+ case "xssMatchStatement":
+ XssMatchStatement = transformXssMatchStatement((nst.statement as wafv2.CfnWebACL.StatementProperty).xssMatchStatement as wafv2.CfnWebACL.XssMatchStatementProperty);
+ Statement.XssMatchStatement = XssMatchStatement as XssMatchStatement;
+ break;
+ case "labelMatchStatement":
+ LabelMatchStatement = transformLabelMatchStatement((nst.statement as wafv2.CfnWebACL.StatementProperty).labelMatchStatement as wafv2.CfnWebACL.LabelMatchStatementProperty);
+ Statement.LabelMatchStatement = LabelMatchStatement as LabelMatchStatement;
+ break;
+ case "regexMatchStatement":
+ RegexMatchStatement = transformRegexMatchStatement((nst.statement as wafv2.CfnWebACL.StatementProperty).regexMatchStatement as wafv2.CfnWebACL.RegexMatchStatementProperty);
+ Statement.RegexMatchStatement = RegexMatchStatement as RegexMatchStatement;
+ break;
+ case "rateBasedStatement":
+ RateBasedStatement = tranformRateBasedStatement((nst.statement as wafv2.CfnWebACL.StatementProperty).rateBasedStatement as wafv2.CfnWebACL.RateBasedStatementProperty);
+ Statement.RateBasedStatement = RateBasedStatement as RateBasedStatement;
+ break;
+ default:
+ break;
+ }
+ NotStatement = {Statement};
+ }
+ return NotStatement as NotStatement;
+}
+
+/**
+ * The function will map a CDK RateBasedStatement Property to a SDK RateBasedStatement Property
+ * @param statement object of a CDK RateBasedStatement Property
+ * @return configuration object of a SDK RateBasedStatement Property
+ */
+export function tranformRateBasedStatement(statement: wafv2.CfnWebACL.RateBasedStatementProperty): RateBasedStatement {
+ const rbst = statement as wafv2.CfnWebACL.RateBasedStatementProperty | undefined;
+ let RateBasedStatement = undefined;
+ if (rbst && rbst.scopeDownStatement) {
+ const Statement: Statement ={};
+ let ByteMatchStatement = undefined;
+ let GeoMatchStatement = undefined;
+ let IPSetReferenceStatement = undefined;
+ let RegexPatternSetReferenceStatement = undefined;
+ let SizeConstraintStatement = undefined;
+ let SqliMatchStatement = undefined;
+ let XssMatchStatement = undefined;
+ let LabelMatchStatement = undefined;
+ let RegexMatchStatement = undefined;
+ switch(Object.keys(rbst.scopeDownStatement)[0]){
+ case "byteMatchStatement":
+ ByteMatchStatement = transformByteMatchStatement((rbst.scopeDownStatement as wafv2.CfnWebACL.StatementProperty).byteMatchStatement as wafv2.CfnWebACL.ByteMatchStatementProperty);
+ Statement.ByteMatchStatement = ByteMatchStatement as ByteMatchStatement;
+ break;
+ case "geoMatchStatement":
+ GeoMatchStatement = transformGeoMatchStatement((rbst.scopeDownStatement as wafv2.CfnWebACL.StatementProperty).geoMatchStatement as wafv2.CfnWebACL.GeoMatchStatementProperty);
+ Statement.GeoMatchStatement = GeoMatchStatement as GeoMatchStatement;
+ break;
+ case "ipSetReferenceStatement":
+ IPSetReferenceStatement = transformIPSetReferenceStatement((rbst.scopeDownStatement as wafv2.CfnWebACL.StatementProperty).ipSetReferenceStatement as wafv2.CfnWebACL.IPSetReferenceStatementProperty);
+ Statement.IPSetReferenceStatement = IPSetReferenceStatement as IPSetReferenceStatement;
+ break;
+ case "regexPatternSetReferenceStatement":
+ RegexPatternSetReferenceStatement = transformRegexPatternSetReferenceStatement((rbst.scopeDownStatement as wafv2.CfnWebACL.StatementProperty).regexPatternSetReferenceStatement as wafv2.CfnWebACL.RegexPatternSetReferenceStatementProperty);
+ Statement.RegexPatternSetReferenceStatement = RegexPatternSetReferenceStatement as RegexPatternSetReferenceStatement;
+ break;
+ case "sizeConstraintStatement":
+ SizeConstraintStatement = transformSizeConstraintStatement((rbst.scopeDownStatement as wafv2.CfnWebACL.StatementProperty).sizeConstraintStatement as wafv2.CfnWebACL.SizeConstraintStatementProperty);
+ Statement.SizeConstraintStatement = SizeConstraintStatement as SizeConstraintStatement;
+ break;
+ case "sqliMatchStatement":
+ SqliMatchStatement = transformSqliMatchStatement((rbst.scopeDownStatement as wafv2.CfnWebACL.StatementProperty).sqliMatchStatement as wafv2.CfnWebACL.SqliMatchStatementProperty);
+ Statement.SqliMatchStatement = SqliMatchStatement as SqliMatchStatement;
+ break;
+ case "xssMatchStatement":
+ XssMatchStatement = transformXssMatchStatement((rbst.scopeDownStatement as wafv2.CfnWebACL.StatementProperty).xssMatchStatement as wafv2.CfnWebACL.XssMatchStatementProperty);
+ Statement.XssMatchStatement = XssMatchStatement as XssMatchStatement;
+ break;
+ case "labelMatchStatement":
+ LabelMatchStatement = transformLabelMatchStatement((rbst.scopeDownStatement as wafv2.CfnWebACL.StatementProperty).labelMatchStatement as wafv2.CfnWebACL.LabelMatchStatementProperty);
+ Statement.LabelMatchStatement = LabelMatchStatement as LabelMatchStatement;
+ break;
+ case "regexMatchStatement":
+ RegexMatchStatement = transformRegexMatchStatement((rbst.scopeDownStatement as wafv2.CfnWebACL.StatementProperty).regexMatchStatement as wafv2.CfnWebACL.RegexMatchStatementProperty);
+ Statement.RegexMatchStatement = RegexMatchStatement as RegexMatchStatement;
+ break;
+ default:
+ break;
+ }
+ let ForwardedIPConfig = undefined;
+ if (rbst.forwardedIpConfig) {
+ const fic = rbst.forwardedIpConfig as wafv2.CfnWebACL.ForwardedIPConfigurationProperty;
+ ForwardedIPConfig ={
+ FallbackBehavior: fic.fallbackBehavior,
+ HeaderName: fic.headerName
+ };
+ }
+ RateBasedStatement = {
+ ForwardedIPConfig,
+ ScopeDownStatement: Statement,
+ Limit: rbst.limit,
+ };
+ }
+ return RateBasedStatement as RateBasedStatement;
+}
+
+
+/**
+ * The function will map a CDK Rule Property to a SDK Rule Property
+ * @param cdkRule configuration object of a CDK Rule Property
+ * @return configuration object of a SDK Rule Property
+ */
+export function transformCdkRuletoSdkRule(cdkRule: wafv2.CfnWebACL.RuleProperty): Rule {
+ const action = (cdkRule.action as wafv2.CfnWebACL.RuleActionProperty) as wafv2.CfnWebACL.RuleActionProperty | undefined;
+ let Action = undefined;
+ if (action) {
+ let Captcha = undefined;
+ if (action.captcha) {
+ const ac = action.captcha as wafv2.CfnWebACL.CaptchaActionProperty;
+ if(ac.customRequestHandling){
+ const crh = ac.customRequestHandling as wafv2.CfnWebACL.CustomRequestHandlingProperty;
+ const InsertHeaders: { Name: string; Value: string; }[]= [];
+ if(crh.insertHeaders){
+ (crh.insertHeaders as wafv2.CfnWebACL.CustomHTTPHeaderProperty[]).forEach((h) => {
+ InsertHeaders?.push({
+ Name: h.name,
+ Value: h.value
+ });
+ });
+ }
+ Captcha = {
+ CustomRequestHandling: {
+ InsertHeaders,
+ },
+ };
+ }
+ Captcha = {};
+ }
+ let Allow = undefined;
+ if (action.allow) {
+ const al = action.allow as wafv2.CfnWebACL.AllowActionProperty;
+ if(al.customRequestHandling){
+ const crh = al.customRequestHandling as wafv2.CfnWebACL.CustomRequestHandlingProperty;
+ const InsertHeaders: { Name: string; Value: string; }[]= [];
+ if(crh.insertHeaders){
+ (crh.insertHeaders as wafv2.CfnWebACL.CustomHTTPHeaderProperty[]).forEach((h) => {
+ InsertHeaders?.push({
+ Name: h.name,
+ Value: h.value
+ });
+ });
+ }
+ Allow = {
+ CustomRequestHandling: {
+ InsertHeaders,
+ },
+ };
+ }
+ Allow = {};
+ }
+
+ let Block = undefined;
+ if (action.block) {
+ const bl = action.block as wafv2.CfnWebACL.BlockActionProperty;
+ let CustomResponse = undefined;
+ if(bl.customResponse){
+ const cr = bl.customResponse as wafv2.CfnWebACL.CustomResponseProperty;
+ const CustomResponseHeaders: { Name: string; Value: string; }[]= [];
+ if(cr.responseHeaders){
+ (cr.responseHeaders as wafv2.CfnWebACL.CustomHTTPHeaderProperty[]).forEach((h) => {
+ CustomResponseHeaders?.push({
+ Name: h.name,
+ Value: h.value
+ });
+ });
+ }
+ CustomResponse = {
+ ResponseCode: cr.responseCode,
+ CustomResponseBodyKey: cr.customResponseBodyKey,
+ ResponseHeaders: CustomResponseHeaders,
+ };
+ }
+ Block = {
+ CustomResponse,
+ };
+ }
+
+ let Count = undefined;
+ if (action.count) {
+ const ct = action.count as wafv2.CfnWebACL.CountActionProperty;
+ if(ct.customRequestHandling){
+ const crh = ct.customRequestHandling as wafv2.CfnWebACL.CustomRequestHandlingProperty;
+ const InsertHeaders: { Name: string; Value: string; }[]= [];
+ if(crh.insertHeaders){
+ (crh.insertHeaders as wafv2.CfnWebACL.CustomHTTPHeaderProperty[]).forEach((h) => {
+ InsertHeaders?.push({
+ Name: h.name,
+ Value: h.value
+ });
+ });
+ }
+ Count = {
+ CustomRequestHandling: {
+ InsertHeaders,
+ },
+ };
+ }
+ Count = {};
+ }
+
+ let Challenge = undefined;
+ if (action.challenge) {
+ const ch = action.challenge as wafv2.CfnWebACL.ChallengeActionProperty;
+ if(ch.customRequestHandling){
+ const crh = ch.customRequestHandling as wafv2.CfnWebACL.CustomRequestHandlingProperty;
+ const InsertHeaders: { Name: string; Value: string; }[]= [];
+ if(crh.insertHeaders){
+ (crh.insertHeaders as wafv2.CfnWebACL.CustomHTTPHeaderProperty[]).forEach((h) => {
+ InsertHeaders?.push({
+ Name: h.name,
+ Value: h.value
+ });
+ });
+ }
+ Challenge = {
+ CustomRequestHandling: {
+ InsertHeaders,
+ },
+ };
+ }
+ Challenge = {};
+ }
+ Action = {
+ Allow,
+ Block,
+ Count,
+ Captcha,
+ Challenge,
+ };
+ }
+ const vc = (cdkRule.visibilityConfig as wafv2.CfnWebACL.VisibilityConfigProperty) as wafv2.CfnWebACL.VisibilityConfigProperty | undefined;
+ let VisibilityConfig = undefined;
+ if(vc){
+ VisibilityConfig = {
+ CloudWatchMetricsEnabled: vc.cloudWatchMetricsEnabled as boolean,
+ MetricName: vc.metricName,
+ SampledRequestsEnabled: vc.sampledRequestsEnabled as boolean,
+ };
+ }
+
+ const oa = (cdkRule.overrideAction as wafv2.CfnWebACL.OverrideActionProperty) as wafv2.CfnWebACL.OverrideActionProperty | undefined;
+ let OverrideAction = undefined;
+ if(oa){
+ OverrideAction ={
+ Count: oa.count,
+ None: oa.none
+ };
+ }
+
+ const rl = cdkRule.ruleLabels as wafv2.CfnWebACL.LabelProperty[] | undefined;
+ let RuleLabels = undefined;
+ if (rl) {
+ RuleLabels = [];
+ rl.forEach((l) => {
+ RuleLabels?.push({
+ Name: l.name
+ });
+ }
+ );
+ }
+
+ const cC = (cdkRule.captchaConfig as wafv2.CfnWebACL.CaptchaConfigProperty) as wafv2.CfnWebACL.CaptchaConfigProperty | undefined;
+ let CaptchaConfig = undefined;
+ if(cC){
+ let ImmunityTimeProperty = undefined;
+ if(cC.immunityTimeProperty){
+ const ccIt = cC.immunityTimeProperty as wafv2.CfnWebACL.ImmunityTimePropertyProperty;
+ ImmunityTimeProperty = {
+ ImmunityTime : ccIt.immunityTime,
+ };
+ }
+ CaptchaConfig = {
+ ImmunityTimeProperty,
+ };
+ }
+
+ const cConfig = (cdkRule.challengeConfig as wafv2.CfnWebACL.ChallengeConfigProperty) as wafv2.CfnWebACL.ChallengeConfigProperty | undefined;
+ let ChallengeConfig = undefined;
+ if(cConfig){
+ let ImmunityTimeProperty = undefined;
+ if(cConfig.immunityTimeProperty){
+ const ccIt = cConfig.immunityTimeProperty as wafv2.CfnWebACL.ImmunityTimePropertyProperty;
+ ImmunityTimeProperty = {
+ ImmunityTime : ccIt.immunityTime,
+ };
+ }
+ ChallengeConfig = {
+ ImmunityTimeProperty,
+ };
+ }
+
+ let ByteMatchStatement = undefined;
+ let GeoMatchStatement = undefined;
+ let IPSetReferenceStatement = undefined;
+ let RegexPatternSetReferenceStatement = undefined;
+ let SizeConstraintStatement = undefined;
+ let SqliMatchStatement = undefined;
+ let XssMatchStatement = undefined;
+ let AndStatement = undefined;
+ let OrStatement = undefined;
+ let LabelMatchStatement = undefined;
+ let NotStatement = undefined;
+ let RegexMatchStatement = undefined;
+ let RateBasedStatement = undefined;
+
+ switch(Object.keys(cdkRule.statement)[0]){
+ case "byteMatchStatement":
+ ByteMatchStatement = transformByteMatchStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).byteMatchStatement as wafv2.CfnWebACL.ByteMatchStatementProperty);
+ break;
+ case "geoMatchStatement":
+ GeoMatchStatement = transformGeoMatchStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).geoMatchStatement as wafv2.CfnWebACL.GeoMatchStatementProperty);
+ break;
+ case "ipSetReferenceStatement":
+ IPSetReferenceStatement = transformIPSetReferenceStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).ipSetReferenceStatement as wafv2.CfnWebACL.IPSetReferenceStatementProperty);
+ break;
+ case "regexPatternSetReferenceStatement":
+ RegexPatternSetReferenceStatement = transformRegexPatternSetReferenceStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).regexPatternSetReferenceStatement as wafv2.CfnWebACL.RegexPatternSetReferenceStatementProperty);
+ break;
+ case "sizeConstraintStatement":
+ SizeConstraintStatement = transformSizeConstraintStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).sizeConstraintStatement as wafv2.CfnWebACL.SizeConstraintStatementProperty);
+ break;
+ case "sqliMatchStatement":
+ SqliMatchStatement = transformSqliMatchStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).sqliMatchStatement as wafv2.CfnWebACL.SqliMatchStatementProperty);
+ break;
+ case "xssMatchStatement":
+ XssMatchStatement = transformXssMatchStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).xssMatchStatement as wafv2.CfnWebACL.XssMatchStatementProperty);
+ break;
+ case "andStatement":
+ AndStatement = transformConcatenatedStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).andStatement as wafv2.CfnWebACL.AndStatementProperty, true);
+ break;
+ case "orStatement":
+ OrStatement = transformConcatenatedStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).orStatement as wafv2.CfnWebACL.OrStatementProperty, false);
+ break;
+ case "labelMatchStatement":
+ LabelMatchStatement = transformLabelMatchStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).labelMatchStatement as wafv2.CfnWebACL.LabelMatchStatementProperty);
+ break;
+ case "notStatement":
+ NotStatement = tranformNotStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).notStatement as wafv2.CfnWebACL.NotStatementProperty);
+ break;
+ case "regexMatchStatement":
+ RegexMatchStatement = transformRegexMatchStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).regexMatchStatement as wafv2.CfnWebACL.RegexMatchStatementProperty);
+ break;
+ case "rateBasedStatement":
+ RateBasedStatement = tranformRateBasedStatement((cdkRule.statement as wafv2.CfnWebACL.StatementProperty).rateBasedStatement as wafv2.CfnWebACL.RateBasedStatementProperty);
+ break;
+ default:
+ break;
+ }
+ const rule: Rule = {
+ Name: cdkRule.name,
+ Priority: cdkRule.priority,
+ Statement: {
+ ByteMatchStatement,
+ GeoMatchStatement,
+ IPSetReferenceStatement,
+ RegexPatternSetReferenceStatement,
+ SizeConstraintStatement,
+ SqliMatchStatement,
+ XssMatchStatement,
+ AndStatement,
+ OrStatement,
+ LabelMatchStatement,
+ NotStatement,
+ RegexMatchStatement,
+ RateBasedStatement,
+ },
+ Action,
+ OverrideAction,
+ CaptchaConfig,
+ ChallengeConfig,
+ VisibilityConfig,
+ RuleLabels
+ };
+ return rule;
+}
\ No newline at end of file
diff --git a/lib/types/config.ts b/lib/types/config.ts
index 4ce80960..7e6a5f35 100644
--- a/lib/types/config.ts
+++ b/lib/types/config.ts
@@ -10,7 +10,7 @@ export interface Config {
readonly LoggingConfiguration: "S3" | "Firehose"
readonly FireHoseKeyArn?: string,
readonly S3LoggingBucketName: string,
- DeployHash: string,
+ readonly DeployHash?: string,
readonly SecuredDomain: Array,
readonly CreateDashboard?: boolean,
},
@@ -113,20 +113,22 @@ export interface RuleGroupSet {
type IPAddress = string; // The regex above matches both IPv4 and IPv6 in CIDR notation, e.g. 123.4.3.0/32
interface IPAddressWithDescription {
- Description: string,
- IP: IPAddress
+ description: string,
+ ip: IPAddress
}
export interface IPSet {
/**
* @TJS-pattern ^[a-zA-Z0-9]+$
*/
- Name: string, // This name will be used as a CloudFormation logical ID, so it can't have a already used name and must be alphanumeric
+ name: string, // This name will be used as a CloudFormation logical ID, so it can't have a already used name and must be alphanumeric
/*
* @TJS-pattern ^[\w+=:#@\/\-,\.][\w+=:#@\/\-,\.\s]+[\w+=:#@\/\-,\.]$
*/
- Description?: string,
- Addresses: Array,
- IPAddressVersion: "IPV4" | "IPV6",
- Tags?: CfnTag[]
+ description?: string,
+ addresses: Array,
+ ipAddressVersion: "IPV4" | "IPV6",
+ tags?: CfnTag[]
}
+
+export const NONEVERSIONEDMANAGEDRULEGRPOUP = ["AWSManagedRulesBotControlRuleSet","AWSManagedRulesATPRuleSet","AWSManagedRulesACFPRuleSet","AWSManagedRulesAmazonIpReputationList","AWSManagedRulesAnonymousIpList"];
\ No newline at end of file
diff --git a/lib/types/fms.ts b/lib/types/fms.ts
index c1b1ef5e..1f9c9c41 100644
--- a/lib/types/fms.ts
+++ b/lib/types/fms.ts
@@ -1,87 +1,84 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/ban-types */
+
+import { aws_wafv2 as waf } from "aws-cdk-lib";
+
interface CustomRequestHandling {
- CustomRequestHandling?: {
- InsertHeaders: {
+ customRequestHandling?: {
+ insertHeaders: {
/**
* @TJS-pattern ^[a-zA-Z0-9._$-]+$
*/
- Name: string,
+ name: string,
/**
* @TJS-pattern .*
*/
- Value: string,
+ value: string,
}[],
}
}
interface CustomResponse {
- CustomResponse?: {
- ResponseCode: number,
+ customResponse?: {
+ responseCode: number,
/**
* @TJS-pattern ^[\w\-]+$
*/
- CustomResponseBodyKey?: string,
- ResponseHeaders?: {
+ customResponseBodyKey?: string,
+ responseHeaders?: {
/**
* @TJS-pattern ^[a-zA-Z0-9._$-]+$
*/
- Name: string,
+ name: string,
/**
* @TJS-pattern .*
*/
- Value: string,
+ value: string,
}[],
}
}
interface Action {
- Block?: CustomResponse,
- Allow?: CustomRequestHandling,
- Count?: CustomRequestHandling,
- Captcha?: CustomRequestHandling,
- Challenge?: CustomRequestHandling
+ block?: CustomResponse,
+ allow?: CustomRequestHandling,
+ count?: CustomRequestHandling,
+ captcha?: CustomRequestHandling,
+ challenge?: CustomRequestHandling
}
interface RuleActionOverrideProperty {
- Name: string,
- ActionToUse: Action
+ name: string,
+ actionToUse: Action
}
type NameObject = {
/**
* @TJS-pattern ^[0-9A-Za-z_\-:]+$
*/
- Name: string
+ name: string
}
export interface ManagedRuleGroup {
- Vendor: string,
- Name: string,
- Version: string,
- Capacity: number,
- ExcludeRules?: NameObject[],
- OverrideAction?: {
+ vendor: string,
+ name: string,
+ version: string,
+ capacity: number,
+ excludeRules?: NameObject[],
+ overrideAction?: {
type: "COUNT" | "NONE"
},
- RuleActionOverrides?: RuleActionOverrideProperty[]
+ ruleActionOverrides?: RuleActionOverrideProperty[],
+ versionEnabled?: boolean
+ latestVersion?: boolean
}
-
export interface Rule {
- Name?: string,
- Statement: any,
- Action: Action,
- VisibilityConfig: {
- SampledRequestsEnabled: boolean,
- CloudWatchMetricsEnabled: boolean,
- MetricName?: string
- },
- CaptchaConfig?: {
- ImmunityTimeProperty?: {
- ImmunityTime: number
- }
- },
- RuleLabels?: NameObject[]
+ name: string,
+ statement: waf.CfnWebACL.StatementProperty,
+ action: waf.CfnWebACL.RuleActionProperty,
+ visibilityConfig: waf.CfnWebACL.VisibilityConfigProperty,
+ captchaConfig?: waf.CfnWebACL.CaptchaConfigProperty,
+ ruleLabels?: waf.CfnWebACL.LabelProperty[],
+ priority: number,
}
export interface ManagedServiceData {
@@ -101,7 +98,7 @@ export interface ServiceDataManagedRuleGroup extends ServiceDataAbstactRuleGroup
managedRuleGroupIdentifier: {
vendorName: string,
managedRuleGroupName: string,
- version: string | null,
+ version?: string | null,
versionEnabled?: boolean
},
// eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/package-lock.json b/package-lock.json
index 09b792fa..20971e5f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,51 +1,53 @@
{
"name": "aws-firewall-factory",
- "version": "3.3.0",
+ "version": "4.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "aws-firewall-factory",
- "version": "3.3.0",
+ "version": "4.0.0",
"dependencies": {
- "@aws-sdk/client-cloudformation": "^3.353.0",
- "@aws-sdk/client-cloudwatch": "^3.353.0",
- "@aws-sdk/client-fms": "^3.353.0",
- "@aws-sdk/client-pricing": "^3.353.0",
- "@aws-sdk/client-service-quotas": "^3.353.0",
- "@aws-sdk/client-shield": "^3.353.0",
- "@aws-sdk/client-wafv2": "^3.353.0",
+ "@aws-sdk/client-cloudformation": "^3.398.0",
+ "@aws-sdk/client-cloudwatch": "^3.398.0",
+ "@aws-sdk/client-fms": "^3.398.0",
+ "@aws-sdk/client-pricing": "^3.398.0",
+ "@aws-sdk/client-service-quotas": "^3.398.0",
+ "@aws-sdk/client-shield": "^3.398.0",
+ "@aws-sdk/client-wafv2": "^3.398.0",
"@mhlabs/cfn-diagram": "^1.1.29",
+ "@types/aws-lambda": "^8.10.119",
"@types/lodash": "4.14.178",
- "ajv": "8.10.0",
- "aws-cdk-lib": "2.80.0",
+ "aws-cdk-lib": "2.93.0",
+ "aws-lambda": "^1.0.7",
"cfonts": "^3.2.0",
"constructs": "10.2.25",
- "lodash": "4.17.21",
- "process": "0.11.10",
- "shapes": "0.4.0",
- "typescript-json-schema": "0.59.0"
+ "lodash": "4.17.21"
},
"bin": {
"firewallfactory": "bin/aws-firewall-factory.js"
},
"devDependencies": {
- "@types/jest": "26.0.10",
"@types/node": "18.16.3",
- "@typescript-eslint/eslint-plugin": "5.59.11",
- "@typescript-eslint/parser": "5.59.11",
- "aws-cdk": "^2.89.0",
- "eslint": "8.42.0",
- "eslint-config-standard": "^17.0.0",
- "eslint-plugin-import": "2.27.5",
- "eslint-plugin-node": "11.1.0",
- "eslint-plugin-promise": "6.1.1",
+ "@typescript-eslint/eslint-plugin": "6.4.1",
+ "@typescript-eslint/parser": "6.0.0",
+ "aws-cdk": "^2.93.0",
+ "eslint": "8.48.0",
"jest": "29.5.0",
- "ts-jest": "29.1.0",
+ "ts-jest": "29.1.1",
"ts-node": "10.9.1",
"typescript": "4.9.5"
}
},
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/@ampproject/remapping": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
@@ -65,14 +67,14 @@
"integrity": "sha512-Kf5J8DfJK4wZFWT2Myca0lhwke7LwHcHBo+4TvWOGJrFVVKVuuiLCkzPPRBQQVDj0Vtn2NBokZAz8pfMpAqAKg=="
},
"node_modules/@aws-cdk/asset-kubectl-v20": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.1.tgz",
- "integrity": "sha512-U1ntiX8XiMRRRH5J1IdC+1t5CE89015cwyt5U63Cpk0GnMlN5+h9WsWMlKlPXZR4rdq/m806JRlBMRpBUB2Dhw=="
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.2.tgz",
+ "integrity": "sha512-3M2tELJOxQv0apCIiuKQ4pAbncz9GuLwnKFqxifWfe77wuMxyTRPmxssYHs42ePqzap1LT6GDcPygGs+hHstLg=="
},
- "node_modules/@aws-cdk/asset-node-proxy-agent-v5": {
- "version": "2.0.166",
- "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.166.tgz",
- "integrity": "sha512-j0xnccpUQHXJKPgCwQcGGNu4lRiC1PptYfdxBIH1L4dRK91iBxtSQHESRQX+yB47oGLaF/WfNN/aF3WXwlhikg=="
+ "node_modules/@aws-cdk/asset-node-proxy-agent-v6": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.0.1.tgz",
+ "integrity": "sha512-DDt4SLdLOwWCjGtltH4VCST7hpOI5DzieuhGZsBpZ+AgJdSI2GCjklCXm0GCTwJG/SolkL5dtQXyUKgg9luBDg=="
},
"node_modules/@aws-crypto/crc32": {
"version": "3.0.0",
@@ -166,46 +168,46 @@
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
"node_modules/@aws-sdk/client-cloudformation": {
- "version": "3.380.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudformation/-/client-cloudformation-3.380.0.tgz",
- "integrity": "sha512-SjBfz4aqV0yjbaPdHS1Elaid/nF4EkxWSxIOZm6UcOXWIhbt9E8/A2KGFvvIZ6PqoRYQJhygbl6FWXLUqNnU+A==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudformation/-/client-cloudformation-3.398.0.tgz",
+ "integrity": "sha512-NQAjm0FYmmMT9jn7y2kYpa5MtANwe2c+65IJATXCJC9YqmDxDveZce6YmOpZ3Qflf7Z1J2A7rYAwo0qO35/Zcg==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.379.1",
- "@aws-sdk/credential-provider-node": "3.379.1",
- "@aws-sdk/middleware-host-header": "3.379.1",
- "@aws-sdk/middleware-logger": "3.378.0",
- "@aws-sdk/middleware-recursion-detection": "3.378.0",
- "@aws-sdk/middleware-signing": "3.379.1",
- "@aws-sdk/middleware-user-agent": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@aws-sdk/util-user-agent-browser": "3.378.0",
- "@aws-sdk/util-user-agent-node": "3.378.0",
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/hash-node": "^2.0.1",
- "@smithy/invalid-dependency": "^2.0.1",
- "@smithy/middleware-content-length": "^2.0.1",
- "@smithy/middleware-endpoint": "^2.0.1",
- "@smithy/middleware-retry": "^2.0.1",
- "@smithy/middleware-serde": "^2.0.1",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
"@smithy/middleware-stack": "^2.0.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/smithy-client": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-body-length-browser": "^2.0.0",
- "@smithy/util-body-length-node": "^2.0.0",
- "@smithy/util-defaults-mode-browser": "^2.0.1",
- "@smithy/util-defaults-mode-node": "^2.0.1",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
"@smithy/util-retry": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
- "@smithy/util-waiter": "^2.0.1",
+ "@smithy/util-waiter": "^2.0.5",
"fast-xml-parser": "4.2.5",
"tslib": "^2.5.0",
"uuid": "^8.3.2"
@@ -214,59 +216,47 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/client-cloudwatch": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.379.1.tgz",
- "integrity": "sha512-4bGK68crHhVN0TArIdtd2BEIHXyFo2zVp9tBnk9rRY9vB3ORyDFPgqdR30ZVQnkyJqC3w9kliNg8MaMVSQ3UyQ==",
+ "version": "3.400.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.400.0.tgz",
+ "integrity": "sha512-wQ2Rlyo1YqVGezXHzy3oR2NYBZBT6FK3SRk4DAOqvWA7rquFprrq8vRs4A7NGIL9Gqb38Vjr6iMiJMBc2NzACQ==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.379.1",
- "@aws-sdk/credential-provider-node": "3.379.1",
- "@aws-sdk/middleware-host-header": "3.379.1",
- "@aws-sdk/middleware-logger": "3.378.0",
- "@aws-sdk/middleware-recursion-detection": "3.378.0",
- "@aws-sdk/middleware-signing": "3.379.1",
- "@aws-sdk/middleware-user-agent": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@aws-sdk/util-user-agent-browser": "3.378.0",
- "@aws-sdk/util-user-agent-node": "3.378.0",
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/hash-node": "^2.0.1",
- "@smithy/invalid-dependency": "^2.0.1",
- "@smithy/middleware-content-length": "^2.0.1",
- "@smithy/middleware-endpoint": "^2.0.1",
- "@smithy/middleware-retry": "^2.0.1",
- "@smithy/middleware-serde": "^2.0.1",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
"@smithy/middleware-stack": "^2.0.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/smithy-client": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-body-length-browser": "^2.0.0",
- "@smithy/util-body-length-node": "^2.0.0",
- "@smithy/util-defaults-mode-browser": "^2.0.1",
- "@smithy/util-defaults-mode-node": "^2.0.1",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
"@smithy/util-retry": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
- "@smithy/util-waiter": "^2.0.1",
+ "@smithy/util-waiter": "^2.0.5",
"fast-xml-parser": "4.2.5",
"tslib": "^2.5.0"
},
@@ -274,56 +264,44 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/client-fms": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-fms/-/client-fms-3.379.1.tgz",
- "integrity": "sha512-9wAltiZcmzpG+61Ogr0yjG5IwZ6vn+9KpimpddJMlteGboqqhXRHcCciwQ5D13+IS9WoDohBGayiplOM1RNGvg==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-fms/-/client-fms-3.398.0.tgz",
+ "integrity": "sha512-DZlLSqRSf+vvQBs5D1pybTm3CzyPmn4r17DTx3oUmfN7xrp/E4aRRThPCiMfNtargaV7YyXWOKkxkh35fRik9A==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.379.1",
- "@aws-sdk/credential-provider-node": "3.379.1",
- "@aws-sdk/middleware-host-header": "3.379.1",
- "@aws-sdk/middleware-logger": "3.378.0",
- "@aws-sdk/middleware-recursion-detection": "3.378.0",
- "@aws-sdk/middleware-signing": "3.379.1",
- "@aws-sdk/middleware-user-agent": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@aws-sdk/util-user-agent-browser": "3.378.0",
- "@aws-sdk/util-user-agent-node": "3.378.0",
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/hash-node": "^2.0.1",
- "@smithy/invalid-dependency": "^2.0.1",
- "@smithy/middleware-content-length": "^2.0.1",
- "@smithy/middleware-endpoint": "^2.0.1",
- "@smithy/middleware-retry": "^2.0.1",
- "@smithy/middleware-serde": "^2.0.1",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
"@smithy/middleware-stack": "^2.0.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/smithy-client": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-body-length-browser": "^2.0.0",
- "@smithy/util-body-length-node": "^2.0.0",
- "@smithy/util-defaults-mode-browser": "^2.0.1",
- "@smithy/util-defaults-mode-node": "^2.0.1",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
"@smithy/util-retry": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
"tslib": "^2.5.0"
@@ -332,56 +310,44 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/client-fms/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/client-pricing": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-pricing/-/client-pricing-3.379.1.tgz",
- "integrity": "sha512-qqTLyUZ7SnwS60lb3KfnuKiCdwQBaOtVcrlYbiYtPCrt0RZCdRqCd/HAHaHg4W/GbUycMrhbxQwjNP1oPDy46w==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-pricing/-/client-pricing-3.398.0.tgz",
+ "integrity": "sha512-iho+qoDF2/40stRsjLn/Rhle8pNKY6fd2PLqC7JkMmg9CfChptq/wa2CSVxoWa/QmIB9h8Eg4O+Jp6VUTZx4eA==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.379.1",
- "@aws-sdk/credential-provider-node": "3.379.1",
- "@aws-sdk/middleware-host-header": "3.379.1",
- "@aws-sdk/middleware-logger": "3.378.0",
- "@aws-sdk/middleware-recursion-detection": "3.378.0",
- "@aws-sdk/middleware-signing": "3.379.1",
- "@aws-sdk/middleware-user-agent": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@aws-sdk/util-user-agent-browser": "3.378.0",
- "@aws-sdk/util-user-agent-node": "3.378.0",
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/hash-node": "^2.0.1",
- "@smithy/invalid-dependency": "^2.0.1",
- "@smithy/middleware-content-length": "^2.0.1",
- "@smithy/middleware-endpoint": "^2.0.1",
- "@smithy/middleware-retry": "^2.0.1",
- "@smithy/middleware-serde": "^2.0.1",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
"@smithy/middleware-stack": "^2.0.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/smithy-client": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-body-length-browser": "^2.0.0",
- "@smithy/util-body-length-node": "^2.0.0",
- "@smithy/util-defaults-mode-browser": "^2.0.1",
- "@smithy/util-defaults-mode-node": "^2.0.1",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
"@smithy/util-retry": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
"tslib": "^2.5.0"
@@ -390,56 +356,44 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/client-pricing/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/client-service-quotas": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-service-quotas/-/client-service-quotas-3.379.1.tgz",
- "integrity": "sha512-UwH6mJQbMNM1dMtnzsSVl1J1jVNyOLx8SuCTXqXnYAIMYm//t+Aq3NPTEFVC8fxsjvap+kWq4Y44MC8bqR8Tbw==",
+ "version": "3.401.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-service-quotas/-/client-service-quotas-3.401.0.tgz",
+ "integrity": "sha512-UIL9mNRN01y2hC3THTyY+ON2Ni2KQy3yVJELkwEfMuALonONFlQGod3/hUUAhhmheBRm3qsfOdnqtLZx37n4BQ==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.379.1",
- "@aws-sdk/credential-provider-node": "3.379.1",
- "@aws-sdk/middleware-host-header": "3.379.1",
- "@aws-sdk/middleware-logger": "3.378.0",
- "@aws-sdk/middleware-recursion-detection": "3.378.0",
- "@aws-sdk/middleware-signing": "3.379.1",
- "@aws-sdk/middleware-user-agent": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@aws-sdk/util-user-agent-browser": "3.378.0",
- "@aws-sdk/util-user-agent-node": "3.378.0",
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/hash-node": "^2.0.1",
- "@smithy/invalid-dependency": "^2.0.1",
- "@smithy/middleware-content-length": "^2.0.1",
- "@smithy/middleware-endpoint": "^2.0.1",
- "@smithy/middleware-retry": "^2.0.1",
- "@smithy/middleware-serde": "^2.0.1",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
"@smithy/middleware-stack": "^2.0.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/smithy-client": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-body-length-browser": "^2.0.0",
- "@smithy/util-body-length-node": "^2.0.0",
- "@smithy/util-defaults-mode-browser": "^2.0.1",
- "@smithy/util-defaults-mode-node": "^2.0.1",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
"@smithy/util-retry": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
"tslib": "^2.5.0"
@@ -448,56 +402,44 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/client-service-quotas/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/client-shield": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-shield/-/client-shield-3.379.1.tgz",
- "integrity": "sha512-GzEPEuTeAuzm5fU7HINqOfPotpvh+5ESXX0K5eOfWk9zg5Nw+QzjBIJ6jTf6E8ihdGkQO+n4U9H+u+KHtO+aHA==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-shield/-/client-shield-3.398.0.tgz",
+ "integrity": "sha512-CUqIMW+WNWfwVAZe1z9JshOeCMxUKC4I47beDJb5uV2d8r1+Vk3UkF1VNjp5zbK+FOL0feElgbuYzJxX9NNOog==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.379.1",
- "@aws-sdk/credential-provider-node": "3.379.1",
- "@aws-sdk/middleware-host-header": "3.379.1",
- "@aws-sdk/middleware-logger": "3.378.0",
- "@aws-sdk/middleware-recursion-detection": "3.378.0",
- "@aws-sdk/middleware-signing": "3.379.1",
- "@aws-sdk/middleware-user-agent": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@aws-sdk/util-user-agent-browser": "3.378.0",
- "@aws-sdk/util-user-agent-node": "3.378.0",
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/hash-node": "^2.0.1",
- "@smithy/invalid-dependency": "^2.0.1",
- "@smithy/middleware-content-length": "^2.0.1",
- "@smithy/middleware-endpoint": "^2.0.1",
- "@smithy/middleware-retry": "^2.0.1",
- "@smithy/middleware-serde": "^2.0.1",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
"@smithy/middleware-stack": "^2.0.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/smithy-client": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-body-length-browser": "^2.0.0",
- "@smithy/util-body-length-node": "^2.0.0",
- "@smithy/util-defaults-mode-browser": "^2.0.1",
- "@smithy/util-defaults-mode-node": "^2.0.1",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
"@smithy/util-retry": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
"tslib": "^2.5.0"
@@ -506,96 +448,41 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/client-shield/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/client-sso": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.379.1.tgz",
- "integrity": "sha512-2N16TPnRcq+seNP8VY/Zq7kfnrUOrJMbVNpyDZWGe5Qglua3n8v/FzxmXFNI87MiSODq8IHtiXhggWhefCd+TA==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/middleware-host-header": "3.379.1",
- "@aws-sdk/middleware-logger": "3.378.0",
- "@aws-sdk/middleware-recursion-detection": "3.378.0",
- "@aws-sdk/middleware-user-agent": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@aws-sdk/util-user-agent-browser": "3.378.0",
- "@aws-sdk/util-user-agent-node": "3.378.0",
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/hash-node": "^2.0.1",
- "@smithy/invalid-dependency": "^2.0.1",
- "@smithy/middleware-content-length": "^2.0.1",
- "@smithy/middleware-endpoint": "^2.0.1",
- "@smithy/middleware-retry": "^2.0.1",
- "@smithy/middleware-serde": "^2.0.1",
- "@smithy/middleware-stack": "^2.0.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/smithy-client": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
- "@smithy/util-base64": "^2.0.0",
- "@smithy/util-body-length-browser": "^2.0.0",
- "@smithy/util-body-length-node": "^2.0.0",
- "@smithy/util-defaults-mode-browser": "^2.0.1",
- "@smithy/util-defaults-mode-node": "^2.0.1",
- "@smithy/util-retry": "^2.0.0",
- "@smithy/util-utf8": "^2.0.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/client-sso-oidc": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.379.1.tgz",
- "integrity": "sha512-B6hZ2ysPyvafCMf6gls1jHI/IUviVZ4+TURpNfUBqThg/hZ1IMxc4BLkXca6VlgzYR+bWU8GKiClS9fFH6mu0g==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.398.0.tgz",
+ "integrity": "sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/middleware-host-header": "3.379.1",
- "@aws-sdk/middleware-logger": "3.378.0",
- "@aws-sdk/middleware-recursion-detection": "3.378.0",
- "@aws-sdk/middleware-user-agent": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@aws-sdk/util-user-agent-browser": "3.378.0",
- "@aws-sdk/util-user-agent-node": "3.378.0",
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/hash-node": "^2.0.1",
- "@smithy/invalid-dependency": "^2.0.1",
- "@smithy/middleware-content-length": "^2.0.1",
- "@smithy/middleware-endpoint": "^2.0.1",
- "@smithy/middleware-retry": "^2.0.1",
- "@smithy/middleware-serde": "^2.0.1",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
"@smithy/middleware-stack": "^2.0.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/smithy-client": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-body-length-browser": "^2.0.0",
- "@smithy/util-body-length-node": "^2.0.0",
- "@smithy/util-defaults-mode-browser": "^2.0.1",
- "@smithy/util-defaults-mode-node": "^2.0.1",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
"@smithy/util-retry": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
"tslib": "^2.5.0"
@@ -604,68 +491,44 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/client-sts": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.379.1.tgz",
- "integrity": "sha512-gEnKuk9bYjThvmxCgOgCn1qa+rRX8IgIRE2+xhbWhlpDanozhkDq9aMB5moX4tBNYQEmi1LtGD+JOvOoZRnToQ==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.398.0.tgz",
+ "integrity": "sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/credential-provider-node": "3.379.1",
- "@aws-sdk/middleware-host-header": "3.379.1",
- "@aws-sdk/middleware-logger": "3.378.0",
- "@aws-sdk/middleware-recursion-detection": "3.378.0",
- "@aws-sdk/middleware-sdk-sts": "3.379.1",
- "@aws-sdk/middleware-signing": "3.379.1",
- "@aws-sdk/middleware-user-agent": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@aws-sdk/util-user-agent-browser": "3.378.0",
- "@aws-sdk/util-user-agent-node": "3.378.0",
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/hash-node": "^2.0.1",
- "@smithy/invalid-dependency": "^2.0.1",
- "@smithy/middleware-content-length": "^2.0.1",
- "@smithy/middleware-endpoint": "^2.0.1",
- "@smithy/middleware-retry": "^2.0.1",
- "@smithy/middleware-serde": "^2.0.1",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-sdk-sts": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
"@smithy/middleware-stack": "^2.0.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/smithy-client": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-body-length-browser": "^2.0.0",
- "@smithy/util-body-length-node": "^2.0.0",
- "@smithy/util-defaults-mode-browser": "^2.0.1",
- "@smithy/util-defaults-mode-node": "^2.0.1",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
"@smithy/util-retry": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
"fast-xml-parser": "4.2.5",
@@ -675,56 +538,44 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/client-wafv2": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-wafv2/-/client-wafv2-3.379.1.tgz",
- "integrity": "sha512-TX5QGfAvGrgzMtlab4kj6nF35JbVoCT6jOAQ7wJrQDmUPzE8oE2rWX6c5Zu+I8afKLzQG2SECxF89or8wnp+Hg==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-wafv2/-/client-wafv2-3.398.0.tgz",
+ "integrity": "sha512-9C98uLNuhMCV5BlN9qaxPczgxTYF7P985BCQ5/PwYK44IM+edec2bw4Pjb4+gTzYvEhSqB1RSk9DSDoWPZVSeg==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.379.1",
- "@aws-sdk/credential-provider-node": "3.379.1",
- "@aws-sdk/middleware-host-header": "3.379.1",
- "@aws-sdk/middleware-logger": "3.378.0",
- "@aws-sdk/middleware-recursion-detection": "3.378.0",
- "@aws-sdk/middleware-signing": "3.379.1",
- "@aws-sdk/middleware-user-agent": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@aws-sdk/util-user-agent-browser": "3.378.0",
- "@aws-sdk/util-user-agent-node": "3.378.0",
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/hash-node": "^2.0.1",
- "@smithy/invalid-dependency": "^2.0.1",
- "@smithy/middleware-content-length": "^2.0.1",
- "@smithy/middleware-endpoint": "^2.0.1",
- "@smithy/middleware-retry": "^2.0.1",
- "@smithy/middleware-serde": "^2.0.1",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
"@smithy/middleware-stack": "^2.0.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/smithy-client": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-body-length-browser": "^2.0.0",
- "@smithy/util-body-length-node": "^2.0.0",
- "@smithy/util-defaults-mode-browser": "^2.0.1",
- "@smithy/util-defaults-mode-node": "^2.0.1",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
"@smithy/util-retry": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
"tslib": "^2.5.0"
@@ -733,38 +584,14 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/client-wafv2/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.378.0.tgz",
- "integrity": "sha512-B2OVdO9kBClDwGgWTBLAQwFV8qYTYGyVujg++1FZFSFMt8ORFdZ5fNpErvJtiSjYiOOQMzyBeSNhKyYNXCiJjQ==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.398.0.tgz",
+ "integrity": "sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==",
"dependencies": {
- "@aws-sdk/types": "3.378.0",
+ "@aws-sdk/types": "3.398.0",
"@smithy/property-provider": "^2.0.0",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-env/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -772,31 +599,19 @@
}
},
"node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.379.1.tgz",
- "integrity": "sha512-YhEsJIskzCFwIIKiMN9GSHQkgWwj/b7rq0ofhsXsCRimFtdVkmMlB9veE6vtFAuXpX/WOGWdlWek1az0V22uuw==",
- "dependencies": {
- "@aws-sdk/credential-provider-env": "3.378.0",
- "@aws-sdk/credential-provider-process": "3.378.0",
- "@aws-sdk/credential-provider-sso": "3.379.1",
- "@aws-sdk/credential-provider-web-identity": "3.378.0",
- "@aws-sdk/types": "3.378.0",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.398.0.tgz",
+ "integrity": "sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.398.0",
+ "@aws-sdk/credential-provider-process": "3.398.0",
+ "@aws-sdk/credential-provider-sso": "3.398.0",
+ "@aws-sdk/credential-provider-web-identity": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
"@smithy/credential-provider-imds": "^2.0.0",
"@smithy/property-provider": "^2.0.0",
"@smithy/shared-ini-file-loader": "^2.0.0",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -804,32 +619,20 @@
}
},
"node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.379.1.tgz",
- "integrity": "sha512-39Y4OHKn6a8lY8YJhSLLw08aZytWxfvSjM4ObIEnE6hjLl8gsL9vROKKITsh3q6iGQ1EDSWMWZL50aOh3LJUIg==",
- "dependencies": {
- "@aws-sdk/credential-provider-env": "3.378.0",
- "@aws-sdk/credential-provider-ini": "3.379.1",
- "@aws-sdk/credential-provider-process": "3.378.0",
- "@aws-sdk/credential-provider-sso": "3.379.1",
- "@aws-sdk/credential-provider-web-identity": "3.378.0",
- "@aws-sdk/types": "3.378.0",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.398.0.tgz",
+ "integrity": "sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.398.0",
+ "@aws-sdk/credential-provider-ini": "3.398.0",
+ "@aws-sdk/credential-provider-process": "3.398.0",
+ "@aws-sdk/credential-provider-sso": "3.398.0",
+ "@aws-sdk/credential-provider-web-identity": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
"@smithy/credential-provider-imds": "^2.0.0",
"@smithy/property-provider": "^2.0.0",
"@smithy/shared-ini-file-loader": "^2.0.0",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -837,26 +640,14 @@
}
},
"node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.378.0.tgz",
- "integrity": "sha512-KFTIy7u+wXj3eDua4rgS0tODzMnXtXhAm1RxzCW9FL5JLBBrd82ymCj1Dp72217Sw5Do6NjCnDTTNkCHZMA77w==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.398.0.tgz",
+ "integrity": "sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==",
"dependencies": {
- "@aws-sdk/types": "3.378.0",
+ "@aws-sdk/types": "3.398.0",
"@smithy/property-provider": "^2.0.0",
"@smithy/shared-ini-file-loader": "^2.0.0",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-process/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -864,28 +655,16 @@
}
},
"node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.379.1.tgz",
- "integrity": "sha512-PhGtu1+JbUntYP/5CSfazQhWsjUBiksEuhg9fLhYl5OAgZVjVygbgoNVUz/gM7gZJSEMsasTazkn7yZVzO/k7w==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.398.0.tgz",
+ "integrity": "sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==",
"dependencies": {
- "@aws-sdk/client-sso": "3.379.1",
- "@aws-sdk/token-providers": "3.379.1",
- "@aws-sdk/types": "3.378.0",
+ "@aws-sdk/client-sso": "3.398.0",
+ "@aws-sdk/token-providers": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
"@smithy/property-provider": "^2.0.0",
"@smithy/shared-ini-file-loader": "^2.0.0",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -893,25 +672,13 @@
}
},
"node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.378.0.tgz",
- "integrity": "sha512-GWjydOszhc4xDF8xuPtBvboglXQr0gwCW1oHAvmLcOT38+Hd6qnKywnMSeoXYRPgoKfF9TkWQgW1jxplzCG0UA==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.398.0.tgz",
+ "integrity": "sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==",
"dependencies": {
- "@aws-sdk/types": "3.378.0",
+ "@aws-sdk/types": "3.398.0",
"@smithy/property-provider": "^2.0.0",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -919,25 +686,13 @@
}
},
"node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.379.1.tgz",
- "integrity": "sha512-LI4KpAFWNWVr2aH2vRVblr0Y8tvDz23lj8LOmbDmCrzd5M21nxuocI/8nEAQj55LiTIf9Zs+dHCdsyegnFXdrA==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.398.0.tgz",
+ "integrity": "sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==",
"dependencies": {
- "@aws-sdk/types": "3.378.0",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-host-header/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -945,24 +700,12 @@
}
},
"node_modules/@aws-sdk/middleware-logger": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.378.0.tgz",
- "integrity": "sha512-l1DyaDLm3KeBMNMuANI3scWh8Xvu248x+vw6Z7ExWOhGXFmQ1MW7YvASg/SdxWkhlF9HmkkTif1LdMB22x6QDA==",
- "dependencies": {
- "@aws-sdk/types": "3.378.0",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-logger/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.398.0.tgz",
+ "integrity": "sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -970,25 +713,13 @@
}
},
"node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.378.0.tgz",
- "integrity": "sha512-mUMfHAz0oGNIWiTZHTVJb+I515Hqs2zx1j36Le4MMiiaMkPW1SRUF1FIwGuc1wh6E8jB5q+XfEMriDjRi4TZRA==",
- "dependencies": {
- "@aws-sdk/types": "3.378.0",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.398.0.tgz",
+ "integrity": "sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -996,25 +727,13 @@
}
},
"node_modules/@aws-sdk/middleware-sdk-sts": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.379.1.tgz",
- "integrity": "sha512-SK3gSyT0XbLiY12+AjLFYL9YngxOXHnZF3Z33Cdd4a+AUYrVBV7JBEEGD1Nlwrcmko+3XgaKlmgUaR5s91MYvg==",
- "dependencies": {
- "@aws-sdk/middleware-signing": "3.379.1",
- "@aws-sdk/types": "3.378.0",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-sdk-sts/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.398.0.tgz",
+ "integrity": "sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -1022,15 +741,15 @@
}
},
"node_modules/@aws-sdk/middleware-signing": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.379.1.tgz",
- "integrity": "sha512-kBk2ZUvR84EM4fICjr8K+Ykpf8SI1UzzPp2/UVYZ0X+4H/ZCjfSqohGRwHykMqeplne9qHSL7/rGJs1H3l3gPg==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.398.0.tgz",
+ "integrity": "sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==",
"dependencies": {
- "@aws-sdk/types": "3.378.0",
+ "@aws-sdk/types": "3.398.0",
"@smithy/property-provider": "^2.0.0",
- "@smithy/protocol-http": "^2.0.1",
+ "@smithy/protocol-http": "^2.0.5",
"@smithy/signature-v4": "^2.0.0",
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"@smithy/util-middleware": "^2.0.0",
"tslib": "^2.5.0"
},
@@ -1038,39 +757,15 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.379.1.tgz",
- "integrity": "sha512-4zIGeAIuutcRieAvovs82uBNhJBHuxfxaAUqrKiw49xUBG7xeNVUl+DYPSpbALbEIy4ujfwWCBOOWVCt6dyUZg==",
- "dependencies": {
- "@aws-sdk/types": "3.378.0",
- "@aws-sdk/util-endpoints": "3.378.0",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-user-agent/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.398.0.tgz",
+ "integrity": "sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -1091,27 +786,44 @@
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.379.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.379.1.tgz",
- "integrity": "sha512-NlYPkArJ7A/txCrjqqkje+4hsv7pSOqm+Qdx3BUIOc7PRYrBVs/XwThxUkGceSntVXoNlO8g9DFL0NY53/wb8Q==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.398.0.tgz",
+ "integrity": "sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==",
"dependencies": {
- "@aws-sdk/client-sso-oidc": "3.379.1",
- "@aws-sdk/types": "3.378.0",
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
"@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^2.0.5",
"@smithy/shared-ini-file-loader": "^2.0.0",
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
"tslib": "^2.5.0"
},
"engines": {
@@ -1119,10 +831,11 @@
}
},
"node_modules/@aws-sdk/types": {
- "version": "3.347.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.347.0.tgz",
- "integrity": "sha512-GkCMy79mdjU9OTIe5KT58fI/6uqdf8UmMdWqVHmFJ+UpEzOci7L/uw4sOXWo7xpPzLs6cJ7s5ouGZW4GRPmHFA==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz",
+ "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==",
"dependencies": {
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -1130,23 +843,11 @@
}
},
"node_modules/@aws-sdk/util-endpoints": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.378.0.tgz",
- "integrity": "sha512-NU5C2l2xAXxpyB5nT0fIhahLPlJoJdzHWw4uC53KH9b4PrjHtgvgCN8beIsD3QxyfgeoM4A5J9Auo6WurfRnLw==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.398.0.tgz",
+ "integrity": "sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==",
"dependencies": {
- "@aws-sdk/types": "3.378.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-endpoints/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
+ "@aws-sdk/types": "3.398.0",
"tslib": "^2.5.0"
},
"engines": {
@@ -1165,36 +866,24 @@
}
},
"node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.378.0.tgz",
- "integrity": "sha512-FSCpagzftK1W+m7Ar6lpX7/Gr9y5P56nhFYz8U4EYQ4PkufS6czWX9YW+/FA5OYV0vlQ/SvPqMnzoHIPUNhZrQ==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.398.0.tgz",
+ "integrity": "sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==",
"dependencies": {
- "@aws-sdk/types": "3.378.0",
- "@smithy/types": "^2.0.2",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/types": "^2.2.2",
"bowser": "^2.11.0",
"tslib": "^2.5.0"
}
},
- "node_modules/@aws-sdk/util-user-agent-browser/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.378.0.tgz",
- "integrity": "sha512-IdwVJV0E96MkJeFte4dlWqvB+oiqCiZ5lOlheY3W9NynTuuX0GGYNC8Y9yIsV8Oava1+ujpJq0ww6qXdYxmO4A==",
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.398.0.tgz",
+ "integrity": "sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==",
"dependencies": {
- "@aws-sdk/types": "3.378.0",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/types": "^2.0.2",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -1209,18 +898,6 @@
}
}
},
- "node_modules/@aws-sdk/util-user-agent-node/node_modules/@aws-sdk/types": {
- "version": "3.378.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz",
- "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==",
- "dependencies": {
- "@smithy/types": "^2.0.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/@aws-sdk/util-utf8-browser": {
"version": "3.259.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
@@ -1230,78 +907,150 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
- "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.22.5"
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/compat-data": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz",
- "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==",
+ "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
"engines": {
- "node": ">=6.9.0"
+ "node": ">=4"
}
},
- "node_modules/@babel/core": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz",
- "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==",
+ "node_modules/@babel/code-frame/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helpers": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
- "semver": "^6.3.0"
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
},
"engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
+ "node": ">=4"
}
},
- "node_modules/@babel/core/node_modules/convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
- },
- "node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "node_modules/@babel/code-frame/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz",
+ "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz",
+ "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==",
+ "dev": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.22.10",
+ "@babel/generator": "^7.22.10",
+ "@babel/helper-compilation-targets": "^7.22.10",
+ "@babel/helper-module-transforms": "^7.22.9",
+ "@babel/helpers": "^7.22.11",
+ "@babel/parser": "^7.22.11",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.11",
+ "@babel/types": "^7.22.11",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/generator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz",
- "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz",
+ "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5",
+ "@babel/types": "^7.22.10",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -1311,22 +1060,19 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz",
- "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==",
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz",
+ "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.22.5",
+ "@babel/compat-data": "^7.22.9",
"@babel/helper-validator-option": "^7.22.5",
- "browserslist": "^4.21.3",
+ "browserslist": "^4.21.9",
"lru-cache": "^5.1.1",
- "semver": "^6.3.0"
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
@@ -1385,22 +1131,22 @@
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz",
- "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==",
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz",
+ "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==",
"dev": true,
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-module-imports": "^7.22.5",
"@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
@@ -1425,9 +1171,9 @@
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz",
- "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"dev": true,
"dependencies": {
"@babel/types": "^7.22.5"
@@ -1464,27 +1210,27 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz",
- "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==",
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz",
+ "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==",
"dev": true,
"dependencies": {
"@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/traverse": "^7.22.11",
+ "@babel/types": "^7.22.11"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
- "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz",
+ "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==",
"dev": true,
"dependencies": {
"@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"engines": {
@@ -1563,9 +1309,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz",
- "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==",
+ "version": "7.22.14",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.14.tgz",
+ "integrity": "sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -1766,19 +1512,19 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz",
- "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==",
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz",
+ "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
+ "@babel/code-frame": "^7.22.10",
+ "@babel/generator": "^7.22.10",
"@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-function-name": "^7.22.5",
"@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.22.11",
+ "@babel/types": "^7.22.11",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -1796,9 +1542,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
- "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz",
+ "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==",
"dev": true,
"dependencies": {
"@babel/helper-string-parser": "^7.22.5",
@@ -1819,6 +1565,7 @@
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+ "dev": true,
"dependencies": {
"@jridgewell/trace-mapping": "0.3.9"
},
@@ -1830,6 +1577,7 @@
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+ "dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
"@jridgewell/sourcemap-codec": "^1.4.10"
@@ -1851,23 +1599,23 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.5.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
- "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz",
+ "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==",
"dev": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
- "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+ "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.5.2",
+ "espree": "^9.6.0",
"globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
@@ -1882,22 +1630,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/@eslint/eslintrc/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
"node_modules/@eslint/eslintrc/node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -1916,25 +1648,19 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
"node_modules/@eslint/js": {
- "version": "8.42.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz",
- "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz",
+ "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@humanwhocodes/config-array": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
- "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
+ "version": "0.11.11",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
+ "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.1",
@@ -1980,6 +1706,58 @@
"node": ">=8"
}
},
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
@@ -1999,16 +1777,16 @@
}
},
"node_modules/@jest/console": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz",
- "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.4.tgz",
+ "integrity": "sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"chalk": "^4.0.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-message-util": "^29.6.3",
+ "jest-util": "^29.6.3",
"slash": "^3.0.0"
},
"engines": {
@@ -2016,37 +1794,37 @@
}
},
"node_modules/@jest/core": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz",
- "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.4.tgz",
+ "integrity": "sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==",
"dev": true,
"dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/reporters": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.6.4",
+ "@jest/reporters": "^29.6.4",
+ "@jest/test-result": "^29.6.4",
+ "@jest/transform": "^29.6.4",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.5.0",
- "jest-config": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-resolve-dependencies": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "jest-watcher": "^29.5.0",
+ "jest-changed-files": "^29.6.3",
+ "jest-config": "^29.6.4",
+ "jest-haste-map": "^29.6.4",
+ "jest-message-util": "^29.6.3",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.6.4",
+ "jest-resolve-dependencies": "^29.6.4",
+ "jest-runner": "^29.6.4",
+ "jest-runtime": "^29.6.4",
+ "jest-snapshot": "^29.6.4",
+ "jest-util": "^29.6.3",
+ "jest-validate": "^29.6.3",
+ "jest-watcher": "^29.6.4",
"micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.6.3",
"slash": "^3.0.0",
"strip-ansi": "^6.0.0"
},
@@ -2063,89 +1841,89 @@
}
},
"node_modules/@jest/environment": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz",
- "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz",
+ "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==",
"dev": true,
"dependencies": {
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/fake-timers": "^29.6.4",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-mock": "^29.5.0"
+ "jest-mock": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/expect": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz",
- "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz",
+ "integrity": "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==",
"dev": true,
"dependencies": {
- "expect": "^29.5.0",
- "jest-snapshot": "^29.5.0"
+ "expect": "^29.6.4",
+ "jest-snapshot": "^29.6.4"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/expect-utils": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz",
- "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz",
+ "integrity": "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==",
"dev": true,
"dependencies": {
- "jest-get-type": "^29.4.3"
+ "jest-get-type": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/fake-timers": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz",
- "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz",
+ "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.6.3",
"@sinonjs/fake-timers": "^10.0.2",
"@types/node": "*",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
+ "jest-message-util": "^29.6.3",
+ "jest-mock": "^29.6.3",
+ "jest-util": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/globals": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz",
- "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz",
+ "integrity": "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==",
"dev": true,
"dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/types": "^29.5.0",
- "jest-mock": "^29.5.0"
+ "@jest/environment": "^29.6.4",
+ "@jest/expect": "^29.6.4",
+ "@jest/types": "^29.6.3",
+ "jest-mock": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/reporters": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz",
- "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.4.tgz",
+ "integrity": "sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==",
"dev": true,
"dependencies": {
"@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@jridgewell/trace-mapping": "^0.3.15",
+ "@jest/console": "^29.6.4",
+ "@jest/test-result": "^29.6.4",
+ "@jest/transform": "^29.6.4",
+ "@jest/types": "^29.6.3",
+ "@jridgewell/trace-mapping": "^0.3.18",
"@types/node": "*",
"chalk": "^4.0.0",
"collect-v8-coverage": "^1.0.0",
@@ -2153,13 +1931,13 @@
"glob": "^7.1.3",
"graceful-fs": "^4.2.9",
"istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^5.1.0",
+ "istanbul-lib-instrument": "^6.0.0",
"istanbul-lib-report": "^3.0.0",
"istanbul-lib-source-maps": "^4.0.0",
"istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
+ "jest-message-util": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "jest-worker": "^29.6.4",
"slash": "^3.0.0",
"string-length": "^4.0.1",
"strip-ansi": "^6.0.0",
@@ -2178,24 +1956,24 @@
}
},
"node_modules/@jest/schemas": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
- "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
"dev": true,
"dependencies": {
- "@sinclair/typebox": "^0.25.16"
+ "@sinclair/typebox": "^0.27.8"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/source-map": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz",
- "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
+ "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
"dev": true,
"dependencies": {
- "@jridgewell/trace-mapping": "^0.3.15",
+ "@jridgewell/trace-mapping": "^0.3.18",
"callsites": "^3.0.0",
"graceful-fs": "^4.2.9"
},
@@ -2204,13 +1982,13 @@
}
},
"node_modules/@jest/test-result": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz",
- "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.4.tgz",
+ "integrity": "sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==",
"dev": true,
"dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.6.4",
+ "@jest/types": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
},
@@ -2219,14 +1997,14 @@
}
},
"node_modules/@jest/test-sequencer": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz",
- "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz",
+ "integrity": "sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==",
"dev": true,
"dependencies": {
- "@jest/test-result": "^29.5.0",
+ "@jest/test-result": "^29.6.4",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
+ "jest-haste-map": "^29.6.4",
"slash": "^3.0.0"
},
"engines": {
@@ -2234,22 +2012,22 @@
}
},
"node_modules/@jest/transform": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz",
- "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz",
+ "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==",
"dev": true,
"dependencies": {
"@babel/core": "^7.11.6",
- "@jest/types": "^29.5.0",
- "@jridgewell/trace-mapping": "^0.3.15",
+ "@jest/types": "^29.6.3",
+ "@jridgewell/trace-mapping": "^0.3.18",
"babel-plugin-istanbul": "^6.1.1",
"chalk": "^4.0.0",
"convert-source-map": "^2.0.0",
"fast-json-stable-stringify": "^2.1.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
+ "jest-haste-map": "^29.6.4",
+ "jest-regex-util": "^29.6.3",
+ "jest-util": "^29.6.3",
"micromatch": "^4.0.4",
"pirates": "^4.0.4",
"slash": "^3.0.0",
@@ -2260,12 +2038,12 @@
}
},
"node_modules/@jest/types": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
- "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"dev": true,
"dependencies": {
- "@jest/schemas": "^29.4.3",
+ "@jest/schemas": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
@@ -2276,15 +2054,6 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@jest/types/node_modules/@types/yargs": {
- "version": "17.0.24",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
- "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
- "dev": true,
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
@@ -2300,9 +2069,10 @@
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -2319,24 +2089,19 @@
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "version": "0.3.19",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
+ "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
"dev": true,
"dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
"node_modules/@mhlabs/aws-sdk-sso": {
"version": "0.0.12",
"resolved": "https://registry.npmjs.org/@mhlabs/aws-sdk-sso/-/aws-sdk-sso-0.0.12.tgz",
@@ -2407,9 +2172,9 @@
}
},
"node_modules/@sinclair/typebox": {
- "version": "0.25.24",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
- "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
"dev": true
},
"node_modules/@sinonjs/commons": {
@@ -2422,20 +2187,20 @@
}
},
"node_modules/@sinonjs/fake-timers": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.1.0.tgz",
- "integrity": "sha512-w1qd368vtrwttm1PRJWPW1QHlbmHrVDGs1eBH/jZvRPUFS4MNXV9Q33EQdjOdeAxZ7O8+3wM7zxztm2nfUSyKw==",
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+ "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
"dev": true,
"dependencies": {
"@sinonjs/commons": "^3.0.0"
}
},
"node_modules/@smithy/abort-controller": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.1.tgz",
- "integrity": "sha512-0s7XjIbsTwZyUW9OwXQ8J6x1UiA1TNCh60Vaw56nHahL7kUZsLhmTlWiaxfLkFtO2Utkj8YewcpHTYpxaTzO+w==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.5.tgz",
+ "integrity": "sha512-byVZ2KWLMPYAZGKjRpniAzLcygJO4ruClZKdJTuB0eCB76ONFTdptBHlviHpAZXknRz7skYWPfcgO9v30A1SyA==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2443,11 +2208,11 @@
}
},
"node_modules/@smithy/config-resolver": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.1.tgz",
- "integrity": "sha512-l83Pm7hV+8CBQOCmBRopWDtF+CURUJol7NsuPYvimiDhkC2F8Ba9T1imSFE+pD1UIJ9jlsDPAnZfPJT5cjnuEw==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.5.tgz",
+ "integrity": "sha512-n0c2AXz+kjALY2FQr7Zy9zhYigXzboIh1AuUUVCqFBKFtdEvTwnwPXrTDoEehLiRTUHNL+4yzZ3s+D0kKYSLSg==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"@smithy/util-config-provider": "^2.0.0",
"@smithy/util-middleware": "^2.0.0",
"tslib": "^2.5.0"
@@ -2457,14 +2222,14 @@
}
},
"node_modules/@smithy/credential-provider-imds": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.1.tgz",
- "integrity": "sha512-8VxriuRINNEfVZjEFKBY75y9ZWAx73DZ5K/u+3LmB6r8WR2h3NaFxFKMlwlq0uzNdGhD1ouKBn9XWEGYHKiPLw==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.5.tgz",
+ "integrity": "sha512-KFcf/e0meFkQNyteJ65f1G19sgUEY1e5zL7hyAEUPz2SEfBmC9B37WyRq87G3MEEsvmAWwCRu7nFFYUKtR3svQ==",
"dependencies": {
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/property-provider": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/property-provider": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"tslib": "^2.5.0"
},
"engines": {
@@ -2472,34 +2237,34 @@
}
},
"node_modules/@smithy/eventstream-codec": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.1.tgz",
- "integrity": "sha512-/IiNB7gQM2y2ZC/GAWOWDa8+iXfhr1g9Xe5979cQEOdCWDISvrAiv18cn3OtIQUhbYOR3gm7QtCpkq1to2takQ==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.5.tgz",
+ "integrity": "sha512-iqR6OuOV3zbQK8uVs9o+9AxhVk8kW9NAxA71nugwUB+kTY9C35pUd0A5/m4PRT0Y0oIW7W4kgnSR3fdYXQjECw==",
"dependencies": {
"@aws-crypto/crc32": "3.0.0",
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"@smithy/util-hex-encoding": "^2.0.0",
"tslib": "^2.5.0"
}
},
"node_modules/@smithy/fetch-http-handler": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.0.1.tgz",
- "integrity": "sha512-/SoU/ClazgcdOxgE4zA7RX8euiELwpsrKCSvulVQvu9zpmqJRyEJn8ZTWYFV17/eHOBdHTs9kqodhNhsNT+cUw==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.0.5.tgz",
+ "integrity": "sha512-EzFoMowdBNy1VqtvkiXgPFEdosIAt4/4bgZ8uiDiUyfhmNXq/3bV+CagPFFBsgFOR/X2XK4zFZHRsoa7PNHVVg==",
"dependencies": {
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/querystring-builder": "^2.0.1",
- "@smithy/types": "^2.0.2",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/querystring-builder": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"@smithy/util-base64": "^2.0.0",
"tslib": "^2.5.0"
}
},
"node_modules/@smithy/hash-node": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.1.tgz",
- "integrity": "sha512-oTKYimQdF4psX54ZonpcIE+MXjMUWFxLCNosjPkJPFQ9whRX0K/PFX/+JZGRQh3zO9RlEOEUIbhy9NO+Wha6hw==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.5.tgz",
+ "integrity": "sha512-mk551hIywBITT+kXruRNXk7f8Fy7DTzBjZJSr/V6nolYKmUHIG3w5QU6nO9qPYEQGKc/yEPtkpdS28ndeG93lA==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"@smithy/util-buffer-from": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
"tslib": "^2.5.0"
@@ -2509,11 +2274,11 @@
}
},
"node_modules/@smithy/invalid-dependency": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.1.tgz",
- "integrity": "sha512-2q/Eb0AE662zwyMV+z+TL7deBwcHCgaZZGc0RItamBE8kak3MzCi/EZCNoFWoBfxgQ4jfR12wm8KKsSXhJzJtQ==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.5.tgz",
+ "integrity": "sha512-0wEi+JT0hM+UUwrJVYbqjuGFhy5agY/zXyiN7BNAJ1XoCDjU5uaNSj8ekPWsXd/d4yM6NSe8UbPd8cOc1+3oBQ==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
}
},
@@ -2529,12 +2294,12 @@
}
},
"node_modules/@smithy/middleware-content-length": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.1.tgz",
- "integrity": "sha512-IZhRSk5GkVBcrKaqPXddBS2uKhaqwBgaSgbBb1OJyGsKe7SxRFbclWS0LqOR9fKUkDl+3lL8E2ffpo6EQg0igw==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.5.tgz",
+ "integrity": "sha512-E7VwV5H02fgZIUGRli4GevBCAPvkyEI/fgl9SU47nPPi3DAAX3nEtUb8xfGbXjOcJ5BdSUoWWZn42tEd/blOqA==",
"dependencies": {
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/types": "^2.0.2",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2542,13 +2307,13 @@
}
},
"node_modules/@smithy/middleware-endpoint": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.0.1.tgz",
- "integrity": "sha512-uz/KI1MBd9WHrrkVFZO4L4Wyv24raf0oR4EsOYEeG5jPJO5U+C7MZGLcMxX8gWERDn1sycBDqmGv8fjUMLxT6w==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.0.5.tgz",
+ "integrity": "sha512-tyzDuoNTbsMQCq5Xkc4QOt6e2GACUllQIV8SQ5fc59FtOIV9/vbf58/GxVjZm2o8+MMbdDBANjTDZe/ijZKfyA==",
"dependencies": {
- "@smithy/middleware-serde": "^2.0.1",
- "@smithy/types": "^2.0.2",
- "@smithy/url-parser": "^2.0.1",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
"@smithy/util-middleware": "^2.0.0",
"tslib": "^2.5.0"
},
@@ -2557,13 +2322,13 @@
}
},
"node_modules/@smithy/middleware-retry": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.1.tgz",
- "integrity": "sha512-NKHF4i0gjSyjO6C0ZyjEpNqzGgIu7s8HOK6oT/1Jqws2Q1GynR1xV8XTUs1gKXeaNRzbzKQRewHHmfPwZjOtHA==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.5.tgz",
+ "integrity": "sha512-ulIfbFyzQTVnJbLjUl1CTSi0etg6tej/ekwaLp0Gn8ybUkDkKYa+uB6CF/m2J5B6meRwyJlsryR+DjaOVyiicg==",
"dependencies": {
- "@smithy/protocol-http": "^2.0.1",
+ "@smithy/protocol-http": "^2.0.5",
"@smithy/service-error-classification": "^2.0.0",
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"@smithy/util-middleware": "^2.0.0",
"@smithy/util-retry": "^2.0.0",
"tslib": "^2.5.0",
@@ -2574,11 +2339,11 @@
}
},
"node_modules/@smithy/middleware-serde": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.1.tgz",
- "integrity": "sha512-uKxPaC6ItH9ZXdpdqNtf8sda7GcU4SPMp0tomq/5lUg9oiMa/Q7+kD35MUrpKaX3IVXVrwEtkjCU9dogZ/RAUA==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.5.tgz",
+ "integrity": "sha512-in0AA5sous74dOfTGU9rMJBXJ0bDVNxwdXtEt5lh3FVd2sEyjhI+rqpLLRF1E4ixbw3RSEf80hfRpcPdjg4vvQ==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2597,13 +2362,13 @@
}
},
"node_modules/@smithy/node-config-provider": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.0.1.tgz",
- "integrity": "sha512-Zoel4CPkKRTQ2XxmozZUfqBYqjPKL53/SvTDhJHj+VBSiJy6MXRav1iDCyFPS92t40Uh+Yi+Km5Ch3hQ+c/zSA==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.0.5.tgz",
+ "integrity": "sha512-LRtjV9WkhONe2lVy+ipB/l1GX60ybzBmFyeRUoLUXWKdnZ3o81jsnbKzMK8hKq8eFSWPk+Lmyx6ZzCQabGeLxg==",
"dependencies": {
- "@smithy/property-provider": "^2.0.1",
- "@smithy/shared-ini-file-loader": "^2.0.1",
- "@smithy/types": "^2.0.2",
+ "@smithy/property-provider": "^2.0.5",
+ "@smithy/shared-ini-file-loader": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2611,14 +2376,14 @@
}
},
"node_modules/@smithy/node-http-handler": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.0.1.tgz",
- "integrity": "sha512-Zv3fxk3p9tsmPT2CKMsbuwbbxnq2gzLDIulxv+yI6aE+02WPYorObbbe9gh7SW3weadMODL1vTfOoJ9yFypDzg==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.0.5.tgz",
+ "integrity": "sha512-lZm5DZf4b3V0saUw9WTC4/du887P6cy2fUyQgQQKRRV6OseButyD5yTzeMmXE53CaXJBMBsUvvIQ0hRVxIq56w==",
"dependencies": {
- "@smithy/abort-controller": "^2.0.1",
- "@smithy/protocol-http": "^2.0.1",
- "@smithy/querystring-builder": "^2.0.1",
- "@smithy/types": "^2.0.2",
+ "@smithy/abort-controller": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/querystring-builder": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2626,11 +2391,11 @@
}
},
"node_modules/@smithy/property-provider": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.1.tgz",
- "integrity": "sha512-pmJRyY9SF6sutWIktIhe+bUdSQDxv/qZ4mYr3/u+u45riTPN7nmRxPo+e4sjWVoM0caKFjRSlj3tf5teRFy0Vg==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.5.tgz",
+ "integrity": "sha512-cAFSUhX6aiHcmpWfrCLKvwBtgN1F6A0N8qY/8yeSi0LRLmhGqsY1/YTxFE185MCVzYbqBGXVr9TBv4RUcIV4rA==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2638,11 +2403,11 @@
}
},
"node_modules/@smithy/protocol-http": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-2.0.1.tgz",
- "integrity": "sha512-mrkMAp0wtaDEIkgRObWYxI1Kun1tm6Iu6rK+X4utb6Ah7Uc3Kk4VIWwK/rBHdYGReiLIrxFCB1rq4a2gyZnSgg==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-2.0.5.tgz",
+ "integrity": "sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2650,11 +2415,11 @@
}
},
"node_modules/@smithy/querystring-builder": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.1.tgz",
- "integrity": "sha512-bp+93WFzx1FojVEIeFPtG0A1pKsFdCUcZvVdZdRlmNooOUrz9Mm9bneRd8hDwAQ37pxiZkCOxopSXXRQN10mYw==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.5.tgz",
+ "integrity": "sha512-4DCX9krxLzATj+HdFPC3i8pb7XTAWzzKqSw8aTZMjXjtQY+vhe4azMAqIvbb6g7JKwIkmkRAjK6EXO3YWSnJVQ==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"@smithy/util-uri-escape": "^2.0.0",
"tslib": "^2.5.0"
},
@@ -2663,11 +2428,11 @@
}
},
"node_modules/@smithy/querystring-parser": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.1.tgz",
- "integrity": "sha512-h+e7k1z+IvI2sSbUBG9Aq46JsgLl4UqIUl6aigAlRBj+P6ocNXpM6Yn1vMBw5ijtXeZbYpd1YvCxwDgdw3jhmg==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.5.tgz",
+ "integrity": "sha512-C2stCULH0r54KBksv3AWcN8CLS3u9+WsEW8nBrvctrJ5rQTNa1waHkffpVaiKvcW2nP0aIMBPCobD/kYf/q9mA==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2683,11 +2448,11 @@
}
},
"node_modules/@smithy/shared-ini-file-loader": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.0.1.tgz",
- "integrity": "sha512-a463YiZrPGvM+F336rIF8pLfQsHAdCRAn/BiI/EWzg5xLoxbC7GSxIgliDDXrOu0z8gT3nhVsif85eU6jyct3A==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.0.5.tgz",
+ "integrity": "sha512-Mvtk6FwMtfbKRC4YuSsIqRYp9WTxsSUJVVo2djgyhcacKGMqicHDWSAmgy3sDrKv+G/G6xTZCPwm6pJARtdxVg==",
"dependencies": {
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2695,13 +2460,13 @@
}
},
"node_modules/@smithy/signature-v4": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.1.tgz",
- "integrity": "sha512-jztv5Mirca42ilxmMDjzLdXcoAmRhZskGafGL49sRo5u7swEZcToEFrq6vtX5YMbSyTVrE9Teog5EFexY5Ff2Q==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.5.tgz",
+ "integrity": "sha512-ABIzXmUDXK4n2c9cXjQLELgH2RdtABpYKT+U131e2I6RbCypFZmxIHmIBufJzU2kdMCQ3+thBGDWorAITFW04A==",
"dependencies": {
- "@smithy/eventstream-codec": "^2.0.1",
+ "@smithy/eventstream-codec": "^2.0.5",
"@smithy/is-array-buffer": "^2.0.0",
- "@smithy/types": "^2.0.2",
+ "@smithy/types": "^2.2.2",
"@smithy/util-hex-encoding": "^2.0.0",
"@smithy/util-middleware": "^2.0.0",
"@smithy/util-uri-escape": "^2.0.0",
@@ -2713,13 +2478,13 @@
}
},
"node_modules/@smithy/smithy-client": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.0.1.tgz",
- "integrity": "sha512-LHC5m6tYpEu1iNbONfvMbwtErboyTZJfEIPoD78Ei5MVr36vZQCaCla5mvo36+q/a2NAk2//fA5Rx3I1Kf7+lQ==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.0.5.tgz",
+ "integrity": "sha512-kCTFr8wfOAWKDzGvfBElc6shHigWtHNhMQ1IbosjC4jOlayFyZMSs2PysKB+Ox/dhQ41KqOzgVjgiQ+PyWqHMQ==",
"dependencies": {
"@smithy/middleware-stack": "^2.0.0",
- "@smithy/types": "^2.0.2",
- "@smithy/util-stream": "^2.0.1",
+ "@smithy/types": "^2.2.2",
+ "@smithy/util-stream": "^2.0.5",
"tslib": "^2.5.0"
},
"engines": {
@@ -2727,9 +2492,9 @@
}
},
"node_modules/@smithy/types": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.0.2.tgz",
- "integrity": "sha512-wcymEjIXQ9+NEfE5Yt5TInAqe1o4n+Nh+rh00AwoazppmUt8tdo6URhc5gkDcOYrcvlDVAZE7uG69nDpEGUKxw==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.2.2.tgz",
+ "integrity": "sha512-4PS0y1VxDnELGHGgBWlDksB2LJK8TG8lcvlWxIsgR+8vROI7Ms8h1P4FQUx+ftAX2QZv5g1CJCdhdRmQKyonyw==",
"dependencies": {
"tslib": "^2.5.0"
},
@@ -2738,12 +2503,12 @@
}
},
"node_modules/@smithy/url-parser": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.1.tgz",
- "integrity": "sha512-NpHVOAwddo+OyyIoujDL9zGL96piHWrTNXqltWmBvlUoWgt1HPyBuKs6oHjioyFnNZXUqveTOkEEq0U5w6Uv8A==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.5.tgz",
+ "integrity": "sha512-OdMBvZhpckQSkugCXNJQCvqJ71wE7Ftxce92UOQLQ9pwF6hoS5PLL7wEfpnuEXtStzBqJYkzu1C1ZfjuFGOXAA==",
"dependencies": {
- "@smithy/querystring-parser": "^2.0.1",
- "@smithy/types": "^2.0.2",
+ "@smithy/querystring-parser": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
}
},
@@ -2768,9 +2533,9 @@
}
},
"node_modules/@smithy/util-body-length-node": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.0.0.tgz",
- "integrity": "sha512-ZV7Z/WHTMxHJe/xL/56qZwSUcl63/5aaPAGjkfynJm4poILjdD4GmFI+V+YWabh2WJIjwTKZ5PNsuvPQKt93Mg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz",
+ "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==",
"dependencies": {
"tslib": "^2.5.0"
},
@@ -2802,12 +2567,12 @@
}
},
"node_modules/@smithy/util-defaults-mode-browser": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.1.tgz",
- "integrity": "sha512-w72Qwsb+IaEYEFtYICn0Do42eFju78hTaBzzJfT107lFOPdbjWjKnFutV+6GL/nZd5HWXY7ccAKka++C3NrjHw==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.5.tgz",
+ "integrity": "sha512-yciP6TPttLsj731aHTvekgyuCGXQrEAJibEwEWAh3kzaDsfGAVCuZSBlyvC2Dl3TZmHKCOQwHV8mIE7KQCTPuQ==",
"dependencies": {
- "@smithy/property-provider": "^2.0.1",
- "@smithy/types": "^2.0.2",
+ "@smithy/property-provider": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"bowser": "^2.11.0",
"tslib": "^2.5.0"
},
@@ -2816,15 +2581,15 @@
}
},
"node_modules/@smithy/util-defaults-mode-node": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.1.tgz",
- "integrity": "sha512-dNF45caelEBambo0SgkzQ0v76m4YM+aFKZNTtSafy7P5dVF8TbjZuR2UX1A5gJABD9XK6lzN+v/9Yfzj/EDgGg==",
- "dependencies": {
- "@smithy/config-resolver": "^2.0.1",
- "@smithy/credential-provider-imds": "^2.0.1",
- "@smithy/node-config-provider": "^2.0.1",
- "@smithy/property-provider": "^2.0.1",
- "@smithy/types": "^2.0.2",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.5.tgz",
+ "integrity": "sha512-M07t99rWasXt+IaDZDyP3BkcoEm/mgIE1RIMASrE49LKSNxaVN7PVcgGc77+4uu2kzBAyqJKy79pgtezuknyjQ==",
+ "dependencies": {
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/credential-provider-imds": "^2.0.5",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/property-provider": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2866,13 +2631,13 @@
}
},
"node_modules/@smithy/util-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.1.tgz",
- "integrity": "sha512-2a0IOtwIKC46EEo7E7cxDN8u2jwOiYYJqcFKA6rd5rdXqKakHT2Gc+AqHWngr0IEHUfW92zX12wRQKwyoqZf2Q==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.5.tgz",
+ "integrity": "sha512-ylx27GwI05xLpYQ4hDIfS15vm+wYjNN0Sc2P0FxuzgRe8v0BOLHppGIQ+Bezcynk8C9nUzsUue3TmtRhjut43g==",
"dependencies": {
- "@smithy/fetch-http-handler": "^2.0.1",
- "@smithy/node-http-handler": "^2.0.1",
- "@smithy/types": "^2.0.2",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-buffer-from": "^2.0.0",
"@smithy/util-hex-encoding": "^2.0.0",
@@ -2907,12 +2672,12 @@
}
},
"node_modules/@smithy/util-waiter": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.1.tgz",
- "integrity": "sha512-bSyGFicPRYuGFFWAr72UvYI7tE7KmEeFJJ5iaLuTTdo8RGaNBZ2kE25coGtzrejYh9AhwSfckBvbxgEDxIxhlA==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.5.tgz",
+ "integrity": "sha512-1lkkUmI/bhaDX+LIT3RiUNAn+NzPmsWjE7beMq0oQ3H1/CffaILIN67riDA0aE1YBj6xll7uWMIy4tJqc+peXw==",
"dependencies": {
- "@smithy/abort-controller": "^2.0.1",
- "@smithy/types": "^2.0.2",
+ "@smithy/abort-controller": "^2.0.5",
+ "@smithy/types": "^2.2.2",
"tslib": "^2.5.0"
},
"engines": {
@@ -2930,22 +2695,31 @@
"node_modules/@tsconfig/node10": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
- "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA=="
+ "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
+ "dev": true
},
"node_modules/@tsconfig/node12": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
- "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+ "dev": true
},
"node_modules/@tsconfig/node14": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
- "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
+ "dev": true
},
"node_modules/@tsconfig/node16": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
- "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ=="
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
+ "dev": true
+ },
+ "node_modules/@types/aws-lambda": {
+ "version": "8.10.119",
+ "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.119.tgz",
+ "integrity": "sha512-Vqm22aZrCvCd6I5g1SvpW151jfqwTzEZ7XJ3yZ6xaZG31nUEOEyzzVImjRcsN8Wi/QyPxId/x8GTtgIbsy8kEw=="
},
"node_modules/@types/babel__core": {
"version": "7.20.1",
@@ -3021,117 +2795,10 @@
"@types/istanbul-lib-report": "*"
}
},
- "node_modules/@types/jest": {
- "version": "26.0.10",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.10.tgz",
- "integrity": "sha512-i2m0oyh8w/Lum7wWK/YOZJakYF8Mx08UaKA1CtbmFeDquVhAEdA7znacsVSf2hJ1OQ/OfVMGN90pw/AtzF8s/Q==",
- "dev": true,
- "dependencies": {
- "jest-diff": "^25.2.1",
- "pretty-format": "^25.2.1"
- }
- },
- "node_modules/@types/jest/node_modules/@jest/types": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz",
- "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^15.0.0",
- "chalk": "^3.0.0"
- },
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/@types/jest/node_modules/@types/istanbul-reports": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
- "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
- }
- },
- "node_modules/@types/jest/node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@types/jest/node_modules/diff-sequences": {
- "version": "25.2.6",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz",
- "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==",
- "dev": true,
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/@types/jest/node_modules/jest-diff": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz",
- "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==",
- "dev": true,
- "dependencies": {
- "chalk": "^3.0.0",
- "diff-sequences": "^25.2.6",
- "jest-get-type": "^25.2.6",
- "pretty-format": "^25.5.0"
- },
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/@types/jest/node_modules/jest-get-type": {
- "version": "25.2.6",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz",
- "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==",
- "dev": true,
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/@types/jest/node_modules/pretty-format": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz",
- "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^25.5.0",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^16.12.0"
- },
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/@types/jest/node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "dev": true
- },
"node_modules/@types/json-schema": {
- "version": "7.0.11",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
- "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
- },
- "node_modules/@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "version": "7.0.12",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
+ "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
"dev": true
},
"node_modules/@types/lodash": {
@@ -3142,18 +2809,13 @@
"node_modules/@types/node": {
"version": "18.16.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz",
- "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q=="
- },
- "node_modules/@types/prettier": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
- "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
+ "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==",
"dev": true
},
"node_modules/@types/semver": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
- "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==",
"dev": true
},
"node_modules/@types/stack-utils": {
@@ -3163,9 +2825,9 @@
"dev": true
},
"node_modules/@types/yargs": {
- "version": "15.0.15",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz",
- "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==",
+ "version": "17.0.24",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
+ "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
"dev": true,
"dependencies": {
"@types/yargs-parser": "*"
@@ -3178,32 +2840,33 @@
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.11",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.11.tgz",
- "integrity": "sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz",
+ "integrity": "sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==",
"dev": true,
"dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/type-utils": "5.59.11",
- "@typescript-eslint/utils": "5.59.11",
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "6.4.1",
+ "@typescript-eslint/type-utils": "6.4.1",
+ "@typescript-eslint/utils": "6.4.1",
+ "@typescript-eslint/visitor-keys": "6.4.1",
"debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
+ "eslint": "^7.0.0 || ^8.0.0"
},
"peerDependenciesMeta": {
"typescript": {
@@ -3212,25 +2875,26 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.59.11",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.11.tgz",
- "integrity": "sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.0.0.tgz",
+ "integrity": "sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/typescript-estree": "5.59.11",
+ "@typescript-eslint/scope-manager": "6.0.0",
+ "@typescript-eslint/types": "6.0.0",
+ "@typescript-eslint/typescript-estree": "6.0.0",
+ "@typescript-eslint/visitor-keys": "6.0.0",
"debug": "^4.3.4"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "eslint": "^7.0.0 || ^8.0.0"
},
"peerDependenciesMeta": {
"typescript": {
@@ -3238,17 +2902,64 @@
}
}
},
+ "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.0.0.tgz",
+ "integrity": "sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.0.0",
+ "@typescript-eslint/visitor-keys": "6.0.0"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.0.0.tgz",
+ "integrity": "sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.0.0",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.11",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.11.tgz",
- "integrity": "sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz",
+ "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/visitor-keys": "5.59.11"
+ "@typescript-eslint/types": "6.4.1",
+ "@typescript-eslint/visitor-keys": "6.4.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz",
+ "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
@@ -3256,25 +2967,65 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.11",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.11.tgz",
- "integrity": "sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz",
+ "integrity": "sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.11",
- "@typescript-eslint/utils": "5.59.11",
+ "@typescript-eslint/typescript-estree": "6.4.1",
+ "@typescript-eslint/utils": "6.4.1",
"debug": "^4.3.4",
- "tsutils": "^3.21.0"
+ "ts-api-utils": "^1.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "*"
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz",
+ "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz",
+ "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.4.1",
+ "@typescript-eslint/visitor-keys": "6.4.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
},
"peerDependenciesMeta": {
"typescript": {
@@ -3283,12 +3034,12 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.59.11",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.11.tgz",
- "integrity": "sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.0.0.tgz",
+ "integrity": "sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==",
"dev": true,
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
@@ -3296,21 +3047,21 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.11",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.11.tgz",
- "integrity": "sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.0.0.tgz",
+ "integrity": "sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/visitor-keys": "5.59.11",
+ "@typescript-eslint/types": "6.0.0",
+ "@typescript-eslint/visitor-keys": "6.0.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
+ "semver": "^7.5.0",
+ "ts-api-utils": "^1.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
@@ -3322,43 +3073,112 @@
}
}
},
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.0.0.tgz",
+ "integrity": "sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.0.0",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
"node_modules/@typescript-eslint/utils": {
- "version": "5.59.11",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.11.tgz",
- "integrity": "sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz",
+ "integrity": "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==",
"dev": true,
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/typescript-estree": "5.59.11",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "6.4.1",
+ "@typescript-eslint/types": "6.4.1",
+ "@typescript-eslint/typescript-estree": "6.4.1",
+ "semver": "^7.5.4"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz",
+ "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz",
+ "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.4.1",
+ "@typescript-eslint/visitor-keys": "6.4.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.11",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.11.tgz",
- "integrity": "sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz",
+ "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.59.11",
- "eslint-visitor-keys": "^3.3.0"
+ "@typescript-eslint/types": "6.4.1",
+ "eslint-visitor-keys": "^3.4.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz",
+ "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
@@ -3371,9 +3191,9 @@
"integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA=="
},
"node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
"bin": {
"acorn": "bin/acorn"
},
@@ -3390,6 +3210,17 @@
"acorn-walk": "^7.1.1"
}
},
+ "node_modules/acorn-globals/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
@@ -3419,13 +3250,14 @@
}
},
"node_modules/ajv": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz",
- "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==",
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
@@ -3496,7 +3328,8 @@
"node_modules/arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true
},
"node_modules/argparse": {
"version": "1.0.10",
@@ -3506,38 +3339,6 @@
"sprintf-js": "~1.0.2"
}
},
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-includes": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
- "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "get-intrinsic": "^1.1.3",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -3547,42 +3348,6 @@
"node": ">=8"
}
},
- "node_modules/array.prototype.flat": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
- "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flatmap": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
- "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -3600,9 +3365,9 @@
}
},
"node_modules/aws-cdk": {
- "version": "2.89.0",
- "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.89.0.tgz",
- "integrity": "sha512-4FF/5jNd86x9iSk/xQB1KRFWkhMWd/Z7x7tOwztgZYDj6aYR/3Xru7pb2BD6s6Oli/eeQaXTG11+eY9zdrJIQA==",
+ "version": "2.93.0",
+ "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.93.0.tgz",
+ "integrity": "sha512-C0o7rzlXbQ3othvQ9uZamRwr741MSX/9eZ74zNJvpkX5Eitx/XoQYwUHeD+cbb4lKHMi7m2SwJfx3yOEkpu9OQ==",
"dev": true,
"bin": {
"cdk": "bin/cdk"
@@ -3615,9 +3380,9 @@
}
},
"node_modules/aws-cdk-lib": {
- "version": "2.80.0",
- "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.80.0.tgz",
- "integrity": "sha512-PoqD3Yms5I0ajuTi071nTW/hpkH3XsdyZzn5gYsPv0qD7mqP3h6Qr+6RiGx+yQ1KcVFyxWdX15uK+DsC0KwvcQ==",
+ "version": "2.93.0",
+ "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.93.0.tgz",
+ "integrity": "sha512-kKbcKkts272Ju5xjGKI3pXTOpiJxW4OQbDF8Vmw/NIkkuJLo8GlRCFfeOfoN/hilvlYQgENA67GCgSWccbvu7w==",
"bundleDependencies": [
"@balena/dockerignore",
"case",
@@ -3631,9 +3396,9 @@
"yaml"
],
"dependencies": {
- "@aws-cdk/asset-awscli-v1": "^2.2.177",
- "@aws-cdk/asset-kubectl-v20": "^2.1.1",
- "@aws-cdk/asset-node-proxy-agent-v5": "^2.0.148",
+ "@aws-cdk/asset-awscli-v1": "^2.2.200",
+ "@aws-cdk/asset-kubectl-v20": "^2.1.2",
+ "@aws-cdk/asset-node-proxy-agent-v6": "^2.0.1",
"@balena/dockerignore": "^1.0.2",
"case": "1.6.3",
"fs-extra": "^11.1.1",
@@ -3641,7 +3406,7 @@
"jsonschema": "^1.4.1",
"minimatch": "^3.1.2",
"punycode": "^2.3.0",
- "semver": "^7.5.1",
+ "semver": "^7.5.4",
"table": "^6.8.1",
"yaml": "1.10.2"
},
@@ -3857,7 +3622,7 @@
}
},
"node_modules/aws-cdk-lib/node_modules/semver": {
- "version": "7.5.1",
+ "version": "7.5.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
@@ -3959,10 +3724,29 @@
"resolved": "https://registry.npmjs.org/aws-icons-directory/-/aws-icons-directory-0.0.6.tgz",
"integrity": "sha512-yLEJx9/+peATxmIEXx/6CaNQOrSvs3NXHtw9TfaDMfUMQRrFPUhAR4ThDwvxu87hWyCay9B6JUrKd+uaRONA2w=="
},
+ "node_modules/aws-lambda": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz",
+ "integrity": "sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w==",
+ "dependencies": {
+ "aws-sdk": "^2.814.0",
+ "commander": "^3.0.2",
+ "js-yaml": "^3.14.1",
+ "watchpack": "^2.0.0-beta.10"
+ },
+ "bin": {
+ "lambda": "bin/lambda"
+ }
+ },
+ "node_modules/aws-lambda/node_modules/commander": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz",
+ "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow=="
+ },
"node_modules/aws-sdk": {
- "version": "2.1360.0",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1360.0.tgz",
- "integrity": "sha512-wW1CviH1s6bl5+wO+KM7aSc3yy6cQPJT85Fd4rQgrn0uwfjg9fx7KJ0FRhv+eU4DabkRjcSMlKo1IGhARmT6Tw==",
+ "version": "2.1448.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1448.0.tgz",
+ "integrity": "sha512-15r8YKdAAXLgtPfQTAzD/qNxxgndF1SMEw6F+mXvLxZrLkG4BHnzOW2g2sQc3C2qG5yqCb3K6R+OrjbvGOAmdQ==",
"dependencies": {
"buffer": "4.9.2",
"events": "1.1.1",
@@ -3988,15 +3772,15 @@
}
},
"node_modules/babel-jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz",
- "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz",
+ "integrity": "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==",
"dev": true,
"dependencies": {
- "@jest/transform": "^29.5.0",
+ "@jest/transform": "^29.6.4",
"@types/babel__core": "^7.1.14",
"babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.5.0",
+ "babel-preset-jest": "^29.6.3",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"slash": "^3.0.0"
@@ -4024,10 +3808,35 @@
"node": ">=8"
}
},
+ "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-istanbul/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/babel-plugin-jest-hoist": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz",
- "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
+ "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
"dev": true,
"dependencies": {
"@babel/template": "^7.3.3",
@@ -4063,12 +3872,12 @@
}
},
"node_modules/babel-preset-jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz",
- "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
+ "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
"dev": true,
"dependencies": {
- "babel-plugin-jest-hoist": "^29.5.0",
+ "babel-plugin-jest-hoist": "^29.6.3",
"babel-preset-current-node-syntax": "^1.0.0"
},
"engines": {
@@ -4081,7 +3890,8 @@
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
},
"node_modules/base64-js": {
"version": "1.5.1",
@@ -4102,11 +3912,6 @@
}
]
},
- "node_modules/bit-twiddle": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz",
- "integrity": "sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA=="
- },
"node_modules/bowser": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
@@ -4116,6 +3921,7 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -4139,9 +3945,9 @@
"integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
},
"node_modules/browserslist": {
- "version": "4.21.8",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.8.tgz",
- "integrity": "sha512-j+7xYe+v+q2Id9qbBeCI8WX5NmZSRe8es1+0xntD/+gaWXznP8tFEkv5IgSaHf5dS1YwVMbX/4W6m937mj+wQw==",
+ "version": "4.21.10",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
+ "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
"dev": true,
"funding": [
{
@@ -4158,9 +3964,9 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001502",
- "electron-to-chromium": "^1.4.428",
- "node-releases": "^2.0.12",
+ "caniuse-lite": "^1.0.30001517",
+ "electron-to-chromium": "^1.4.477",
+ "node-releases": "^2.0.13",
"update-browserslist-db": "^1.0.11"
},
"bin": {
@@ -4207,16 +4013,6 @@
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
- "node_modules/builtins": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
- "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "semver": "^7.0.0"
- }
- },
"node_modules/call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
@@ -4248,9 +4044,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001503",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001503.tgz",
- "integrity": "sha512-Sf9NiF+wZxPfzv8Z3iS0rXM1Do+iOy2Lxvib38glFX+08TCYYYGR5fRJXk4d77C4AYwhUjgYgMsMudbh2TqCKw==",
+ "version": "1.0.30001525",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz",
+ "integrity": "sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==",
"dev": true,
"funding": [
{
@@ -4267,14 +4063,6 @@
}
]
},
- "node_modules/canvas-utils": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/canvas-utils/-/canvas-utils-0.5.0.tgz",
- "integrity": "sha512-E9W3fizsb+UAJr27Y+m4spEuxJaZu/vgWbXHARD/1Lk4QFp1WDMqYeEUq9vdMAHBUNg9zpmv9PaNDGO7hDucPQ==",
- "dependencies": {
- "inherits": "^2.0.1"
- }
- },
"node_modules/cfonts": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/cfonts/-/cfonts-3.2.0.tgz",
@@ -4290,20 +4078,6 @@
"node": ">=10"
}
},
- "node_modules/cfonts/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -4319,6 +4093,17 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/char-regex": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
@@ -4454,6 +4239,7 @@
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
@@ -4463,6 +4249,23 @@
"node": ">=12"
}
},
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -4474,9 +4277,9 @@
}
},
"node_modules/collect-v8-coverage": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
- "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
"dev": true
},
"node_modules/color-convert": {
@@ -4522,7 +4325,8 @@
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
},
"node_modules/constructs": {
"version": "10.2.25",
@@ -4541,7 +4345,8 @@
"node_modules/create-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
},
"node_modules/cross-spawn": {
"version": "7.0.3",
@@ -4586,23 +4391,6 @@
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
"integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
},
- "node_modules/cwise-compiler": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz",
- "integrity": "sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ==",
- "dependencies": {
- "uniq": "^1.0.0"
- }
- },
- "node_modules/d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
- "dependencies": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
- }
- },
"node_modules/data-urls": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
@@ -4638,15 +4426,24 @@
"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
},
"node_modules/dedent": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
- "dev": true
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz",
+ "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
+ "dev": true,
+ "peerDependencies": {
+ "babel-plugin-macros": "^3.1.0"
+ },
+ "peerDependenciesMeta": {
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
},
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
},
"node_modules/deepmerge": {
"version": "4.3.1",
@@ -4657,22 +4454,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/define-properties": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
- "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
- "dev": true,
- "dependencies": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
@@ -4705,14 +4486,15 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
"engines": {
"node": ">=0.3.1"
}
},
"node_modules/diff-sequences": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
- "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
"dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -4761,15 +4543,10 @@
"node": ">=8"
}
},
- "node_modules/dup": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/dup/-/dup-1.0.0.tgz",
- "integrity": "sha512-Bz5jxMMC0wgp23Zm15ip1x8IhYRqJvF3nFC0UInJUDkN1z4uNPk9jTnfCUJXbOGiQ1JbXLQsiV41Fb+HXcj5BA=="
- },
"node_modules/electron-to-chromium": {
- "version": "1.4.431",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.431.tgz",
- "integrity": "sha512-m232JTVmCawA2vG+1azVxhKZ9Sv1Q//xxNv5PkP5rWxGgQE8c3CiZFrh8Xnp+d1NmNxlu3QQrGIfdeW5TtXX5w==",
+ "version": "1.4.506",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.506.tgz",
+ "integrity": "sha512-xxGct4GPAKSRlrLBtJxJFYy74W11zX6PO9GyHgl/U+2s3Dp0ZEwAklDfNHXOWcvH7zWMpsmgbR0ggEuaYAVvHA==",
"dev": true
},
"node_modules/emittery": {
@@ -4798,165 +4575,11 @@
"is-arrayish": "^0.2.1"
}
},
- "node_modules/es-abstract": {
- "version": "1.21.2",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz",
- "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==",
- "dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.2.0",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.10",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.3",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.4.3",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.7",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.9"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
- "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-shim-unscopables": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
- "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
- "dev": true,
- "dependencies": {
- "has": "^1.0.3"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es5-ext": {
- "version": "0.10.62",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
- "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
- "hasInstallScript": true,
- "dependencies": {
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.3",
- "next-tick": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/es6-map": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
- "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==",
- "dependencies": {
- "d": "1",
- "es5-ext": "~0.10.14",
- "es6-iterator": "~2.0.1",
- "es6-set": "~0.1.5",
- "es6-symbol": "~3.1.1",
- "event-emitter": "~0.3.5"
- }
- },
- "node_modules/es6-set": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz",
- "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==",
- "dependencies": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.62",
- "es6-iterator": "~2.0.3",
- "es6-symbol": "^3.1.3",
- "event-emitter": "^0.3.5",
- "type": "^2.7.2"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/es6-set/node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
- },
- "node_modules/es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
- "dependencies": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
- }
- },
"node_modules/escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
"engines": {
"node": ">=6"
}
@@ -4974,14 +4597,13 @@
}
},
"node_modules/escodegen": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
- "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^5.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
+ "esutils": "^2.0.2"
},
"bin": {
"escodegen": "bin/escodegen.js",
@@ -4994,83 +4616,28 @@
"source-map": "~0.6.1"
}
},
- "node_modules/escodegen/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/escodegen/node_modules/levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
- "dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
- "dependencies": {
- "prelude-ls": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/eslint": {
- "version": "8.42.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz",
- "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==",
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz",
+ "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.42.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "8.48.0",
"@humanwhocodes/config-array": "^0.11.10",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
+ "ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -5080,7 +4647,6 @@
"globals": "^13.19.0",
"graphemer": "^1.4.0",
"ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"is-path-inside": "^3.0.3",
@@ -5090,9 +4656,8 @@
"lodash.merge": "^4.6.2",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
+ "optionator": "^0.9.3",
"strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
"text-table": "^0.2.0"
},
"bin": {
@@ -5105,312 +4670,15 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint-config-standard": {
- "version": "17.1.0",
- "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz",
- "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": "^8.0.1",
- "eslint-plugin-import": "^2.25.2",
- "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
- "eslint-plugin-promise": "^6.0.0"
- }
- },
- "node_modules/eslint-import-resolver-node": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
- "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
- "dev": true,
- "dependencies": {
- "debug": "^3.2.7",
- "is-core-module": "^2.11.0",
- "resolve": "^1.22.1"
- }
- },
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-module-utils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
- "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
- "dev": true,
- "dependencies": {
- "debug": "^3.2.7"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-es": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz",
- "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==",
- "dev": true,
- "dependencies": {
- "eslint-utils": "^2.0.0",
- "regexpp": "^3.0.0"
- },
- "engines": {
- "node": ">=8.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=4.19.1"
- }
- },
- "node_modules/eslint-plugin-es-x": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-6.2.1.tgz",
- "integrity": "sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.1.2",
- "@eslint-community/regexpp": "^4.5.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ota-meshi"
- },
- "peerDependencies": {
- "eslint": ">=8"
- }
- },
- "node_modules/eslint-plugin-es/node_modules/eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-plugin-import": {
- "version": "2.27.5",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz",
- "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==",
- "dev": true,
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flat": "^1.3.1",
- "array.prototype.flatmap": "^1.3.1",
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.7",
- "eslint-module-utils": "^2.7.4",
- "has": "^1.0.3",
- "is-core-module": "^2.11.0",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.values": "^1.1.6",
- "resolve": "^1.22.1",
- "semver": "^6.3.0",
- "tsconfig-paths": "^3.14.1"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/eslint-plugin-n": {
- "version": "16.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.0.tgz",
- "integrity": "sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "builtins": "^5.0.1",
- "eslint-plugin-es-x": "^6.1.0",
- "ignore": "^5.1.1",
- "is-core-module": "^2.12.0",
- "minimatch": "^3.1.2",
- "resolve": "^1.22.2",
- "semver": "^7.5.0"
- },
- "engines": {
- "node": ">=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-plugin-node": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz",
- "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==",
- "dev": true,
- "dependencies": {
- "eslint-plugin-es": "^3.0.0",
- "eslint-utils": "^2.0.0",
- "ignore": "^5.1.1",
- "minimatch": "^3.0.4",
- "resolve": "^1.10.1",
- "semver": "^6.1.0"
- },
- "engines": {
- "node": ">=8.10.0"
- },
- "peerDependencies": {
- "eslint": ">=5.16.0"
- }
- },
- "node_modules/eslint-plugin-node/node_modules/eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-plugin-node/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/eslint-plugin-promise": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
- "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
- }
- },
"node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "estraverse": "^5.2.0"
},
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
- "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
- "dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -5418,20 +4686,16 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/argparse": {
@@ -5440,102 +4704,25 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
- "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/eslint/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/eslint/node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/eslint/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/eslint/node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
+ "argparse": "^2.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
"node_modules/espree": {
- "version": "9.5.2",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
- "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
"dependencies": {
- "acorn": "^8.8.0",
+ "acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
"eslint-visitor-keys": "^3.4.1"
},
@@ -5546,18 +4733,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/espree/node_modules/acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -5582,15 +4757,6 @@
"node": ">=0.10"
}
},
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
"node_modules/esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
@@ -5603,20 +4769,10 @@
"node": ">=4.0"
}
},
- "node_modules/esrecurse/node_modules/estraverse": {
+ "node_modules/estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
"engines": {
"node": ">=4.0"
}
@@ -5629,15 +4785,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/event-emitter": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
- "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
- "dependencies": {
- "d": "1",
- "es5-ext": "~0.10.14"
- }
- },
"node_modules/events": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
@@ -5679,34 +4826,21 @@
}
},
"node_modules/expect": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz",
- "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz",
+ "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==",
"dev": true,
"dependencies": {
- "@jest/expect-utils": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0"
+ "@jest/expect-utils": "^29.6.4",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.6.4",
+ "jest-message-util": "^29.6.3",
+ "jest-util": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/ext": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
- "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
- "dependencies": {
- "type": "^2.7.2"
- }
- },
- "node_modules/ext/node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
- },
"node_modules/external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -5723,12 +4857,13 @@
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
},
"node_modules/fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
@@ -5762,7 +4897,8 @@
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
},
"node_modules/fast-xml-parser": {
"version": "4.2.5",
@@ -5850,29 +4986,33 @@
}
},
"node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"dependencies": {
- "locate-path": "^5.0.0",
+ "locate-path": "^6.0.0",
"path-exists": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz",
+ "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==",
"dev": true,
"dependencies": {
- "flatted": "^3.1.0",
+ "flatted": "^3.2.7",
+ "keyv": "^4.5.3",
"rimraf": "^3.0.2"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=12.0.0"
}
},
"node_modules/flatted": {
@@ -5905,7 +5045,8 @@
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
},
"node_modules/fsevents": {
"version": "2.3.2",
@@ -5926,33 +5067,6 @@
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
- "node_modules/function.prototype.name": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
- "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -5966,17 +5080,19 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
"dependencies": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
+ "has-proto": "^1.0.1",
"has-symbols": "^1.0.3"
},
"funding": {
@@ -6004,26 +5120,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -6051,10 +5152,15 @@
"node": ">=10.13.0"
}
},
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
+ },
"node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "version": "13.21.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
+ "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -6066,21 +5172,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/globby": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
@@ -6115,14 +5206,7 @@
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
- "node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
- "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
- "dev": true
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
"node_modules/graphemer": {
"version": "1.4.0",
@@ -6160,15 +5244,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -6177,23 +5252,10 @@
"node": ">=8"
}
},
- "node_modules/has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/has-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
- "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -6350,6 +5412,7 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -6383,25 +5446,6 @@
"node": ">=8.0.0"
}
},
- "node_modules/internal-slot": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
- "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/iota-array": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz",
- "integrity": "sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA=="
- },
"node_modules/is-accessor-descriptor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
@@ -6428,54 +5472,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-array-buffer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
"dev": true
},
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dev": true,
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
@@ -6493,9 +5495,9 @@
}
},
"node_modules/is-core-module": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz",
- "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==",
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
@@ -6515,21 +5517,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-descriptor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
@@ -6609,18 +5596,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-negative-zero": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -6630,21 +5605,6 @@
"node": ">=0.12.0"
}
},
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-path-inside": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
@@ -6659,34 +5619,6 @@
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
"integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
},
- "node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
@@ -6699,46 +5631,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-typed-array": {
- "version": "1.1.10",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
- "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
+ "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
"dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
+ "which-typed-array": "^1.1.11"
},
"engines": {
"node": ">= 0.4"
@@ -6747,18 +5645,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -6791,40 +5677,43 @@
}
},
"node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz",
+ "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==",
"dev": true,
"dependencies": {
"@babel/core": "^7.12.3",
"@babel/parser": "^7.14.7",
"@istanbuljs/schema": "^0.1.2",
"istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
+ "semver": "^7.5.4"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
+ "node": ">=10"
}
},
"node_modules/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
"dev": true,
"dependencies": {
"istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
+ "make-dir": "^4.0.0",
"supports-color": "^7.1.0"
},
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
"engines": {
"node": ">=8"
}
@@ -6844,9 +5733,9 @@
}
},
"node_modules/istanbul-reports": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
- "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
+ "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
"dev": true,
"dependencies": {
"html-escaper": "^2.0.0",
@@ -6888,12 +5777,13 @@
}
},
"node_modules/jest-changed-files": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz",
- "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz",
+ "integrity": "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==",
"dev": true,
"dependencies": {
"execa": "^5.0.0",
+ "jest-util": "^29.6.3",
"p-limit": "^3.1.0"
},
"engines": {
@@ -6901,28 +5791,28 @@
}
},
"node_modules/jest-circus": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz",
- "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.4.tgz",
+ "integrity": "sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==",
"dev": true,
"dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/environment": "^29.6.4",
+ "@jest/expect": "^29.6.4",
+ "@jest/test-result": "^29.6.4",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"chalk": "^4.0.0",
"co": "^4.6.0",
- "dedent": "^0.7.0",
+ "dedent": "^1.0.0",
"is-generator-fn": "^2.0.0",
- "jest-each": "^29.5.0",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-each": "^29.6.3",
+ "jest-matcher-utils": "^29.6.4",
+ "jest-message-util": "^29.6.3",
+ "jest-runtime": "^29.6.4",
+ "jest-snapshot": "^29.6.4",
+ "jest-util": "^29.6.3",
"p-limit": "^3.1.0",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.6.3",
"pure-rand": "^6.0.0",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
@@ -6932,21 +5822,21 @@
}
},
"node_modules/jest-cli": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz",
- "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.4.tgz",
+ "integrity": "sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==",
"dev": true,
"dependencies": {
- "@jest/core": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/core": "^29.6.4",
+ "@jest/test-result": "^29.6.4",
+ "@jest/types": "^29.6.3",
"chalk": "^4.0.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.9",
"import-local": "^3.0.2",
- "jest-config": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
+ "jest-config": "^29.6.4",
+ "jest-util": "^29.6.3",
+ "jest-validate": "^29.6.3",
"prompts": "^2.0.1",
"yargs": "^17.3.1"
},
@@ -6966,31 +5856,31 @@
}
},
"node_modules/jest-config": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz",
- "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.4.tgz",
+ "integrity": "sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==",
"dev": true,
"dependencies": {
"@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.5.0",
- "@jest/types": "^29.5.0",
- "babel-jest": "^29.5.0",
+ "@jest/test-sequencer": "^29.6.4",
+ "@jest/types": "^29.6.3",
+ "babel-jest": "^29.6.4",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"deepmerge": "^4.2.2",
"glob": "^7.1.3",
"graceful-fs": "^4.2.9",
- "jest-circus": "^29.5.0",
- "jest-environment-node": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
+ "jest-circus": "^29.6.4",
+ "jest-environment-node": "^29.6.4",
+ "jest-get-type": "^29.6.3",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.6.4",
+ "jest-runner": "^29.6.4",
+ "jest-util": "^29.6.3",
+ "jest-validate": "^29.6.3",
"micromatch": "^4.0.4",
"parse-json": "^5.2.0",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.6.3",
"slash": "^3.0.0",
"strip-json-comments": "^3.1.1"
},
@@ -7011,24 +5901,24 @@
}
},
"node_modules/jest-diff": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz",
- "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz",
+ "integrity": "sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
- "diff-sequences": "^29.4.3",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "diff-sequences": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-docblock": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz",
- "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz",
+ "integrity": "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==",
"dev": true,
"dependencies": {
"detect-newline": "^3.0.0"
@@ -7038,62 +5928,62 @@
}
},
"node_modules/jest-each": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz",
- "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz",
+ "integrity": "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.6.3",
"chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "jest-util": "^29.5.0",
- "pretty-format": "^29.5.0"
+ "jest-get-type": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "pretty-format": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-environment-node": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz",
- "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz",
+ "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==",
"dev": true,
"dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/environment": "^29.6.4",
+ "@jest/fake-timers": "^29.6.4",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
+ "jest-mock": "^29.6.3",
+ "jest-util": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-get-type": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
- "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
"dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-haste-map": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz",
- "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz",
+ "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.6.3",
"@types/graceful-fs": "^4.1.3",
"@types/node": "*",
"anymatch": "^3.0.3",
"fb-watchman": "^2.0.0",
"graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
+ "jest-regex-util": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "jest-worker": "^29.6.4",
"micromatch": "^4.0.4",
"walker": "^1.0.8"
},
@@ -7105,46 +5995,46 @@
}
},
"node_modules/jest-leak-detector": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz",
- "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz",
+ "integrity": "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==",
"dev": true,
"dependencies": {
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-matcher-utils": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz",
- "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz",
+ "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "jest-diff": "^29.6.4",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-message-util": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz",
- "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz",
+ "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.6.3",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.6.3",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
},
@@ -7153,14 +6043,14 @@
}
},
"node_modules/jest-mock": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz",
- "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz",
+ "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-util": "^29.5.0"
+ "jest-util": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -7184,26 +6074,26 @@
}
},
"node_modules/jest-regex-util": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz",
- "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
+ "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
"dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-resolve": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz",
- "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.4.tgz",
+ "integrity": "sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
+ "jest-haste-map": "^29.6.4",
"jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
+ "jest-util": "^29.6.3",
+ "jest-validate": "^29.6.3",
"resolve": "^1.20.0",
"resolve.exports": "^2.0.0",
"slash": "^3.0.0"
@@ -7213,43 +6103,43 @@
}
},
"node_modules/jest-resolve-dependencies": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz",
- "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz",
+ "integrity": "sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==",
"dev": true,
"dependencies": {
- "jest-regex-util": "^29.4.3",
- "jest-snapshot": "^29.5.0"
+ "jest-regex-util": "^29.6.3",
+ "jest-snapshot": "^29.6.4"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-runner": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz",
- "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.4.tgz",
+ "integrity": "sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==",
"dev": true,
"dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/environment": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.6.4",
+ "@jest/environment": "^29.6.4",
+ "@jest/test-result": "^29.6.4",
+ "@jest/transform": "^29.6.4",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"chalk": "^4.0.0",
"emittery": "^0.13.1",
"graceful-fs": "^4.2.9",
- "jest-docblock": "^29.4.3",
- "jest-environment-node": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-leak-detector": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-resolve": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "jest-worker": "^29.5.0",
+ "jest-docblock": "^29.6.3",
+ "jest-environment-node": "^29.6.4",
+ "jest-haste-map": "^29.6.4",
+ "jest-leak-detector": "^29.6.3",
+ "jest-message-util": "^29.6.3",
+ "jest-resolve": "^29.6.4",
+ "jest-runtime": "^29.6.4",
+ "jest-util": "^29.6.3",
+ "jest-watcher": "^29.6.4",
+ "jest-worker": "^29.6.4",
"p-limit": "^3.1.0",
"source-map-support": "0.5.13"
},
@@ -7258,31 +6148,31 @@
}
},
"node_modules/jest-runtime": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz",
- "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/globals": "^29.5.0",
- "@jest/source-map": "^29.4.3",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.4.tgz",
+ "integrity": "sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.6.4",
+ "@jest/fake-timers": "^29.6.4",
+ "@jest/globals": "^29.6.4",
+ "@jest/source-map": "^29.6.3",
+ "@jest/test-result": "^29.6.4",
+ "@jest/transform": "^29.6.4",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"chalk": "^4.0.0",
"cjs-module-lexer": "^1.0.0",
"collect-v8-coverage": "^1.0.0",
"glob": "^7.1.3",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-haste-map": "^29.6.4",
+ "jest-message-util": "^29.6.3",
+ "jest-mock": "^29.6.3",
+ "jest-regex-util": "^29.6.3",
+ "jest-resolve": "^29.6.4",
+ "jest-snapshot": "^29.6.4",
+ "jest-util": "^29.6.3",
"slash": "^3.0.0",
"strip-bom": "^4.0.0"
},
@@ -7291,46 +6181,43 @@
}
},
"node_modules/jest-snapshot": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz",
- "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz",
+ "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==",
"dev": true,
"dependencies": {
"@babel/core": "^7.11.6",
"@babel/generator": "^7.7.2",
"@babel/plugin-syntax-jsx": "^7.7.2",
"@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/traverse": "^7.7.2",
"@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/babel__traverse": "^7.0.6",
- "@types/prettier": "^2.1.5",
+ "@jest/expect-utils": "^29.6.4",
+ "@jest/transform": "^29.6.4",
+ "@jest/types": "^29.6.3",
"babel-preset-current-node-syntax": "^1.0.0",
"chalk": "^4.0.0",
- "expect": "^29.5.0",
+ "expect": "^29.6.4",
"graceful-fs": "^4.2.9",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-diff": "^29.6.4",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.6.4",
+ "jest-message-util": "^29.6.3",
+ "jest-util": "^29.6.3",
"natural-compare": "^1.4.0",
- "pretty-format": "^29.5.0",
- "semver": "^7.3.5"
+ "pretty-format": "^29.6.3",
+ "semver": "^7.5.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-util": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
- "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz",
+ "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
@@ -7342,17 +6229,17 @@
}
},
"node_modules/jest-validate": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz",
- "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz",
+ "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.6.3",
"camelcase": "^6.2.0",
"chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
+ "jest-get-type": "^29.6.3",
"leven": "^3.1.0",
- "pretty-format": "^29.5.0"
+ "pretty-format": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -7371,18 +6258,18 @@
}
},
"node_modules/jest-watcher": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz",
- "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.4.tgz",
+ "integrity": "sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==",
"dev": true,
"dependencies": {
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/test-result": "^29.6.4",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
"emittery": "^0.13.1",
- "jest-util": "^29.5.0",
+ "jest-util": "^29.6.3",
"string-length": "^4.0.1"
},
"engines": {
@@ -7390,13 +6277,13 @@
}
},
"node_modules/jest-worker": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
- "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz",
+ "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==",
"dev": true,
"dependencies": {
"@types/node": "*",
- "jest-util": "^29.5.0",
+ "jest-util": "^29.6.3",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
@@ -7404,21 +6291,6 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
"node_modules/jmespath": {
"version": "0.16.0",
"resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz",
@@ -7490,17 +6362,6 @@
}
}
},
- "node_modules/jsdom/node_modules/acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@@ -7513,6 +6374,12 @@
"node": ">=4"
}
},
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -7520,9 +6387,10 @@
"dev": true
},
"node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
@@ -7542,6 +6410,15 @@
"node": ">=6"
}
},
+ "node_modules/keyv": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz",
+ "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -7588,15 +6465,18 @@
"dev": true
},
"node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"dependencies": {
- "p-locate": "^4.1.0"
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lodash": {
@@ -7626,33 +6506,25 @@
}
},
"node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
"dev": true,
"dependencies": {
- "semver": "^6.0.0"
+ "semver": "^7.5.3"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/make-dir/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/make-error": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true
},
"node_modules/makeerror": {
"version": "1.0.12",
@@ -7722,6 +6594,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -7729,15 +6602,6 @@
"node": "*"
}
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -7760,52 +6624,6 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
- },
- "node_modules/ndarray": {
- "version": "1.0.19",
- "resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz",
- "integrity": "sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==",
- "dependencies": {
- "iota-array": "^1.0.0",
- "is-buffer": "^1.0.2"
- }
- },
- "node_modules/ndarray-ops": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/ndarray-ops/-/ndarray-ops-1.2.2.tgz",
- "integrity": "sha512-BppWAFRjMYF7N/r6Ie51q6D4fs0iiGmeXIACKY66fLpnwIui3Wc3CXiD/30mgLbDjPpSLrsqcp3Z62+IcHZsDw==",
- "dependencies": {
- "cwise-compiler": "^1.0.0"
- }
- },
- "node_modules/ndarray-scratch": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/ndarray-scratch/-/ndarray-scratch-1.2.0.tgz",
- "integrity": "sha512-a4pASwB1jQyJcKLYrwrladVfDZDUGc78qLJZbHyb1Q4rhte0URhzc6ALQpBcauwgov0sXLwZz3vYH5jKAhSMIg==",
- "dependencies": {
- "ndarray": "^1.0.14",
- "ndarray-ops": "^1.2.1",
- "typedarray-pool": "^1.0.2"
- }
- },
- "node_modules/ndarray-sort": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ndarray-sort/-/ndarray-sort-1.0.1.tgz",
- "integrity": "sha512-Gpyis5NvEPOQVadDOG+Dx8bhYCkaxn5IlA4Ig/jBJIlnW1caDiPneQLzT/+AIMeHEmqlGZfdqO/I1TXJS2neAw==",
- "dependencies": {
- "typedarray-pool": "^1.0.0"
- }
- },
- "node_modules/next-tick": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
- "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
- },
"node_modules/node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -7813,9 +6631,9 @@
"dev": true
},
"node_modules/node-releases": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
- "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
+ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
"dev": true
},
"node_modules/normalize-path": {
@@ -7840,67 +6658,15 @@
}
},
"node_modules/nwsapi": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz",
- "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g=="
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.values": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
- "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
+ "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ=="
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
"dependencies": {
"wrappy": "1"
}
@@ -7950,17 +6716,17 @@
}
},
"node_modules/optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"dev": true,
"dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
+ "type-check": "^0.4.0"
},
"engines": {
"node": ">= 0.8.0"
@@ -7998,27 +6764,15 @@
}
},
"node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-locate/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"dependencies": {
- "p-try": "^2.0.0"
+ "p-limit": "^3.0.2"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -8068,11 +6822,6 @@
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
},
- "node_modules/path-equal": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/path-equal/-/path-equal-1.2.5.tgz",
- "integrity": "sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g=="
- },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -8086,6 +6835,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -8133,21 +6883,73 @@
}
},
"node_modules/pirates": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
- "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
"dev": true,
"engines": {
"node": ">= 6"
}
},
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"dependencies": {
- "find-up": "^4.0.0"
+ "p-limit": "^2.2.0"
},
"engines": {
"node": ">=8"
@@ -8163,12 +6965,12 @@
}
},
"node_modules/pretty-format": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
- "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
"dev": true,
"dependencies": {
- "@jest/schemas": "^29.4.3",
+ "@jest/schemas": "^29.6.3",
"ansi-styles": "^5.0.0",
"react-is": "^18.0.0"
},
@@ -8188,14 +6990,6 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
"node_modules/prompts": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -8278,58 +7072,11 @@
"integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
"dev": true
},
- "node_modules/red-blue-line-segment-intersect": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/red-blue-line-segment-intersect/-/red-blue-line-segment-intersect-1.0.1.tgz",
- "integrity": "sha512-QK1IxOlXVzzN65IAuJRsCZDwgy/Vv50Ia//nG8tr5tB+HMmFksXh7wf+4t5f+FrvtQjy5BShe1HzIkra25D0dQ==",
- "dependencies": {
- "ndarray-scratch": "^1.1.1",
- "ndarray-sort": "^1.0.0",
- "robust-segment-intersect": "^1.0.1",
- "typedarray-pool": "^1.0.2"
- }
- },
- "node_modules/regexp.prototype.flags": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
- "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "functions-have-names": "^1.2.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -8340,12 +7087,12 @@
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
"node_modules/resolve": {
- "version": "1.22.2",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
- "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+ "version": "1.22.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
+ "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.11.0",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -8432,44 +7179,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/robust-orientation": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/robust-orientation/-/robust-orientation-1.2.1.tgz",
- "integrity": "sha512-FuTptgKwY6iNuU15nrIJDLjXzCChWB+T4AvksRtwPS/WZ3HuP1CElCm1t+OBfgQKfWbtZIawip+61k7+buRKAg==",
- "dependencies": {
- "robust-scale": "^1.0.2",
- "robust-subtract": "^1.0.0",
- "robust-sum": "^1.0.0",
- "two-product": "^1.0.2"
- }
- },
- "node_modules/robust-scale": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/robust-scale/-/robust-scale-1.0.2.tgz",
- "integrity": "sha512-jBR91a/vomMAzazwpsPTPeuTPPmWBacwA+WYGNKcRGSh6xweuQ2ZbjRZ4v792/bZOhRKXRiQH0F48AvuajY0tQ==",
- "dependencies": {
- "two-product": "^1.0.2",
- "two-sum": "^1.0.0"
- }
- },
- "node_modules/robust-segment-intersect": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/robust-segment-intersect/-/robust-segment-intersect-1.0.1.tgz",
- "integrity": "sha512-QWngxcL7rCRLK7nTMcTNBPi/q+fecrOo6aOtTPnXjT/Dve5AK20DzUSq2fznUS+rCAxyir6OdPgDCzcUxFtJoQ==",
- "dependencies": {
- "robust-orientation": "^1.1.3"
- }
- },
- "node_modules/robust-subtract": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/robust-subtract/-/robust-subtract-1.0.0.tgz",
- "integrity": "sha512-xhKUno+Rl+trmxAIVwjQMiVdpF5llxytozXJOdoT4eTIqmqsndQqFb1A0oiW3sZGlhMRhOi6pAD4MF1YYW6o/A=="
- },
- "node_modules/robust-sum": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/robust-sum/-/robust-sum-1.0.0.tgz",
- "integrity": "sha512-AvLExwpaqUqD1uwLU6MwzzfRdaI6VEZsyvQ3IAQ0ZJ08v1H+DTyqskrf2ZJyh0BDduFVLN7H04Zmc+qTiahhAw=="
- },
"node_modules/run-async": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
@@ -8517,28 +7226,6 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
- "node_modules/safe-regex-test": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
- "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "is-regex": "^1.1.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safe-stable-stringify": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
- "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -8605,17 +7292,6 @@
"node": "*"
}
},
- "node_modules/shapes": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/shapes/-/shapes-0.4.0.tgz",
- "integrity": "sha512-vmdUocQYjIGEd/J83ZBxqm9zuxYvlFuwN1/cd/GnhpUp8+LGs0dttH0KhxgXRexKMG4l3HG5qzcin71Hymt9ww==",
- "dependencies": {
- "canvas-utils": "^0.5.0",
- "es6-map": "^0.1.1",
- "inherits": "^2.0.1",
- "red-blue-line-segment-intersect": "^1.0.1"
- }
- },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -8637,20 +7313,6 @@
"node": ">=8"
}
},
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
@@ -8742,51 +7404,6 @@
"node": ">=8"
}
},
- "node_modules/string.prototype.trim": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
- "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
- "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
- "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -8834,14 +7451,17 @@
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
},
"node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/supports-preserve-symlinks-flag": {
@@ -8957,10 +7577,22 @@
"node": ">=8"
}
},
+ "node_modules/ts-api-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.2.tgz",
+ "integrity": "sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16.13.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
"node_modules/ts-jest": {
- "version": "29.1.0",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz",
- "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==",
+ "version": "29.1.1",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
+ "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
"dev": true,
"dependencies": {
"bs-logger": "0.x",
@@ -8969,7 +7601,7 @@
"json5": "^2.2.3",
"lodash.memoize": "4.x",
"make-error": "1.x",
- "semver": "7.x",
+ "semver": "^7.5.3",
"yargs-parser": "^21.0.1"
},
"bin": {
@@ -9004,6 +7636,7 @@
"version": "10.9.1",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
"integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
+ "dev": true,
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -9042,98 +7675,19 @@
}
}
},
- "node_modules/ts-node/node_modules/acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/ts-node/node_modules/acorn-walk": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
"integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/tsconfig-paths": {
- "version": "3.14.2",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
- "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
- "dev": true,
- "dependencies": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.2",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
- }
- },
- "node_modules/tsconfig-paths/node_modules/json5": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
- "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.0"
- },
- "bin": {
- "json5": "lib/cli.js"
- }
- },
- "node_modules/tsconfig-paths/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=0.4.0"
}
},
"node_modules/tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/tsutils/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/two-product": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/two-product/-/two-product-1.0.2.tgz",
- "integrity": "sha512-vOyrqmeYvzjToVM08iU52OFocWT6eB/I5LUWYnxeAPGXAhAxXYU/Yr/R2uY5/5n4bvJQL9AQulIuxpIsMoT8XQ=="
- },
- "node_modules/two-sum": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/two-sum/-/two-sum-1.0.0.tgz",
- "integrity": "sha512-phP48e8AawgsNUjEY2WvoIWqdie8PoiDZGxTDv70LDr01uX5wLEQbOgSP7Z/B6+SW5oLtbe8qaYX2fKJs3CGTw=="
- },
- "node_modules/type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/type-check": {
"version": "0.4.0",
@@ -9168,33 +7722,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/typed-array-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
- "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typedarray-pool": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/typedarray-pool/-/typedarray-pool-1.2.0.tgz",
- "integrity": "sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ==",
- "dependencies": {
- "bit-twiddle": "^1.0.0",
- "dup": "^1.0.0"
- }
- },
"node_modules/typescript": {
"version": "4.9.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -9203,49 +7735,6 @@
"node": ">=4.2.0"
}
},
- "node_modules/typescript-json-schema": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.59.0.tgz",
- "integrity": "sha512-eYB9RO8p4PntznWUukdDQHckNfxzjEFCJUgsWeCE43mcFioE0wXGTSECGk1uhty9XQMxkpuI4pKAqqnb62ln3Q==",
- "dependencies": {
- "@types/json-schema": "^7.0.9",
- "@types/node": "^16.9.2",
- "glob": "^7.1.7",
- "path-equal": "^1.2.5",
- "safe-stable-stringify": "^2.2.0",
- "ts-node": "^10.9.1",
- "typescript": "~4.9.5",
- "yargs": "^17.1.1"
- },
- "bin": {
- "typescript-json-schema": "bin/typescript-json-schema"
- }
- },
- "node_modules/typescript-json-schema/node_modules/@types/node": {
- "version": "16.18.23",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.23.tgz",
- "integrity": "sha512-XAMpaw1s1+6zM+jn2tmw8MyaRDIJfXxqmIQIS0HfoGYPuf7dUWeiUKopwq13KFX9lEp1+THGtlaaYx39Nxr58g=="
- },
- "node_modules/unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/uniq": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
- "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA=="
- },
"node_modules/universalify": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
@@ -9288,6 +7777,7 @@
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
"dependencies": {
"punycode": "^2.1.0"
}
@@ -9338,7 +7828,8 @@
"node_modules/v8-compile-cache-lib": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
- "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
+ "dev": true
},
"node_modules/v8-to-istanbul": {
"version": "9.1.0",
@@ -9389,6 +7880,18 @@
"makeerror": "1.0.12"
}
},
+ "node_modules/watchpack": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/webidl-conversions": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
@@ -9438,33 +7941,16 @@
"node": ">= 8"
}
},
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dev": true,
- "dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/which-typed-array": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
- "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",
+ "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
"dependencies": {
"available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0",
- "is-typed-array": "^1.1.10"
+ "has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -9510,34 +7996,11 @@
"node": ">=0.10.0"
}
},
- "node_modules/word-wrap": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
- "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
},
"node_modules/write-file-atomic": {
"version": "4.0.2",
@@ -9606,6 +8069,7 @@
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
"engines": {
"node": ">=10"
}
@@ -9631,6 +8095,7 @@
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -9648,6 +8113,7 @@
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
"engines": {
"node": ">=12"
}
@@ -9656,6 +8122,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
"engines": {
"node": ">=6"
}
diff --git a/package.json b/package.json
index 8ae58246..722a61d8 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "aws-firewall-factory",
- "version": "3.3.1",
+ "version": "4.0.0",
"bin": {
"firewallfactory": "bin/aws-firewall-factory.js"
},
@@ -12,38 +12,31 @@
"lint": "eslint --ext .js,.ts ."
},
"devDependencies": {
- "@types/jest": "26.0.10",
"@types/node": "18.16.3",
- "@typescript-eslint/eslint-plugin": "5.59.11",
- "@typescript-eslint/parser": "5.59.11",
- "aws-cdk": "^2.89.0",
- "eslint": "8.42.0",
- "eslint-config-standard": "^17.0.0",
- "eslint-plugin-import": "2.27.5",
- "eslint-plugin-node": "11.1.0",
- "eslint-plugin-promise": "6.1.1",
+ "@typescript-eslint/eslint-plugin": "6.4.1",
+ "@typescript-eslint/parser": "6.0.0",
+ "aws-cdk": "^2.93.0",
+ "eslint": "8.48.0",
"jest": "29.5.0",
- "ts-jest": "29.1.0",
+ "ts-jest": "29.1.1",
"ts-node": "10.9.1",
"typescript": "4.9.5"
},
"dependencies": {
- "@aws-sdk/client-cloudformation": "^3.353.0",
- "@aws-sdk/client-cloudwatch": "^3.353.0",
- "@aws-sdk/client-fms": "^3.353.0",
- "@aws-sdk/client-pricing": "^3.353.0",
- "@aws-sdk/client-service-quotas": "^3.353.0",
- "@aws-sdk/client-shield": "^3.353.0",
- "@aws-sdk/client-wafv2": "^3.353.0",
+ "@aws-sdk/client-cloudformation": "^3.398.0",
+ "@aws-sdk/client-cloudwatch": "^3.398.0",
+ "@aws-sdk/client-fms": "^3.398.0",
+ "@aws-sdk/client-pricing": "^3.398.0",
+ "@aws-sdk/client-service-quotas": "^3.398.0",
+ "@aws-sdk/client-shield": "^3.398.0",
+ "@aws-sdk/client-wafv2": "^3.398.0",
"@mhlabs/cfn-diagram": "^1.1.29",
+ "@types/aws-lambda": "^8.10.119",
"@types/lodash": "4.14.178",
- "ajv": "8.10.0",
- "aws-cdk-lib": "2.80.0",
+ "aws-cdk-lib": "2.93.0",
+ "aws-lambda": "^1.0.7",
"cfonts": "^3.2.0",
"constructs": "10.2.25",
- "lodash": "4.17.21",
- "process": "0.11.10",
- "shapes": "0.4.0",
- "typescript-json-schema": "0.59.0"
+ "lodash": "4.17.21"
}
}
diff --git a/tags/tags.json b/tags/tags.json
index e4841547..2722d135 100644
--- a/tags/tags.json
+++ b/tags/tags.json
@@ -1,10 +1,6 @@
[
{
- "Key": "gdn:ItContactMail",
- "Value": "david@globaldatanet.com"
- },
- {
- "Key": "gdn:ItContactPhone",
- "Value": "+49800333004995627"
+ "Key": "gdn:App",
+ "Value": "AwsFirewallFactory"
}
]
\ No newline at end of file
diff --git a/values/custom-response-bodies.json b/values/custom-response-bodies.json
deleted file mode 100644
index a85b812c..00000000
--- a/values/custom-response-bodies.json
+++ /dev/null
@@ -1,111 +0,0 @@
-{
- "General": {
- "Prefix": "",
- "Stage": "",
- "S3LoggingBucketName": "",
- "DeployHash": "",
- "FireHoseKeyArn": "",
- "SecuredDomain": []
- },
- "WebAcl": {
- "Name": "test",
- "Scope": "REGIONAL",
- "Description": "",
- "Type": "AWS::ApiGateway::Stage",
- "RemediationEnabled": true,
- "ResourcesCleanUp": true,
- "IncludeMap": {
- "account": [
-
- ]
- },
- "PreProcess": {
- "CustomResponseBodies": {
- "CustomResponseBodyKey": {
- "ContentType": "TEXT_PLAIN",
- "Content": "this is a plain text"
- }
- },
- "CustomRules": [
- {
- "Name": "TestCustomActions",
- "Action": {
- "Block": {
- "CustomResponse": {
- "ResponseCode": 503,
- "CustomResponseBodyKey": "CustomResponseBodyKey",
- "ResponseHeaders": [
- {
- "Name": "TestHeader1",
- "Value": "BlockActionHeader1Value"
- },
- {
- "Name": "TestHeader2",
- "Value": "BlockActionHeader2Value"
- }
- ]
- }
- }
- },
- "VisibilityConfig": {
- "SampledRequestsEnabled": true,
- "CloudWatchMetricsEnabled": true,
- "MetricName": "BlockXssAttackMetric"
- },
- "Statement": {
- "XssMatchStatement": {
- "FieldToMatch": {
- "AllQueryArguments": {}
- },
- "TextTransformations": [
- {
- "Priority": 1,
- "Type": "NONE"
- }
- ]
- }
- }
- }
- ]
- },
- "PostProcess": {
- "CustomResponseBodies": {
- "AnotherCustomResponseKey": {
- "ContentType": "APPLICATION_JSON",
- "Content": "{\"jsonfieldname\": \"jsonfieldvalue\"}"
- }
- },
- "CustomRules": [
- {
- "Name": "TestCustomActions2",
- "Action": {
- "Block": {
- "CustomResponse": {
- "ResponseCode": 503,
- "CustomResponseBodyKey": "AnotherCustomResponseKey"
- }
- }
- },
- "VisibilityConfig": {
- "SampledRequestsEnabled": true,
- "CloudWatchMetricsEnabled": true,
- "MetricName": "BlockXssAttackMetric"
- },
- "Statement": {
- "XssMatchStatement": {
- "FieldToMatch": {
- "AllQueryArguments": {}
- },
- "TextTransformations": [
- {
- "Priority": 1,
- "Type": "NONE"
- }
- ]
- }
- }
- }
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/values/examples/index.ts b/values/examples/index.ts
new file mode 100644
index 00000000..63cfd2c6
--- /dev/null
+++ b/values/examples/index.ts
@@ -0,0 +1,3 @@
+export { config as owasptopTen } from "./owasptop10";
+export { prequisites as prequisites } from "./prequisites";
+export { config as ipSetsManagedTest } from "./ip-sets-managed-test";
\ No newline at end of file
diff --git a/values/examples/ip-sets-managed-test.ts b/values/examples/ip-sets-managed-test.ts
new file mode 100644
index 00000000..6edc74f6
--- /dev/null
+++ b/values/examples/ip-sets-managed-test.ts
@@ -0,0 +1,70 @@
+import { Config } from "../../lib/types/config";
+export const config: Config = {
+ General: {
+ Prefix: "aws-firewall-factory",
+ Stage: "dev",
+ SecuredDomain: [
+ "",
+ ],
+ LoggingConfiguration: "Firehose",
+ FireHoseKeyArn: "",
+ S3LoggingBucketName: "",
+ CreateDashboard: true,
+ },
+ WebAcl: {
+ Name: "ip-sets-managed-test",
+ Scope: "REGIONAL",
+ Type: "AWS::ApiGateway::Stage",
+ IncludeMap: {
+ account: [
+ "",
+ ],
+ },
+ IPSets: [
+ {
+ name: "IPsString",
+ addresses: [
+ "192.168.178.1/32",
+ ],
+ ipAddressVersion: "IPV4",
+ },
+ ],
+ PreProcess: {
+ CustomRules: [
+ {
+ name: "ip-allow",
+ statement: {
+ ipSetReferenceStatement: {
+ arn: "IPsString",
+ },
+ },
+ action: {
+ allow: {},
+ },
+ visibilityConfig: {
+ sampledRequestsEnabled: true,
+ cloudWatchMetricsEnabled: true,
+ metricName: "ip-allow",
+ },
+ priority: 100,
+ },
+ ],
+ },
+ PostProcess: {
+ ManagedRuleGroups: [
+ {
+ vendor: "AWS",
+ name: "AWSManagedRulesAmazonIpReputationList",
+ capacity: 25,
+ version: "",
+ },
+ {
+ vendor: "AWS",
+ name: "AWSManagedRulesCommonRuleSet",
+ capacity: 700,
+ version: "Version_1.6",
+ }
+ ]
+ }
+ }
+};
\ No newline at end of file
diff --git a/values/examples/owasptop10.ts b/values/examples/owasptop10.ts
new file mode 100644
index 00000000..0aebf717
--- /dev/null
+++ b/values/examples/owasptop10.ts
@@ -0,0 +1,64 @@
+import { Config } from "../../lib/types/config";
+export const config: Config = {
+ General: {
+ DeployHash: "",
+ FireHoseKeyArn: "",
+ Prefix: "aws-firewall-factory",
+ Stage: "dev",
+ S3LoggingBucketName: "myBucketName",
+ SecuredDomain: ["yourapp.."],
+ CreateDashboard: true,
+ LoggingConfiguration: "Firehose",
+ },
+ WebAcl: {
+ IncludeMap: {
+ account: ["123456789123"]
+ },
+ Name: "owasptopTen",
+ PreProcess: {
+ ManagedRuleGroups: [
+ {
+ vendor: "AWS",
+ name: "AWSManagedRulesAmazonIpReputationList",
+ version: "",
+ capacity: 25
+ },
+ {
+ vendor: "AWS",
+ name: "AWSManagedRulesAnonymousIpList",
+ version: "",
+ capacity: 50
+ },
+ {
+ vendor: "AWS",
+ name: "AWSManagedRulesBotControlRuleSet",
+ version: "",
+ capacity: 50
+ },
+ {
+ vendor: "AWS",
+ name: "AWSManagedRulesCommonRuleSet",
+ version: "",
+ capacity: 700
+ },
+ {
+ vendor: "AWS",
+ name: "AWSManagedRulesKnownBadInputsRuleSet",
+ version: "",
+ capacity: 200
+ },
+ {
+ vendor: "AWS",
+ name: "AWSManagedRulesSQLiRuleSet",
+ version: "",
+ capacity: 200
+ }
+ ]
+ },
+ PostProcess: {
+ },
+ Scope: "REGIONAL",
+ Type: "AWS::ElasticLoadBalancingV2::LoadBalancer"
+ }
+
+};
\ No newline at end of file
diff --git a/values/examples/prequisites.ts b/values/examples/prequisites.ts
new file mode 100644
index 00000000..6eb9c247
--- /dev/null
+++ b/values/examples/prequisites.ts
@@ -0,0 +1,20 @@
+import { Prerequisites } from "../../lib/types/config";
+export const prequisites: Prerequisites = {
+ General: {
+ Prefix: "aws-firewall-factory",
+ },
+ Logging: {
+ BucketProperties: {
+ BucketName: "aws-firewall-factory-logs",
+ KmsEncryptionKey: true,
+ ObjectLock: {
+ Days: 5,
+ Mode: "GOVERNANCE"
+ }
+ },
+ FireHoseKey: {
+ KeyAlias: "aws-firewall-factory-firehosekey"
+ },
+ CrossAccountIdforPermissions: "123456789012",
+ }
+};
\ No newline at end of file
diff --git a/values/index.ts b/values/index.ts
new file mode 100644
index 00000000..c228b84a
--- /dev/null
+++ b/values/index.ts
@@ -0,0 +1,12 @@
+import {Config, Prerequisites} from "../lib/types/config";
+
+import { owasptopTen, prequisites, ipSetsManagedTest} from "./examples";
+
+export const configs : { [key: string]: Config } = {
+ owasptopTen,
+ ipSetsManagedTest,
+};
+
+export const prereq : { [key: string]: Prerequisites } = {
+ prequisites,
+};
\ No newline at end of file
diff --git a/values/ip-sets-managed.json b/values/ip-sets-managed.json
deleted file mode 100644
index 3ceb04de..00000000
--- a/values/ip-sets-managed.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "General": {
- "Prefix": "gdn",
- "Stage": "dev",
- "DeployHash": "",
- "SecuredDomain": [
- ""
- ],
- "LoggingConfiguration": "S3",
- "S3LoggingBucketName": "",
- "CreateDashboard": true
- },
- "WebAcl": {
- "Name": "firewall-factory-demo",
- "Scope": "REGIONAL",
- "Type": "AWS::ApiGateway::Stage",
- "IncludeMap": {
- "account": [
- ""
- ]
- },
- "IPSets": [
- {
- "Name": "IPsString",
- "Addresses": [
- "192.168.178.1/32"
- ],
- "IPAddressVersion": "IPV4"
- }
- ],
- "PreProcess": {
- "CustomRules": [
- {
- "Name": "ip-allow",
- "Statement": {
- "IPSetReferenceStatement": {
- "ARN": "IPsString"
- }
- },
- "Action": {
- "Allow": {}
- },
- "VisibilityConfig": {
- "SampledRequestsEnabled": true,
- "CloudWatchMetricsEnabled": true
- }
- }
- ]
- },
- "PostProcess": {
- "ManagedRuleGroups": [
- {
- "Vendor": "AWS",
- "Name": "AWSManagedRulesAmazonIpReputationList",
- "Capacity": 25,
- "Version": ""
- },
- {
- "Vendor": "AWS",
- "Name": "AWSManagedRulesCommonRuleSet",
- "Capacity": 700,
- "Version": "Version_1.6"
- }
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/values/many-resource-types.json b/values/many-resource-types.json
deleted file mode 100644
index bb9b0baa..00000000
--- a/values/many-resource-types.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "General": {
- "Prefix": "",
- "Stage": "",
- "FireHoseKeyArn": "",
- "DeployHash": "",
- "SecuredDomain": [
- ""
- ],
- "S3LoggingBucketName": "",
- "CreateDashboard": true,
- "LoggingConfiguration": "Firehose"
- },
- "WebAcl": {
- "Name": "test",
- "Scope": "REGIONAL",
- "Type": "ResourceTypeList",
- "TypeList": [
- "AWS::ElasticLoadBalancingV2::LoadBalancer",
- "AWS::ApiGateway::Stage"
- ],
- "RemediationEnabled": true,
- "IncludeMap": {
- "account": [
- ""
- ]
- },
- "PreProcess": {
- "ManagedRuleGroups": [
- {
- "Vendor": "AWS",
- "Name": "AWSManagedRulesAnonymousIpList",
- "Version": "",
- "Capacity": 50
- }
- ]
- },
- "PostProcess": {}
- }
-}
\ No newline at end of file
diff --git a/values/migrate.ts b/values/migrate.ts
new file mode 100644
index 00000000..1b8745c8
--- /dev/null
+++ b/values/migrate.ts
@@ -0,0 +1,169 @@
+/* eslint-disable @typescript-eslint/no-unsafe-argument */
+/* eslint-disable @typescript-eslint/no-unsafe-call */
+/* eslint-disable @typescript-eslint/no-unsafe-member-access */
+/* eslint-disable @typescript-eslint/no-floating-promises */
+/* eslint-disable @typescript-eslint/restrict-plus-operands */
+/* eslint-disable @typescript-eslint/no-unsafe-assignment */
+/* eslint-disable @typescript-eslint/no-unsafe-return */
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import util from "util";
+import fs from "fs";
+import path from "path";
+import { Config } from "../lib/types/config";
+
+interface OldConfig {
+ General: any,
+ WebAcl: {
+ Name: string,
+ Scope: string,
+ Type: string,
+ IncludeMap: {
+ account: string[],
+ },
+ PreProcess: {
+ ManagedRuleGroups: any[],
+ CustomRules: any[],
+ },
+ PostProcess: {
+ ManagedRuleGroups: any[],
+ CustomRules: any[]
+ }
+ }
+}
+
+async function findFile(inputFileName: string, currentPath = "."): Promise {
+ const files = await fs.promises.readdir(currentPath);
+ for (const file of files) {
+ const filePath = path.join(currentPath, file);
+ const stats = await fs.promises.stat(filePath);
+
+ if (stats.isDirectory()) {
+ const foundPath = await findFile(inputFileName, filePath);
+ if (foundPath !== null) {
+ return foundPath;
+ }
+ } else if (file === inputFileName) {
+ return filePath;
+ }
+ }
+ return null;
+}
+
+/**
+ * Function to transform property names into camel case like AWS needs it
+ * @param o object which property names has to be transformed to camel case
+ * @returns the object with the transformed property names in camel case
+ */
+// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
+function toAwsCamel(o: any): any {
+ let newO: any, origKey: any, newKey: any, value: any;
+ if (o instanceof Array) {
+ return o.map(function(value) {
+ if (typeof value === "object") {
+ value = toAwsCamel(value);
+ }
+ if(value === "aRN"){
+ value = "arn";
+ }
+ if(value === "iPSetReferenceStatement"){
+ value = "ipSetReferenceStatement";
+ }
+ return value;
+ });
+ } else {
+ newO = {};
+ for (origKey in o) {
+ if (Object.prototype.hasOwnProperty.call(o, origKey)) {
+ newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString();
+ if(newKey === "aRN"){
+ newKey = "arn";
+ }
+ if(newKey === "iPSetReferenceStatement"){
+ newKey = "ipSetReferenceStatement";
+ }
+ value = o[origKey];
+ if (value instanceof Array || (value !== null && value.constructor === Object)) {
+ value = toAwsCamel(value);
+ if(value === "aRN"){
+ value = "arn";
+ }
+ }
+ newO[newKey] = value;
+ }
+ }
+ }
+ return newO;
+}
+
+
+findFile(process.argv[2], ".").then((filePath) => {
+ if (filePath) {
+ const filePathWithoutExtension = filePath.substring(0, filePath.lastIndexOf("."));
+ const requirePath = "./" + filePathWithoutExtension.substring(filePathWithoutExtension.indexOf("/"));
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
+ const valuesFile = require(requirePath);
+ console.log(`π Migrate Config: ${filePathWithoutExtension} to AWS Firewall Factory 4.0 schema...`);
+ const oldConfig: OldConfig = valuesFile ;
+
+ const newConfig = {
+ General: oldConfig.General,
+ WebAcl: {
+ Name: oldConfig.WebAcl.Name,
+ Scope: oldConfig.WebAcl.Scope,
+ Type: oldConfig.WebAcl.Type,
+ IncludeMap: oldConfig.WebAcl.IncludeMap,
+ PreProcess: {
+ ManagedRuleGroups: oldConfig.WebAcl.PreProcess.ManagedRuleGroups ? toAwsCamel(oldConfig.WebAcl.PreProcess.ManagedRuleGroups) : undefined,
+ CustomRules: oldConfig.WebAcl.PreProcess.CustomRules ? toAwsCamel(oldConfig.WebAcl.PreProcess.CustomRules) : undefined
+ },
+ PostProcess: {
+ ManagedRuleGroups: oldConfig.WebAcl.PostProcess.ManagedRuleGroups ? toAwsCamel(oldConfig.WebAcl.PostProcess.ManagedRuleGroups) : undefined,
+ CustomRules: oldConfig.WebAcl.PostProcess.CustomRules ? toAwsCamel(oldConfig.WebAcl.PostProcess.CustomRules) : undefined
+ }
+ }
+ } as Config;
+
+ let priority = 100;
+
+ if (newConfig.WebAcl.PreProcess.CustomRules) {
+ for (let i=0; i