diff --git a/.codespellrc b/.codespellrc
index f3d25b3c9..538846652 100644
--- a/.codespellrc
+++ b/.codespellrc
@@ -1,5 +1,6 @@
# Lint Codespell configurations
[codespell]
-skip = .codespellrc,.git,node_modules,build,dist,*.zst,CHANGELOG.md
+skip = .codespellrc,.git,node_modules,build,dist,*.zst,CHANGELOG.md,.playwright,.terraform
ignore-words-list = NotIn,AKS,LICENS,aks
enable-colors =
+check-hidden =
diff --git a/.github/test-infra/azure/aks/variables.tf b/.github/test-infra/azure/aks/variables.tf
index 1ba26453a..08acdc0cb 100644
--- a/.github/test-infra/azure/aks/variables.tf
+++ b/.github/test-infra/azure/aks/variables.tf
@@ -165,7 +165,7 @@ variable "cluster_managed_identity_type" {
}
variable "cluster_kubelet_identity_type" {
- description = "Type of Managed Identity to be used for Kubelet. If UserAssigned, defaults to Azure automically creating Managaged Identity for Kubelet."
+ description = "Type of Managed Identity to be used for Kubelet. If UserAssigned, defaults to Azure automatically creating Managaged Identity for Kubelet."
default = "SystemAssigned"
}
diff --git a/.gitignore b/.gitignore
index b6b996531..adc160de3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
.cache/
.idea/
-build/
+build/**
.DS_Store
*.tar.zst
zarf-sbom
diff --git a/docs/reference/configuration/custom-resources/exemptions-v1alpha1-cr.md b/docs/reference/configuration/custom-resources/exemptions-v1alpha1-cr.md
new file mode 100644
index 000000000..2174bda69
--- /dev/null
+++ b/docs/reference/configuration/custom-resources/exemptions-v1alpha1-cr.md
@@ -0,0 +1,76 @@
+---
+title: Exemptions CR (v1alpha1)
+tableOfContents:
+ maxHeadingLevel: 6
+---
+
+
+
+# Exemptions
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ spec | Spec | |
+
+
+
+
+
+
+
+## Spec
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ exemptions | Exemptions[] | Policy exemptions |
+
+
+
+
+
+
+
+### Exemptions
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ description | string | Reasons as to why this exemption is needed |
matcher | Matcher | Resource to exempt (Regex allowed for name) |
policies | Policies[] (enum):DisallowHostNamespaces DisallowNodePortServices DisallowPrivileged DisallowSELinuxOptions DropAllCapabilities RequireNonRootUser RestrictCapabilities RestrictExternalNames RestrictHostPathWrite RestrictHostPorts RestrictProcMount RestrictSeccomp RestrictSELinuxType RestrictVolumeTypes
| A list of policies to override |
title | string | title to give the exemption for reporting purposes |
+
+
+
+
+
+
+
+#### Matcher
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ kind | string (enum): | |
name | string | |
namespace | string | |
+
+
+
\ No newline at end of file
diff --git a/docs/reference/configuration/custom-resources/packages-v1alpha1-cr.md b/docs/reference/configuration/custom-resources/packages-v1alpha1-cr.md
new file mode 100644
index 000000000..653ea5594
--- /dev/null
+++ b/docs/reference/configuration/custom-resources/packages-v1alpha1-cr.md
@@ -0,0 +1,528 @@
+---
+title: Packages CR (v1alpha1)
+tableOfContents:
+ maxHeadingLevel: 6
+---
+
+
+
+# Packages
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ spec | Spec | |
+
+
+
+
+
+
+
+## Spec
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ monitor | Monitor[] | Create Service or Pod Monitor configurations |
network | Network | Network configuration for the package |
sso | Sso[] | Create SSO client configurations |
+
+
+
+
+
+
+
+### Monitor
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ authorization | Authorization | Authorization settings. |
description | string | A description of this monitor entry, this will become part of the ServiceMonitor name |
kind | string (enum): | The type of monitor to create; PodMonitor or ServiceMonitor. ServiceMonitor is the default. |
path | string | HTTP path from which to scrape for metrics, defaults to `/metrics` |
podSelector | | Labels to match pods in the namespace to apply the policy to. Leave empty to apply to all pods in the namespace |
portName | string | The port name for the serviceMonitor |
selector | | Labels to match pods in the namespace to apply the policy to. Leave empty to apply to all pods in the namespace |
targetPort | number | The service targetPort. This is required so the NetworkPolicy can be generated correctly. |
+
+
+
+
+
+
+
+#### Authorization
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ credentials | Credentials | Selects a key of a Secret in the namespace that contains the credentials for authentication. |
type | string | Defines the authentication type. The value is case-insensitive. "Basic" is not a supported value. Default: "Bearer" |
+
+
+
+
+
+
+
+##### Credentials
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ key | string | The key of the secret to select from. Must be a valid secret key. |
name | string | Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names |
optional | boolean | Specify whether the Secret or its key must be defined |
+
+
+
+
+
+
+
+### Network
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ allow | Allow[] | Allow specific traffic (namespace will have a default-deny policy) |
expose | Expose[] | Expose a service on an Istio Gateway |
+
+
+
+
+
+
+
+#### Allow
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ description | string | A description of the policy, this will become part of the policy name |
direction | string (enum): | The direction of the traffic |
labels | | The labels to apply to the policy |
podLabels | | Deprecated: use selector |
port | number | The port to allow (protocol is always TCP) |
ports | number[] | A list of ports to allow (protocol is always TCP) |
remoteCidr | string | Custom generated policy CIDR |
remoteGenerated | string (enum):KubeAPI IntraNamespace CloudMetadata Anywhere
| Custom generated remote selector for the policy |
remoteNamespace | string | The remote namespace to allow traffic to/from. Use * or empty string to allow all namespaces |
remotePodLabels | | Deprecated: use remoteSelector |
remoteSelector | | The remote pod selector labels to allow traffic to/from |
selector | | Labels to match pods in the namespace to apply the policy to. Leave empty to apply to all pods in the namespace |
+
+
+
+
+
+
+
+#### Expose
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ advancedHTTP | AdvancedHTTP | Advanced HTTP settings for the route. |
description | string | A description of this expose entry, this will become part of the VirtualService name |
gateway | string (enum): | The name of the gateway to expose the service on (default: tenant) |
host | string | The hostname to expose the service on |
match | Match[] | Match the incoming request based on custom rules. Not permitted when using the passthrough gateway. |
podLabels | | Deprecated: use selector |
port | number | The port number to expose |
selector | | Labels to match pods in the namespace to apply the policy to. Leave empty to apply to all pods in the namespace |
service | string | The name of the service to expose |
targetPort | number | The service targetPort. This defaults to port and is only required if the service port is different from the target port (so the NetworkPolicy can be generated correctly). |
+
+
+
+
+
+
+
+##### AdvancedHTTP
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ corsPolicy | CorsPolicy | Cross-Origin Resource Sharing policy (CORS). |
directResponse | DirectResponse | A HTTP rule can either return a direct_response, redirect or forward (default) traffic. |
headers | Headers | |
match | Match[] | Match the incoming request based on custom rules. Not permitted when using the passthrough gateway. |
redirect | Redirect | A HTTP rule can either return a direct_response, redirect or forward (default) traffic. |
retries | Retries | Retry policy for HTTP requests. |
rewrite | Rewrite | Rewrite HTTP URIs and Authority headers. |
timeout | string | Timeout for HTTP requests, default is disabled. |
weight | integer | Weight specifies the relative proportion of traffic to be forwarded to the destination. |
+
+
+
+
+
+
+
+###### CorsPolicy
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ allowCredentials | boolean | Indicates whether the caller is allowed to send the actual request (not the preflight) using credentials. |
allowHeaders | string[] | List of HTTP headers that can be used when requesting the resource. |
allowMethods | string[] | List of HTTP methods allowed to access the resource. |
allowOrigin | string[] | |
allowOrigins | AllowOrigins[] | String patterns that match allowed origins. |
exposeHeaders | string[] | A list of HTTP headers that the browsers are allowed to access. |
maxAge | string | Specifies how long the results of a preflight request can be cached. |
+
+
+
+
+
+
+
+###### AllowOrigins
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ exact | string | |
prefix | string | |
regex | string | RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). |
+
+
+
+
+
+
+
+###### DirectResponse
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ body | Body | Specifies the content of the response body. |
+
+
+
+
+
+
+
+###### Body
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ bytes | string | response body as base64 encoded bytes. |
string | string | |
+
+
+
+
+
+
+
+###### Headers
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ request | Request | |
response | Response | |
+
+
+
+
+
+
+
+###### Request
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ add | | |
remove | string[] | |
set | | |
+
+
+
+
+
+
+
+###### Response
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ add | | |
remove | string[] | |
set | | |
+
+
+
+
+
+
+
+###### Match
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ ignoreUriCase | boolean | Flag to specify whether the URI matching should be case-insensitive. |
method | Method | |
name | string | The name assigned to a match. |
queryParams | | Query parameters for matching. |
uri | Uri | |
+
+
+
+
+
+
+
+###### Method
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ exact | string | |
prefix | string | |
regex | string | RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). |
+
+
+
+
+
+
+
+###### Uri
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ exact | string | |
prefix | string | |
regex | string | RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). |
+
+
+
+
+
+
+
+###### Redirect
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ authority | string | On a redirect, overwrite the Authority/Host portion of the URL with this value. |
derivePort | string (enum):FROM_PROTOCOL_DEFAULT FROM_REQUEST_PORT
| On a redirect, dynamically set the port: * FROM_PROTOCOL_DEFAULT: automatically set to 80 for HTTP and 443 for HTTPS.
+
+Valid Options: FROM_PROTOCOL_DEFAULT, FROM_REQUEST_PORT |
port | integer | On a redirect, overwrite the port portion of the URL with this value. |
redirectCode | integer | On a redirect, Specifies the HTTP status code to use in the redirect response. |
scheme | string | On a redirect, overwrite the scheme portion of the URL with this value. |
uri | string | On a redirect, overwrite the Path portion of the URL with this value. |
+
+
+
+
+
+
+
+###### Retries
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ attempts | integer | Number of retries to be allowed for a given request. |
perTryTimeout | string | Timeout per attempt for a given request, including the initial call and any retries. |
retryOn | string | Specifies the conditions under which retry takes place. |
retryRemoteLocalities | boolean | Flag to specify whether the retries should retry to other localities. |
+
+
+
+
+
+
+
+###### Rewrite
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ authority | string | rewrite the Authority/Host header with this value. |
uri | string | rewrite the path (or the prefix) portion of the URI with this value. |
uriRegexRewrite | UriRegexRewrite | rewrite the path portion of the URI with the specified regex. |
+
+
+
+
+
+
+
+###### UriRegexRewrite
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ match | string | RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). |
rewrite | string | The string that should replace into matching portions of original URI. |
+
+
+
+
+
+
+
+##### Match
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ ignoreUriCase | boolean | Flag to specify whether the URI matching should be case-insensitive. |
method | Method | |
name | string | The name assigned to a match. |
queryParams | | Query parameters for matching. |
uri | Uri | |
+
+
+
+
+
+
+
+###### Method
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ exact | string | |
prefix | string | |
regex | string | RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). |
+
+
+
+
+
+
+
+###### Uri
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ exact | string | |
prefix | string | |
regex | string | RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax). |
+
+
+
+
+
+
+
+### Sso
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ alwaysDisplayInConsole | boolean | Always list this client in the Account UI, even if the user does not have an active session. |
attributes | | Specifies attributes for the client. |
clientAuthenticatorType | string (enum): | The client authenticator type |
clientId | string | The client identifier registered with the identity provider. |
defaultClientScopes | string[] | Default client scopes |
description | string | A description for the client, can be a URL to an image to replace the login logo |
enableAuthserviceSelector | | Labels to match pods to automatically protect with authservice. Leave empty to disable authservice protection |
enabled | boolean | Whether the SSO client is enabled |
groups | Groups | The client SSO group type |
name | string | Specifies display name of the client |
protocol | string (enum): | Specifies the protocol of the client, either 'openid-connect' or 'saml' |
protocolMappers | ProtocolMappers[] | Protocol Mappers to configure on the client |
publicClient | boolean | Defines whether the client requires a client secret for authentication |
redirectUris | string[] | Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'https://unicorns.uds.dev/*' |
rootUrl | string | Root URL appended to relative URLs |
secret | string | The client secret. Typically left blank and auto-generated. |
secretName | string | The name of the secret to store the client secret |
secretTemplate | | A template for the generated secret |
serviceAccountsEnabled | boolean | Enables the client credentials grant based authentication via OpenID Connect protocol. |
standardFlowEnabled | boolean | Enables the standard OpenID Connect redirect based authentication with authorization code. |
webOrigins | string[] | Allowed CORS origins. To permit all origins of Valid Redirect URIs, add '+'. This does not include the '*' wildcard though. To permit all origins, explicitly add '*'. |
+
+
+
+
+
+
+
+#### Groups
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ anyOf | string[] | List of groups allowed to access the client |
+
+
+
+
+
+
+
+#### ProtocolMappers
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ config | | Configuration options for the mapper. |
consentRequired | boolean | Whether user consent is required for this mapper |
name | string | Name of the mapper |
protocol | string (enum): | Protocol of the mapper |
protocolMapper | string | Protocol Mapper type of the mapper |
+
+
+
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index dd7b49ee3..2d2fc4558 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -35,12 +35,12 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
- "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz",
+ "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.24.7",
+ "@babel/highlight": "^7.25.7",
"picocolors": "^1.0.0"
},
"engines": {
@@ -48,30 +48,30 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz",
- "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz",
+ "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
- "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz",
+ "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.0",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-module-transforms": "^7.25.2",
- "@babel/helpers": "^7.25.0",
- "@babel/parser": "^7.25.0",
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.2",
- "@babel/types": "^7.25.2",
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/helper-compilation-targets": "^7.25.7",
+ "@babel/helper-module-transforms": "^7.25.7",
+ "@babel/helpers": "^7.25.7",
+ "@babel/parser": "^7.25.8",
+ "@babel/template": "^7.25.7",
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.8",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -96,29 +96,29 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
- "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz",
+ "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.25.6",
+ "@babel/types": "^7.25.7",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
+ "jsesc": "^3.0.2"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
- "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz",
+ "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.25.2",
- "@babel/helper-validator-option": "^7.24.8",
- "browserslist": "^4.23.1",
+ "@babel/compat-data": "^7.25.7",
+ "@babel/helper-validator-option": "^7.25.7",
+ "browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
},
@@ -136,28 +136,28 @@
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
- "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz",
+ "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==",
"dev": true,
"dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
- "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz",
+ "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==",
"dev": true,
"dependencies": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-simple-access": "^7.24.7",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.2"
+ "@babel/helper-module-imports": "^7.25.7",
+ "@babel/helper-simple-access": "^7.25.7",
+ "@babel/helper-validator-identifier": "^7.25.7",
+ "@babel/traverse": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -167,74 +167,74 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
- "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz",
+ "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-simple-access": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
- "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz",
+ "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==",
"dev": true,
"dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
- "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz",
+ "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
- "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz",
+ "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
- "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz",
+ "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz",
- "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz",
+ "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.6"
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
- "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz",
+ "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.25.7",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
@@ -315,12 +315,12 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
- "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz",
+ "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.25.6"
+ "@babel/types": "^7.25.8"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -381,12 +381,12 @@
}
},
"node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz",
- "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz",
+ "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
+ "@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -420,12 +420,12 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz",
- "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz",
+ "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -537,12 +537,12 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz",
- "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz",
+ "integrity": "sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
+ "@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -552,30 +552,30 @@
}
},
"node_modules/@babel/template": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
- "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz",
+ "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/parser": "^7.25.0",
- "@babel/types": "^7.25.0"
+ "@babel/code-frame": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/types": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz",
- "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.6",
- "@babel/parser": "^7.25.6",
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.6",
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -593,13 +593,13 @@
}
},
"node_modules/@babel/types": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
- "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz",
+ "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==",
"dev": true,
"dependencies": {
- "@babel/helper-string-parser": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/helper-string-parser": "^7.25.7",
+ "@babel/helper-validator-identifier": "^7.25.7",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -1012,9 +1012,9 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
- "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
+ "version": "4.11.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
+ "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
"peer": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
@@ -1896,9 +1896,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "22.5.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz",
- "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
+ "version": "22.7.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.6.tgz",
+ "integrity": "sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==",
"dependencies": {
"undici-types": "~6.19.2"
}
@@ -1917,7 +1917,6 @@
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.9.tgz",
"integrity": "sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@types/node": "*",
@@ -1928,7 +1927,6 @@
"version": "0.30.2",
"resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz",
"integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==",
- "license": "MIT",
"dependencies": {
"types-ramda": "^0.30.1"
}
@@ -2486,7 +2484,6 @@
"version": "1.20.3",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
"integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
- "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"content-type": "~1.0.5",
@@ -2510,7 +2507,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -2518,8 +2514,7 @@
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT"
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/brace-expansion": {
"version": "2.0.1",
@@ -2546,9 +2541,9 @@
"integrity": "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ=="
},
"node_modules/browserslist": {
- "version": "4.23.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
- "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz",
+ "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==",
"dev": true,
"funding": [
{
@@ -2565,8 +2560,8 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001646",
- "electron-to-chromium": "^1.5.4",
+ "caniuse-lite": "^1.0.30001663",
+ "electron-to-chromium": "^1.5.28",
"node-releases": "^2.0.18",
"update-browserslist-db": "^1.1.0"
},
@@ -2640,7 +2635,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -2649,7 +2643,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
- "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -2682,9 +2675,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001659",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001659.tgz",
- "integrity": "sha512-Qxxyfv3RdHAfJcXelgf0hU4DFUVXBGTjqrBUZLUh8AtlGnsDo+CnncYtTd95+ZKfnANUOzxyIQCuU/UeBZBYoA==",
+ "version": "1.0.30001668",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz",
+ "integrity": "sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==",
"dev": true,
"funding": [
{
@@ -2923,7 +2916,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -3047,7 +3039,6 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
- "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -3073,7 +3064,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -3082,7 +3072,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "license": "MIT",
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
@@ -3139,8 +3128,7 @@
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
- "license": "MIT"
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/ejs": {
"version": "3.1.10",
@@ -3158,9 +3146,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.18",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.18.tgz",
- "integrity": "sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==",
+ "version": "1.5.38",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.38.tgz",
+ "integrity": "sha512-VbeVexmZ1IFh+5EfrYz1I0HTzHVIlJa112UEWhciPyeOcKJGeTv6N8WnG4wsQB81DGCaVEGhpSb6o6a8WYFXXg==",
"dev": true
},
"node_modules/emittery": {
@@ -3185,7 +3173,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -3223,7 +3210,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
- "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.2.4"
},
@@ -3235,7 +3221,6 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -3290,8 +3275,7 @@
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
- "license": "MIT"
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"node_modules/escape-string-regexp": {
"version": "4.0.0",
@@ -3309,6 +3293,7 @@
"version": "8.57.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
"integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
@@ -3486,7 +3471,6 @@
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -3750,7 +3734,6 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
"integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
- "license": "MIT",
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~2.0.0",
@@ -3768,7 +3751,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -3776,8 +3758,7 @@
"node_modules/finalhandler/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT"
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/find-up": {
"version": "5.0.0",
@@ -3874,7 +3855,6 @@
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -3924,9 +3904,9 @@
}
},
"node_modules/get-east-asian-width": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz",
- "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
"dev": true,
"engines": {
"node": ">=18"
@@ -3939,7 +3919,6 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
- "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
@@ -4066,7 +4045,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.1.3"
},
@@ -4098,7 +4076,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
- "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0"
},
@@ -4110,7 +4087,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
- "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -4122,7 +4098,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -4156,7 +4131,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "license": "MIT",
"dependencies": {
"depd": "2.0.0",
"inherits": "2.0.4",
@@ -4187,7 +4161,6 @@
"resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz",
"integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==",
"dev": true,
- "license": "MIT",
"bin": {
"husky": "bin.js"
},
@@ -4202,7 +4175,6 @@
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -5140,15 +5112,15 @@
}
},
"node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
"dev": true,
"bin": {
"jsesc": "bin/jsesc"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
"node_modules/json-buffer": {
@@ -5256,7 +5228,6 @@
"version": "4.26.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz",
"integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==",
- "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
},
@@ -5478,9 +5449,9 @@
}
},
"node_modules/listr2": {
- "version": "8.2.4",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz",
- "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==",
+ "version": "8.2.5",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz",
+ "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==",
"dev": true,
"dependencies": {
"cli-truncate": "^4.0.0",
@@ -5673,7 +5644,6 @@
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -5682,7 +5652,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
"integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
- "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
@@ -5726,7 +5695,6 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "license": "MIT",
"bin": {
"mime": "cli.js"
},
@@ -5969,7 +5937,6 @@
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
"integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
- "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -5998,7 +5965,6 @@
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "license": "MIT",
"dependencies": {
"ee-first": "1.1.1"
},
@@ -6162,7 +6128,6 @@
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -6231,8 +6196,7 @@
"node_modules/path-to-regexp": {
"version": "0.1.10",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
- "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
- "license": "MIT"
+ "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w=="
},
"node_modules/path-type": {
"version": "4.0.0",
@@ -6550,9 +6514,9 @@
}
},
"node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
+ "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -6587,7 +6551,6 @@
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
"integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
- "license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.0.6"
},
@@ -6663,7 +6626,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -6672,7 +6634,6 @@
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
- "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
@@ -6916,8 +6877,7 @@
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "license": "MIT"
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/secure-json-parse": {
"version": "2.7.0",
@@ -6939,7 +6899,6 @@
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
"integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
- "license": "MIT",
"dependencies": {
"debug": "2.6.9",
"depd": "2.0.0",
@@ -6963,7 +6922,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -6971,14 +6929,12 @@
"node_modules/send/node_modules/debug/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT"
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/send/node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -6987,7 +6943,6 @@
"version": "1.16.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
"integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
- "license": "MIT",
"dependencies": {
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
@@ -7002,7 +6957,6 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
- "license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -7018,8 +6972,7 @@
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "license": "ISC"
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"node_modules/shebang-command": {
"version": "2.0.0",
@@ -7044,7 +6997,6 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
- "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@@ -7106,9 +7058,9 @@
}
},
"node_modules/sonic-boom": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.1.0.tgz",
- "integrity": "sha512-NGipjjRicyJJ03rPiZCJYjwlsuP2d1/5QUviozRXC7S3WdVWNK5e3Ojieb9CCyfhq2UC+3+SRd9nG3I2lPRvUw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz",
+ "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==",
"dependencies": {
"atomic-sleep": "^1.0.0"
}
@@ -7172,7 +7124,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -7512,7 +7463,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -7539,7 +7489,6 @@
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz",
"integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"bs-logger": "^0.2.6",
"ejs": "^3.1.10",
@@ -7631,7 +7580,6 @@
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "license": "MIT",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
@@ -7693,15 +7641,14 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/update-browserslist-db": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
- "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
"dev": true,
"funding": [
{
@@ -7718,8 +7665,8 @@
}
],
"dependencies": {
- "escalade": "^3.1.2",
- "picocolors": "^1.0.1"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
},
"bin": {
"update-browserslist-db": "cli.js"
diff --git a/src/pepr/docs-gen/main.ts b/src/pepr/docs-gen/main.ts
new file mode 100644
index 000000000..de8081786
--- /dev/null
+++ b/src/pepr/docs-gen/main.ts
@@ -0,0 +1,207 @@
+// Copyright 2024 Defense Unicorns
+// SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial
+import * as fs from "fs/promises";
+import * as path from "path";
+
+// Constants for styling and configuration
+const INDENT_SIZE = 20;
+const MAX_HEADER_LEVEL = 6;
+const MAX_DEPTH = 10;
+const OUTPUT_DIR = "./docs/reference/configuration/custom-resources/";
+const TABLE_STYLE = 'style="width: 100%; table-layout: fixed;"';
+
+// Utility to capitalize the first letter of a string
+const capitalizeFirstLetter = (text: string): string =>
+ text.charAt(0).toUpperCase() + text.slice(1);
+
+// Helper to format a field row (avoiding extra spacing)
+const formatRow = (field: string, type: string, description: string): string =>
+ `${field} | ${type} | ${description} |
`;
+
+// Helper function to generate a header level (capped at MAX_HEADER_LEVEL)
+const getHeaderLevel = (depth: number): string => "#".repeat(Math.min(depth, MAX_HEADER_LEVEL));
+
+/**
+ * Generates a Markdown table with sections and indentation (non-collapsible)
+ */
+function generateTable(title: string, rows: string[], currentDepth: number): string {
+ const capitalizedTitle = capitalizeFirstLetter(title);
+ const headerLevel = getHeaderLevel(currentDepth);
+ const indentStyle = `style="margin-left: ${currentDepth * INDENT_SIZE}px; padding-top: 30px;"`;
+
+ return `
+
+
+
+${headerLevel} ${capitalizedTitle}
+
+
+
+ Field |
+ Type |
+ Description |
+
+
+
+ ${rows.join("")}
+
+
+
+`;
+}
+
+// Helper to handle arrays
+function handleArray(
+ schema: SchemaProperty,
+ field: string,
+ currentDepth: number,
+): { type: string; markdown: string } {
+ let type = "";
+ let markdown = "";
+
+ const capitalizedField = capitalizeFirstLetter(field);
+ if (schema.items?.enum) {
+ type = `${capitalizedField}[] (enum):${schema.items.enum.map((value: string) => `${value}
`).join("")}
`;
+ } else if (schema.items?.properties) {
+ type = `${capitalizedField}[]`;
+ markdown = generateMarkdownFromSchema(schema.items.properties, field, currentDepth + 1);
+ } else if (schema.items?.type) {
+ type = `${schema.items.type}[]`;
+ }
+
+ return { type, markdown };
+}
+
+// Helper to handle objects
+function handleObject(
+ schema: SchemaProperty,
+ field: string,
+ currentDepth: number,
+): { type: string; markdown: string } {
+ let type = "";
+ let markdown = "";
+
+ if (schema.properties) {
+ const capitalizedField = capitalizeFirstLetter(field);
+ type = `${capitalizedField}`;
+ markdown = generateMarkdownFromSchema(schema.properties, field, currentDepth + 1);
+ }
+
+ return { type, markdown };
+}
+
+// Recursive function to walk through the schema and generate tables with nested indentation
+function generateMarkdownFromSchema(
+ properties: Record,
+ title: string,
+ currentDepth: number,
+): string {
+ let markdown = "";
+ const rows: string[] = [];
+
+ // Stop recursion if the current depth exceeds the max depth
+ if (currentDepth > MAX_DEPTH) return "";
+
+ for (const [field, schema] of Object.entries(properties)) {
+ // Skip the 'status' object
+ if (field.toLowerCase() === "status") continue;
+
+ let type = schema.type || "object";
+ const description = schema.description || "";
+ let childMarkdown = "";
+
+ if (type === "array") {
+ const result = handleArray(schema, field, currentDepth);
+ type = result.type;
+ childMarkdown = result.markdown;
+ }
+
+ if (type === "object") {
+ const result = handleObject(schema, field, currentDepth);
+ type = result.type;
+ childMarkdown = result.markdown;
+ }
+
+ if (schema.enum) {
+ type += ` (enum):${schema.enum.map((value: string) => `${value}
`).join("")}
`;
+ }
+
+ rows.push(formatRow(field, type, description));
+ markdown += childMarkdown;
+ }
+
+ // Generate the table for this level, and add a new line at the end for proper formatting
+ markdown = generateTable(title, rows, currentDepth) + markdown;
+ return markdown;
+}
+
+// Function to start the Markdown generation process
+async function generateMarkdown(jsonSchema: JsonSchema, version: string, schemaFile: string) {
+ const title = extractTitleFromFilename(schemaFile);
+
+ // Start generating markdown from the root `properties`
+ if (!jsonSchema.properties) throw new Error("The schema does not contain a 'properties' object.");
+
+ const markdownContent = `---
+title: ${title} CR (${version})
+tableOfContents:
+ maxHeadingLevel: 6
+---
+${generateMarkdownFromSchema(jsonSchema.properties, `${title}`, 1).trim()}`;
+
+ const outputFilename = path.join(OUTPUT_DIR, generateOutputFilename(schemaFile, version));
+
+ // Ensure output directory exists and write markdown file
+ await fs.mkdir(path.dirname(outputFilename), { recursive: true });
+ await fs.writeFile(outputFilename, markdownContent);
+
+ console.log(`Documentation generated at: ${outputFilename}`);
+}
+
+// Utility to extract title from filename
+function extractTitleFromFilename(filename: string): string {
+ const baseName = path.basename(filename, path.extname(filename));
+ const titlePart = baseName.split(".")[0]; // Split at the first dot and take the first part
+ return capitalizeFirstLetter(titlePart);
+}
+
+// Utility to generate output filename
+function generateOutputFilename(schemaFile: string, version: string): string {
+ const baseName = path.basename(schemaFile, path.extname(schemaFile));
+ const titlePart = baseName.split(".")[0]; // Use only the first part before the dot
+ return `${titlePart}-${version}-cr.md`;
+}
+
+// Main execution
+async function main() {
+ const [jsonSchemaPath, version] = process.argv.slice(2);
+
+ if (!jsonSchemaPath || !version) {
+ console.error("Usage: ts-node main.ts ");
+ process.exit(1);
+ }
+
+ try {
+ const fileContent = await fs.readFile(jsonSchemaPath, "utf-8");
+ const jsonSchema: JsonSchema = JSON.parse(fileContent);
+ await generateMarkdown(jsonSchema, version, jsonSchemaPath);
+ } catch (error) {
+ console.error("Error:", error);
+ }
+}
+
+main().catch(console.error);
+
+// TypeScript interface for JSON Schema properties
+interface SchemaProperty {
+ type?: string;
+ description?: string;
+ enum?: string[];
+ $ref?: string; // Reference to another schema definition
+ items?: SchemaProperty; // For arrays, defines the item type
+ properties?: Record; // Nested object properties
+}
+
+interface JsonSchema {
+ properties?: Record;
+}
diff --git a/src/pepr/tasks.yaml b/src/pepr/tasks.yaml
index 15f3e123f..44db43117 100644
--- a/src/pepr/tasks.yaml
+++ b/src/pepr/tasks.yaml
@@ -5,16 +5,34 @@ tasks:
- name: validate
actions:
- cmd: "npx jest src/pepr/**/"
-
- name: gen-crds
description: "Generate CRDS, requires a running kubernetes cluster"
actions:
- cmd: npx ts-node -e "import { registerCRDs } from './src/pepr/operator/crd/register'; registerCRDs()"
env:
- "PEPR_MODE=dev"
-
- cmd: "npx kubernetes-fluent-client crd packages.uds.dev src/pepr/operator/crd/generated"
- cmd: "npx kubernetes-fluent-client crd exemptions.uds.dev src/pepr/operator/crd/generated"
+ - task: gen-docs
+
- cmd: "npx pepr format"
+
+ - name: gen-docs
+ description: "Generate Docs for generated CRDS, requires a running kubernetes cluster"
+ actions:
+ - cmd: |
+ # Define CRD list as a space-separated string
+ CRD_LIST="exemptions.uds.dev packages.uds.dev"
+ # For each CRD retrieve the CRD and create a Go struct file to then create a markdown file
+ for CRD in $CRD_LIST; do
+ # Retrieve CRD Json from Cluster
+ kubectl get crd $CRD -o json | jq '.spec.versions[] | select(.name == "v1alpha1").schema.openAPIV3Schema' >> $CRD-crd.json
+ # Extract the version (e.g., v1alpha1)
+ version=$(kubectl get crd $CRD -o json | jq -r '.status.storedVersions[0]')
+ # Typescript format markdown
+ npx ts-node src/pepr/docs-gen/main.ts "$CRD-crd.json" "$version"
+ # Remove the json and go files
+ rm -f "$CRD-crd.json"
+ done
diff --git a/tasks/lint.yaml b/tasks/lint.yaml
index ecce5fe3c..12a2d62a6 100644
--- a/tasks/lint.yaml
+++ b/tasks/lint.yaml
@@ -1,7 +1,6 @@
# Copyright 2024 Defense Unicorns
# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial
-
includes:
- remote: https://raw.githubusercontent.com/defenseunicorns/uds-common/v1.1.0/tasks/lint.yaml