From 2435a8666470b4fd886d86869b70485c69a7d3b9 Mon Sep 17 00:00:00 2001 From: daknhh Date: Mon, 23 Oct 2023 17:29:36 +0200 Subject: [PATCH 01/15] auto documentation --- lib/types/config.ts | 85 +++++++++++++- lib/types/fms.ts | 10 +- package-lock.json | 112 ++++++++++++++++++- package.json | 1 + static/icon/aws_firewall_factory_favicon.ico | Bin 0 -> 15406 bytes typedoc.json | 13 +++ 6 files changed, 207 insertions(+), 14 deletions(-) create mode 100644 static/icon/aws_firewall_factory_favicon.ico create mode 100644 typedoc.json diff --git a/lib/types/config.ts b/lib/types/config.ts index bd74923b..97e522dc 100644 --- a/lib/types/config.ts +++ b/lib/types/config.ts @@ -4,50 +4,95 @@ import { aws_fms as fms } from "aws-cdk-lib"; import { CfnTag } from "aws-cdk-lib"; import * as fwmEnums from "./enums"; +/** + * Settings for the AWS WAF policy (type WAFV2) that specifies rule groups to run first in the corresponding AWS WAF Web ACL and rule groups to run last in the Web ACL. + */ export interface Config { readonly General: { readonly Prefix: string, readonly Stage: string, + /** + * Defines the selected logging option for the WAF. + */ readonly LoggingConfiguration: "S3" | "Firehose" readonly FireHoseKeyArn?: string, readonly S3LoggingBucketName: string, readonly DeployHash?: string, + /** + * Defines the domain(s) that can be checked to audit your WAF. + */ readonly SecuredDomain: Array, + /** + * Defines whether to set up a dashboard for your firewall in the central security account. To use this feature, cross-account functionality must be enabled in CloudWatch. + */ readonly CreateDashboard?: boolean, }, readonly WebAcl:{ readonly Name: string, - - /** - * @TJS-pattern ^([\p{L}\p{Z}\p{N}_.:\/=+\-@]*)$ - */ readonly Description?: string, readonly IncludeMap: fms.CfnPolicy.IEMapProperty, readonly ExcludeMap?: fms.CfnPolicy.IEMapProperty, readonly Scope: fwmEnums.WebAclScope | "CLOUDFRONT" | "REGIONAL", + /** + * The type of resource protected by or in scope of the policy. To apply this policy to multiple resource types, specify a resource type of ResourceTypeList and then specify the resource types in a ResourceTypeList. + */ readonly Type: fwmEnums.WebAclTypeEnum | "ResourceTypeList" | WebAclType, readonly TypeList?: fwmEnums.WebAclTypeEnum[] | WebAclType[], + /** + * An array of ResourceTag objects, used to explicitly include resources in the policy scope or explicitly exclude them. If this isn't set, then tags aren't used to modify policy scope. See also ExcludeResourceTags. + */ readonly ResourceTags?: Array, + /** + * Used only when tags are specified in the ResourceTags property. If this property is True, resources with the specified tags are not in scope of the policy. If it's False, only resources with the specified tags are in scope of the policy. + */ readonly ExcludeResourceTags?: boolean, + /** + * Indicates if the policy should be automatically applied to new resources. + */ readonly RemediationEnabled?: boolean, + /** + * Indicates whether AWS Firewall Manager should automatically remove protections from resources that leave the policy scope and clean up resources that Firewall Manager is managing for accounts when those accounts leave policy scope. For example, Firewall Manager will disassociate a Firewall Manager managed web ACL from a protected customer resource when the customer resource leaves policy scope. + */ readonly ResourcesCleanUp?: boolean, + /** + * Contains one or more IP addresses or blocks of IP addresses specified in Classless Inter-Domain Routing (CIDR) notation. AWS WAF supports IPv4 address ranges: /8 and any range between /16 through /32. AWS WAF supports IPv6 address ranges: /24, /32, /48, /56, /64, and /128. + */ readonly IPSets?: IPSet[], + /** + * The RegexPatternSet specifies the regular expression (regex) pattern that you want AWS WAF to search for, such as B[a@]dB[o0]t. You can then configure AWS WAF to reject those requests. + */ readonly RegexPatternSets?: RegexPatternSet[]; + /** + * Defines a Set of Custom Rules and AWS ManagedRulesGroups. + */ readonly PreProcess: RuleGroupSet, + /** + * Defines a Set of Custom Rules and AWS ManagedRulesGroups. + */ readonly PostProcess: RuleGroupSet, }, } +/** + * The type of resource protected by or in scope of the policy. To apply this policy to multiple resource types, specify a resource type of ResourceTypeList and then specify the resource types in a ResourceTypeList. + */ export type WebAclType= "AWS::ElasticLoadBalancingV2::LoadBalancer" | "AWS::CloudFront::Distribution" | "AWS::ApiGatewayV2::Api" | "AWS::ApiGateway::Stage" // | "AWS::Cognito::UserPool" | "AWS::AppSync::GraphQLApi" - waiting for support if you need a GraphQLApi Firewall just use an ApiGateway:Stage Firewall export interface Prerequisites { readonly General: { readonly Prefix: string, }, + /** + * Will add a Lambda function to the prerequisite stack that sends notifications when new versions and updates to a AWS ManagedRuleGroup appear in messengers (Slack/Teams). + */ readonly Information?:{ SlackWebhook?: string, TeamsWebhook?: string, } + /** + * Will add a Lambda function to prerequisite Stack that send notifications about potential DDoS activity for protected resources to messengers (Slack/Teams) + * This feature, coupled with [AWS Shield Advanced](https://aws.amazon.com/shield/). + */ readonly DdosNotifications?:{ SlackWebhook?: string, TeamsWebhook?: string, @@ -56,6 +101,9 @@ export interface Prerequisites { readonly BucketProperties?: { readonly BucketName?: string, readonly KmsEncryptionKey: boolean, + /** + * Will add Object Lock (write-once-read-many (WORM)) to the S3 Bucket (Object Lock can help prevent objects from being deleted or overwritten for a fixed amount of time or indefinitely.) + */ readonly ObjectLock?: { readonly Days: number, readonly Mode: "GOVERNANCE" | "COMPLIANCE" @@ -68,15 +116,24 @@ export interface Prerequisites { readonly CrossAccountIdforPermissions?: string, } } - +/** + * S3 Object Lock provides two retention modes: + - Governance mode + - Compliance mode + */ export enum ObjectLockMode { GOVERNANCE = "GOVERNANCE", COMPLIANCE = "COMPLIANCE" } - +/** + * Represents all AWS Regions + */ export type RegionString = "us-west-2" | "us-west-1" | "us-east-2" | "us-east-1" | "ap-south-1"| "ap-northeast-2" | "ap-northeast-1" | "ap-southeast-1" | "ap-southeast-2" | "ca-central-1" | "cn-north-1" | "eu-central-1" | "eu-west-1" | "eu-west-2" | "eu-west-3" | "sa-east-1" | "us-gov-west-1" | "ap-east-1" | "ap-southeast-3" | "ap-northeast-3" | "eu-south-1" | "eu-north-1" | "me-south-1"; +/** + * Represents Region Codes for all AWS Regions + */ export enum PriceRegions{ "us-west-2"= "US West (Oregon)", "us-west-1"= "US West (N. California)", @@ -103,6 +160,9 @@ export enum PriceRegions{ "me-south-1" = "Middle East (Bahrain)" } +/** + * A custom response to send to the client. You can define a custom response for rule actions and default web ACL actions that are set to the block action. +*/ export type CustomResponseBodies = { [key:string]: { /** * @TJS-pattern [\s\S]* @@ -111,6 +171,9 @@ export type CustomResponseBodies = { [key:string]: { ContentType: fwmEnums.CustomResponseBodiesContentType, }}; +/** + * Defines a Set of Custom Rules and AWS ManagedRulesGroups. + */ export interface RuleGroupSet { CustomResponseBodies?: CustomResponseBodies, CustomRules?: Rule[], @@ -127,6 +190,9 @@ interface IPAddressWithDescription { ip: IPAddress } +/** + * Contains one or more IP addresses or blocks of IP addresses specified in Classless Inter-Domain Routing (CIDR) notation. AWS WAF supports IPv4 address ranges: /8 and any range between /16 through /32. AWS WAF supports IPv6 address ranges: /24, /32, /48, /56, /64, and /128. + */ export interface IPSet { /** * @TJS-pattern ^[a-zA-Z0-9]+$ @@ -141,6 +207,9 @@ export interface IPSet { tags?: CfnTag[] } +/** + * The RegexPatternSet specifies the regular expression (regex) pattern that you want AWS WAF to search for, such as B[a@]dB[o0]t. You can then configure AWS WAF to reject those requests. +*/ export interface RegexPatternSet { /** * @TJS-pattern ^[a-zA-Z0-9]+$ @@ -153,4 +222,8 @@ export interface RegexPatternSet { regularExpressionList: string[], tags?: CfnTag[] } + +/** + * Represents all AWS ManagedRuleGroups which are not versioned + */ 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 62ddf833..bedb802a 100644 --- a/lib/types/fms.ts +++ b/lib/types/fms.ts @@ -4,7 +4,7 @@ import { aws_wafv2 as waf } from "aws-cdk-lib"; import * as fwmEnums from "./enums"; -interface CustomRequestHandling { +export interface CustomRequestHandling { customRequestHandling?: { insertHeaders: { /** @@ -19,7 +19,7 @@ interface CustomRequestHandling { } } -interface CustomResponse { +export interface CustomResponse { customResponse?: { responseCode: number, @@ -40,7 +40,7 @@ interface CustomResponse { } } -interface Action { +export interface Action { block?: CustomResponse, allow?: CustomRequestHandling, count?: CustomRequestHandling, @@ -48,7 +48,7 @@ interface Action { challenge?: CustomRequestHandling } -interface RuleActionOverrideProperty { +export interface RuleActionOverrideProperty { name: string, actionToUse: Action } @@ -113,7 +113,7 @@ export interface ServiceDataRuleGroup extends ServiceDataAbstactRuleGroup { ruleGroupType: "RuleGroup" } -interface ServiceDataAbstactRuleGroup { +export interface ServiceDataAbstactRuleGroup { overrideAction: { type: "ALLOW" | "DENY" | "NONE" | "COUNT" }, diff --git a/package-lock.json b/package-lock.json index db4b4654..b22d663f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "constructs": "10.2.25", "lodash": "4.17.21", "table": "^6.8.1", + "typedoc-plugin-extras": "^3.0.0", "uuid": "^9.0.1" }, "bin": { @@ -3990,6 +3991,12 @@ "node": ">=8" } }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", + "peer": true + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -4590,8 +4597,7 @@ "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==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", @@ -7126,6 +7132,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "peer": true + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -7226,6 +7238,12 @@ "yallist": "^3.0.2" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "peer": true + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -7256,6 +7274,18 @@ "tmpl": "1.0.5" } }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "peer": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -8042,6 +8072,18 @@ "node": ">=8" } }, + "node_modules/shiki": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz", + "integrity": "sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==", + "peer": true, + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -8502,11 +8544,63 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typedoc": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.2.tgz", + "integrity": "sha512-286F7BeATBiWe/qC4PCOCKlSTwfnsLbC/4cZ68oGBbvAqb9vV33quEOXx7q176OXotD+JdEerdQ1OZGJ818lnA==", + "peer": true, + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.3.0", + "minimatch": "^9.0.3", + "shiki": "^0.14.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x" + } + }, + "node_modules/typedoc-plugin-extras": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-extras/-/typedoc-plugin-extras-3.0.0.tgz", + "integrity": "sha512-eiAe3qtm2WbV5owdncpt0zHZPqsNZH2mzNGILPd4zqrvEZie3Et9es4cpGZ+8lHO/SI0pVKwsAj7IuMxPNOdYg==", + "peerDependencies": { + "typedoc": "0.25.x" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -8628,6 +8722,18 @@ "node": ">=10.12.0" } }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "peer": true + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "peer": true + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", diff --git a/package.json b/package.json index 6ee28069..6b119075 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "constructs": "10.2.25", "lodash": "4.17.21", "table": "^6.8.1", + "typedoc-plugin-extras": "^3.0.0", "uuid": "^9.0.1" } } diff --git a/static/icon/aws_firewall_factory_favicon.ico b/static/icon/aws_firewall_factory_favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bc8e06abcffad70985ccb3882b59e5639d3de5fe GIT binary patch literal 15406 zcmeG@33!y%wb}Q5-B1^)afGlOH6h!11e9BXC!3t;*D^)}>t%|Q&x7KRim-1`{ zTWf7al+34VzWF@!fO!5!^OeTR)`o8zQuk(F>?*0FJ?>Xn5d+s^s zo_pfw=kFKj7Z>LTrOfZXAV0qaetv#3*~oiQyr18@@U5g|w0)|dpFY{ouL%0U5EwD? z9g55P5kma2BbI75_IVwXe5d$+DF8-iW|o2u*21{$@NBEH`3=i$fv2^6+y*5b_MwuB zcvpn)3szlkkqpPcLwr37Dx}rdcmq3Sj*5=@jhc@9qmGMtN=^kG_a3ieBL1qTBHz`} zF|VrVh&L>qb0b6=lyvxSt0@0LEuVfZerqBtQ{}b*rw9Yu<$6*Uj%@(vDg3UXldi{i z{MGeMFH}$w@4H?`|L8f{bt)#Dl2c(S9i2TxY-=Z5!<4r0DsdiqA#ItOi8!obQ&x$6 zur%-)i-Cqdxi$Ple9wK%o+_(ka7q1?ROAaPCh94(Gd~;V@&VFQE0n^jkE~mL|BOxW zU0-DjpyZwDbMbrf{Ffh1nE&!NtgCF1cib*H}e_gNQ;sRe-YosUp3H$>#eb6KCPsq52%@_ zPZieq^@m7BpxhSRBBuhagd7U7kb8qwOyt`NI`m5up9Io>@uy=-rx@s>>kWL`9eOV3 zcFp;e*-BgNb|n?|k&=$xbFnAv87^%>l`ZIGbze@N^t-gKuqAGkQz2&wse~Qp`BPD` zcjG)%Y6d!Y-~#G&fREA$*ay5E?jWd!)8WWxXC zf<;HEU|wxl$Nf|*6eR1JDW%?Hz27xV+>I(a?BhD7Bu>l3t$@Avfk8-|?%nTdyrZ6x z!LuA5)K6FYca~J-)(^~EaB|@K`GovB^lHPG!h`j4$*TAb-h-5MWGnI?pK3?(TCojF zLM*}1$E7c&-zQrK7=hJ}+zl!&L~rTO-#7xB_&3`t(&V6*MEoiyt`hrVdm~vF4|++X zWfPujAve1A?qu7u*TKJUwm{L%IPN)wUxEzp; zwosglky!cEIpTZE7~fMiN-3M{{_%t|1?-FdwM@@Y{$QNN^sb-U0{)X5WX!#828zYm|{4B6{LFcg_*bw$a-)bMaSP`UR zLeGe>yh{^XTp`7cb;JdF|05S%n4g+SdIG-r)C~>2^H+kuaY4%@?e~Twz8i$>`?Or# z@6~KLuVKR-ARj!~L5-eEe!rP4j}rSy%evm{WUvl`ii-LeaF4N3Vqe(bo4|$&$GM6G z@td!bCm$s#nP4mUJl|H?LcW#v#QX%{jw|OlUkw%aw$#6o!iDw_LcWewGYOw)=vbt2 zTv#}+-M%#qY}YyD=`m}7L)%rnSqjfr-N4LP4ze?Fnp70vegGUUeR-PPmI5;It&$3I zpls{d^liSzi{HRciv!uzN!R}Cj)LW4d+xs8Dfv(Ei*xr0OZ_S@&V!JnktkPkDqyh6 z8rZF4vLC`RHO^U!q_E6x~0*<~9z_{29n_FYwL@{^uiA*08E}rqbp2UhGf& zWsf^HM&|9iC8p$0^JSI7@{4WgUq*b2eirzQhpXA?tEFunpyzP!)!EBSq~Eb#=bTaA zFgRTBHk#qd3W9<8hp|Trsy;PmE*EEv~w>|)z zp$aOzTSKMYiL{76`0kJNRND(~1NjtGOw7w-o3!jCl@WSJ^m?N`{aGay?7+2B(J^0g zTI&D((xvK_EZ=%tguG@p@qNbmmq$lkd0?2m+n_kq3!KN5hfig zt>fH4|GkR%!8Q-ed*VLn$KV6D?VEG_ z0XOf!ZlH~D?*Sc~c9V3hcO89kEgSn5%->KW%zCn_JGK#c*Dt37`{B&d;euriJ_+X# zmyT)ZemD~JMt&gN?;H*mGGcJo&7at-`7i{CX|^aodp<5J_!k-do)$MkguKJgBim)l3vb6E?teDWQQ{PLo!HQ!6o z^8ckB<0R;CY=!4v5hnq#-+b8pv(9r`<9??!f;84Jc>T!t|Y5 zF8(u!f&CrMKVO)I{Ks3Z8z!_Z|C^)(jX|(KBYg1`zJ)@3pkAswz%OlRcFxW5rV;vr zo$W+8S4Ee2!}oqid<{Z*ipiOA3&a2vE&Z!DVSH8W2krhCs{nmum(s7GLs%VCT!QWR zV1FEE67qilda=sD%C@&K8)c$jB*MFzCB}WteD3ucCgM{C9l%ymeitAfa@^v~S%N;( zX>vn$b#K9PqmcFsDeYL7gU!=2$uD6%ud#1s9>$St`xh2NTw4q6!*D+6S2AG=y*>3- z^Z~CX-6E{!o*hv-d&K8}Pa5YKQgb0Xoe=+#iVZ#iXUOwFtNR|pV;)pMKlq|HJWuI` zxI+-9R09v(_7QzRg)RKlL_W4i%axQUJ9;7cB^SR&{1>;)^q}*fXwx!@pCFzqq3=>- zP;O1a%nG2@&9kdT_Xr&SVKXxW<0bzRJ&Sv*rnh(ttaJa>rF-;z1U|8u%Ln>L&Ni3g z=XmWn|MTRd)LQ$Ev(J!pOp7fwWNUOxy&y}nP#yoUf%0UyK^)oov{#nN)z5;hm=irPW zXxXf14SdcWY9{(Ez1K6l4VC*r-4%lZ+})Gf*+)CJ%Rr(^;!-kBv;MNz76;qeA2l)vxihh)jAf#y>B3m=R&}VKJCcb zS_ArYbnbsa-wF4&o-0lOKmX6(v1s6x9r&~d)-yyp_hwQY(n5YvUfVzI3BYxk``UlF zTF85;v2WhmS=ksp_`fVfpyBIrwyTapj-0H%KfNCdDV#O}(I>=#Vq84(%B4QP4qy;0FyVm;lgM z0Z#CNI^cfn8^|}PY$FAiyqAQy7~W~1e#5x`+k`Ykint~!asKsv3)g^d8-hFiqqU9= zW8$X1#-omHBRA)_4QySc;le338)4UQkqr1qJjTW9?F-j@L++Y}F&tmxy}xyWe+zfq zuowLYjBLS#aWm;yv>#e7<~`tjpPtRwGg*5A`Zrg}22wgct{&n9&5)O1`MNu#N#8wl z=0q|mr9rG)=mqOg2GmsCVHoT7bH#SCM7T&N%JG@Lt%Z2M33|A*)>&RQS)Avb4`jjJ zJIJofwt-FaANZ;(N>yXKdD8dsExj9MDk|KF_iNvihq57N2Ir1SjLo_AD88GyYv!A| z!d+$|=jU1`{vhDCW4r`p;R89jxcLF7mqo=6zmm}^Y%IB z6+GUTk9Pzj9I>>J>m!s@!dn1qSVJd#tYMNWmFE+8nCLm{#W`RfEt~in%&`~n;+?F^ zX6V?A*CxYzjK%7>v?l?EAf+Aa$IeF{F`nO$D$<2z(Oy0=?=f!Ol*g>;vVG1)BX=5} za~P53)ZMs`VL#$I0q%JGoe<|W;9V}l!Mk`h6Ni4ihyPORm~o#tN9^b8hx5a8K^xhW zW#Xpp23zfM?sC!I6JS%Fm;Kmc@jRF0Ji=~{E%;4EL{eo&SnR{wGPj*spYtdS*8` z(%Tn;J3Ly^o%3L;^_OGL?o)Pszayz|_y0s?Kk|5V=AGu`Ri8YHIZxi0RMeF6Dr>-~ zKQqc>YhZ_}qiiPjHB=Z%2Ki}@8S}8sn{M&l zY|s5^L;tM3kSnMVd2_5Q;)srtJqa=GcN^L59)4dn@GM>wm0X1Nl1U%XwUqW zK}a=#-D`*S7=p9g*N{(zF{?4_jJPll1n$H(V~&}@wq&9FT;9q`ubdu?Ice#{XF%@{ zscZ=^caV$s@dyKd03TywF5ki8xaJ-u9SZnyuLQQ4oinmWdinl~W828W7^5>htJ*nj zv5JkT2HHo@!~R2%|Do^he|v_nIkdNL4Xf=de89x#|59mB z{sJAUvL!##N`4lNc%>9|kpszkKI0wqImNw*y4=X+|0ntv(!S%>kwyzwxK2q2e~uZJ}}gE|0mUQej#M7g{(`vn7+ z{=p7xE_a8>S_*siE?Jae8!CML{>=fMjc7r^ehkNvHg)Q#un86YKzI=8MY3e$o>8rsp$%2lxDSaPIm$_(Z=4d|;CUojNWR_QB-h zV(70Kd*&`teYbFpv1iqi#=-Kk#@-dnntE3)Zy8*@>_qRHrEP<^l-1a0Zq?8kJ6ia? zuDk`@Z$_rz2Dvq`2Or2qIEZ^#MMu`Dspxkh&(59S;7LF6Z*^2=G=a`B@kNQ~SD5UX zw}UNUAqVPI4fq?<^_7ktua5nZp7F+E8|=MMTraUtEmJ;4X~SG}zYBUgZ*Lp5HU{&? zAs1rmX{YN9b6NTXY3d<|qBLyuI{<4K?B9{5zH-d5cFX8^bYIDLgnQC?Unb;zqR40Ix%ZQXo#^9t^kv~1Gr9ppuK4&p?xeYKtAcP0X! zUr7B5B@^0K+c$SR+|wO~`v8nh+aW%67Vb#@0=jVb@qwkKUF6rvKr7~lWb}}psBZG- zlvAXl#3Iby4zcpX7|#M(ffzIV4-Xq#1-Wy#LhdH!N{GJGppMOc?Hlq~D!{mGedB8m z7!v}Y7-ECLXFvyieyabT=>QY;U2uKhob~X(8}9rslr6Nc;6FGZ&*~iT?^`t+^BwpH zb}0`=cpSi4grWy}$Zw+nR%k=-nq0^y{)5~a)TOp%9_S+PA`d29Pha%<`UZO}q~0;R z6#wT3V7lXA_0HLuko!~PUh`48MZN+*JHYmQ1GeWh__7{*2>XLw?5cB?ESBQK_-r*> zvbve Date: Tue, 24 Oct 2023 10:00:25 +0200 Subject: [PATCH 02/15] add docs workflow --- .github/workflows/docs.yml | 41 ++++++++++++++++++++++++++++++++++++++ lib/types/config.ts | 2 +- typedoc.json | 7 ++++++- 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/docs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..cb51f9fd --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,41 @@ +name: Documentation + +env: + AWS_REGION: eu-central-1 + AWS_ROLE: FirewallFactoryGithubPipelineRole + AWS_ACCOUNT: 376263449237 + DISTRIBUTION_ID: E2T722RW2UKIMQ + S3_BUCKET: docs.aws-firewall-factory.com + permissions: + id-token: write + contents: read +on: + push: + branches: + - master + +jobs: + deploy_production_main: + name: Update Documentation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: ๐Ÿ”‘ Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1.7.0 + env: + ACCOUNT_ID: ${{ env.AWS_ACCOUNT }} + with: + role-to-assume: arn:aws:iam::${{ env.ACCOUNT_ID }}:role/${{ env.AWS_ROLE }} + aws-region: ${{ env.AWS_REGION }} + role-session-name: GitHubActionsSession + mask-aws-account-id: false + - name: ๐Ÿ“ฆ Install dependencies + run: | + npm install + - name: ๐Ÿ“„ Generate Documentation + run: | + npx typedoc --options typedoc.json + - name: ๐Ÿš€ Upload Documentation + run: | + aws s3 sync ./docs s3://${{env.S3_BUCKET}} --delete + aws cloudfront create-invalidation --distribution-id ${{env.DISTRIBUTION_ID}} --paths /* \ No newline at end of file diff --git a/lib/types/config.ts b/lib/types/config.ts index 97e522dc..8d6b926b 100644 --- a/lib/types/config.ts +++ b/lib/types/config.ts @@ -82,7 +82,7 @@ export interface Prerequisites { readonly General: { readonly Prefix: string, }, - /** + /** * Will add a Lambda function to the prerequisite stack that sends notifications when new versions and updates to a AWS ManagedRuleGroup appear in messengers (Slack/Teams). */ readonly Information?:{ diff --git a/typedoc.json b/typedoc.json index fc6b5701..2ecac09e 100644 --- a/typedoc.json +++ b/typedoc.json @@ -9,5 +9,10 @@ "favicon": "static/icon/aws_firewall_factory_favicon.ico", "searchInComments": true, "hideGenerator": true, - //"customCss": "static/custom.css", + "navigationLinks": { + "๐Ÿ“ฆ": "https://github.com/globaldatanet/aws-firewall-factory/releases", + "๐Ÿ”–": "https://globaldatanet.com/imprint", + "๐Ÿ“…": "https://calendly.com/dakn/30min-1" + }, + "customDescription": "Explore the comprehensive AWS Firewall Factory Documentation. Elevate your cloud security with our firewall management solution." } \ No newline at end of file From f7719d03f31c94af2edfe8898740bc73b58dafd9 Mon Sep 17 00:00:00 2001 From: daknhh Date: Tue, 24 Oct 2023 10:06:11 +0200 Subject: [PATCH 03/15] test workflow --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index cb51f9fd..2b2c91d2 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -13,7 +13,7 @@ on: push: branches: - master - + - 4.1.4 jobs: deploy_production_main: name: Update Documentation From b7c676c604e44c7e500852bf21d9dd4816671cc0 Mon Sep 17 00:00:00 2001 From: daknhh Date: Tue, 24 Oct 2023 10:18:12 +0200 Subject: [PATCH 04/15] fix github action --- .github/workflows/docs.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 2b2c91d2..1282daa7 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -6,7 +6,8 @@ env: AWS_ACCOUNT: 376263449237 DISTRIBUTION_ID: E2T722RW2UKIMQ S3_BUCKET: docs.aws-firewall-factory.com - permissions: + +permissions: id-token: write contents: read on: @@ -15,11 +16,12 @@ on: - master - 4.1.4 jobs: - deploy_production_main: - name: Update Documentation - runs-on: ubuntu-latest + deploy_production_main: + name: Test and deploy RegexPatternSets Firewall + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: โฌ‡๏ธ Checkout + uses: actions/checkout@v3 - name: ๐Ÿ”‘ Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1.7.0 env: @@ -30,11 +32,9 @@ jobs: role-session-name: GitHubActionsSession mask-aws-account-id: false - name: ๐Ÿ“ฆ Install dependencies - run: | - npm install + run: npm install - name: ๐Ÿ“„ Generate Documentation - run: | - npx typedoc --options typedoc.json + run: npx typedoc --options typedoc.json - name: ๐Ÿš€ Upload Documentation run: | aws s3 sync ./docs s3://${{env.S3_BUCKET}} --delete From 7efaeb478ece3b3a1f5d5f4c7a6c8d06a2f41778 Mon Sep 17 00:00:00 2001 From: daknhh Date: Tue, 24 Oct 2023 10:21:47 +0200 Subject: [PATCH 05/15] adjust name for task --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 1282daa7..a773a671 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -17,7 +17,7 @@ on: - 4.1.4 jobs: deploy_production_main: - name: Test and deploy RegexPatternSets Firewall + name: Update Documentation runs-on: ubuntu-latest steps: - name: โฌ‡๏ธ Checkout From c5f24b330d0e5cfb915c3e05e3f243787c986ee2 Mon Sep 17 00:00:00 2001 From: daknhh Date: Tue, 24 Oct 2023 13:27:24 +0200 Subject: [PATCH 06/15] add more descriptions --- lib/types/config.ts | 23 +++++++++++++++++++++-- typedoc.json | 2 +- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/types/config.ts b/lib/types/config.ts index 8d6b926b..b7d2a0f9 100644 --- a/lib/types/config.ts +++ b/lib/types/config.ts @@ -99,7 +99,13 @@ export interface Prerequisites { } readonly Logging?: { readonly BucketProperties?: { + /** + * A name for the bucket. Allowed Pattern: ^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$ + */ readonly BucketName?: string, + /** + * Define if a KMS Key for the bucket will be created. + */ readonly KmsEncryptionKey: boolean, /** * Will add Object Lock (write-once-read-many (WORM)) to the S3 Bucket (Object Lock can help prevent objects from being deleted or overwritten for a fixed amount of time or indefinitely.) @@ -110,9 +116,18 @@ export interface Prerequisites { } }, + /** + * Define if a KMS Key for Kinesis FireHose will be created. + */ readonly FireHoseKey?: { + /** + * Define if a Alias for the KMS Key + */ readonly KeyAlias: string }, + /** + * Defines access to a central security account. Please specify a account ID such as 123456789012.This is necessary if you want to use a different account for all your firewalls. + */ readonly CrossAccountIdforPermissions?: string, } } @@ -181,12 +196,16 @@ export interface RuleGroupSet { } /** + * The regex above matches both IPv4 and IPv6 in CIDR notation, e.g. 123.4.3.0/32 * @TJS-pattern (?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}\/(3[0-2]|[12]?[0-9])$)|(?:^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$) */ -type IPAddress = string; // The regex above matches both IPv4 and IPv6 in CIDR notation, e.g. 123.4.3.0/32 +export type IPAddress = string; -interface IPAddressWithDescription { +export interface IPAddressWithDescription { description: string, + /** + * Defines a Ip Address - IPv4 and IPv6 in CIDR notation, e.g. 123.4.3.0/32 + */ ip: IPAddress } diff --git a/typedoc.json b/typedoc.json index 2ecac09e..2b0c0f2d 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,6 +1,6 @@ { "$schema": "https://typedoc.org/schema.json", - "entryPoints": ["lib/firewall-stack.ts","lib/prerequisites-stack.ts","lib/types/config.ts","lib/types/enums.ts", "lib/types/fms.ts", "node_modules/aws-cdk-lib/aws-fms", "node_modules/aws-cdk-lib/aws-wafv2"], + "entryPoints": ["lib/firewall-stack.ts","lib/prerequisites-stack.ts","lib/types/config.ts","lib/types/enums.ts", "lib/types/fms.ts", "node_modules/aws-cdk-lib/aws-fms", "node_modules/aws-cdk-lib/aws-wafv2", "node_modules/aws-cdk-lib/cloudformation", "node_modules/aws-cdk-lib/core/lib/cfn-tag.d.ts", "node_modules/aws-cdk-lib/core/lib/tag-manager.d.ts"], "readme": "none", "name": "AWS Firewall Factory Documentation", "entryPointStrategy": "Expand", From 3ba8f706e22836bf69a1cdae9b463fc8c8456b05 Mon Sep 17 00:00:00 2001 From: daknhh Date: Tue, 24 Oct 2023 14:48:05 +0200 Subject: [PATCH 07/15] add readme for doc page --- static/README.md | 34 ++++++++++++++++++++++++++++++++++ typedoc.json | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 static/README.md diff --git a/static/README.md b/static/README.md new file mode 100644 index 00000000..69dff6f9 --- /dev/null +++ b/static/README.md @@ -0,0 +1,34 @@ + +## โ‰๏ธ .What is a Web Application Firewall? + +A crucial security component for **every** web app. It acts as a **protective barrier** between your application and potential threats. Offering a range of **practical functionalities** to mitigate known risks, emerging threats, harmful activities and many more. + +## ๐Ÿ”ฅ About our AWS Firewall Factory + +An open-source solution that helps you **deploy, update and stage** your Web Application Firewalls at scale while managing them centrally via AWS Firewall Manager. + +It automates your security management, can be tailored with individual WAF configurations and alligns with **AWS best-practices**. + + - **โ™พ๏ธ Fully automated to centralize your WAF Deployment & Management:** + It simplifies the entire process by minimising administrative effort. Making it easier for you to ensure consistent protection and overseeing your WAF across applications. + + - **๐Ÿ”– Comprehensive Testing with Detailed Reports:** + It uncovers wether your application is resilient or not and reports issues precisely. With these insights you can dive deep into strengthening your applicationโ€™s weaknesses. + - **๐Ÿงฎ Automate Calculation of Your WAF's Costs:** + Your smart assistant that overtakes cost estimations in a transparent way, helping you associate expenses to the exact security measures. This will **boost your financial planning.** +- **๐Ÿ’Œ Notifications about Ddos or Managed Rule Group Changes:** + Get notified about potential DDoS activity for protected resources or changes in AWS managed rule groups, such as upcoming new versions and urgent security updates. +- โœ… **Additional features such as centralized dashboards and logging:** +Monitor every security event in real time to be able to defend against potential threads and anomalies immediately. + +## ๐Ÿงช Tests +All releases are tested prior to release using automated test workflows of sample firewalls to ensure code quality and test coverage. Here is the current state for our automated test workflows. + +| Test | Status | +|---|---| +| CodeQL | ![CodeQL](https://github.com/globaldatanet/aws-firewall-factory/actions/workflows/github-code-scanning/codeql/badge.svg?branch=master) | +| Linting | ![linting](https://github.com/globaldatanet/aws-firewall-factory/actions/workflows/linting.yml/badge.svg?branch=master) | +| WAF Deployment - Only Managed Rule Groups | ![onlyManagedRuleGroups](https://github.com/globaldatanet/aws-firewall-factory/actions/workflows/waf_test_onlymanagedrulegroups.yml/badge.svg?branch=master) | +| WAF Deployment - IpSets | ![IpSets](https://github.com/globaldatanet/aws-firewall-factory/actions/workflows/waf_test_ipSets.yml/badge.svg?branch=master) | +| WAF Deployment - RegexPatternSets | ![regexPatternSets](https://github.com/globaldatanet/aws-firewall-factory/actions/workflows/waf_test_regexPatternSets.yml/badge.svg?branch=master) | + diff --git a/typedoc.json b/typedoc.json index 2b0c0f2d..1999b89a 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,7 +1,7 @@ { "$schema": "https://typedoc.org/schema.json", "entryPoints": ["lib/firewall-stack.ts","lib/prerequisites-stack.ts","lib/types/config.ts","lib/types/enums.ts", "lib/types/fms.ts", "node_modules/aws-cdk-lib/aws-fms", "node_modules/aws-cdk-lib/aws-wafv2", "node_modules/aws-cdk-lib/cloudformation", "node_modules/aws-cdk-lib/core/lib/cfn-tag.d.ts", "node_modules/aws-cdk-lib/core/lib/tag-manager.d.ts"], - "readme": "none", + "readme": "./static/README.md", "name": "AWS Firewall Factory Documentation", "entryPointStrategy": "Expand", "exclude": ["**/gotestwaf/**","**/lambda/**","**/bin/**","**/tools/**","**/values/**","**/constructs/**"], From a2ea29ca3fbba4fc6438ec09c3d5ee8a948811a0 Mon Sep 17 00:00:00 2001 From: daknhh Date: Tue, 24 Oct 2023 15:26:01 +0200 Subject: [PATCH 08/15] improve docs --- .github/workflows/docs.yml | 2 +- lib/types/fms.ts | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a773a671..7c996eb9 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -38,4 +38,4 @@ jobs: - name: ๐Ÿš€ Upload Documentation run: | aws s3 sync ./docs s3://${{env.S3_BUCKET}} --delete - aws cloudfront create-invalidation --distribution-id ${{env.DISTRIBUTION_ID}} --paths /* \ No newline at end of file + aws cloudfront create-invalidation --distribution-id ${{env.DISTRIBUTION_ID}} --paths "/*" \ No newline at end of file diff --git a/lib/types/fms.ts b/lib/types/fms.ts index bedb802a..bbdeda24 100644 --- a/lib/types/fms.ts +++ b/lib/types/fms.ts @@ -63,6 +63,9 @@ export interface ManagedRuleGroup { vendor: fwmEnums.ManagedRuleGroupVendor | string | "AWS", name: fwmEnums.AwsManagedRules | string, version?: string, + /** + * Will be automatically set using the [Check Capacity API](https://docs.aws.amazon.com/waf/latest/APIReference/API_CheckCapacity.html). + */ capacity?: number, excludeRules?: NameObject[], overrideAction?: { @@ -70,6 +73,9 @@ export interface ManagedRuleGroup { }, ruleActionOverrides?: RuleActionOverrideProperty[], versionEnabled?: boolean + /** + * Enforce the [current Default version](https://docs.aws.amazon.com/waf/latest/developerguide/waf-managed-rule-groups-versioning.html) of the managed rule group to be retrieved using a Lambda Function. + */ latestVersion?: boolean enforceUpdate?:boolean } @@ -80,6 +86,9 @@ export interface Rule { visibilityConfig: waf.CfnWebACL.VisibilityConfigProperty, captchaConfig?: waf.CfnWebACL.CaptchaConfigProperty, ruleLabels?: waf.CfnWebACL.LabelProperty[], + /** + * Each rule in a web ACL and each rule in a rule group must have a unique priority setting to ensure proper rule execution. [More information about processing order of rules and rule groups in a web ACL](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-processing-order.html) + */ priority: number, } From 266827d212832eda175655a01a0fd40ba746222b Mon Sep 17 00:00:00 2001 From: daknhh Date: Tue, 24 Oct 2023 20:46:32 +0200 Subject: [PATCH 09/15] add more info to main page --- package-lock.json | 12 ++++++++++++ package.json | 1 + static/README.md | 22 ++++++++++++++++++++++ typedoc.json | 5 +++-- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b22d663f..83c41ced 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "lodash": "4.17.21", "table": "^6.8.1", "typedoc-plugin-extras": "^3.0.0", + "typedoc-plugin-keywords": "^1.5.0", "uuid": "^9.0.1" }, "bin": { @@ -8573,6 +8574,17 @@ "typedoc": "0.25.x" } }, + "node_modules/typedoc-plugin-keywords": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-keywords/-/typedoc-plugin-keywords-1.5.0.tgz", + "integrity": "sha512-8dkuTwwiuXzyM6T1/5M85JGyqArGnEYkANqItLXLAxmfx9SNkEDSwqfDiMGBVrcJmLMc/0nuCf/H4ixyA/8/tA==", + "dependencies": { + "typescript": "^5.2.2" + }, + "peerDependencies": { + "typedoc": "^0.25.0" + } + }, "node_modules/typedoc/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", diff --git a/package.json b/package.json index 6b119075..2febace7 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "lodash": "4.17.21", "table": "^6.8.1", "typedoc-plugin-extras": "^3.0.0", + "typedoc-plugin-keywords": "^1.5.0", "uuid": "^9.0.1" } } diff --git a/static/README.md b/static/README.md index 69dff6f9..57e01077 100644 --- a/static/README.md +++ b/static/README.md @@ -32,3 +32,25 @@ All releases are tested prior to release using automated test workflows of sampl | WAF Deployment - IpSets | ![IpSets](https://github.com/globaldatanet/aws-firewall-factory/actions/workflows/waf_test_ipSets.yml/badge.svg?branch=master) | | WAF Deployment - RegexPatternSets | ![regexPatternSets](https://github.com/globaldatanet/aws-firewall-factory/actions/workflows/waf_test_regexPatternSets.yml/badge.svg?branch=master) | +## ๐Ÿ›ก๏ธ Deployment + +### โš™๏ธ Prerequisites +1. [Organizations trusted access with Firewall Manager](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-fms.html) +2. [Taskfile](https://taskfile.dev/) +3. [AWS CDK](https://aws.amazon.com/cdk/) +4. [cfn-dia](https://www.npmjs.com/package/@mhlabs/cfn-diagram?s=03) +5. Invoke `npm i` to install dependencies +6. โš ๏ธ Before installing a stack to your aws account using aws cdk you need to prepare the account using a [cdk bootstrap](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) + +7. (Optional) If you want to use CloudWatch Dashboards - You need to enable your target accounts to share CloudWatch data with the central security account follow [this](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html#enable-cross-account-cross-Region) to see how to do it. +8. Assume AWS Profile `awsume PROFILENAME` +9. (Optional) Enter `task generateprerequisitesconfig` +10. Enter `task deploy config=NAMEOFYOURCONFIGFILE prerequisite=true` + + +### ๐Ÿ Deployment via Taskfile + +1. Create new ts file for you WAF and configure Rules in the Configuration (see [owasptopten.ts](https://github.com/globaldatanet/aws-firewall-factory/blob/master/values/examples/owasptop10.ts) to see structure) or use enter `task generate-waf-skeleton` +2. Assume AWS Profile `awsume / assume PROFILENAME` +3. (Optional) Enter `task generate-waf-skeleton` +4. Enter `task deploy config=NAMEOFYOURCONFIGFILE` diff --git a/typedoc.json b/typedoc.json index 1999b89a..4aa871cf 100644 --- a/typedoc.json +++ b/typedoc.json @@ -5,7 +5,8 @@ "name": "AWS Firewall Factory Documentation", "entryPointStrategy": "Expand", "exclude": ["**/gotestwaf/**","**/lambda/**","**/bin/**","**/tools/**","**/values/**","**/constructs/**"], - "plugin": ["typedoc-plugin-extras"], + "plugin": ["typedoc-plugin-extras", "typedoc-plugin-keywords"], + "keywords": ["aws", "firewall", "waf", "fms", "factory", "globaldatanet", "cdk"], "favicon": "static/icon/aws_firewall_factory_favicon.ico", "searchInComments": true, "hideGenerator": true, @@ -15,4 +16,4 @@ "๐Ÿ“…": "https://calendly.com/dakn/30min-1" }, "customDescription": "Explore the comprehensive AWS Firewall Factory Documentation. Elevate your cloud security with our firewall management solution." -} \ No newline at end of file +} From 4e68aeb4f4dfbe79cc9ccd302bc70fc1ca77b868 Mon Sep 17 00:00:00 2001 From: daknhh Date: Mon, 6 Nov 2023 21:08:51 +0100 Subject: [PATCH 10/15] move links --- static/README.md | 2 ++ typedoc.json | 5 ----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/static/README.md b/static/README.md index 57e01077..3a9ae879 100644 --- a/static/README.md +++ b/static/README.md @@ -1,4 +1,6 @@ +[๐Ÿ“ฆ Releases](https://github.com/globaldatanet/aws-firewall-factory/releases) - [๐Ÿ”– Imprint](https://globaldatanet.com/imprint) - [๐Ÿ“… Meeting](https://calendly.com/dakn/30min-1) + ## โ‰๏ธ .What is a Web Application Firewall? A crucial security component for **every** web app. It acts as a **protective barrier** between your application and potential threats. Offering a range of **practical functionalities** to mitigate known risks, emerging threats, harmful activities and many more. diff --git a/typedoc.json b/typedoc.json index 4aa871cf..db7d195d 100644 --- a/typedoc.json +++ b/typedoc.json @@ -10,10 +10,5 @@ "favicon": "static/icon/aws_firewall_factory_favicon.ico", "searchInComments": true, "hideGenerator": true, - "navigationLinks": { - "๐Ÿ“ฆ": "https://github.com/globaldatanet/aws-firewall-factory/releases", - "๐Ÿ”–": "https://globaldatanet.com/imprint", - "๐Ÿ“…": "https://calendly.com/dakn/30min-1" - }, "customDescription": "Explore the comprehensive AWS Firewall Factory Documentation. Elevate your cloud security with our firewall management solution." } From 97c1d97f14b2a17de6136bed70b3efe6db837084 Mon Sep 17 00:00:00 2001 From: daknhh Date: Mon, 6 Nov 2023 21:12:51 +0100 Subject: [PATCH 11/15] add customcss --- static/{ => docs}/README.md | 0 static/docs/custom.css | 7 +++++++ typedoc.json | 3 ++- 3 files changed, 9 insertions(+), 1 deletion(-) rename static/{ => docs}/README.md (100%) create mode 100644 static/docs/custom.css diff --git a/static/README.md b/static/docs/README.md similarity index 100% rename from static/README.md rename to static/docs/README.md diff --git a/static/docs/custom.css b/static/docs/custom.css new file mode 100644 index 00000000..25d18cb7 --- /dev/null +++ b/static/docs/custom.css @@ -0,0 +1,7 @@ + +.tsd-page-title { + padding-top: 30px; +} +a { + color: #00ecbd +} diff --git a/typedoc.json b/typedoc.json index db7d195d..70049865 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,7 +1,8 @@ { "$schema": "https://typedoc.org/schema.json", "entryPoints": ["lib/firewall-stack.ts","lib/prerequisites-stack.ts","lib/types/config.ts","lib/types/enums.ts", "lib/types/fms.ts", "node_modules/aws-cdk-lib/aws-fms", "node_modules/aws-cdk-lib/aws-wafv2", "node_modules/aws-cdk-lib/cloudformation", "node_modules/aws-cdk-lib/core/lib/cfn-tag.d.ts", "node_modules/aws-cdk-lib/core/lib/tag-manager.d.ts"], - "readme": "./static/README.md", + "readme": "./static/docs/README.md", + "customCss": "./static/docs/custom.css", "name": "AWS Firewall Factory Documentation", "entryPointStrategy": "Expand", "exclude": ["**/gotestwaf/**","**/lambda/**","**/bin/**","**/tools/**","**/values/**","**/constructs/**"], From 16b6fd0c8686bb4ac44d64389d00448ef0a74890 Mon Sep 17 00:00:00 2001 From: daknhh Date: Wed, 8 Nov 2023 09:08:40 +0100 Subject: [PATCH 12/15] adjustments --- CHANGELOG.md | 9 ++++++++- lib/tools/helpers.ts | 5 +++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2ed358e..54472111 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,15 @@ ## Released +## 4.1.4 +### Added +- Automation for [Documentation](https://docs.aws-firewall-factory.com/) for the AWS Firewall Factory to assist you in utilizing our solution. The documentation will be updated regularly to provide you with the most current information. + +### Fixed +- Console log error if only one Managed Rule Group was specified - the table output was not working for PostProcess. + ## 4.1.3 -## Added +### Added - Optional Lambda function to prerequisite Stack that send notifications about potential DDoS activity for protected resources to messengers (Slack/Teams) - [AWS Shield Advanced] - Automated test workflows of example firewalls, to ensure code quality and test coverage diff --git a/lib/tools/helpers.ts b/lib/tools/helpers.ts index dcd194f0..8c507983 100644 --- a/lib/tools/helpers.ts +++ b/lib/tools/helpers.ts @@ -289,7 +289,7 @@ async function calculateCapacities( managedrule.version ); managedrule.capacity = capacity; - managedcapacitieslog.push([managedrule.name, managedrule.capacity, managedrule.version !== "" ? managedrule.version : "[unversioned]", managedrule.enforceUpdate ?? "false"]); + managedcapacitieslog.push([managedrule.name, capacity, managedrule.version !== "" ? managedrule.version : "[unversioned]", managedrule.enforceUpdate ?? "false"]); runtimeProperties.ManagedRuleCapacity += capacity; runtimeProperties.PreProcess.ManagedRuleGroupCount += 1; managedrule.name === "AWSManagedRulesBotControlRuleSet" ? runtimeProperties.PreProcess.ManagedRuleBotControlCount +=1 : ""; @@ -312,7 +312,8 @@ async function calculateCapacities( config.WebAcl.Scope, managedrule.version ); - managedcapacitieslog.push([managedrule.name, managedrule.capacity, managedrule.capacity, managedrule.version !== "" ? managedrule.version : "[unversioned]", managedrule.enforceUpdate ?? "false"]); + managedrule.capacity = capacity; + managedcapacitieslog.push([managedrule.name, managedrule.capacity, managedrule.version !== "" ? managedrule.version : "[unversioned]", managedrule.enforceUpdate ?? "false"]); runtimeProperties.ManagedRuleCapacity += capacity; runtimeProperties.PostProcess.ManagedRuleGroupCount += 1; managedrule.name === "AWSManagedRulesBotControlRuleSet" ? runtimeProperties.PostProcess.ManagedRuleBotControlCount +=1 : ""; From 51bb70670da7ca38cdd9dd0c10b97a2e89a209ae Mon Sep 17 00:00:00 2001 From: daknhh Date: Wed, 8 Nov 2023 09:24:40 +0100 Subject: [PATCH 13/15] update changelog --- CHANGELOG.md | 4 +++- bin/aws-firewall-factory.ts | 4 ++-- lib/{firewall-stack.ts => web-application-firewall-stack.ts} | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) rename lib/{firewall-stack.ts => web-application-firewall-stack.ts} (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54472111..558d085d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,9 @@ ## 4.1.4 ### Added -- Automation for [Documentation](https://docs.aws-firewall-factory.com/) for the AWS Firewall Factory to assist you in utilizing our solution. The documentation will be updated regularly to provide you with the most current information. +- Automation for [Documentation](https://docs.aws-firewall-factory.com/) for the AWS Firewall Factory to assist you in utilizing our solution. +The documentation will be updated regularly to provide you with the most current information. We also added more comments to functions and enums to provide more information to you. +- First preperations to support for [Network Firewalls](https://github.com/globaldatanet/aws-firewall-factory/issues/219) ### Fixed - Console log error if only one Managed Rule Group was specified - the table output was not working for PostProcess. diff --git a/bin/aws-firewall-factory.ts b/bin/aws-firewall-factory.ts index 99ae34a8..85738628 100644 --- a/bin/aws-firewall-factory.ts +++ b/bin/aws-firewall-factory.ts @@ -1,5 +1,5 @@ #!/usr/bin/env node -import { FirewallStack } from "../lib/firewall-stack"; +import { WafStack } from "../lib/web-application-firewall-stack"; import { PrerequisitesStack } from "../lib/prerequisites-stack"; import * as cdk from "aws-cdk-lib"; import { wrongLoggingConfiguration } from "../lib/tools/config-validator"; @@ -109,7 +109,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); } - new FirewallStack(app, `${config.General.Prefix.toUpperCase()}-WAF-${config.WebAcl.Name.toUpperCase()}-${config.General.Stage.toUpperCase()}${config.General.DeployHash ? "-"+config.General.DeployHash.toUpperCase() : ""}`, { + new WafStack(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/lib/firewall-stack.ts b/lib/web-application-firewall-stack.ts similarity index 99% rename from lib/firewall-stack.ts rename to lib/web-application-firewall-stack.ts index 12dc05e7..a56d4665 100644 --- a/lib/firewall-stack.ts +++ b/lib/web-application-firewall-stack.ts @@ -23,7 +23,7 @@ export interface ConfigStackProps extends cdk.StackProps { runtimeProperties: RuntimeProperties; } -export class FirewallStack extends cdk.Stack { +export class WafStack extends cdk.Stack { constructor(scope: Construct, id: string, props: ConfigStackProps) { /** From ec6a7881c3701f5e46099564903af3dd1d6b3264 Mon Sep 17 00:00:00 2001 From: daknhh Date: Wed, 8 Nov 2023 16:56:14 +0100 Subject: [PATCH 14/15] upgrade dependencies --- CHANGELOG.md | 2 + package-lock.json | 997 +++++++++++++++++++++++++++++++++++++--------- package.json | 3 +- 3 files changed, 802 insertions(+), 200 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 558d085d..167d13bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ The documentation will be updated regularly to provide you with the most current ### Fixed - Console log error if only one Managed Rule Group was specified - the table output was not working for PostProcess. +- Bump @mhlabs/cfn-diagram from 1.1.29 to 1.1.38 -> thanks to @ljacobsson for the new release +- Bump @babel/traverse to 7.23.2 ## 4.1.3 ### Added diff --git a/package-lock.json b/package-lock.json index 83c41ced..1bd25cb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,8 @@ "@aws-sdk/client-service-quotas": "^3.427.0", "@aws-sdk/client-shield": "^3.428.0", "@aws-sdk/client-wafv2": "^3.427.0", - "@mhlabs/cfn-diagram": "^1.1.29", + "@babel/traverse": "^7.23.2", + "@mhlabs/cfn-diagram": "^1.1.38", "@types/aws-lambda": "^8.10.119", "@types/lodash": "4.14.178", "@types/uuid": "^9.0.5", @@ -173,24 +174,25 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@aws-sdk/client-cloudformation": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudformation/-/client-cloudformation-3.433.0.tgz", - "integrity": "sha512-6jFMhWM0AeBwCFyLo3VpOzmqwYOrGiwGB8LDUmI0bFsPyIFhxOKMTZ5DMvG8qe+JK4f9W5XqUQpFVrRmvqEccA==", + "version": "3.445.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudformation/-/client-cloudformation-3.445.0.tgz", + "integrity": "sha512-rhkU/a5iV1ntUw0ggfde8DRkjdRHmPEwlThZF/TT7leEhRKG97gJo7VztwwsSwrXeNPgXrhn0Qse2VaPDTFdVQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.433.0", - "@aws-sdk/credential-provider-node": "3.433.0", + "@aws-sdk/client-sts": "3.445.0", + "@aws-sdk/core": "3.445.0", + "@aws-sdk/credential-provider-node": "3.445.0", "@aws-sdk/middleware-host-header": "3.433.0", "@aws-sdk/middleware-logger": "3.433.0", "@aws-sdk/middleware-recursion-detection": "3.433.0", "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.433.0", + "@aws-sdk/middleware-user-agent": "3.438.0", "@aws-sdk/region-config-resolver": "3.433.0", "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.433.0", + "@aws-sdk/util-endpoints": "3.438.0", "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.433.0", + "@aws-sdk/util-user-agent-node": "3.437.0", "@smithy/config-resolver": "^2.0.16", "@smithy/fetch-http-handler": "^2.2.4", "@smithy/hash-node": "^2.0.12", @@ -211,6 +213,7 @@ "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.16", "@smithy/util-defaults-mode-node": "^2.0.21", + "@smithy/util-endpoints": "^1.0.2", "@smithy/util-retry": "^2.0.5", "@smithy/util-utf8": "^2.0.0", "@smithy/util-waiter": "^2.0.12", @@ -223,21 +226,22 @@ } }, "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/client-sso": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.433.0.tgz", - "integrity": "sha512-L7ksMP7UnYH+w52ly+m+s5vk8662VtyqJ+UduFEMPqKUHTFEm7w+CCw4Xfk3hl5GlVvqPvYWqBqv8eLKSHpCEQ==", + "version": "3.445.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.445.0.tgz", + "integrity": "sha512-me4LvqNnu6kxi+sW7t0AgMv1Yi64ikas0x2+5jv23o6Csg32w0S0xOjCTKQYahOA5CMFunWvlkFIfxbqs+Uo7w==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.445.0", "@aws-sdk/middleware-host-header": "3.433.0", "@aws-sdk/middleware-logger": "3.433.0", "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.433.0", + "@aws-sdk/middleware-user-agent": "3.438.0", "@aws-sdk/region-config-resolver": "3.433.0", "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.433.0", + "@aws-sdk/util-endpoints": "3.438.0", "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.433.0", + "@aws-sdk/util-user-agent-node": "3.437.0", "@smithy/config-resolver": "^2.0.16", "@smithy/fetch-http-handler": "^2.2.4", "@smithy/hash-node": "^2.0.12", @@ -258,6 +262,7 @@ "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.16", "@smithy/util-defaults-mode-node": "^2.0.21", + "@smithy/util-endpoints": "^1.0.2", "@smithy/util-retry": "^2.0.5", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" @@ -267,24 +272,25 @@ } }, "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/client-sts": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.433.0.tgz", - "integrity": "sha512-hQ+NLIcA1KRJ2qPdrtkJ3fOEVnehLLMlnB/I5mjg9K2UKjuiOufLao6tc5SyW9fseIL9AdX3fjJ8Unhg+y1RWg==", + "version": "3.445.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.445.0.tgz", + "integrity": "sha512-ogbdqrS8x9O5BTot826iLnTQ6i4/F5BSi/74gycneCxYmAnYnyUBNOWVnynv6XZiEWyDJQCU2UtMd52aNGW1GA==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/credential-provider-node": "3.433.0", + "@aws-sdk/core": "3.445.0", + "@aws-sdk/credential-provider-node": "3.445.0", "@aws-sdk/middleware-host-header": "3.433.0", "@aws-sdk/middleware-logger": "3.433.0", "@aws-sdk/middleware-recursion-detection": "3.433.0", "@aws-sdk/middleware-sdk-sts": "3.433.0", "@aws-sdk/middleware-signing": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.433.0", + "@aws-sdk/middleware-user-agent": "3.438.0", "@aws-sdk/region-config-resolver": "3.433.0", "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.433.0", + "@aws-sdk/util-endpoints": "3.438.0", "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.433.0", + "@aws-sdk/util-user-agent-node": "3.437.0", "@smithy/config-resolver": "^2.0.16", "@smithy/fetch-http-handler": "^2.2.4", "@smithy/hash-node": "^2.0.12", @@ -305,6 +311,7 @@ "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.16", "@smithy/util-defaults-mode-node": "^2.0.21", + "@smithy/util-endpoints": "^1.0.2", "@smithy/util-retry": "^2.0.5", "@smithy/util-utf8": "^2.0.0", "fast-xml-parser": "4.2.5", @@ -329,13 +336,13 @@ } }, "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.433.0.tgz", - "integrity": "sha512-T+YhCOORyA4+i4T86FfFCmi/jPsmLOP6GAtScHp/K8XzB9XuVvJSZ+T8SUKeW6/9G9z3Az7dqeBVLcMdC6fFDA==", + "version": "3.445.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.445.0.tgz", + "integrity": "sha512-R7IYSGjNZ5KKJwQJ2HNPemjpAMWvdce91i8w+/aHfqeGfTXrmYJu99PeGRyyBTKEumBaojyjTRvmO8HzS+/l7g==", "dependencies": { "@aws-sdk/credential-provider-env": "3.433.0", "@aws-sdk/credential-provider-process": "3.433.0", - "@aws-sdk/credential-provider-sso": "3.433.0", + "@aws-sdk/credential-provider-sso": "3.445.0", "@aws-sdk/credential-provider-web-identity": "3.433.0", "@aws-sdk/types": "3.433.0", "@smithy/credential-provider-imds": "^2.0.0", @@ -349,14 +356,14 @@ } }, "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.433.0.tgz", - "integrity": "sha512-uOTBJszqGJIX5SrH2YdN501cv9rW4ghuSkasxI9DL+sVV5YRMd/bwu6I3PphRyK7z4dosDEbJ1xoIuVR/W04HQ==", + "version": "3.445.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.445.0.tgz", + "integrity": "sha512-zI4k4foSjQRKNEsouculRcz7IbLfuqdFxypDLYwn+qPNMqJwWJ7VxOOeBSPUpHFcd7CLSfbHN2JAhQ7M02gPTA==", "dependencies": { "@aws-sdk/credential-provider-env": "3.433.0", - "@aws-sdk/credential-provider-ini": "3.433.0", + "@aws-sdk/credential-provider-ini": "3.445.0", "@aws-sdk/credential-provider-process": "3.433.0", - "@aws-sdk/credential-provider-sso": "3.433.0", + "@aws-sdk/credential-provider-sso": "3.445.0", "@aws-sdk/credential-provider-web-identity": "3.433.0", "@aws-sdk/types": "3.433.0", "@smithy/credential-provider-imds": "^2.0.0", @@ -385,12 +392,12 @@ } }, "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.433.0.tgz", - "integrity": "sha512-vuc2X7q/1HUAO/NowfnNMpRDoHw8H2lyZZzUc0lmamy6PDrEFBi/VTm1nStGPuS9egCFrYlkRHsfp50ukYGa5w==", + "version": "3.445.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.445.0.tgz", + "integrity": "sha512-gJz7kAiDecdhtApgXnxfZsXKsww8BnifDF9MAx9Dr4X6no47qYsCCS3XPuEyRiF9VebXvHOH0H260Zp3bVyniQ==", "dependencies": { - "@aws-sdk/client-sso": "3.433.0", - "@aws-sdk/token-providers": "3.433.0", + "@aws-sdk/client-sso": "3.445.0", + "@aws-sdk/token-providers": "3.438.0", "@aws-sdk/types": "3.433.0", "@smithy/property-provider": "^2.0.0", "@smithy/shared-ini-file-loader": "^2.0.6", @@ -488,12 +495,12 @@ } }, "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.433.0.tgz", - "integrity": "sha512-jMgA1jHfisBK4oSjMKrtKEZf0sl2vzADivkFmyZFzORpSZxBnF6hC21RjaI+70LJLcc9rSCzLgcoz5lHb9LLDg==", + "version": "3.438.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.438.0.tgz", + "integrity": "sha512-a+xHT1wOxT6EA6YyLmrfaroKWOkwwyiktUfXKM0FsUutGzNi4fKhb5NZ2al58NsXzHgHFrasSDp+Lqbd/X2cEw==", "dependencies": { "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.433.0", + "@aws-sdk/util-endpoints": "3.438.0", "@smithy/protocol-http": "^3.0.8", "@smithy/types": "^2.4.0", "tslib": "^2.5.0" @@ -518,20 +525,21 @@ } }, "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/token-providers": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.433.0.tgz", - "integrity": "sha512-Q6aYVaQKB+CkBLHQQlN8MHVpOzZv9snRfVz7SxIpdbHkRuGEHiLliCY3fg6Sonvu3AKEPERPuHcaC75tnNpOBw==", + "version": "3.438.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.438.0.tgz", + "integrity": "sha512-G2fUfTtU6/1ayYRMu0Pd9Ln4qYSvwJOWCqJMdkDgvXSwdgcOSOLsnAIk1AHGJDAvgLikdCzuyOsdJiexr9Vnww==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", "@aws-sdk/middleware-host-header": "3.433.0", "@aws-sdk/middleware-logger": "3.433.0", "@aws-sdk/middleware-recursion-detection": "3.433.0", - "@aws-sdk/middleware-user-agent": "3.433.0", + "@aws-sdk/middleware-user-agent": "3.438.0", + "@aws-sdk/region-config-resolver": "3.433.0", "@aws-sdk/types": "3.433.0", - "@aws-sdk/util-endpoints": "3.433.0", + "@aws-sdk/util-endpoints": "3.438.0", "@aws-sdk/util-user-agent-browser": "3.433.0", - "@aws-sdk/util-user-agent-node": "3.433.0", + "@aws-sdk/util-user-agent-node": "3.437.0", "@smithy/config-resolver": "^2.0.16", "@smithy/fetch-http-handler": "^2.2.4", "@smithy/hash-node": "^2.0.12", @@ -554,6 +562,7 @@ "@smithy/util-body-length-node": "^2.1.0", "@smithy/util-defaults-mode-browser": "^2.0.16", "@smithy/util-defaults-mode-node": "^2.0.21", + "@smithy/util-endpoints": "^1.0.2", "@smithy/util-retry": "^2.0.5", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" @@ -575,11 +584,12 @@ } }, "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-endpoints": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.433.0.tgz", - "integrity": "sha512-LFNUh9FH7RMtYjSjPGz9lAJQMzmJ3RcXISzc5X5k2R/9mNwMK7y1k2VAfvx+RbuDbll6xwsXlgv6QHcxVdF2zw==", + "version": "3.438.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.438.0.tgz", + "integrity": "sha512-6VyPTq1kN3GWxwFt5DdZfOsr6cJZPLjWh0troY/0uUv3hK74C9o3Y0Xf/z8UAUvQFkVqZse12O0/BgPVMImvfA==", "dependencies": { "@aws-sdk/types": "3.433.0", + "@smithy/util-endpoints": "^1.0.2", "tslib": "^2.5.0" }, "engines": { @@ -598,9 +608,9 @@ } }, "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.433.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.433.0.tgz", - "integrity": "sha512-yT1tO4MbbsUBLl5+S+jVv8wxiAtP5TKjKib9B2KQ2x0OtWWTrIf2o+IZK8va+zQqdV4MVMjezdxdE20hOdB4yQ==", + "version": "3.437.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.437.0.tgz", + "integrity": "sha512-JVEcvWaniamtYVPem4UthtCNoTBCfFTwYj7Y3CrWZ2Qic4TqrwLkAfaBGtI2TGrhIClVr77uzLI6exqMTN7orA==", "dependencies": { "@aws-sdk/types": "3.433.0", "@smithy/node-config-provider": "^2.1.3", @@ -619,6 +629,27 @@ } } }, + "node_modules/@aws-sdk/client-cloudformation/node_modules/fast-xml-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/@aws-sdk/client-cloudformation/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -676,6 +707,27 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-cloudwatch/node_modules/fast-xml-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/@aws-sdk/client-fms": { "version": "3.427.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-fms/-/client-fms-3.427.0.tgz", @@ -1261,6 +1313,27 @@ } } }, + "node_modules/@aws-sdk/client-shield/node_modules/fast-xml-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/@aws-sdk/client-sso": { "version": "3.427.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.427.0.tgz", @@ -1353,6 +1426,27 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/client-sts/node_modules/fast-xml-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/@aws-sdk/client-wafv2": { "version": "3.427.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-wafv2/-/client-wafv2-3.427.0.tgz", @@ -1400,6 +1494,18 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/core": { + "version": "3.445.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.445.0.tgz", + "integrity": "sha512-6GYLElUG1QTOdmXG8zXa+Ull9IUeSeItKDYHKzHYfIkbsagMfYlf7wm9XIYlatjtgodNfZ3gPHAJfRyPmwKrsg==", + "dependencies": { + "@smithy/smithy-client": "^2.1.12", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@aws-sdk/credential-provider-env": { "version": "3.425.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.425.0.tgz", @@ -1603,19 +1709,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "0.1.0-preview.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-0.1.0-preview.1.tgz", - "integrity": "sha512-iPglaZZt2uhRpBO0oXww+oK9mtJQvh91o1NuuIOGMBceSou9qzMtGC5NzJzGnooodfwzARx1rgv9myJpcK38Sw==", - "dependencies": { - "tslib": "^1.8.0" - } - }, - "node_modules/@aws-sdk/shared-ini-file-loader/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@aws-sdk/token-providers": { "version": "3.427.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.427.0.tgz", @@ -1742,7 +1835,6 @@ "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.13", "chalk": "^2.4.2" @@ -1755,7 +1847,6 @@ "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" }, @@ -1767,7 +1858,6 @@ "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": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1781,7 +1871,6 @@ "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" } @@ -1789,14 +1878,12 @@ "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 + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "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" } @@ -1805,7 +1892,6 @@ "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" } @@ -1814,7 +1900,6 @@ "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" }, @@ -1874,7 +1959,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, "dependencies": { "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", @@ -1914,7 +1998,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -1923,7 +2006,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -1936,7 +2018,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -2000,7 +2081,6 @@ "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" }, @@ -2012,7 +2092,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -2021,7 +2100,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -2053,7 +2131,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -2067,7 +2144,6 @@ "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" }, @@ -2079,7 +2155,6 @@ "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": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2093,7 +2168,6 @@ "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" } @@ -2101,14 +2175,12 @@ "node_modules/@babel/highlight/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 + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/@babel/highlight/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" } @@ -2117,7 +2189,6 @@ "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" } @@ -2126,7 +2197,6 @@ "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" }, @@ -2138,7 +2208,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -2327,7 +2396,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -2338,10 +2406,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", - "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", - "dev": true, + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/generator": "^7.23.0", @@ -2362,7 +2429,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } @@ -2371,7 +2437,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20", @@ -2884,7 +2949,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2898,7 +2962,6 @@ "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" } @@ -2907,7 +2970,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2915,44 +2977,35 @@ "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==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "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" } }, - "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", - "integrity": "sha512-AKMoTF8cN5xj/v4BmkDwKnpuQjJkTy6W+NFY5X3/vmycBS+AygRYzyJr8AZ3YIcP3JjOUfqSbqYADFzAdpgGqg==", - "dependencies": { - "@aws-sdk/shared-ini-file-loader": "0.1.0-preview.1", - "open": "^7.1.0", - "sha1": "^1.1.1" - } - }, "node_modules/@mhlabs/cfn-diagram": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/@mhlabs/cfn-diagram/-/cfn-diagram-1.1.29.tgz", - "integrity": "sha512-JFnZvUhnxTKBhuX4OVSGLY2CKcKy6lAfgkn8LG3GE95GZ6WA6D55Z+vVBc64QxcSRy5xBEKlF07gun7GiwB86g==", + "version": "1.1.38", + "resolved": "https://registry.npmjs.org/@mhlabs/cfn-diagram/-/cfn-diagram-1.1.38.tgz", + "integrity": "sha512-LFIZ9DHT+GbbJVg39Iwhq778qm2H20nr8OVjybnWi+ym276zrbRVZgxvfcUqzxNE5P4rR9rdiaKWn6NzQ/YWyA==", "dependencies": { - "@mhlabs/aws-sdk-sso": "0.0.12", + "@aws-sdk/client-cloudformation": "^3.445.0", + "@aws-sdk/credential-provider-sso": "^3.445.0", "aws-icons-directory": "^0.0.6", - "aws-sdk": "^2.808.0", + "cli-color": "^2.0.0", + "color-convert": "^2.0.1", "color-hash": "^1.0.3", "commander": "^7.1.0", - "inquirer": "^7.1.0", + "fast-xml-parser": "^4.3.2", + "inquirer": "^8.2.0", "jdom": "^3.1.11", "jsdom": "^16.4.0", "mxgraph": "^4.1.1", - "open": "^7.2.1", + "open": "^8.4.0", "open-in-editor": "^2.2.0", "temp-dir": "^2.0.0", "yaml-cfn": "^0.2.3" @@ -2962,6 +3015,245 @@ "cfn-diagram": "index.js" } }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/client-sso": { + "version": "3.445.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.445.0.tgz", + "integrity": "sha512-me4LvqNnu6kxi+sW7t0AgMv1Yi64ikas0x2+5jv23o6Csg32w0S0xOjCTKQYahOA5CMFunWvlkFIfxbqs+Uo7w==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.445.0", + "@aws-sdk/middleware-host-header": "3.433.0", + "@aws-sdk/middleware-logger": "3.433.0", + "@aws-sdk/middleware-recursion-detection": "3.433.0", + "@aws-sdk/middleware-user-agent": "3.438.0", + "@aws-sdk/region-config-resolver": "3.433.0", + "@aws-sdk/types": "3.433.0", + "@aws-sdk/util-endpoints": "3.438.0", + "@aws-sdk/util-user-agent-browser": "3.433.0", + "@aws-sdk/util-user-agent-node": "3.437.0", + "@smithy/config-resolver": "^2.0.16", + "@smithy/fetch-http-handler": "^2.2.4", + "@smithy/hash-node": "^2.0.12", + "@smithy/invalid-dependency": "^2.0.12", + "@smithy/middleware-content-length": "^2.0.14", + "@smithy/middleware-endpoint": "^2.1.3", + "@smithy/middleware-retry": "^2.0.18", + "@smithy/middleware-serde": "^2.0.12", + "@smithy/middleware-stack": "^2.0.6", + "@smithy/node-config-provider": "^2.1.3", + "@smithy/node-http-handler": "^2.1.8", + "@smithy/protocol-http": "^3.0.8", + "@smithy/smithy-client": "^2.1.12", + "@smithy/types": "^2.4.0", + "@smithy/url-parser": "^2.0.12", + "@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.16", + "@smithy/util-defaults-mode-node": "^2.0.21", + "@smithy/util-endpoints": "^1.0.2", + "@smithy/util-retry": "^2.0.5", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.445.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.445.0.tgz", + "integrity": "sha512-gJz7kAiDecdhtApgXnxfZsXKsww8BnifDF9MAx9Dr4X6no47qYsCCS3XPuEyRiF9VebXvHOH0H260Zp3bVyniQ==", + "dependencies": { + "@aws-sdk/client-sso": "3.445.0", + "@aws-sdk/token-providers": "3.438.0", + "@aws-sdk/types": "3.433.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.4.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.433.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.433.0.tgz", + "integrity": "sha512-mBTq3UWv1UzeHG+OfUQ2MB/5GEkt5LTKFaUqzL7ESwzW8XtpBgXnjZvIwu3Vcd3sEetMwijwaGiJhY0ae/YyaA==", + "dependencies": { + "@aws-sdk/types": "3.433.0", + "@smithy/protocol-http": "^3.0.8", + "@smithy/types": "^2.4.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/middleware-logger": { + "version": "3.433.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.433.0.tgz", + "integrity": "sha512-We346Fb5xGonTGVZC9Nvqtnqy74VJzYuTLLiuuftA5sbNzftBDy/22QCfvYSTOAl3bvif+dkDUzQY2ihc5PwOQ==", + "dependencies": { + "@aws-sdk/types": "3.433.0", + "@smithy/types": "^2.4.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.433.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.433.0.tgz", + "integrity": "sha512-HEvYC9PQlWY/ccUYtLvAlwwf1iCif2TSAmLNr3YTBRVa98x6jKL0hlCrHWYklFeqOGSKy6XhE+NGJMUII0/HaQ==", + "dependencies": { + "@aws-sdk/types": "3.433.0", + "@smithy/protocol-http": "^3.0.8", + "@smithy/types": "^2.4.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.438.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.438.0.tgz", + "integrity": "sha512-a+xHT1wOxT6EA6YyLmrfaroKWOkwwyiktUfXKM0FsUutGzNi4fKhb5NZ2al58NsXzHgHFrasSDp+Lqbd/X2cEw==", + "dependencies": { + "@aws-sdk/types": "3.433.0", + "@aws-sdk/util-endpoints": "3.438.0", + "@smithy/protocol-http": "^3.0.8", + "@smithy/types": "^2.4.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.433.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.433.0.tgz", + "integrity": "sha512-xpjRjCZW+CDFdcMmmhIYg81ST5UAnJh61IHziQEk0FXONrg4kjyYPZAOjEdzXQ+HxJQuGQLKPhRdzxmQnbX7pg==", + "dependencies": { + "@smithy/node-config-provider": "^2.1.3", + "@smithy/types": "^2.4.0", + "@smithy/util-config-provider": "^2.0.0", + "@smithy/util-middleware": "^2.0.5", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/token-providers": { + "version": "3.438.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.438.0.tgz", + "integrity": "sha512-G2fUfTtU6/1ayYRMu0Pd9Ln4qYSvwJOWCqJMdkDgvXSwdgcOSOLsnAIk1AHGJDAvgLikdCzuyOsdJiexr9Vnww==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.433.0", + "@aws-sdk/middleware-logger": "3.433.0", + "@aws-sdk/middleware-recursion-detection": "3.433.0", + "@aws-sdk/middleware-user-agent": "3.438.0", + "@aws-sdk/region-config-resolver": "3.433.0", + "@aws-sdk/types": "3.433.0", + "@aws-sdk/util-endpoints": "3.438.0", + "@aws-sdk/util-user-agent-browser": "3.433.0", + "@aws-sdk/util-user-agent-node": "3.437.0", + "@smithy/config-resolver": "^2.0.16", + "@smithy/fetch-http-handler": "^2.2.4", + "@smithy/hash-node": "^2.0.12", + "@smithy/invalid-dependency": "^2.0.12", + "@smithy/middleware-content-length": "^2.0.14", + "@smithy/middleware-endpoint": "^2.1.3", + "@smithy/middleware-retry": "^2.0.18", + "@smithy/middleware-serde": "^2.0.12", + "@smithy/middleware-stack": "^2.0.6", + "@smithy/node-config-provider": "^2.1.3", + "@smithy/node-http-handler": "^2.1.8", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^3.0.8", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/smithy-client": "^2.1.12", + "@smithy/types": "^2.4.0", + "@smithy/url-parser": "^2.0.12", + "@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.16", + "@smithy/util-defaults-mode-node": "^2.0.21", + "@smithy/util-endpoints": "^1.0.2", + "@smithy/util-retry": "^2.0.5", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/types": { + "version": "3.433.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.433.0.tgz", + "integrity": "sha512-0jEE2mSrNDd8VGFjTc1otYrwYPIkzZJEIK90ZxisKvQ/EURGBhNzWn7ejWB9XCMFT6XumYLBR0V9qq5UPisWtA==", + "dependencies": { + "@smithy/types": "^2.4.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/util-endpoints": { + "version": "3.438.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.438.0.tgz", + "integrity": "sha512-6VyPTq1kN3GWxwFt5DdZfOsr6cJZPLjWh0troY/0uUv3hK74C9o3Y0Xf/z8UAUvQFkVqZse12O0/BgPVMImvfA==", + "dependencies": { + "@aws-sdk/types": "3.433.0", + "@smithy/util-endpoints": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.433.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.433.0.tgz", + "integrity": "sha512-2Cf/Lwvxbt5RXvWFXrFr49vXv0IddiUwrZoAiwhDYxvsh+BMnh+NUFot+ZQaTrk/8IPZVDeLPWZRdVy00iaVXQ==", + "dependencies": { + "@aws-sdk/types": "3.433.0", + "@smithy/types": "^2.4.0", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@mhlabs/cfn-diagram/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.437.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.437.0.tgz", + "integrity": "sha512-JVEcvWaniamtYVPem4UthtCNoTBCfFTwYj7Y3CrWZ2Qic4TqrwLkAfaBGtI2TGrhIClVr77uzLI6exqMTN7orA==", + "dependencies": { + "@aws-sdk/types": "3.433.0", + "@smithy/node-config-provider": "^2.1.3", + "@smithy/types": "^2.4.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3440,6 +3732,19 @@ "node": ">= 10.0.0" } }, + "node_modules/@smithy/util-endpoints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.0.2.tgz", + "integrity": "sha512-QEdq+sP68IJHAMVB2ugKVVZEWeKQtZLuf+akHzc8eTVElsZ2ZdVLWC6Cp+uKjJ/t4yOj1qu6ZzyxJQEQ8jdEjg==", + "dependencies": { + "@smithy/node-config-provider": "^2.1.3", + "@smithy/types": "^2.4.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/@smithy/util-hex-encoding": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", @@ -4619,6 +4924,39 @@ } ] }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", @@ -4825,14 +5163,6 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "engines": { - "node": "*" - } - }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -4923,6 +5253,21 @@ "node": ">=0.8.0" } }, + "node_modules/cli-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", + "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.61", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -4934,6 +5279,17 @@ "node": ">=8" } }, + "node_modules/cli-spinners": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -4956,21 +5312,12 @@ "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" - }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=0.8" } }, "node_modules/co": { @@ -5090,14 +5437,6 @@ "node": ">= 8" } }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "engines": { - "node": "*" - } - }, "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -5119,6 +5458,15 @@ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" }, + "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", @@ -5182,6 +5530,25 @@ "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, "node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", @@ -5303,6 +5670,50 @@ "is-arrayish": "^0.2.1" } }, + "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-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/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -5513,6 +5924,15 @@ "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", @@ -5569,6 +5989,19 @@ "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", @@ -5628,17 +6061,17 @@ "dev": true }, "node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", + "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==", "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" } ], "dependencies": { @@ -6148,26 +6581,41 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "dependencies": { "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "mute-stream": "0.0.8", + "ora": "^5.4.1", "run-async": "^2.4.0", - "rxjs": "^6.6.0", + "rxjs": "^7.5.5", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/is-accessor-descriptor": { @@ -6320,6 +6768,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6343,6 +6799,11 @@ "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-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -6369,6 +6830,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -7025,8 +7497,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", @@ -7089,7 +7560,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -7230,6 +7700,21 @@ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -7239,6 +7724,14 @@ "yallist": "^3.0.2" } }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", @@ -7287,6 +7780,21 @@ "node": ">= 12" } }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -7376,6 +7884,11 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "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", @@ -7438,15 +7951,16 @@ } }, "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7484,6 +7998,28 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -7824,6 +8360,19 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7971,20 +8520,31 @@ } }, "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" + "tslib": "^2.1.0" } }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -8040,18 +8600,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/sha1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", - "dependencies": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8166,6 +8714,14 @@ "node": ">=8" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -8337,6 +8893,15 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -8358,7 +8923,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, "engines": { "node": ">=4" } @@ -8512,6 +9076,11 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -8702,6 +9271,11 @@ "which-typed-array": "^1.1.2" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -8787,6 +9361,14 @@ "node": ">=10.13.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -8891,6 +9473,23 @@ "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==", + "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/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 2febace7..ac271335 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "@aws-sdk/client-service-quotas": "^3.427.0", "@aws-sdk/client-shield": "^3.428.0", "@aws-sdk/client-wafv2": "^3.427.0", - "@mhlabs/cfn-diagram": "^1.1.29", + "@babel/traverse": "^7.23.2", + "@mhlabs/cfn-diagram": "^1.1.38", "@types/aws-lambda": "^8.10.119", "@types/lodash": "4.14.178", "@types/uuid": "^9.0.5", From 40dfea0c2175ea2fcb5cf9231599d948217699bc Mon Sep 17 00:00:00 2001 From: daknhh Date: Wed, 8 Nov 2023 17:30:35 +0100 Subject: [PATCH 15/15] update dependencies --- CHANGELOG.md | 6 ++++-- package-lock.json | 27 ++++++++++++++++++--------- package.json | 4 ++-- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 167d13bc..10bafdc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,13 +5,15 @@ ## 4.1.4 ### Added - Automation for [Documentation](https://docs.aws-firewall-factory.com/) for the AWS Firewall Factory to assist you in utilizing our solution. -The documentation will be updated regularly to provide you with the most current information. We also added more comments to functions and enums to provide more information to you. +The documentation will be updated regularly to provide you with the most current information. We also added more comments to functions and enums to provide more information to you. [Issue 220](https://github.com/globaldatanet/aws-firewall-factory/issues/220) - First preperations to support for [Network Firewalls](https://github.com/globaldatanet/aws-firewall-factory/issues/219) ### Fixed - Console log error if only one Managed Rule Group was specified - the table output was not working for PostProcess. -- Bump @mhlabs/cfn-diagram from 1.1.29 to 1.1.38 -> thanks to @ljacobsson for the new release +- Bump @mhlabs/cfn-diagram from 1.1.29 to 1.1.38 -> thanks to [ljacobsson](https://github.com/ljacobsson) for the new release - Bump @babel/traverse to 7.23.2 +- Bump @types/uuid from 9.0.5 to 9.0.7 +- Bump @types/node from 18.16.3 to 20.8.10 ## 4.1.3 ### Added diff --git a/package-lock.json b/package-lock.json index 1bd25cb9..c3924a8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@mhlabs/cfn-diagram": "^1.1.38", "@types/aws-lambda": "^8.10.119", "@types/lodash": "4.14.178", - "@types/uuid": "^9.0.5", + "@types/uuid": "^9.0.7", "aws-cdk-lib": "2.100.0", "aws-lambda": "^1.0.7", "cfonts": "^3.2.0", @@ -34,7 +34,7 @@ "firewallfactory": "bin/aws-firewall-factory.js" }, "devDependencies": { - "@types/node": "18.16.3", + "@types/node": "20.8.10", "@typescript-eslint/eslint-plugin": "6.7.5", "@typescript-eslint/parser": "6.7.5", "aws-cdk": "2.100.0", @@ -3958,10 +3958,13 @@ "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" }, "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==", - "dev": true + "version": "20.8.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", + "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/semver": { "version": "7.5.3", @@ -3976,9 +3979,9 @@ "dev": true }, "node_modules/@types/uuid": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.5.tgz", - "integrity": "sha512-xfHdwa1FMJ082prjSJpoEI57GZITiQz10r3vEJCHa2khEFQjKy91aWKz6+zybzssCvXUwE1LQWgWVwZ4nYUvHQ==" + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", + "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==" }, "node_modules/@types/yargs": { "version": "17.0.28", @@ -9190,6 +9193,12 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", diff --git a/package.json b/package.json index ac271335..9d098ed5 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "lint": "eslint --ext .ts ." }, "devDependencies": { - "@types/node": "18.16.3", + "@types/node": "20.8.10", "@typescript-eslint/eslint-plugin": "6.7.5", "@typescript-eslint/parser": "6.7.5", "aws-cdk": "2.100.0", @@ -34,7 +34,7 @@ "@mhlabs/cfn-diagram": "^1.1.38", "@types/aws-lambda": "^8.10.119", "@types/lodash": "4.14.178", - "@types/uuid": "^9.0.5", + "@types/uuid": "^9.0.7", "aws-cdk-lib": "2.100.0", "aws-lambda": "^1.0.7", "cfonts": "^3.2.0",