diff --git a/.github/workflows/create-release.yaml b/.github/workflows/create-release.yaml index 0743d1580c..f20dd78394 100644 --- a/.github/workflows/create-release.yaml +++ b/.github/workflows/create-release.yaml @@ -274,13 +274,17 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - COMMIT_SHA=$(gh api repos/${{ env.KYMA_ENVIRONMENT_BROKER_REPO }}/commits -q '.[1].sha') - echo "Latest commit sha: $COMMIT_SHA" - echo "Bump sha: ${{ github.sha }}" - if [ "$COMMIT_SHA" != "${{ github.sha }}" ]; then - echo "::error ::a PR have been merged before merging the bump PR. Don't rerun this workflow. Create a new release with the same version" - exit 1 + if [ "$PR_NUMBER" -gt 0 ]; then + COMMIT_SHA=$(gh api repos/${{ env.KYMA_ENVIRONMENT_BROKER_REPO }}/commits -q '.[1].sha') + echo "Latest commit sha: $COMMIT_SHA" + echo "Bump sha: ${{ github.sha }}" + if [ "$COMMIT_SHA" != "${{ github.sha }}" ]; then + echo "::error ::a PR have been merged before merging the bump PR. Don't rerun this workflow. Create a new release with the same version" + exit 1 fi + else + echo "Step skipped" + fi - name: Save latest commit ref id: pull-ref diff --git a/.github/workflows/promote-keb-to-dev.yaml b/.github/workflows/promote-keb-to-dev.yaml index 4ad7afe627..47d10a8e30 100644 --- a/.github/workflows/promote-keb-to-dev.yaml +++ b/.github/workflows/promote-keb-to-dev.yaml @@ -92,7 +92,7 @@ jobs: - name: Check changes working-directory: management-plane-charts run: | - changes=$(git diff --shortstat) + changes=$(git diff --ignore-all-space --shortstat) echo "$changes" if [[ "$changes" != *"3 insertions(+), 3 deletions(-)"* ]]; then echo "Expected 3 insertions and 3 deletions, but found different changes." @@ -120,4 +120,4 @@ jobs: echo "PR already exists, no need to create new one" exit 0 fi - gh pr create -B chart/keb-sap --title "Bump keb to ${TAG}" --fill --body "${{env.KEB_RELEASES_URL }}/${TAG}" + gh pr create -B chart/keb-sap -H ${BRANCH_NAME} -R https://${{ vars.GH_TOOLS_HOST }}/kyma/${{ vars.MP_CHARTS_REPO_NAME }}/ --title "Bump keb to ${TAG}" --fill --body "${{env.KEB_RELEASES_URL }}/${TAG}" diff --git a/docs/contributor/03-10-hyperscaler-account-pool.md b/docs/contributor/03-10-hyperscaler-account-pool.md index 4b408946b6..bc9ed01b32 100644 --- a/docs/contributor/03-10-hyperscaler-account-pool.md +++ b/docs/contributor/03-10-hyperscaler-account-pool.md @@ -2,7 +2,7 @@ To provision clusters through Gardener using Runtime Provisioner, Kyma Environment Broker (KEB) requires a hyperscaler (GCP, Azure, AWS, etc.) account/subscription. Managing the available hyperscaler accounts is not in the scope of KEB. Instead, the available accounts are handled by Hyperscaler Account Pool (HAP). -HAP stores credentials for the hyperscaler accounts that have been set up in advance in Kubernetes Secrets. The credentials are stored separately for each provider and tenant. The content of the credentials Secrets may vary for different use cases. The Secrets are labeled with the **hyperscaler-type** and **tenant-name** labels to manage pools of credentials for use by the provisioning process. This way, the in-use credentials and unassigned credentials available for use are tracked. Only the **hyperscaler-type** label is added during Secret creation, and the **tenant-name** label is added when the account respective for a given Secret is claimed. The content of the Secrets is opaque to HAP. +HAP stores credentials for the hyperscaler accounts that have been set up in advance in Kubernetes Secrets. The credentials are stored separately for each provider and tenant. The content of the credentials Secrets may vary for different use cases. The Secrets are labeled with the **hyperscalerType** and **tenantName** labels to manage pools of credentials for use by the provisioning process. This way, the in-use credentials and unassigned credentials available for use are tracked. Only the **hyperscalerType** label is added during Secret creation, and the **tenantName** label is added when the account respective for a given Secret is claimed. The content of the Secrets is opaque to HAP. The Secrets are stored in a Gardener seed cluster pointed to by HAP. They are available within a given Gardener project specified in the KEB and Runtime Provisioner configuration. This configuration uses a `kubeconfig` that gives KEB and Runtime Provisioner access to a specific Gardener seed cluster, which, in turn, enables access to those Secrets. @@ -10,8 +10,8 @@ This diagram shows the HAP workflow: ![hap-workflow](../assets/hap-flow.drawio.svg) -Before a new cluster is provisioned, KEB queries for a Secret based on the **tenant-name** and **hyperscaler-type** labels. -If a Secret is found, KEB uses the credentials stored in this Secret. If a matching Secret is not found, KEB queries again for an unassigned Secret for a given hyperscaler and adds the **tenant-name** label to claim the account and use the credentials for provisioning. +Before a new cluster is provisioned, KEB queries for a Secret based on the **tenantName** and **hyperscalerType** labels. +If a Secret is found, KEB uses the credentials stored in this Secret. If a matching Secret is not found, KEB queries again for an unassigned Secret for a given hyperscaler and adds the **tenantName** label to claim the account and use the credentials for provisioning. One tenant can use only one account per given hyperscaler type. @@ -23,9 +23,9 @@ kind: Secret metadata: name: {SECRET_NAME} labels: - # tenant-name is omitted for new, not yet claimed account credentials - tenant-name: {TENANT_NAME} - hyperscaler-type: {HYPERSCALER_TYPE} + # tenantName is omitted for new, not yet claimed account credentials + tenantName: {TENANT_NAME} + hyperscalerType: {HYPERSCALER_TYPE} ``` ## Shared Credentials @@ -43,7 +43,7 @@ kind: Secret metadata: name: {SECRET_NAME} labels: - hyperscaler-type: {HYPERSCALER_TYPE} + hyperscalerType: {HYPERSCALER_TYPE} shared: "true" ``` @@ -61,16 +61,16 @@ kind: Secret metadata: name: {SECRET_NAME} labels: - # tenant-name is omitted for new, not yet claimed account credentials - tenant-name: {TENANT_NAME} - hyperscaler-type: {HYPERSCALER_TYPE} + # tenantName is omitted for new, not yet claimed account credentials + tenantName: {TENANT_NAME} + hyperscalerType: {HYPERSCALER_TYPE} euAccess: "true" ``` ## Assured Workloads SAP BTP, Kyma runtime supports the BTP cf-sa30 GCP subaccount region. This region uses the Assured Workloads Kingdom of Saudi Arabia (KSA) control package. Kyma Control Plane manages cf-sa30 Kyma runtimes in a separate -Google Cloud hyperscaler account pool. The Secret contains the label **hyperscaler-type** set to `gcp_cf-sa30`. The following is an example of a Secret that uses the Assured Workloads KSA control package: +Google Cloud hyperscaler account pool. The Secret contains the label **hyperscalerType** set to `gcp_cf-sa30`. The following is an example of a Secret that uses the Assured Workloads KSA control package: ```yaml apiVersion: v1 @@ -78,7 +78,7 @@ kind: Secret metadata: name: {SECRET_NAME} labels: - # tenant-name is omitted for new, not yet claimed account credentials - tenant-name: {TENANT_NAME} - hyperscaler-type: "gcp_cf-sa30" + # tenantName is omitted for new, not yet claimed account credentials + tenantName: {TENANT_NAME} + hyperscalerType: "gcp_cf-sa30" ``` diff --git a/docs/user/03-10-service-description.md b/docs/user/03-10-service-description.md index 4663fadc4a..655313bbfb 100644 --- a/docs/user/03-10-service-description.md +++ b/docs/user/03-10-service-description.md @@ -72,16 +72,18 @@ These are the provisioning parameters for Azure that you can configure: -| Parameter name | Type | Description | Required | Default value | -|-------------------------------------------|--------|-------------------------------------------------------------------------------------|:--------:|-------------------| -| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `Standard_D2s_v5` | -| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `50` | -| **region** | string | Defines the cluster region. | Yes | None | -| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["1"]` | -| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `2` | -| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create, up to `40` allowed. | No | `10` | -| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | -| **maxUnavailable[1](#update)** | int | Specifies the maximum number of VMs that can be unavailable during an update. | No | `1` | +| Parameter name | Type | Description | Required | Default value | +|------------------------------------------------------------------------------------------------------|--------|-------------------------------------------------------------------------------------|:--------:|-------------------| +| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `Standard_D2s_v5` | +| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `50` | +| **region** | string | Defines the cluster region. | Yes | None | +| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["1"]` | +| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `2` | +| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create, up to `40` allowed. | No | `10` | +| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | +| **maxUnavailable[1](#update)** | int | Specifies the maximum number of VMs that can be unavailable during an update. | No | `1` | +| **additionalWorkerNodePools.list[1](#update) [2](#not_supported)** | array | Defines a custom list of additional worker node pools | No | None | +| **additionalWorkerNodePools.skipModification[1](#update) [2](#not_supported)** | bool | Defines whether to skip modification of additional worker node pools | No | None | @@ -93,16 +95,18 @@ These are the provisioning parameters for Azure that you can configure: -| Parameter name | Type | Description | Required | Default value | -|-------------------------------------------|--------|-------------------------------------------------------------------------------------|:--------:|-------------------| -| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `Standard_D4s_v5` | -| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `50` | -| **region** | string | Defines the cluster region. | Yes | None | -| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["1"]` | -| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `2` | -| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create, up to `40` allowed. | No | `10` | -| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | -| **maxUnavailable[1](#update)** | int | Specifies the maximum number of VMs that can be unavailable during an update. | No | `1` | +| Parameter name | Type | Description | Required | Default value | +|------------------------------------------------------------------------------------------------------|--------|-------------------------------------------------------------------------------------|:--------:|-------------------| +| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `Standard_D4s_v5` | +| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `50` | +| **region** | string | Defines the cluster region. | Yes | None | +| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["1"]` | +| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `2` | +| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create, up to `40` allowed. | No | `10` | +| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | +| **maxUnavailable[1](#update)** | int | Specifies the maximum number of VMs that can be unavailable during an update. | No | `1` | +| **additionalWorkerNodePools.list[1](#update) [2](#not_supported)** | array | Defines a custom list of additional worker node pools | No | None | +| **additionalWorkerNodePools.skipModification[1](#update) [2](#not_supported)** | bool | Defines whether to skip modification of additional worker node pools | No | None | @@ -118,16 +122,18 @@ These are the provisioning parameters for AWS that you can configure: -| Parameter name | Type | Description | Required | Default value | -|-------------------------------------------|--------|--------------------------------------------------------------------------------------------|:--------:|---------------| -| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `m6i.large` | -| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `50` | -| **region** | string | Defines the cluster region. | Yes | None | -| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["1"]` | -| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `3` | -| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create, up to `40` allowed. | No | `10` | -| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | -| **maxUnavailable[1](#update)** | int | Specifies the maximum number of virtual machines that can be unavailable during an update. | No | `1` | +| Parameter name | Type | Description | Required | Default value | +|------------------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------------------|:--------:|---------------| +| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `m6i.large` | +| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `50` | +| **region** | string | Defines the cluster region. | Yes | None | +| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["1"]` | +| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `3` | +| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create, up to `40` allowed. | No | `10` | +| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | +| **maxUnavailable[1](#update)** | int | Specifies the maximum number of virtual machines that can be unavailable during an update. | No | `1` | +| **additionalWorkerNodePools.list[1](#update) [2](#not_supported)** | array | Defines a custom list of additional worker node pools | No | None | +| **additionalWorkerNodePools.skipModification[1](#update) [2](#not_supported)** | bool | Defines whether to skip modification of additional worker node pools | No | None | @@ -144,16 +150,18 @@ These are the provisioning parameters for GCP that you can configure: -| Parameter name | Type | Description | Required | Default value | -|-------------------------------------------|--------|-------------------------------------------------------------------------------------|:--------:|-----------------| -| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `n2-standard-2` | -| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `30` | -| **region** | string | Defines the cluster region. | Yes | None | -| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["a"]` | -| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `3` | -| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create. | No | `4` | -| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | -| **maxUnavailable[1](#update)** | int | Specifies the maximum number of VMs that can be unavailable during an update. | No | `1` | +| Parameter name | Type | Description | Required | Default value | +|------------------------------------------------------------------------------------------------------|--------|-------------------------------------------------------------------------------------|:--------:|-----------------| +| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `n2-standard-2` | +| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `30` | +| **region** | string | Defines the cluster region. | Yes | None | +| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["a"]` | +| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `3` | +| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create. | No | `4` | +| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | +| **maxUnavailable[1](#update)** | int | Specifies the maximum number of VMs that can be unavailable during an update. | No | `1` | +| **additionalWorkerNodePools.list[1](#update) [2](#not_supported)** | array | Defines a custom list of additional worker node pools | No | None | +| **additionalWorkerNodePools.skipModification[1](#update) [2](#not_supported)** | bool | Defines whether to skip modification of additional worker node pools | No | None | @@ -170,16 +178,18 @@ These are the provisioning parameters for SapConvergedCloud that you can configu -| Parameter name | Type | Description | Required | Default value | -|-------------------------------------------|--------|--------------------------------------------------------------------------------------------|:--------:|---------------| -| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `g_c2_m8` | -| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `30` | -| **region** | string | Defines the cluster region. | Yes | None | -| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["a"]` | -| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `3` | -| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create. | No | `20` | -| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | -| **maxUnavailable[1](#update)** | int | Specifies the maximum number of virtual machines that can be unavailable during an update. | No | `1` | +| Parameter name | Type | Description | Required | Default value | +|-------------------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------------------|:--------:|---------------| +| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `g_c2_m8` | +| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `30` | +| **region** | string | Defines the cluster region. | Yes | None | +| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["a"]` | +| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `3` | +| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create. | No | `20` | +| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | +| **maxUnavailable[1](#update)** | int | Specifies the maximum number of virtual machines that can be unavailable during an update. | No | `1` | +| **additionalWorkerNodePools.list[1](#update) [2](#not_supported)** | array | Defines a custom list of additional worker node pools | No | None | +| **additionalWorkerNodePools.skipModification[1](#update) [2](#not_supported)** | bool | Defines whether to skip modification of additional worker node pools | No | None | @@ -261,16 +271,18 @@ These are the provisioning parameters for the `preview` plan that you configure: -| Parameter name | Type | Description | Required | Default value | -|-------------------------------------------|--------|--------------------------------------------------------------------------------------------|:--------:|---------------| -| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `m6i.large` | -| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `50` | -| **region** | string | Defines the cluster region. | Yes | None | -| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["1"]` | -| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `3` | -| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create, up to `40` allowed. | No | `10` | -| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | -| **maxUnavailable[1](#update)** | int | Specifies the maximum number of virtual machines that can be unavailable during an update. | No | `1` | +| Parameter name | Type | Description | Required | Default value | +|------------------------------------------------------------------------------------------------------|--------|--------------------------------------------------------------------------------------------|:--------:|---------------| +| **machineType** | string | Specifies the provider-specific virtual machine type. | No | `m6i.large` | +| **volumeSizeGb** | int | Specifies the size of the root volume. | No | `50` | +| **region** | string | Defines the cluster region. | Yes | None | +| **zones** | string | Defines the list of zones in which Runtime Provisioner creates a cluster. | No | `["1"]` | +| **autoScalerMin[1](#update)** | int | Specifies the minimum number of virtual machines to create. | No | `3` | +| **autoScalerMax[1](#update)** | int | Specifies the maximum number of virtual machines to create, up to `40` allowed. | No | `10` | +| **maxSurge[1](#update)** | int | Specifies the maximum number of virtual machines that are created during an update. | No | `4` | +| **maxUnavailable[1](#update)** | int | Specifies the maximum number of virtual machines that can be unavailable during an update. | No | `1` | +| **additionalWorkerNodePools.list[1](#update) [2](#not_supported)** | array | Defines a custom list of additional worker node pools | No | None | +| **additionalWorkerNodePools.skipModification[1](#update) [2](#not_supported)** | bool | Defines whether to skip modification of additional worker node pools | No | None | @@ -278,3 +290,5 @@ These are the provisioning parameters for the `preview` plan that you configure:
1 This parameter is available for PATCH as well, and can be updated with the same constraints as during provisioning. +
+2 This parameter is not yet supported. diff --git a/docs/user/04-40-additional-worker-node-pools.md b/docs/user/04-40-additional-worker-node-pools.md new file mode 100644 index 0000000000..bcf3634343 --- /dev/null +++ b/docs/user/04-40-additional-worker-node-pools.md @@ -0,0 +1,172 @@ +# Additional Worker Node Pools + +> [!NOTE] +> This feature is still being developed and will be available soon. + +To create an SAP BTP, Kyma runtime with additional worker node pools, specify the `additionalWorkerNodePools` provisioning parameter. + +> [!NOTE] +> **name**, **machineType**, **autoScalerMin**, and **autoScalerMax** values are mandatory for additional worker node pool configuration. + +See the example: + +```bash + export VERSION=1.15.0 + curl --request PUT "https://$BROKER_URL/oauth/v2/service_instances/$INSTANCE_ID?accepts_incomplete=true" \ + --header 'X-Broker-API-Version: 2.14' \ + --header 'Content-Type: application/json' \ + --header "$AUTHORIZATION_HEADER" \ + --header 'Content-Type: application/json' \ + --data-raw "{ + \"service_id\": \"47c9dcbf-ff30-448e-ab36-d3bad66ba281\", + \"plan_id\": \"4deee563-e5ec-4731-b9b1-53b42d855f0c\", + \"context\": { + \"globalaccount_id\": \"$GLOBAL_ACCOUNT_ID\" + }, + \"parameters\": { + \"name\": \"$NAME\", + \"region\": \"$REGION\", + \"additionalWorkerNodePools\": { + \"list\": [ + { + \"name\": \"worker-1\", + \"machineType\": \"Standard_D2s_v5\", + \"autoScalerMin\": 3, + \"autoScalerMax\": 20 + }, + { + \"name\": \"worker-2\", + \"machineType\": \"Standard_D4s_v5\", + \"autoScalerMin\": 5, + \"autoScalerMax\": 25 + } + ] + } + } + }" +``` + +If you do not provide the `additionalWorkerNodePools` object in the provisioning request or set the **skipModification** property to `true`, no additional worker node pools are created. + +If you do not provide the `additionalWorkerNodePools` object in the update request or set the **skipModification** property to `true`, the saved additional worker node pools stay untouched. +However, if you provide an empty list in the update request, all additional worker node pools are removed. + +See the following JSON example without the `additionalWorkerNodePools` object: + +```json +{ + "service_id" : "47c9dcbf-ff30-448e-ab36-d3bad66ba281", + "plan_id" : "4deee563-e5ec-4731-b9b1-53b42d855f0c", + "context" : { + "globalaccount_id" : {GLOBAL_ACCOUNT_ID} + }, + "parameters" : { + "region": {REGION}, + "name" : {CLUSTER_NAME} + } +} +``` + +See the following JSON example with the `additionalWorkerNodePools` object with `skipModification` property set to `true`: + +```json +{ + "service_id" : "47c9dcbf-ff30-448e-ab36-d3bad66ba281", + "plan_id" : "4deee563-e5ec-4731-b9b1-53b42d855f0c", + "context" : { + "globalaccount_id" : {GLOBAL_ACCOUNT_ID} + }, + "parameters" : { + "region": {REGION}, + "name" : {CLUSTER_NAME}, + "additionalWorkerNodePools" : { + "skipModification": true + } + } +} +``` + +See the following JSON example, where the `additionalWorkerNodePools` object contains an empty list: + +```json +{ + "service_id" : "47c9dcbf-ff30-448e-ab36-d3bad66ba281", + "plan_id" : "4deee563-e5ec-4731-b9b1-53b42d855f0c", + "context" : { + "globalaccount_id" : {GLOBAL_ACCOUNT_ID} + }, + "parameters" : { + "region": {REGION}, + "name" : {CLUSTER_NAME}, + "additionalWorkerNodePools" : { + "list": [] + } + } +} +``` + +To update additional worker node pools, provide a list of objects with values for the mandatory properties. Without these values, a validation error occurs. +The update operation overwrites the additional worker node pools with the list provided in the JSON file. See the following scenario: + +1. An existing instance has the following additional worker node pools: + +```json +{ + "additionalWorkerNodePools": { + "list": [ + { + "name": "worker-1", + "machineType": "Standard_D2s_v5", + "autoScalerMin": 3, + "autoScalerMax": 20 + }, + { + "name": "worker-2", + "machineType": "Standard_D4s_v5", + "autoScalerMin": 5, + "autoScalerMax": 25 + } + ] + } +} +``` + +2. A user sends an update request (HTTP PUT) with the following JSON file in the payload: +```json +{ + "service_id": "47c9dcbf-ff30-448e-ab36-d3bad66ba281", + "plan_id": "4deee563-e5ec-4731-b9b1-53b42d855f0c", + "context": { + "globalaccount_id" : {GLOBAL_ACCOUNT_ID} + }, + "parameters": { + "name" : {CLUSTER_NAME}, + "additionalWorkerNodePools": { + "list": [ + { + "name": "worker-3", + "machineType": "Standard_D8s_v5", + "autoScalerMin": 10, + "autoScalerMax": 30 + } + ] + } + } +} +``` + +3. The additional worker node pools are updated to include the values of the `additionalWorkerNodePools` object from JSON file provided in the update request: +```json +{ + "additionalWorkerNodePools": { + "list": [ + { + "name": "worker-3", + "machineType": "Standard_D8s_v5", + "autoScalerMin": 10, + "autoScalerMax": 30 + } + ] + } +} +``` diff --git a/internal/broker/instance_create.go b/internal/broker/instance_create.go index ec384e4cf5..6729b53eb8 100644 --- a/internal/broker/instance_create.go +++ b/internal/broker/instance_create.go @@ -513,8 +513,9 @@ func (b *ProvisionEndpoint) validateNetworking(parameters pkg.ProvisioningParame } // error is handled before, in the validate CIDR cidr, _ := netip.ParsePrefix(parameters.Networking.NodesCidr) - if cidr.Bits() > 23 { - err = multierror.Append(err, fmt.Errorf("the suffix of the node CIDR must not be greater than 26")) + const maxSuffix = 23 + if cidr.Bits() > maxSuffix { + err = multierror.Append(err, fmt.Errorf("the suffix of the node CIDR must not be greater than %d", maxSuffix)) } if parameters.Networking.PodsCidr != nil { diff --git a/internal/broker/plans.go b/internal/broker/plans.go index e8b6b193ea..680ef550cf 100644 --- a/internal/broker/plans.go +++ b/internal/broker/plans.go @@ -208,12 +208,14 @@ func AwsMachinesNames() []string { "m6i.4xlarge", "m6i.8xlarge", "m6i.12xlarge", + "m6i.16xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", "m5.12xlarge", + "m5.16xlarge", } } @@ -225,12 +227,14 @@ func AwsMachinesDisplay() map[string]string { "m6i.4xlarge": "m6i.4xlarge (16vCPU, 64GB RAM)", "m6i.8xlarge": "m6i.8xlarge (32vCPU, 128GB RAM)", "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)", + "m6i.16xlarge": "m6i.16xlarge (64vCPU, 256GB RAM)", "m5.large": "m5.large (2vCPU, 8GB RAM)", "m5.xlarge": "m5.xlarge (4vCPU, 16GB RAM)", "m5.2xlarge": "m5.2xlarge (8vCPU, 32GB RAM)", "m5.4xlarge": "m5.4xlarge (16vCPU, 64GB RAM)", "m5.8xlarge": "m5.8xlarge (32vCPU, 128GB RAM)", "m5.12xlarge": "m5.12xlarge (48vCPU, 192GB RAM)", + "m5.16xlarge": "m5.16xlarge (64vCPU, 256GB RAM)", } } @@ -294,6 +298,7 @@ func GcpMachinesNames() []string { "n2-standard-16", "n2-standard-32", "n2-standard-48", + "n2-standard-64", } } @@ -304,7 +309,8 @@ func GcpMachinesDisplay() map[string]string { "n2-standard-8": "n2-standard-8 (8vCPU, 32GB RAM)", "n2-standard-16": "n2-standard-16 (16vCPU, 64GB RAM)", "n2-standard-32": "n2-standard-32 (32vCPU, 128GB RAM)", - "n2-standard-48": "n2-standard-48 (48vCPU, 192B RAM)", + "n2-standard-48": "n2-standard-48 (48vCPU, 192GB RAM)", + "n2-standard-64": "n2-standard-64 (64vCPU, 256GB RAM)", } } diff --git a/internal/broker/testdata/aws/aws-schema-additional-params-eu.json b/internal/broker/testdata/aws/aws-schema-additional-params-eu.json index 8e84b8c3b0..cc73afd2a1 100644 --- a/internal/broker/testdata/aws/aws-schema-additional-params-eu.json +++ b/internal/broker/testdata/aws/aws-schema-additional-params-eu.json @@ -43,12 +43,14 @@ "m5.4xlarge": "m5.4xlarge (16vCPU, 64GB RAM)", "m5.8xlarge": "m5.8xlarge (32vCPU, 128GB RAM)", "m5.12xlarge": "m5.12xlarge (48vCPU, 192GB RAM)", + "m5.16xlarge": "m5.16xlarge (64vCPU, 256GB RAM)", "m6i.large": "m6i.large (2vCPU, 8GB RAM)", "m6i.xlarge": "m6i.xlarge (4vCPU, 16GB RAM)", "m6i.2xlarge": "m6i.2xlarge (8vCPU, 32GB RAM)", "m6i.4xlarge": "m6i.4xlarge (16vCPU, 64GB RAM)", "m6i.8xlarge": "m6i.8xlarge (32vCPU, 128GB RAM)", - "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)" + "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)", + "m6i.16xlarge": "m6i.16xlarge (64vCPU, 256GB RAM)" }, "enum": [ "m6i.large", @@ -57,12 +59,14 @@ "m6i.4xlarge", "m6i.8xlarge", "m6i.12xlarge", + "m6i.16xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", - "m5.12xlarge" + "m5.12xlarge", + "m5.16xlarge" ], "type": "string" }, diff --git a/internal/broker/testdata/aws/aws-schema-additional-params.json b/internal/broker/testdata/aws/aws-schema-additional-params.json index e1e4770426..df6f53b982 100644 --- a/internal/broker/testdata/aws/aws-schema-additional-params.json +++ b/internal/broker/testdata/aws/aws-schema-additional-params.json @@ -43,12 +43,14 @@ "m5.4xlarge": "m5.4xlarge (16vCPU, 64GB RAM)", "m5.8xlarge": "m5.8xlarge (32vCPU, 128GB RAM)", "m5.12xlarge": "m5.12xlarge (48vCPU, 192GB RAM)", + "m5.16xlarge": "m5.16xlarge (64vCPU, 256GB RAM)", "m6i.large": "m6i.large (2vCPU, 8GB RAM)", "m6i.xlarge": "m6i.xlarge (4vCPU, 16GB RAM)", "m6i.2xlarge": "m6i.2xlarge (8vCPU, 32GB RAM)", "m6i.4xlarge": "m6i.4xlarge (16vCPU, 64GB RAM)", "m6i.8xlarge": "m6i.8xlarge (32vCPU, 128GB RAM)", - "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)" + "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)", + "m6i.16xlarge": "m6i.16xlarge (64vCPU, 256GB RAM)" }, "enum": [ "m6i.large", @@ -57,12 +59,14 @@ "m6i.4xlarge", "m6i.8xlarge", "m6i.12xlarge", + "m6i.16xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", - "m5.12xlarge" + "m5.12xlarge", + "m5.16xlarge" ], "type": "string" }, diff --git a/internal/broker/testdata/aws/aws-schema-eu.json b/internal/broker/testdata/aws/aws-schema-eu.json index e496d7dd19..d6494cac21 100644 --- a/internal/broker/testdata/aws/aws-schema-eu.json +++ b/internal/broker/testdata/aws/aws-schema-eu.json @@ -32,12 +32,14 @@ "m5.4xlarge": "m5.4xlarge (16vCPU, 64GB RAM)", "m5.8xlarge": "m5.8xlarge (32vCPU, 128GB RAM)", "m5.12xlarge": "m5.12xlarge (48vCPU, 192GB RAM)", + "m5.16xlarge": "m5.16xlarge (64vCPU, 256GB RAM)", "m6i.large": "m6i.large (2vCPU, 8GB RAM)", "m6i.xlarge": "m6i.xlarge (4vCPU, 16GB RAM)", "m6i.2xlarge": "m6i.2xlarge (8vCPU, 32GB RAM)", "m6i.4xlarge": "m6i.4xlarge (16vCPU, 64GB RAM)", "m6i.8xlarge": "m6i.8xlarge (32vCPU, 128GB RAM)", - "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)" + "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)", + "m6i.16xlarge": "m6i.16xlarge (64vCPU, 256GB RAM)" }, "enum": [ "m6i.large", @@ -46,12 +48,14 @@ "m6i.4xlarge", "m6i.8xlarge", "m6i.12xlarge", + "m6i.16xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", - "m5.12xlarge" + "m5.12xlarge", + "m5.16xlarge" ], "type": "string" }, diff --git a/internal/broker/testdata/aws/aws-schema.json b/internal/broker/testdata/aws/aws-schema.json index 8a013c43af..2a931e2eaf 100644 --- a/internal/broker/testdata/aws/aws-schema.json +++ b/internal/broker/testdata/aws/aws-schema.json @@ -32,12 +32,14 @@ "m5.4xlarge": "m5.4xlarge (16vCPU, 64GB RAM)", "m5.8xlarge": "m5.8xlarge (32vCPU, 128GB RAM)", "m5.12xlarge": "m5.12xlarge (48vCPU, 192GB RAM)", + "m5.16xlarge": "m5.16xlarge (64vCPU, 256GB RAM)", "m6i.large": "m6i.large (2vCPU, 8GB RAM)", "m6i.xlarge": "m6i.xlarge (4vCPU, 16GB RAM)", "m6i.2xlarge": "m6i.2xlarge (8vCPU, 32GB RAM)", "m6i.4xlarge": "m6i.4xlarge (16vCPU, 64GB RAM)", "m6i.8xlarge": "m6i.8xlarge (32vCPU, 128GB RAM)", - "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)" + "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)", + "m6i.16xlarge": "m6i.16xlarge (64vCPU, 256GB RAM)" }, "enum": [ "m6i.large", @@ -46,12 +48,14 @@ "m6i.4xlarge", "m6i.8xlarge", "m6i.12xlarge", + "m6i.16xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", - "m5.12xlarge" + "m5.12xlarge", + "m5.16xlarge" ], "type": "string" }, diff --git a/internal/broker/testdata/aws/update-aws-schema-additional-params.json b/internal/broker/testdata/aws/update-aws-schema-additional-params.json index b91dddadf8..f0c46a473a 100644 --- a/internal/broker/testdata/aws/update-aws-schema-additional-params.json +++ b/internal/broker/testdata/aws/update-aws-schema-additional-params.json @@ -36,12 +36,14 @@ "m5.4xlarge": "m5.4xlarge (16vCPU, 64GB RAM)", "m5.8xlarge": "m5.8xlarge (32vCPU, 128GB RAM)", "m5.12xlarge": "m5.12xlarge (48vCPU, 192GB RAM)", + "m5.16xlarge": "m5.16xlarge (64vCPU, 256GB RAM)", "m6i.large": "m6i.large (2vCPU, 8GB RAM)", "m6i.xlarge": "m6i.xlarge (4vCPU, 16GB RAM)", "m6i.2xlarge": "m6i.2xlarge (8vCPU, 32GB RAM)", "m6i.4xlarge": "m6i.4xlarge (16vCPU, 64GB RAM)", "m6i.8xlarge": "m6i.8xlarge (32vCPU, 128GB RAM)", - "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)" + "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)", + "m6i.16xlarge": "m6i.16xlarge (64vCPU, 256GB RAM)" }, "enum": [ "m6i.large", @@ -50,12 +52,14 @@ "m6i.4xlarge", "m6i.8xlarge", "m6i.12xlarge", + "m6i.16xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", - "m5.12xlarge" + "m5.12xlarge", + "m5.16xlarge" ], "type": "string" }, diff --git a/internal/broker/testdata/aws/update-aws-schema.json b/internal/broker/testdata/aws/update-aws-schema.json index 397ed8c894..a0b8734138 100644 --- a/internal/broker/testdata/aws/update-aws-schema.json +++ b/internal/broker/testdata/aws/update-aws-schema.json @@ -26,12 +26,14 @@ "m5.4xlarge": "m5.4xlarge (16vCPU, 64GB RAM)", "m5.8xlarge": "m5.8xlarge (32vCPU, 128GB RAM)", "m5.12xlarge": "m5.12xlarge (48vCPU, 192GB RAM)", + "m5.16xlarge": "m5.16xlarge (64vCPU, 256GB RAM)", "m6i.large": "m6i.large (2vCPU, 8GB RAM)", "m6i.xlarge": "m6i.xlarge (4vCPU, 16GB RAM)", "m6i.2xlarge": "m6i.2xlarge (8vCPU, 32GB RAM)", "m6i.4xlarge": "m6i.4xlarge (16vCPU, 64GB RAM)", "m6i.8xlarge": "m6i.8xlarge (32vCPU, 128GB RAM)", - "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)" + "m6i.12xlarge": "m6i.12xlarge (48vCPU, 192GB RAM)", + "m6i.16xlarge": "m6i.16xlarge (64vCPU, 256GB RAM)" }, "enum": [ "m6i.large", @@ -40,12 +42,14 @@ "m6i.4xlarge", "m6i.8xlarge", "m6i.12xlarge", + "m6i.16xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", - "m5.12xlarge" + "m5.12xlarge", + "m5.16xlarge" ], "type": "string" } diff --git a/internal/broker/testdata/gcp/gcp-schema-additional-params-assured-workloads.json b/internal/broker/testdata/gcp/gcp-schema-additional-params-assured-workloads.json index b551d81e67..bb84461b99 100644 --- a/internal/broker/testdata/gcp/gcp-schema-additional-params-assured-workloads.json +++ b/internal/broker/testdata/gcp/gcp-schema-additional-params-assured-workloads.json @@ -42,7 +42,8 @@ "n2-standard-8": "n2-standard-8 (8vCPU, 32GB RAM)", "n2-standard-16": "n2-standard-16 (16vCPU, 64GB RAM)", "n2-standard-32": "n2-standard-32 (32vCPU, 128GB RAM)", - "n2-standard-48": "n2-standard-48 (48vCPU, 192B RAM)" + "n2-standard-48": "n2-standard-48 (48vCPU, 192GB RAM)", + "n2-standard-64": "n2-standard-64 (64vCPU, 256GB RAM)" }, "enum": [ "n2-standard-2", @@ -50,7 +51,8 @@ "n2-standard-8", "n2-standard-16", "n2-standard-32", - "n2-standard-48" + "n2-standard-48", + "n2-standard-64" ], "type": "string" }, diff --git a/internal/broker/testdata/gcp/gcp-schema-additional-params.json b/internal/broker/testdata/gcp/gcp-schema-additional-params.json index 9040c626b7..b5df63c06d 100644 --- a/internal/broker/testdata/gcp/gcp-schema-additional-params.json +++ b/internal/broker/testdata/gcp/gcp-schema-additional-params.json @@ -42,7 +42,8 @@ "n2-standard-8": "n2-standard-8 (8vCPU, 32GB RAM)", "n2-standard-16": "n2-standard-16 (16vCPU, 64GB RAM)", "n2-standard-32": "n2-standard-32 (32vCPU, 128GB RAM)", - "n2-standard-48": "n2-standard-48 (48vCPU, 192B RAM)" + "n2-standard-48": "n2-standard-48 (48vCPU, 192GB RAM)", + "n2-standard-64": "n2-standard-64 (64vCPU, 256GB RAM)" }, "enum": [ "n2-standard-2", @@ -50,7 +51,8 @@ "n2-standard-8", "n2-standard-16", "n2-standard-32", - "n2-standard-48" + "n2-standard-48", + "n2-standard-64" ], "type": "string" }, diff --git a/internal/broker/testdata/gcp/gcp-schema-assured-workloads.json b/internal/broker/testdata/gcp/gcp-schema-assured-workloads.json index 13b2b7c284..49a79cc731 100644 --- a/internal/broker/testdata/gcp/gcp-schema-assured-workloads.json +++ b/internal/broker/testdata/gcp/gcp-schema-assured-workloads.json @@ -31,7 +31,8 @@ "n2-standard-8": "n2-standard-8 (8vCPU, 32GB RAM)", "n2-standard-16": "n2-standard-16 (16vCPU, 64GB RAM)", "n2-standard-32": "n2-standard-32 (32vCPU, 128GB RAM)", - "n2-standard-48": "n2-standard-48 (48vCPU, 192B RAM)" + "n2-standard-48": "n2-standard-48 (48vCPU, 192GB RAM)", + "n2-standard-64": "n2-standard-64 (64vCPU, 256GB RAM)" }, "enum": [ "n2-standard-2", @@ -39,7 +40,8 @@ "n2-standard-8", "n2-standard-16", "n2-standard-32", - "n2-standard-48" + "n2-standard-48", + "n2-standard-64" ], "type": "string" }, diff --git a/internal/broker/testdata/gcp/gcp-schema.json b/internal/broker/testdata/gcp/gcp-schema.json index c62e0f1cde..670ba1a53b 100644 --- a/internal/broker/testdata/gcp/gcp-schema.json +++ b/internal/broker/testdata/gcp/gcp-schema.json @@ -31,7 +31,8 @@ "n2-standard-8": "n2-standard-8 (8vCPU, 32GB RAM)", "n2-standard-16": "n2-standard-16 (16vCPU, 64GB RAM)", "n2-standard-32": "n2-standard-32 (32vCPU, 128GB RAM)", - "n2-standard-48": "n2-standard-48 (48vCPU, 192B RAM)" + "n2-standard-48": "n2-standard-48 (48vCPU, 192GB RAM)", + "n2-standard-64": "n2-standard-64 (64vCPU, 256GB RAM)" }, "enum": [ "n2-standard-2", @@ -39,7 +40,8 @@ "n2-standard-8", "n2-standard-16", "n2-standard-32", - "n2-standard-48" + "n2-standard-48", + "n2-standard-64" ], "type": "string" }, diff --git a/internal/broker/testdata/gcp/update-gcp-schema-additional-params.json b/internal/broker/testdata/gcp/update-gcp-schema-additional-params.json index c405a0dcdf..19e3c7ace7 100644 --- a/internal/broker/testdata/gcp/update-gcp-schema-additional-params.json +++ b/internal/broker/testdata/gcp/update-gcp-schema-additional-params.json @@ -35,7 +35,8 @@ "n2-standard-8": "n2-standard-8 (8vCPU, 32GB RAM)", "n2-standard-16": "n2-standard-16 (16vCPU, 64GB RAM)", "n2-standard-32": "n2-standard-32 (32vCPU, 128GB RAM)", - "n2-standard-48": "n2-standard-48 (48vCPU, 192B RAM)" + "n2-standard-48": "n2-standard-48 (48vCPU, 192GB RAM)", + "n2-standard-64": "n2-standard-64 (64vCPU, 256GB RAM)" }, "enum": [ "n2-standard-2", @@ -43,7 +44,8 @@ "n2-standard-8", "n2-standard-16", "n2-standard-32", - "n2-standard-48" + "n2-standard-48", + "n2-standard-64" ], "type": "string" }, diff --git a/internal/broker/testdata/gcp/update-gcp-schema.json b/internal/broker/testdata/gcp/update-gcp-schema.json index 71eab32cdf..bb05b648f1 100644 --- a/internal/broker/testdata/gcp/update-gcp-schema.json +++ b/internal/broker/testdata/gcp/update-gcp-schema.json @@ -25,7 +25,8 @@ "n2-standard-8": "n2-standard-8 (8vCPU, 32GB RAM)", "n2-standard-16": "n2-standard-16 (16vCPU, 64GB RAM)", "n2-standard-32": "n2-standard-32 (32vCPU, 128GB RAM)", - "n2-standard-48": "n2-standard-48 (48vCPU, 192B RAM)" + "n2-standard-48": "n2-standard-48 (48vCPU, 192GB RAM)", + "n2-standard-64": "n2-standard-64 (64vCPU, 256GB RAM)" }, "enum": [ "n2-standard-2", @@ -33,7 +34,8 @@ "n2-standard-8", "n2-standard-16", "n2-standard-32", - "n2-standard-48" + "n2-standard-48", + "n2-standard-64" ], "type": "string" } diff --git a/internal/process/provisioning/create_runtime_resource_step.go b/internal/process/provisioning/create_runtime_resource_step.go index c0c5c4e57e..35403c3c68 100644 --- a/internal/process/provisioning/create_runtime_resource_step.go +++ b/internal/process/provisioning/create_runtime_resource_step.go @@ -89,7 +89,8 @@ func (s *CreateRuntimeResourceStep) Run(operation internal.Operation, log *slog. runtimeResourceName := steps.KymaRuntimeResourceName(operation) log.Info(fmt.Sprintf("KymaResourceName: %s, KymaResourceNamespace: %s, RuntimeResourceName: %s", kymaResourceName, kymaResourceNamespace, runtimeResourceName)) - values, err := provider.GetPlanSpecificValues(&operation, s.config.MultiZoneCluster, s.config.DefaultTrialProvider, s.useSmallerMachineTypes, s.trialPlatformRegionMapping, s.config.DefaultGardenerShootPurpose) + values, err := provider.GetPlanSpecificValues(&operation, s.config.MultiZoneCluster, s.config.DefaultTrialProvider, s.useSmallerMachineTypes, s.trialPlatformRegionMapping, + s.config.DefaultGardenerShootPurpose, s.config.ControlPlaneFailureTolerance) if err != nil { return s.operationManager.OperationFailed(operation, fmt.Sprintf("while updating calculating plan specific values : %s", err), err, log) } @@ -175,7 +176,7 @@ func (s *CreateRuntimeResourceStep) updateRuntimeResourceObject(values provider. if runtime.Spec.Shoot.ControlPlane == nil { runtime.Spec.Shoot.ControlPlane = &gardener.ControlPlane{} } - runtime.Spec.Shoot.ControlPlane.HighAvailability = s.createHighAvailabilityConfiguration() + runtime.Spec.Shoot.ControlPlane = s.createHighAvailabilityConfiguration(values.FailureTolerance) runtime.Spec.Shoot.EnforceSeedLocation = operation.ProvisioningParameters.Parameters.ShootAndSeedSameRegion runtime.Spec.Shoot.Networking = s.createNetworkingConfiguration(operation) runtime.Spec.Shoot.Kubernetes = s.createKubernetesConfiguration(operation) @@ -252,20 +253,6 @@ func (s *CreateRuntimeResourceStep) createShootProvider(operation *internal.Oper return provider, nil } -func (s *CreateRuntimeResourceStep) createHighAvailabilityConfiguration() *gardener.HighAvailability { - - failureToleranceType := gardener.FailureToleranceTypeZone - if s.config.ControlPlaneFailureTolerance != string(gardener.FailureToleranceTypeZone) { - failureToleranceType = gardener.FailureToleranceTypeNode - } - - return &gardener.HighAvailability{ - FailureTolerance: gardener.FailureTolerance{ - Type: failureToleranceType, - }, - } -} - func (s *CreateRuntimeResourceStep) createNetworkingConfiguration(operation internal.Operation) imv1.Networking { networkingParams := operation.ProvisioningParameters.Parameters.Networking @@ -353,6 +340,21 @@ func (s *CreateRuntimeResourceStep) updateInstance(id string, region string) err return nil } +func (s *CreateRuntimeResourceStep) createHighAvailabilityConfiguration(tolerance *string) *gardener.ControlPlane { + if tolerance == nil { + return nil + } + if *tolerance == "" { + return nil + } + return &gardener.ControlPlane{HighAvailability: &gardener.HighAvailability{ + FailureTolerance: gardener.FailureTolerance{ + Type: gardener.FailureToleranceType(*tolerance), + }, + }, + } +} + func DefaultIfParamNotSet[T interface{}](d T, param *T) T { if param == nil { return d diff --git a/internal/process/provisioning/create_runtime_resource_step_test.go b/internal/process/provisioning/create_runtime_resource_step_test.go index b6c716b07c..177f6a35c6 100644 --- a/internal/process/provisioning/create_runtime_resource_step_test.go +++ b/internal/process/provisioning/create_runtime_resource_step_test.go @@ -164,6 +164,127 @@ func TestCreateRuntimeResourceStep_Defaults_Azure_MultiZone_YamlOnly(t *testing. assert.Zero(t, repeat) } +func TestCreateRuntimeResourceStep_FailureToleranceForTrial(t *testing.T) { + // given + assert.NoError(t, imv1.AddToScheme(scheme.Scheme)) + memoryStorage := storage.NewMemoryStorage() + + instance, operation := fixInstanceAndOperation(broker.TrialPlanID, "westeurope", "platform-region") + assertInsertions(t, memoryStorage, instance, operation) + + kimConfig := fixKimConfig("trial", false) + inputConfig := input.Config{MultiZoneCluster: true} + inputConfig.ControlPlaneFailureTolerance = "zone" + inputConfig.DefaultTrialProvider = "AWS" + + cli := getClientForTests(t) + + step := NewCreateRuntimeResourceStep(memoryStorage.Operations(), memoryStorage.Instances(), cli, kimConfig, inputConfig, nil, false, defaultOIDSConfig) + + // when + _, _, err := step.Run(operation, fixLogger()) + + // then + assert.NoError(t, err) + runtime := imv1.Runtime{} + err = cli.Get(context.Background(), client.ObjectKey{ + Namespace: "kyma-system", + Name: operation.RuntimeID, + }, &runtime) + assert.NoError(t, err) + assert.Nil(t, runtime.Spec.Shoot.ControlPlane) +} + +func TestCreateRuntimeResourceStep_FailureToleranceForCommercial(t *testing.T) { + // given + assert.NoError(t, imv1.AddToScheme(scheme.Scheme)) + memoryStorage := storage.NewMemoryStorage() + + instance, operation := fixInstanceAndOperation(broker.AzurePlanID, "westeurope", "platform-region") + assertInsertions(t, memoryStorage, instance, operation) + + kimConfig := fixKimConfig("azure", false) + inputConfig := input.Config{MultiZoneCluster: true} + inputConfig.ControlPlaneFailureTolerance = "zone" + + cli := getClientForTests(t) + + step := NewCreateRuntimeResourceStep(memoryStorage.Operations(), memoryStorage.Instances(), cli, kimConfig, inputConfig, nil, false, defaultOIDSConfig) + + // when + _, _, err := step.Run(operation, fixLogger()) + + // then + assert.NoError(t, err) + runtime := imv1.Runtime{} + err = cli.Get(context.Background(), client.ObjectKey{ + Namespace: "kyma-system", + Name: operation.RuntimeID, + }, &runtime) + assert.NoError(t, err) + assert.Equal(t, "zone", string(runtime.Spec.Shoot.ControlPlane.HighAvailability.FailureTolerance.Type)) +} + +func TestCreateRuntimeResourceStep_FailureToleranceForCommercialWithNoConfig(t *testing.T) { + // given + assert.NoError(t, imv1.AddToScheme(scheme.Scheme)) + memoryStorage := storage.NewMemoryStorage() + + instance, operation := fixInstanceAndOperation(broker.AzurePlanID, "westeurope", "platform-region") + assertInsertions(t, memoryStorage, instance, operation) + + kimConfig := fixKimConfig("azure", false) + inputConfig := input.Config{MultiZoneCluster: true} + inputConfig.ControlPlaneFailureTolerance = "" + + cli := getClientForTests(t) + + step := NewCreateRuntimeResourceStep(memoryStorage.Operations(), memoryStorage.Instances(), cli, kimConfig, inputConfig, nil, false, defaultOIDSConfig) + + // when + _, _, err := step.Run(operation, fixLogger()) + + // then + assert.NoError(t, err) + runtime := imv1.Runtime{} + err = cli.Get(context.Background(), client.ObjectKey{ + Namespace: "kyma-system", + Name: operation.RuntimeID, + }, &runtime) + assert.NoError(t, err) + assert.Nil(t, runtime.Spec.Shoot.ControlPlane) +} + +func TestCreateRuntimeResourceStep_FailureToleranceForCommercialWithConfiguredNode(t *testing.T) { + // given + assert.NoError(t, imv1.AddToScheme(scheme.Scheme)) + memoryStorage := storage.NewMemoryStorage() + + instance, operation := fixInstanceAndOperation(broker.AWSPlanID, "westeurope", "platform-region") + assertInsertions(t, memoryStorage, instance, operation) + + kimConfig := fixKimConfig("aws", false) + inputConfig := input.Config{MultiZoneCluster: true} + inputConfig.ControlPlaneFailureTolerance = "node" + + cli := getClientForTests(t) + + step := NewCreateRuntimeResourceStep(memoryStorage.Operations(), memoryStorage.Instances(), cli, kimConfig, inputConfig, nil, false, defaultOIDSConfig) + + // when + _, _, err := step.Run(operation, fixLogger()) + + // then + assert.NoError(t, err) + runtime := imv1.Runtime{} + err = cli.Get(context.Background(), client.ObjectKey{ + Namespace: "kyma-system", + Name: operation.RuntimeID, + }, &runtime) + assert.NoError(t, err) + assert.Equal(t, "node", string(runtime.Spec.Shoot.ControlPlane.HighAvailability.FailureTolerance.Type)) +} + func TestCreateRuntimeResourceStep_AllYamls(t *testing.T) { for _, testCase := range []struct { @@ -414,7 +535,8 @@ func TestCreateRuntimeResourceStep_Defaults_AWS_MultiZoneWithNetworking_ActualCr kimConfig := fixKimConfig("aws", false) cli := getClientForTests(t) - inputConfig := input.Config{MultiZoneCluster: true, DefaultGardenerShootPurpose: provider.PurposeProduction} + inputConfig := input.Config{MultiZoneCluster: true, DefaultGardenerShootPurpose: provider.PurposeProduction, ControlPlaneFailureTolerance: "any-string"} + step := NewCreateRuntimeResourceStep(memoryStorage.Operations(), memoryStorage.Instances(), cli, kimConfig, inputConfig, nil, false, defaultOIDSConfig) // when @@ -448,6 +570,8 @@ func TestCreateRuntimeResourceStep_Defaults_AWS_MultiZoneWithNetworking_ActualCr Type: ptr.String("calico"), }, runtime.Spec.Shoot.Networking) + assert.Equal(t, "any-string", string(runtime.Spec.Shoot.ControlPlane.HighAvailability.FailureTolerance.Type)) + _, err = memoryStorage.Instances().GetByID(operation.InstanceID) assert.NoError(t, err) } @@ -464,7 +588,7 @@ func TestCreateRuntimeResourceStep_Defaults_AWS_MultiZone_ActualCreation(t *test kimConfig := fixKimConfig("aws", false) cli := getClientForTests(t) - inputConfig := input.Config{MultiZoneCluster: true, DefaultGardenerShootPurpose: provider.PurposeProduction} + inputConfig := input.Config{MultiZoneCluster: true, DefaultGardenerShootPurpose: provider.PurposeProduction, ControlPlaneFailureTolerance: "any-string"} step := NewCreateRuntimeResourceStep(memoryStorage.Operations(), memoryStorage.Instances(), cli, kimConfig, inputConfig, nil, false, defaultOIDSConfig) // when @@ -490,6 +614,7 @@ func TestCreateRuntimeResourceStep_Defaults_AWS_MultiZone_ActualCreation(t *test assert.Equal(t, "eu-west-2", runtime.Spec.Shoot.Region) assert.Equal(t, "production", string(runtime.Spec.Shoot.Purpose)) assertWorkers(t, runtime.Spec.Shoot.Provider.Workers, "m6i.large", 20, 3, 3, 0, 3, []string{"eu-west-2a", "eu-west-2b", "eu-west-2c"}) + assert.Equal(t, "any-string", string(runtime.Spec.Shoot.ControlPlane.HighAvailability.FailureTolerance.Type)) _, err = memoryStorage.Instances().GetByID(operation.InstanceID) assert.NoError(t, err) @@ -507,7 +632,7 @@ func TestCreateRuntimeResourceStep_Defaults_Preview_SingleZone_ActualCreation(t kimConfig := fixKimConfig("preview", false) cli := getClientForTests(t) - inputConfig := input.Config{MultiZoneCluster: false, DefaultGardenerShootPurpose: provider.PurposeProduction} + inputConfig := input.Config{MultiZoneCluster: false, DefaultGardenerShootPurpose: provider.PurposeProduction, ControlPlaneFailureTolerance: "zone"} step := NewCreateRuntimeResourceStep(memoryStorage.Operations(), memoryStorage.Instances(), cli, kimConfig, inputConfig, nil, false, defaultOIDSConfig) // when @@ -534,6 +659,8 @@ func TestCreateRuntimeResourceStep_Defaults_Preview_SingleZone_ActualCreation(t assert.Equal(t, "production", string(runtime.Spec.Shoot.Purpose)) assertWorkers(t, runtime.Spec.Shoot.Provider.Workers, "m6i.large", 20, 3, 1, 0, 1, []string{"eu-west-2a", "eu-west-2b", "eu-west-2c"}) + assert.Equal(t, "zone", string(runtime.Spec.Shoot.ControlPlane.HighAvailability.FailureTolerance.Type)) + _, err = memoryStorage.Instances().GetByID(operation.InstanceID) assert.NoError(t, err) @@ -551,7 +678,7 @@ func TestCreateRuntimeResourceStep_Defaults_Preview_SingleZone_ActualCreation_Wi kimConfig := fixKimConfig("preview", false) cli := getClientForTests(t) - inputConfig := input.Config{MultiZoneCluster: false, DefaultGardenerShootPurpose: provider.PurposeProduction} + inputConfig := input.Config{MultiZoneCluster: false, DefaultGardenerShootPurpose: provider.PurposeProduction, ControlPlaneFailureTolerance: "zone"} step := NewCreateRuntimeResourceStep(memoryStorage.Operations(), memoryStorage.Instances(), cli, kimConfig, inputConfig, nil, false, defaultOIDSConfig) // when @@ -598,6 +725,8 @@ func TestCreateRuntimeResourceStep_Defaults_Preview_SingleZone_ActualCreation_Wi assert.Equal(t, "production", string(runtime.Spec.Shoot.Purpose)) assertWorkers(t, runtime.Spec.Shoot.Provider.Workers, "m6i.large", 20, 3, 1, 0, 1, []string{"eu-west-2a", "eu-west-2b", "eu-west-2c"}) + assert.Equal(t, "zone", string(runtime.Spec.Shoot.ControlPlane.HighAvailability.FailureTolerance.Type)) + _, err = memoryStorage.Instances().GetByID(operation.InstanceID) assert.NoError(t, err) @@ -627,7 +756,7 @@ func TestCreateRuntimeResourceStep_SapConvergedCloud(t *testing.T) { kimConfig := fixKimConfig("sap-converged-cloud", false) cli := getClientForTests(t) - inputConfig := input.Config{MultiZoneCluster: testCase.expectedZonesCount > 1} + inputConfig := input.Config{MultiZoneCluster: testCase.expectedZonesCount > 1, ControlPlaneFailureTolerance: "zone"} step := NewCreateRuntimeResourceStep(memoryStorage.Operations(), memoryStorage.Instances(), cli, kimConfig, inputConfig, nil, false, defaultOIDSConfig) // when @@ -650,6 +779,8 @@ func TestCreateRuntimeResourceStep_SapConvergedCloud(t *testing.T) { assert.Nil(t, runtime.Spec.Shoot.Provider.Workers[0].Volume) assertWorkers(t, runtime.Spec.Shoot.Provider.Workers, testCase.expectedMachineType, 20, 3, testCase.expectedZonesCount, 0, testCase.expectedZonesCount, testCase.possibleZones) + assert.Equal(t, "zone", string(runtime.Spec.Shoot.ControlPlane.HighAvailability.FailureTolerance.Type)) + }) } } @@ -699,6 +830,7 @@ func TestCreateRuntimeResourceStep_Defaults_Freemium(t *testing.T) { assert.Equal(t, testCase.expectedProvider, runtime.Spec.Shoot.Provider.Type) assertWorkers(t, runtime.Spec.Shoot.Provider.Workers, testCase.expectedMachineType, 1, 1, 1, 0, 1, testCase.possibleZones) + assert.Nil(t, runtime.Spec.Shoot.ControlPlane) }) } } diff --git a/internal/process/queue.go b/internal/process/queue.go index 2ce604a1f2..3f57dfc429 100644 --- a/internal/process/queue.go +++ b/internal/process/queue.go @@ -1,7 +1,6 @@ package process import ( - "bytes" "fmt" "log/slog" "runtime/debug" @@ -23,6 +22,7 @@ type Queue struct { log *slog.Logger name string workerExecutionTimes map[string]time.Time + workerLastKeys map[string]string warnAfterTime time.Duration healthCheckIntervalTime time.Duration @@ -39,6 +39,7 @@ func NewQueue(executor Executor, log *slog.Logger, name string, warnAfterTime, h speedFactor: 1, name: name, workerExecutionTimes: make(map[string]time.Time), + workerLastKeys: make(map[string]string), warnAfterTime: warnAfterTime, healthCheckIntervalTime: healthCheckIntervalTime, } @@ -95,7 +96,7 @@ func (q *Queue) createWorker(queue workqueue.RateLimitingInterface, process func }() } -func (q *Queue) worker(queue workqueue.RateLimitingInterface, process func(key string) (time.Duration, error), log *slog.Logger, nameId string) func() { +func (q *Queue) worker(queue workqueue.RateLimitingInterface, process func(key string) (time.Duration, error), log *slog.Logger, workerNameId string) func() { return func() { exit := false for !exit { @@ -109,12 +110,13 @@ func (q *Queue) worker(queue workqueue.RateLimitingInterface, process func(key s id := key.(string) log = log.With("operationID", id) log.Info(fmt.Sprintf("about to process item %s, queue length is %d", id, q.queue.Len())) - q.logAndUpdateWorkerTimes(key.(string), nameId, log) + q.updateWorkerTime(id, workerNameId, log) defer func() { if err := recover(); err != nil { log.Error(fmt.Sprintf("panic error from process: %v. Stacktrace: %s", err, debug.Stack())) } + q.removeTimeIfInWarnMargin(id, workerNameId, log) queue.Done(key) log.Info("queue done processing") }() @@ -139,35 +141,43 @@ func (q *Queue) worker(queue workqueue.RateLimitingInterface, process func(key s } } -func (q *Queue) logAndUpdateWorkerTimes(key string, name string, log *slog.Logger) { - // log time - now := time.Now() - lastTime, ok := q.workerExecutionTimes[name] - if ok { - log.Info(fmt.Sprintf("execution - worker %s last execution time %s, executed after %s", name, lastTime, now.Sub(lastTime))) +func (q *Queue) updateWorkerTime(key string, workerNameId string, log *slog.Logger) { + q.workerExecutionTimes[workerNameId] = time.Now() + q.workerLastKeys[workerNameId] = key + log.Info(fmt.Sprintf("updating worker time, processing item %s, queue length is %d", key, q.queue.Len())) +} + +func (q *Queue) removeTimeIfInWarnMargin(key string, workerNameId string, log *slog.Logger) { + + processingStart, ok := q.workerExecutionTimes[workerNameId] + + if !ok { + log.Warn(fmt.Sprintf("worker %s has no start time", workerNameId)) + return + } + + processingTime := time.Since(processingStart) + + if processingTime > q.warnAfterTime { + log.Info(fmt.Sprintf("worker %s exceeded allowed limit of %s since last execution while processing %s", workerNameId, q.warnAfterTime, key)) } - q.workerExecutionTimes[name] = now - log.Info(fmt.Sprintf("processing item %s, queue length is %d", key, q.queue.Len())) + delete(q.workerExecutionTimes, workerNameId) + delete(q.workerLastKeys, workerNameId) } func (q *Queue) logWorkersSummary() { healthCheckLog := q.log.With("summary", q.name) - var buffer bytes.Buffer - buffer.WriteString(fmt.Sprintf("health - queue length %d", q.queue.Len())) for name, lastTime := range q.workerExecutionTimes { timeSinceLastExecution := time.Since(lastTime) + lastItemKey, ok := q.workerLastKeys[name] + if !ok { + lastItemKey = "'already removed'" + } - buffer.WriteString(fmt.Sprintf(", [worker %s, last execution time: %s, since last execution: %s]", name, lastTime, timeSinceLastExecution)) - } - - healthCheckLog.Info(buffer.String()) - - for name, lastTime := range q.workerExecutionTimes { - timeSinceLastExecution := time.Since(lastTime) if timeSinceLastExecution > q.warnAfterTime { - healthCheckLog.Info(fmt.Sprintf("worker %s exceeded allowed limit of %s since last execution, its last execution is %s, time since last execution %s", name, q.warnAfterTime, lastTime, timeSinceLastExecution)) + healthCheckLog.Info(fmt.Sprintf("worker %s exceeded allowed limit of %s since last execution, its last execution is %s, time since last execution %s, while processing item %s", name, q.warnAfterTime, lastTime, timeSinceLastExecution, lastItemKey)) } } } diff --git a/internal/process/queue_test.go b/internal/process/queue_test.go index 1a9ae3c0db..29ce543ceb 100644 --- a/internal/process/queue_test.go +++ b/internal/process/queue_test.go @@ -57,8 +57,8 @@ func TestWorkerLogging(t *testing.T) { require.True(t, strings.Contains(stringLogs, "msg=\"starting worker with id 0\" queueName=test workerId=0")) require.True(t, strings.Contains(stringLogs, "msg=\"item processId2 will be added to the queue test after duration of 0, queue length is 1\" queueName=test")) require.True(t, strings.Contains(stringLogs, "msg=\"added item processId to the queue test, queue length is 2\" queueName=test")) - require.True(t, strings.Contains(stringLogs, "msg=\"processing item processId2, queue length is 1\" queueName=test workerId=0 operationID=processId2")) - require.True(t, strings.Contains(stringLogs, "msg=\"processing item processId, queue length is 0\" queueName=test workerId=0 operationID=processId")) + require.True(t, strings.Contains(stringLogs, "msg=\"updating worker time, processing item processId2, queue length is 1\" queueName=test workerId=0 operationID=processId2")) + require.True(t, strings.Contains(stringLogs, "msg=\"updating worker time, processing item processId, queue length is 0\" queueName=test workerId=0 operationID=processId")) require.True(t, strings.Contains(stringLogs, "msg=\"shutting down the queue, queue length is 0\" queueName=test")) require.True(t, strings.Contains(stringLogs, "msg=\"queue speed factor set to 1\" queueName=test")) require.True(t, strings.Contains(stringLogs, "msg=\"worker routine - starting\" queueName=test workerId=0")) @@ -66,8 +66,6 @@ func TestWorkerLogging(t *testing.T) { require.True(t, strings.Contains(stringLogs, "msg=\"shutting down\" queueName=test workerId=0 operationID=processId")) require.True(t, strings.Contains(stringLogs, "msg=\"item for processId has been processed, no retry, element forgotten\" queueName=test workerId=0 operationID=processId")) require.True(t, strings.Contains(stringLogs, "msg=\"about to process item processId, queue length is 0\" queueName=test workerId=0 operationID=processId")) - require.True(t, strings.Contains(stringLogs, "msg=\"execution - worker test-0 last execution time")) - require.True(t, strings.Contains(stringLogs, "executed after")) }) } diff --git a/internal/provider/aws.go b/internal/provider/aws.go index a50b24acd5..b1084fcdaf 100644 --- a/internal/provider/aws.go +++ b/internal/provider/aws.go @@ -10,6 +10,7 @@ type ( Purpose string MultiZone bool ProvisioningParameters internal.ProvisioningParameters + FailureTolerance string } AWSTrialInputProvider struct { PlatformRegionMapping map[string]string @@ -40,6 +41,7 @@ func (p *AWSInputProvider) Provide() Values { Purpose: p.Purpose, VolumeSizeGb: 80, DiskType: "gp3", + FailureTolerance: &p.FailureTolerance, } } @@ -77,6 +79,7 @@ func (p *AWSTrialInputProvider) Provide() Values { Purpose: PurposeEvaluation, VolumeSizeGb: 50, DiskType: "gp3", + FailureTolerance: nil, } } @@ -120,6 +123,7 @@ func (p *AWSFreemiumInputProvider) Provide() Values { Purpose: PurposeEvaluation, VolumeSizeGb: 50, DiskType: "gp3", + FailureTolerance: nil, } } diff --git a/internal/provider/aws_test.go b/internal/provider/aws_test.go index 32bd6d792a..f2f64b66d5 100644 --- a/internal/provider/aws_test.go +++ b/internal/provider/aws_test.go @@ -21,6 +21,7 @@ func TestAWSDefaults(t *testing.T) { Parameters: pkg.ProvisioningParametersDTO{Region: nil}, PlatformRegion: "cf-eu11", }, + FailureTolerance: "zone", } // when @@ -39,6 +40,7 @@ func TestAWSDefaults(t *testing.T) { Purpose: "production", VolumeSizeGb: 80, DiskType: "gp3", + FailureTolerance: ptr.String("zone"), }, values) } @@ -54,6 +56,7 @@ func TestAWSSpecific(t *testing.T) { }, PlatformRegion: "cf-eu11", }, + FailureTolerance: "zone", } // when @@ -73,6 +76,7 @@ func TestAWSSpecific(t *testing.T) { Purpose: "production", VolumeSizeGb: 80, DiskType: "gp3", + FailureTolerance: ptr.String("zone"), }, values) } @@ -103,6 +107,7 @@ func TestAWSTrialDefaults(t *testing.T) { Purpose: "evaluation", VolumeSizeGb: 50, DiskType: "gp3", + FailureTolerance: nil, }, values) } @@ -136,6 +141,7 @@ func TestAWSTrialSpecific(t *testing.T) { Purpose: "evaluation", VolumeSizeGb: 50, DiskType: "gp3", + FailureTolerance: nil, }, values) } diff --git a/internal/provider/azure.go b/internal/provider/azure.go index 042198949e..caab26498f 100644 --- a/internal/provider/azure.go +++ b/internal/provider/azure.go @@ -10,6 +10,7 @@ type ( Purpose string MultiZone bool ProvisioningParameters internal.ProvisioningParameters + FailureTolerance string } AzureTrialInputProvider struct { PlatformRegionMapping map[string]string @@ -45,6 +46,7 @@ func (p *AzureInputProvider) Provide() Values { Purpose: p.Purpose, DiskType: "StandardSSD_LRS", VolumeSizeGb: 80, + FailureTolerance: &p.FailureTolerance, } } @@ -84,6 +86,7 @@ func (p *AzureTrialInputProvider) Provide() Values { Purpose: PurposeEvaluation, DiskType: "Standard_LRS", VolumeSizeGb: 50, + FailureTolerance: nil, } } @@ -128,6 +131,7 @@ func (p *AzureLiteInputProvider) Provide() Values { Purpose: p.Purpose, DiskType: "StandardSSD_LRS", VolumeSizeGb: 80, + FailureTolerance: nil, } } @@ -163,6 +167,7 @@ func (p *AzureFreemiumInputProvider) Provide() Values { Purpose: PurposeEvaluation, DiskType: "Standard_LRS", VolumeSizeGb: 50, + FailureTolerance: nil, } } diff --git a/internal/provider/azure_test.go b/internal/provider/azure_test.go index 97f6c92dbf..afd4c051cd 100644 --- a/internal/provider/azure_test.go +++ b/internal/provider/azure_test.go @@ -20,6 +20,7 @@ func TestAzureDefaults(t *testing.T) { Parameters: pkg.ProvisioningParametersDTO{Region: ptr.String("eastus")}, PlatformRegion: "cf-eu11", }, + FailureTolerance: "zone", } // when @@ -38,6 +39,7 @@ func TestAzureDefaults(t *testing.T) { Purpose: "production", DiskType: "StandardSSD_LRS", VolumeSizeGb: 80, + FailureTolerance: ptr.String("zone"), }, values) } @@ -68,6 +70,7 @@ func TestAzureTrialDefaults(t *testing.T) { Purpose: "evaluation", DiskType: "Standard_LRS", VolumeSizeGb: 50, + FailureTolerance: nil, }, values) } @@ -115,6 +118,7 @@ func TestAzureSpecific(t *testing.T) { PlatformRegion: "cf-eu11", PlatformProvider: "azure", }, + FailureTolerance: "zone", } // when @@ -134,6 +138,7 @@ func TestAzureSpecific(t *testing.T) { Purpose: "production", DiskType: "StandardSSD_LRS", VolumeSizeGb: 80, + FailureTolerance: ptr.String("zone"), }, values) } @@ -170,6 +175,7 @@ func TestAzureTrialSpecific(t *testing.T) { Purpose: "evaluation", DiskType: "Standard_LRS", VolumeSizeGb: 50, + FailureTolerance: nil, }, values) } @@ -205,5 +211,6 @@ func TestAzureLiteSpecific(t *testing.T) { Purpose: "evaluation", DiskType: "StandardSSD_LRS", VolumeSizeGb: 80, + FailureTolerance: nil, }, values) } diff --git a/internal/provider/gcp.go b/internal/provider/gcp.go index 0434a3eb52..9a5babe33a 100644 --- a/internal/provider/gcp.go +++ b/internal/provider/gcp.go @@ -10,6 +10,7 @@ type ( Purpose string MultiZone bool ProvisioningParameters internal.ProvisioningParameters + FailureTolerance string } GCPTrialInputProvider struct { @@ -34,6 +35,7 @@ func (p *GCPInputProvider) Provide() Values { Purpose: p.Purpose, VolumeSizeGb: 80, DiskType: "pd-balanced", + FailureTolerance: &p.FailureTolerance, } } @@ -79,6 +81,7 @@ func (p *GCPTrialInputProvider) Provide() Values { Purpose: PurposeEvaluation, VolumeSizeGb: 30, DiskType: "pd-standard", + FailureTolerance: nil, } } diff --git a/internal/provider/gcp_test.go b/internal/provider/gcp_test.go index 8ec4e43cf2..e7332ad774 100644 --- a/internal/provider/gcp_test.go +++ b/internal/provider/gcp_test.go @@ -18,6 +18,7 @@ func TestGCPDefaults(t *testing.T) { Parameters: pkg.ProvisioningParametersDTO{Region: nil}, PlatformRegion: "cf-eu11", }, + FailureTolerance: "zone", } // when @@ -36,6 +37,7 @@ func TestGCPDefaults(t *testing.T) { Purpose: "production", VolumeSizeGb: 80, DiskType: "pd-balanced", + FailureTolerance: ptr.String("zone"), }, values) } @@ -51,6 +53,7 @@ func TestGCPSpecific(t *testing.T) { }, PlatformRegion: "cf-eu11", }, + FailureTolerance: "zone", } // when @@ -70,6 +73,7 @@ func TestGCPSpecific(t *testing.T) { Purpose: "production", VolumeSizeGb: 80, DiskType: "pd-balanced", + FailureTolerance: ptr.String("zone"), }, values) } diff --git a/internal/provider/model.go b/internal/provider/model.go index be976b4317..45a9d293fa 100644 --- a/internal/provider/model.go +++ b/internal/provider/model.go @@ -12,4 +12,5 @@ type Values struct { Purpose string VolumeSizeGb int DiskType string + FailureTolerance *string } diff --git a/internal/provider/provider_values.go b/internal/provider/provider_values.go index b380f1f081..8df26fa4b6 100644 --- a/internal/provider/provider_values.go +++ b/internal/provider/provider_values.go @@ -19,6 +19,7 @@ func GetPlanSpecificValues( useSmallerMachineTypes bool, trialPlatformRegionMapping map[string]string, defaultPurpose string, + commercialFailureTolerance string, ) (Values, error) { var p Provider switch operation.ProvisioningParameters.PlanID { @@ -27,18 +28,21 @@ func GetPlanSpecificValues( Purpose: defaultPurpose, MultiZone: multiZoneCluster, ProvisioningParameters: operation.ProvisioningParameters, + FailureTolerance: commercialFailureTolerance, } case broker.PreviewPlanID: p = &AWSInputProvider{ Purpose: defaultPurpose, MultiZone: multiZoneCluster, ProvisioningParameters: operation.ProvisioningParameters, + FailureTolerance: commercialFailureTolerance, } case broker.AzurePlanID: p = &AzureInputProvider{ Purpose: defaultPurpose, MultiZone: multiZoneCluster, ProvisioningParameters: operation.ProvisioningParameters, + FailureTolerance: commercialFailureTolerance, } case broker.AzureLitePlanID: p = &AzureLiteInputProvider{ @@ -51,6 +55,7 @@ func GetPlanSpecificValues( Purpose: defaultPurpose, MultiZone: multiZoneCluster, ProvisioningParameters: operation.ProvisioningParameters, + FailureTolerance: commercialFailureTolerance, } case broker.FreemiumPlanID: switch operation.ProvisioningParameters.PlatformProvider { @@ -72,6 +77,7 @@ func GetPlanSpecificValues( Purpose: defaultPurpose, MultiZone: multiZoneCluster, ProvisioningParameters: operation.ProvisioningParameters, + FailureTolerance: commercialFailureTolerance, } case broker.TrialPlanID: var trialProvider pkg.CloudProvider diff --git a/internal/provider/sap-converged-cloud.go b/internal/provider/sap-converged-cloud.go index 39577b5086..a182342171 100644 --- a/internal/provider/sap-converged-cloud.go +++ b/internal/provider/sap-converged-cloud.go @@ -15,6 +15,7 @@ type ( Purpose string MultiZone bool ProvisioningParameters internal.ProvisioningParameters + FailureTolerance string } ) @@ -39,5 +40,6 @@ func (p *SapConvergedCloudInputProvider) Provide() Values { Region: region, Purpose: p.Purpose, DiskType: "", + FailureTolerance: &p.FailureTolerance, } } diff --git a/internal/provider/sap-converged-cloud_test.go b/internal/provider/sap-converged-cloud_test.go index 1d3d1618d6..7bcb6a1194 100644 --- a/internal/provider/sap-converged-cloud_test.go +++ b/internal/provider/sap-converged-cloud_test.go @@ -18,6 +18,7 @@ func TestSapConvergedCloudDefaults(t *testing.T) { Parameters: pkg.ProvisioningParametersDTO{Region: nil}, PlatformRegion: "cf-eu20", }, + FailureTolerance: "zone", } // when @@ -36,6 +37,7 @@ func TestSapConvergedCloudDefaults(t *testing.T) { Purpose: "production", DiskType: "", VolumeSizeGb: 0, + FailureTolerance: ptr.String("zone"), }, values) } @@ -50,6 +52,7 @@ func TestSapConvergedCloudTwoZonesRegion(t *testing.T) { Parameters: pkg.ProvisioningParametersDTO{Region: ptr.String(region)}, PlatformRegion: "cf-eu20", }, + FailureTolerance: "zone", } // when @@ -68,6 +71,7 @@ func TestSapConvergedCloudTwoZonesRegion(t *testing.T) { Purpose: "production", DiskType: "", VolumeSizeGb: 0, + FailureTolerance: ptr.String("zone"), }, values) } @@ -82,6 +86,7 @@ func TestSapConvergedCloudSingleZoneRegion(t *testing.T) { Parameters: pkg.ProvisioningParametersDTO{Region: ptr.String(region)}, PlatformRegion: "cf-eu20", }, + FailureTolerance: "zone", } // when @@ -100,5 +105,6 @@ func TestSapConvergedCloudSingleZoneRegion(t *testing.T) { Purpose: "production", DiskType: "", VolumeSizeGb: 0, + FailureTolerance: ptr.String("zone"), }, values) } diff --git a/resources/keb/Chart.yaml b/resources/keb/Chart.yaml index c9d02eb474..797a0aaa51 100644 --- a/resources/keb/Chart.yaml +++ b/resources/keb/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v2 -appVersion: "1.11.5" +appVersion: "1.11.11" name: keb description: description: Kyma Environment Broker Helm chart for Kubernetes -version: 1.11.5 +version: 1.11.11 type: application diff --git a/resources/keb/values.yaml b/resources/keb/values.yaml index ffd1f5e92e..e42e93dafb 100644 --- a/resources/keb/values.yaml +++ b/resources/keb/values.yaml @@ -9,34 +9,34 @@ global: path: europe-docker.pkg.dev/kyma-project/prod kyma_environment_broker: dir: - version: "1.11.5" + version: "1.11.11" kyma_environment_broker_schema_migrator: dir: - version: 1.11.5 + version: 1.11.11 kyma_environments_subaccount_cleanup_job: dir: - version: "1.11.5" + version: "1.11.11" kyma_environment_trial_cleanup_job: dir: - version: "1.11.5" + version: "1.11.11" kyma_environment_expirator_job: dir: - version: "1.11.5" + version: "1.11.11" kyma_environment_deprovision_retrigger_job: dir: - version: "1.11.5" + version: "1.11.11" kyma_environment_runtime_reconciler: dir: - version: "1.11.5" + version: "1.11.11" kyma_environment_subaccount_sync: dir: - version: "1.11.5" + version: "1.11.11" kyma_environment_globalaccounts: dir: - version: "1.11.5" + version: "1.11.11" kyma_environment_service_binding_cleanup_job: dir: - version: 1.11.5 + version: 1.11.11 kyma_environment_broker: serviceAccountName: "kcp-kyma-environment-broker" diff --git a/sec-scanners-config.yaml b/sec-scanners-config.yaml index d072705acf..063b1703cf 100644 --- a/sec-scanners-config.yaml +++ b/sec-scanners-config.yaml @@ -1,17 +1,17 @@ module-name: kyma-environment-broker -rc-tag: 1.11.5 +rc-tag: 1.11.11 protecode: - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker:1.11.5 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-deprovision-retrigger-job:1.11.5 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environments-cleanup-job:1.11.5 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-runtime-reconciler:1.11.5 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-archiver-job:1.11.5 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-expirator-job:1.11.5 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-subaccount-cleanup-job:1.11.5 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-subaccount-sync:1.11.5 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker-globalaccounts:1.11.5 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker-schema-migrator:1.11.5 - - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-service-binding-cleanup-job:1.11.5 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker:1.11.11 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-deprovision-retrigger-job:1.11.11 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environments-cleanup-job:1.11.11 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-runtime-reconciler:1.11.11 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-archiver-job:1.11.11 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-expirator-job:1.11.11 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-subaccount-cleanup-job:1.11.11 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-subaccount-sync:1.11.11 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker-globalaccounts:1.11.11 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-broker-schema-migrator:1.11.11 + - europe-docker.pkg.dev/kyma-project/prod/kyma-environment-service-binding-cleanup-job:1.11.11 whitesource: language: golang-mod subprojects: false diff --git a/testing/e2e/skr-tester/go.mod b/testing/e2e/skr-tester/go.mod index 3913c97d31..114fd257ea 100644 --- a/testing/e2e/skr-tester/go.mod +++ b/testing/e2e/skr-tester/go.mod @@ -11,11 +11,66 @@ require ( github.com/spf13/pflag v1.0.5 ) +require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/evanphx/json-patch/v5 v5.9.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/go-logr/zapr v1.3.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/prometheus/client_golang v1.19.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/x448/float16 v0.8.4 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect + golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc // indirect + golang.org/x/net v0.30.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect + golang.org/x/term v0.25.0 // indirect + golang.org/x/text v0.19.0 // indirect + golang.org/x/time v0.7.0 // indirect + gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect + google.golang.org/protobuf v1.35.1 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/apiextensions-apiserver v0.31.0 // indirect + k8s.io/apimachinery v0.32.0 // indirect + k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) + require ( github.com/go-logr/logr v1.4.2 // indirect github.com/google/uuid v1.6.0 github.com/google/wire v0.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect golang.org/x/sys v0.26.0 // indirect + k8s.io/api v0.32.0 + k8s.io/client-go v0.32.0 k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kubectl v0.32.0 + sigs.k8s.io/controller-runtime v0.19.4 ) diff --git a/testing/e2e/skr-tester/go.sum b/testing/e2e/skr-tester/go.sum index ff099d333f..1c834ba81a 100644 --- a/testing/e2e/skr-tester/go.sum +++ b/testing/e2e/skr-tester/go.sum @@ -1,11 +1,52 @@ +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/evanphx/json-patch v0.5.2 h1:xVCHIVMUu1wtM/VkR9jVZ45N3FhZfYMMYGorLCR8P3k= +github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= +github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= +github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= +github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -15,9 +56,47 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/int128/kubelogin v1.31.0 h1:llwKwmuVYSjiKmMCDqXnYkx2x3mnAsYyCgXHIummWJA= github.com/int128/kubelogin v1.31.0/go.mod h1:t2a1H/DrQ7itXsjG3WR1fQxNjAGCYeyhqI75/7B5578= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= @@ -26,31 +105,64 @@ github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3k github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc h1:mCRnTeVUjcrhlRmO0VK8a6k6Rrf6TF9htwo2pJVSjIU= +golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -68,6 +180,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= @@ -75,16 +189,59 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= +golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= +gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/api v0.32.0 h1:OL9JpbvAU5ny9ga2fb24X8H6xQlVp+aJMFlgtQjR9CE= +k8s.io/api v0.32.0/go.mod h1:4LEwHZEf6Q/cG96F3dqR965sYOfmPM7rq81BLgsE0p0= +k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24kyLSk= +k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk= +k8s.io/apimachinery v0.32.0 h1:cFSE7N3rmEEtv4ei5X6DaJPHHX0C+upp+v5lVPiEwpg= +k8s.io/apimachinery v0.32.0/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.0 h1:DimtMcnN/JIKZcrSrstiwvvZvLjG0aSxy8PxN8IChp8= +k8s.io/client-go v0.32.0/go.mod h1:boDWvdM1Drk4NJj/VddSLnx59X3OPgwrOo0vGbtq9+8= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/kubectl v0.32.0 h1:rpxl+ng9qeG79YA4Em9tLSfX0G8W0vfaiPVrc/WR7Xw= +k8s.io/kubectl v0.32.0/go.mod h1:qIjSX+QgPQUgdy8ps6eKsYNF+YmFOAO3WygfucIqFiE= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/controller-runtime v0.19.4 h1:SUmheabttt0nx8uJtoII4oIP27BVVvAKFvdvGFwV/Qo= +sigs.k8s.io/controller-runtime v0.19.4/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/testing/e2e/skr-tester/pkg/broker/client.go b/testing/e2e/skr-tester/pkg/broker/client.go index 4fabc8880b..c8d2fd4c13 100644 --- a/testing/e2e/skr-tester/pkg/broker/client.go +++ b/testing/e2e/skr-tester/pkg/broker/client.go @@ -164,7 +164,9 @@ func (c *BrokerClient) CallBroker(payload interface{}, endpoint, verb string) (m defer resp.Body.Close() if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusAccepted { - return nil, fmt.Errorf("error calling Broker: %s %s", resp.Status, resp.Status) + var result map[string]interface{} + json.NewDecoder(resp.Body).Decode(&result) + return result, fmt.Errorf("error calling Broker: %s %s", resp.Status, resp.Status) } var result map[string]interface{} @@ -210,7 +212,7 @@ func (c *BrokerClient) GetCatalog() (map[string]interface{}, error) { return c.CallBroker(nil, endpoint, "GET") } -func (c *BrokerClient) BuildPayload(name, instanceID, planID, region string, btpOperatorCreds map[string]interface{}) map[string]interface{} { +func (c *BrokerClient) BuildPayload(name, instanceID, planID, region string, btpOperatorCreds, customParams map[string]interface{}) map[string]interface{} { payload := map[string]interface{}{ "service_id": KymaServiceID, "plan_id": planID, @@ -224,6 +226,10 @@ func (c *BrokerClient) BuildPayload(name, instanceID, planID, region string, btp }, } + for key, value := range customParams { + payload["parameters"].(map[string]interface{})[key] = value + } + if planID != trialPlanID { payload["parameters"].(map[string]interface{})["region"] = region } @@ -240,8 +246,8 @@ func (c *BrokerClient) BuildPayload(name, instanceID, planID, region string, btp return payload } -func (c *BrokerClient) ProvisionInstance(instanceID, planID, region string, btpOperatorCreds map[string]interface{}) (map[string]interface{}, error) { - payload := c.BuildPayload(instanceID, instanceID, planID, region, btpOperatorCreds) +func (c *BrokerClient) ProvisionInstance(instanceID, planID, region string, btpOperatorCreds, customParams map[string]interface{}) (map[string]interface{}, error) { + payload := c.BuildPayload(instanceID, instanceID, planID, region, btpOperatorCreds, customParams) endpoint := fmt.Sprintf("service_instances/%s", instanceID) return c.CallBroker(payload, endpoint, "PUT") } diff --git a/testing/e2e/skr-tester/pkg/command/assert.go b/testing/e2e/skr-tester/pkg/command/assert.go new file mode 100644 index 0000000000..4d20246a89 --- /dev/null +++ b/testing/e2e/skr-tester/pkg/command/assert.go @@ -0,0 +1,363 @@ +package command + +import ( + "context" + "errors" + "fmt" + "regexp" + "time" + + broker "skr-tester/pkg/broker" + kcp "skr-tester/pkg/kcp" + "skr-tester/pkg/logger" + + "github.com/spf13/cobra" + v1 "k8s.io/api/core/v1" + rbacv1 "k8s.io/api/rbac/v1" + k8serrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/client-go/tools/clientcmd" + "k8s.io/kubectl/pkg/scheme" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/log/zap" +) + +type AssertCommand struct { + cobraCmd *cobra.Command + log logger.Logger + instanceID string + machineType string + clusterOIDCConfig string + kubeconfigOIDCConfig []string + admins []string + btpManagerSecretExists bool + editBtpManagerSecret bool + deleteBtpManagerSecret bool + suspensionInProgress bool +} + +func NewAsertCmd() *cobra.Command { + cmd := AssertCommand{} + cobraCmd := &cobra.Command{ + Use: "assert", + Aliases: []string{"a"}, + Short: "Does an assertion", + Long: "Does an assertion", + Example: "skr-tester assert -i instanceID -m m6i.large Asserts the instance has the machine type m6i.large.\n" + + "skr-tester assert -i instanceID -o oidcConfig Asserts the instance has the OIDC config equal to oidcConfig.\n" + + "skr-tester assert -i instanceID -k issuerURL,clientID Asserts the kubeconfig contains the specified issuerURL and clientID.", + + PreRunE: func(_ *cobra.Command, _ []string) error { return cmd.Validate() }, + RunE: func(_ *cobra.Command, _ []string) error { return cmd.Run() }, + } + cmd.cobraCmd = cobraCmd + + cobraCmd.Flags().StringVarP(&cmd.instanceID, "instanceID", "i", "", "InstanceID of the specific instance.") + cobraCmd.Flags().StringVarP(&cmd.machineType, "machineType", "m", "", "MachineType of the specific instance.") + cobraCmd.Flags().StringVarP(&cmd.clusterOIDCConfig, "clusterOIDCConfig", "o", "", "clusterOIDCConfig of the specific instance.") + cobraCmd.Flags().StringSliceVarP(&cmd.kubeconfigOIDCConfig, "kubeconfigOIDCConfig", "k", nil, "kubeconfigOIDCConfig of the specific instance. Pass the issuerURL and clientID in the format issuerURL,clientID") + cobraCmd.Flags().StringSliceVarP(&cmd.admins, "admins", "a", nil, "Admins of the specific instance.") + cobraCmd.Flags().BoolVarP(&cmd.btpManagerSecretExists, "btpManagerSecretExists", "b", false, "Checks if the BTP manager secret exists in the instance.") + cobraCmd.Flags().BoolVarP(&cmd.editBtpManagerSecret, "editBtpManagerSecret", "e", false, "Edits the BTP manager secret in the instance and checks if the secret is reconciled.") + cobraCmd.Flags().BoolVarP(&cmd.deleteBtpManagerSecret, "deleteBtpManagerSecret", "d", false, "Deletes the BTP manager secret in the instance and checks if the secret is reconciled.") + cobraCmd.Flags().BoolVarP(&cmd.suspensionInProgress, "suspensionInProgress", "s", false, "Checks if the suspension operation is in progress for the instance.") + + return cobraCmd +} + +func (cmd *AssertCommand) Run() error { + cmd.log = logger.New() + ctrl.SetLogger(zap.New()) + brokerClient := broker.NewBrokerClient(broker.NewBrokerConfig()) + kcpClient, err := kcp.NewKCPClient() + if err != nil { + return fmt.Errorf("failed to create KCP client: %v", err) + } + if cmd.machineType != "" { + currentMachineType, err := kcpClient.GetCurrentMachineType(cmd.instanceID) + if err != nil { + return fmt.Errorf("failed to get current machine type: %v", err) + } + if cmd.machineType != *currentMachineType { + return fmt.Errorf("machine types are not equal: expected %s, got %s", cmd.machineType, *currentMachineType) + } else { + fmt.Println("Machine type assertion passed: expected and got", cmd.machineType) + } + } else if cmd.clusterOIDCConfig != "" { + currentOIDC, err := kcpClient.GetCurrentOIDCConfig(cmd.instanceID) + if err != nil { + return fmt.Errorf("failed to get current OIDC: %v", err) + } + if cmd.clusterOIDCConfig != fmt.Sprintf("%v", currentOIDC) { + return fmt.Errorf("OIDCs are not equal: expected %s, got %s", cmd.clusterOIDCConfig, fmt.Sprintf("%v", currentOIDC)) + } else { + fmt.Println("OIDC assertion passed: expected and got", cmd.clusterOIDCConfig) + } + } else if cmd.kubeconfigOIDCConfig != nil { + kubeconfig, err := brokerClient.DownloadKubeconfig(cmd.instanceID) + if err != nil { + return fmt.Errorf("failed to download kubeconfig: %v", err) + } + issuerMatchPattern := fmt.Sprintf("\\b%s\\b", cmd.kubeconfigOIDCConfig[0]) + clientIDMatchPattern := fmt.Sprintf("\\b%s\\b", cmd.kubeconfigOIDCConfig[1]) + + if !regexp.MustCompile(issuerMatchPattern).MatchString(kubeconfig) { + return fmt.Errorf("issuerURL %s not found in kubeconfig", cmd.kubeconfigOIDCConfig[0]) + } + if !regexp.MustCompile(clientIDMatchPattern).MatchString(kubeconfig) { + return fmt.Errorf("clientID %s not found in kubeconfig", cmd.kubeconfigOIDCConfig[1]) + } + fmt.Println("Kubeconfig OIDC assertion passed") + + } else if cmd.admins != nil { + kubeconfig, err := kcpClient.GetKubeconfig(cmd.instanceID) + if err != nil { + return fmt.Errorf("failed to get kubeconfig: %v", err) + } + restCfg, err := clientcmd.RESTConfigFromKubeConfig(kubeconfig) + if err != nil { + return fmt.Errorf("while creating rest config from kubeconfig: %w", err) + } + k8sCli, err := client.New(restCfg, client.Options{ + Scheme: scheme.Scheme, + }) + if err != nil { + return fmt.Errorf("while creating k8s client: %w", err) + } + clusterRoleBindings := &rbacv1.ClusterRoleBindingList{} + err = k8sCli.List(context.TODO(), clusterRoleBindings, &client.ListOptions{}) + if err != nil { + return fmt.Errorf("while listing cluster role bindings: %w", err) + } + adminsMap := make(map[string]bool) + for _, admin := range cmd.admins { + adminsMap[admin] = false + } + fmt.Println("Looking for the following admins:", cmd.admins) + for _, crb := range clusterRoleBindings.Items { + if crb.RoleRef.Name == "cluster-admin" { + for _, subject := range crb.Subjects { + if adminsMap[subject.Name] == false { + adminsMap[subject.Name] = true + } + } + } + } + for admin, found := range adminsMap { + if !found { + return fmt.Errorf("admin %s not found in cluster role bindings", admin) + } + } + fmt.Println("All specified admins are found in cluster role bindings") + } else if cmd.btpManagerSecretExists { + kubeconfig, err := kcpClient.GetKubeconfig(cmd.instanceID) + if err != nil { + return fmt.Errorf("failed to get kubeconfig: %v", err) + } + err = cmd.checkBTPManagerSecret(kubeconfig) + if err != nil { + return err + } + } else if cmd.deleteBtpManagerSecret { + kubeconfig, err := kcpClient.GetKubeconfig(cmd.instanceID) + if err != nil { + return fmt.Errorf("failed to get kubeconfig: %v", err) + } + restCfg, err := clientcmd.RESTConfigFromKubeConfig(kubeconfig) + if err != nil { + return fmt.Errorf("while creating REST config from kubeconfig: %w", err) + } + k8sCli, err := client.New(restCfg, client.Options{ + Scheme: scheme.Scheme, + }) + if err != nil { + return fmt.Errorf("while creating k8s client: %w", err) + } + secret := &v1.Secret{} + objKey := client.ObjectKey{Namespace: "kyma-system", Name: "sap-btp-manager"} + if err := k8sCli.Get(context.Background(), objKey, secret); err != nil { + return fmt.Errorf("failed to get secret: %w", err) + } + err = k8sCli.Delete(context.Background(), secret) + if err != nil { + return fmt.Errorf("while deleting secret from instace: %w", err) + } + fmt.Println("BTP manager secret deleted successfully") + retriesBeforeTimeout := 10 + for i := 0; i < retriesBeforeTimeout; i++ { + time.Sleep(6 * time.Second) + secret := &v1.Secret{} + objKey := client.ObjectKey{Namespace: "kyma-system", Name: "sap-btp-manager"} + if err := k8sCli.Get(context.Background(), objKey, secret); err != nil { + if k8serrors.IsNotFound(err) { + fmt.Printf("Waiting for the secret to be reconciled... (retry %d/%d)\n", i+1, retriesBeforeTimeout) + continue + } + return fmt.Errorf("failed to get secret: %w", err) + } else { + break + } + } + err = cmd.checkBTPManagerSecret(kubeconfig) + if err != nil { + return err + } + fmt.Println("BTP manager secret delete test passed") + } else if cmd.editBtpManagerSecret { + kubeconfig, err := kcpClient.GetKubeconfig(cmd.instanceID) + if err != nil { + return fmt.Errorf("failed to get kubeconfig: %v", err) + } + restCfg, err := clientcmd.RESTConfigFromKubeConfig(kubeconfig) + if err != nil { + return fmt.Errorf("while creating REST config from kubeconfig: %w", err) + } + k8sCli, err := client.New(restCfg, client.Options{ + Scheme: scheme.Scheme, + }) + if err != nil { + return fmt.Errorf("while creating k8s client: %w", err) + } + secret := &v1.Secret{} + objKey := client.ObjectKey{Namespace: "kyma-system", Name: "sap-btp-manager"} + if err := k8sCli.Get(context.Background(), objKey, secret); err != nil { + return fmt.Errorf("failed to get secret: %w", err) + } + secret.Data["clientid"] = []byte("new_client_id") + secret.Data["clientsecret"] = []byte("new_client_secret") + secret.Data["sm_url"] = []byte("new_url") + secret.Data["tokenurl"] = []byte("new_token_url") + err = k8sCli.Update(context.Background(), secret) + if err != nil { + return fmt.Errorf("while updating secret from instace: %w", err) + } + fmt.Println("BTP manager secret updated successfully") + retriesBeforeTimeout := 100 + reconciledSecret := &v1.Secret{} + for i := 0; i < retriesBeforeTimeout; i++ { + time.Sleep(6 * time.Second) + if err := k8sCli.Get(context.Background(), objKey, reconciledSecret); err != nil { + return fmt.Errorf("failed to get secret: %w", err) + } + if reconciledSecret.ObjectMeta.Name == "sap-btp-manager" && reconciledSecret.ObjectMeta.ResourceVersion != secret.ObjectMeta.ResourceVersion { + break + } + fmt.Printf("Waiting for the secret to be reconciled... (retry %d/%d)\n", i+1, retriesBeforeTimeout) + } + err = cmd.checkBTPManagerSecret(kubeconfig) + if err != nil { + return err + } + fmt.Println("BTP manager secret update test passed") + } else if cmd.suspensionInProgress { + retriesBeforeTimeout := 11 + var operationID *string + for i := 0; i < retriesBeforeTimeout; i++ { + operationID, err = kcpClient.GetSuspensionOperationID(cmd.instanceID) + if err != nil { + return fmt.Errorf("failed to get suspension status: %v", err) + } + if *operationID != "" { + break + } + fmt.Printf("Waiting for the suspension operation to start... (retry %d/%d)\n", i+1, retriesBeforeTimeout) + time.Sleep(time.Minute) + } + if *operationID == "" { + return fmt.Errorf("suspension operation not found") + } + resp, err := brokerClient.GetOperation(cmd.instanceID, *operationID) + if err != nil { + return err + } + state, ok := resp["state"].(string) + if !ok { + return fmt.Errorf("state field not found in suspension operation response") + } + if state != "in progress" { + return fmt.Errorf("suspension operation status is not 'in progress': %s", state) + } + fmt.Println("Suspension operation is in progress") + fmt.Printf("Suspension operationID: %s\n", *operationID) + } + return nil +} + +func (cmd *AssertCommand) Validate() error { + if cmd.instanceID == "" { + return errors.New("instanceID must be specified") + } + count := 0 + if cmd.machineType != "" { + count++ + } + if cmd.clusterOIDCConfig != "" { + count++ + } + if cmd.kubeconfigOIDCConfig != nil { + count++ + } + if cmd.admins != nil { + count++ + } + if cmd.btpManagerSecretExists { + count++ + } + if cmd.editBtpManagerSecret { + count++ + } + if cmd.deleteBtpManagerSecret { + count++ + } + if cmd.suspensionInProgress { + count++ + } + if count != 1 { + return errors.New("you must use exactly one of machineType, clusterOIDCConfig, kubeconfigOIDCConfig, admins, btpManagerSecretExists, editBtpManagerSecret, deleteBtpManagerSecret, or suspensionInProgress") + } + return nil +} + +func (cmd *AssertCommand) checkBTPManagerSecret(kubeconfig []byte) error { + restCfg, err := clientcmd.RESTConfigFromKubeConfig(kubeconfig) + if err != nil { + return fmt.Errorf("while creating rest config from kubeconfig: %w", err) + } + k8sCli, err := client.New(restCfg, client.Options{ + Scheme: scheme.Scheme, + }) + if err != nil { + return fmt.Errorf("while creating k8s client: %w", err) + } + secret := &v1.Secret{} + objKey := client.ObjectKey{Namespace: "kyma-system", Name: "sap-btp-manager"} + if err := k8sCli.Get(context.Background(), objKey, secret); err != nil { + return fmt.Errorf("failed to get secret: %w", err) + } + if secret.Labels["app.kubernetes.io/managed-by"] != "kcp-kyma-environment-broker" { + return fmt.Errorf("secret label 'app.kubernetes.io/managed-by' is not 'kcp-kyma-environment-broker'") + } + fmt.Println("BTP manager secret exists") + + requiredKeys := []string{"clientid", "clientsecret", "sm_url", "tokenurl", "cluster_id"} + for _, key := range requiredKeys { + if _, exists := secret.Data[key]; !exists { + return fmt.Errorf("secret data key %s not found", key) + } + } + fmt.Println("Required keys exist in BTP manager secret") + + expectedCreds := map[string]string{ + "clientid": "dummy_client_id", + "clientsecret": "dummy_client_secret", + "sm_url": "dummy_url", + "tokenurl": "dummy_token_url", + } + for key, expectedValue := range expectedCreds { + if actualValue, exists := secret.Data[key]; !exists || string(actualValue) != expectedValue { + return fmt.Errorf("secret data key %s does not have the expected value: expected %s, got %s", key, expectedValue, string(actualValue)) + } + } + fmt.Println("Required keys have the expected values in BTP manager secret") + return nil +} diff --git a/testing/e2e/skr-tester/pkg/command/check_operation.go b/testing/e2e/skr-tester/pkg/command/check_operation.go index 21e298c4f2..065c576a38 100644 --- a/testing/e2e/skr-tester/pkg/command/check_operation.go +++ b/testing/e2e/skr-tester/pkg/command/check_operation.go @@ -61,7 +61,6 @@ func (cmd *CheckOperationCommand) Run() error { }, cmd.timeout, cmd.interval) if err != nil { return err - } if state != "succeeded" { return errors.New(fmt.Sprintf("error thrown by ensureOperationSucceeded: operation didn't succeed in time. Final state: %s", state)) diff --git a/testing/e2e/skr-tester/pkg/command/provision.go b/testing/e2e/skr-tester/pkg/command/provision.go index 16ff9e46ff..f9c5c3d5d7 100644 --- a/testing/e2e/skr-tester/pkg/command/provision.go +++ b/testing/e2e/skr-tester/pkg/command/provision.go @@ -3,6 +3,7 @@ package command import ( "errors" "fmt" + "strings" broker "skr-tester/pkg/broker" "skr-tester/pkg/logger" @@ -12,10 +13,13 @@ import ( ) type ProvisionCommand struct { - cobraCmd *cobra.Command - log logger.Logger - planID string - region string + cobraCmd *cobra.Command + log logger.Logger + planID string + region string + overlapIP bool + invalidIP bool + validCustomIP bool } func NewProvisionCmd() *cobra.Command { @@ -34,6 +38,9 @@ func NewProvisionCmd() *cobra.Command { cobraCmd.Flags().StringVarP(&cmd.planID, "planID", "p", "", "PlanID of the specific instance.") cobraCmd.Flags().StringVarP(&cmd.region, "region", "r", "", "Region of the specific instance.") + cobraCmd.Flags().BoolVarP(&cmd.overlapIP, "overlapIP", "o", false, "Try to provision with overlapping restricted IP range.") + cobraCmd.Flags().BoolVarP(&cmd.invalidIP, "invalidIP", "i", false, "Try to provision with invalid IP range.") + cobraCmd.Flags().BoolVarP(&cmd.validCustomIP, "validCustomIP", "v", false, "Try to provision with valid custom IP range.") return cobraCmd } @@ -47,22 +54,49 @@ func (cmd *ProvisionCommand) Run() error { "smURL": "dummy_url", "url": "dummy_token_url", } + customParams := map[string]interface{}{} + if cmd.overlapIP { + customParams = map[string]interface{}{ + "networking": map[string]interface{}{ + "nodes": "10.242.0.0/22", + }, + } + } else if cmd.invalidIP { + customParams = map[string]interface{}{ + "networking": map[string]interface{}{ + "nodes": "333.242.0.0/22", + }, + } + } else if cmd.validCustomIP { + customParams = map[string]interface{}{ + "networking": map[string]interface{}{ + "nodes": "10.253.0.0/21", + }, + } + } instanceID := uuid.New().String() fmt.Printf("Instance ID: %s\n", instanceID) - resp, err := brokerClient.ProvisionInstance(instanceID, cmd.planID, cmd.region, dummyCreds) + resp, err := brokerClient.ProvisionInstance(instanceID, cmd.planID, cmd.region, dummyCreds, customParams) if err != nil { - fmt.Printf("Error provisioning instance: %v\n", err) - } else { - fmt.Printf("Provision operationID: %s\n", resp["operation"].(string)) + if cmd.overlapIP && strings.Contains(fmt.Sprintf("%v", resp), "overlap") && strings.Contains(fmt.Sprintf("%v", err), "400") { + fmt.Println("Provisioning failed due to overlapping IP range, which was expected.") + return nil + } else if cmd.invalidIP && strings.Contains(fmt.Sprintf("%v", resp), "invalid CIDR address") && strings.Contains(fmt.Sprintf("%v", err), "400") { + fmt.Println("Provisioning failed due to invalid CIDR address, which was expected.") + return nil + } + return err } - + fmt.Printf("Provision operationID: %s\n", resp["operation"].(string)) return nil } func (cmd *ProvisionCommand) Validate() error { - if cmd.planID != "" && cmd.region != "" { - return nil - } else { + if cmd.planID == "" || cmd.region == "" { return errors.New("you must specify the planID and region") } + if cmd.overlapIP && cmd.invalidIP { + return errors.New("you can only set one of overlapIP or invalidIP") + } + return nil } diff --git a/testing/e2e/skr-tester/pkg/command/root.go b/testing/e2e/skr-tester/pkg/command/root.go index 3b509e839a..b542570b46 100644 --- a/testing/e2e/skr-tester/pkg/command/root.go +++ b/testing/e2e/skr-tester/pkg/command/root.go @@ -17,6 +17,7 @@ func New() *cobra.Command { NewDeprovisionCmd(), NewCheckOperationCommand(), NewUpdateCommand(), + NewAsertCmd(), ) return cmd diff --git a/testing/e2e/skr-tester/pkg/command/update.go b/testing/e2e/skr-tester/pkg/command/update.go index 09e59d45f0..41cf70611f 100644 --- a/testing/e2e/skr-tester/pkg/command/update.go +++ b/testing/e2e/skr-tester/pkg/command/update.go @@ -3,22 +3,21 @@ package command import ( "errors" "fmt" - "os/exec" broker "skr-tester/pkg/broker" + kcp "skr-tester/pkg/kcp" "skr-tester/pkg/logger" - "strings" "github.com/spf13/cobra" ) type UpdateCommand struct { - cobraCmd *cobra.Command - log logger.Logger - instanceID string - planID string - updateMachineType bool - // TODO - updateOIDC bool + cobraCmd *cobra.Command + log logger.Logger + instanceID string + planID string + updateMachineType bool + updateOIDC bool + updateAdministrators bool } func NewUpdateCommand() *cobra.Command { @@ -38,6 +37,8 @@ func NewUpdateCommand() *cobra.Command { cobraCmd.Flags().StringVarP(&cmd.instanceID, "instanceID", "i", "", "InstanceID of the specific instance.") cobraCmd.Flags().StringVarP(&cmd.planID, "planID", "p", "", "PlanID of the specific instance.") cobraCmd.Flags().BoolVarP(&cmd.updateMachineType, "updateMachineType", "m", false, "Should update machineType.") + cobraCmd.Flags().BoolVarP(&cmd.updateOIDC, "updateOIDC", "o", false, "Should update OIDC.") + cobraCmd.Flags().BoolVarP(&cmd.updateAdministrators, "updateAdministrators", "a", false, "Should update Administrators.") return cobraCmd } @@ -45,24 +46,29 @@ func NewUpdateCommand() *cobra.Command { func (cmd *UpdateCommand) Run() error { cmd.log = logger.New() brokerClient := broker.NewBrokerClient(broker.NewBrokerConfig()) - catalog, err := brokerClient.GetCatalog() + kcpClient, err := kcp.NewKCPClient() if err != nil { - return fmt.Errorf("failed to get catalog: %v", err) + return fmt.Errorf("failed to create KCP client: %v", err) } - services, ok := catalog["services"].([]interface{}) - if !ok { - return errors.New("services field not found or invalid in catalog") - } - for _, service := range services { - serviceMap, ok := service.(map[string]interface{}) - if !ok { - return errors.New("service is not a map[string]interface{}") + if cmd.updateMachineType { + catalog, err := brokerClient.GetCatalog() + if err != nil { + return fmt.Errorf("failed to get catalog: %v", err) } - if serviceMap["id"] != broker.KymaServiceID { - continue + services, ok := catalog["services"].([]interface{}) + if !ok { + return errors.New("services field not found or invalid in catalog") } - if cmd.updateMachineType { - currentMachineType, err := getCurrentMachineType(cmd.instanceID) + for _, service := range services { + serviceMap, ok := service.(map[string]interface{}) + if !ok { + return errors.New("service is not a map[string]interface{}") + } + if serviceMap["id"] != broker.KymaServiceID { + continue + } + + currentMachineType, err := kcpClient.GetCurrentMachineType(cmd.instanceID) if err != nil { return fmt.Errorf("failed to get current machine type: %v", err) } @@ -92,36 +98,62 @@ func (cmd *UpdateCommand) Run() error { return fmt.Errorf("error updating instance: %v", err) } fmt.Printf("Update operationID: %s\n", resp["operation"].(string)) - break + return nil } } + } } + } else if cmd.updateOIDC { + currentOIDCConfig, err := kcpClient.GetCurrentOIDCConfig(cmd.instanceID) + if err != nil { + return fmt.Errorf("failed to get current OIDC config: %v", err) + } + fmt.Printf("Current OIDC config: %v\n", currentOIDCConfig) + newOIDCConfig := map[string]interface{}{ + "clientID": "foo-bar", + "groupsClaim": "groups1", + "issuerURL": "https://new.custom.ias.com", + "signingAlgs": []string{"RS256"}, + "usernameClaim": "email", + "usernamePrefix": "acme-", + } + fmt.Printf("Determined OIDC configuration to update: %v\n", newOIDCConfig) + resp, err := brokerClient.UpdateInstance(cmd.instanceID, map[string]interface{}{"oidc": newOIDCConfig}) + if err != nil { + return fmt.Errorf("error updating instance: %v", err) + } + fmt.Printf("Update operationID: %s\n", resp["operation"].(string)) + } else if cmd.updateAdministrators { + newAdministrators := []string{"admin1@acme.com", "admin2@acme.com"} + fmt.Printf("Determined administrators to update: %v\n", newAdministrators) + resp, err := brokerClient.UpdateInstance(cmd.instanceID, map[string]interface{}{"administrators": newAdministrators}) + if err != nil { + return fmt.Errorf("error updating instance: %v", err) + } + fmt.Printf("Update operationID: %s\n", resp["operation"].(string)) } return nil } func (cmd *UpdateCommand) Validate() error { - if cmd.instanceID != "" && cmd.planID != "" { - return nil - } else { + if cmd.instanceID == "" || cmd.planID == "" { return errors.New("you must specify the planID and instanceID") } -} - -func getCurrentMachineType(instanceID string) (*string, error) { - _, err := exec.Command("kcp", "login").Output() - if err != nil { - return nil, fmt.Errorf("failed to run kcp login: %v", err) + updateCount := 0 + if cmd.updateMachineType { + updateCount++ } - output, err := exec.Command("kcp", "rt", "-i", instanceID, "--runtime-config", "-o", "custom=:{.runtimeConfig.spec.shoot.provider.workers[0].machine.type}").Output() - if err != nil { - return nil, fmt.Errorf("failed to run kcp rt: %v", err) + if cmd.updateOIDC { + updateCount++ } - - machineType := string(output) - machineType = strings.TrimSpace(machineType) - return &machineType, nil + if cmd.updateAdministrators { + updateCount++ + } + if updateCount != 1 { + return errors.New("you must use exactly one of updateMachineType, updateOIDC, or updateAdministrators") + } + return nil } func extractSupportedMachineTypes(planMap map[string]interface{}) ([]interface{}, error) { diff --git a/testing/e2e/skr-tester/pkg/kcp/client.go b/testing/e2e/skr-tester/pkg/kcp/client.go new file mode 100644 index 0000000000..c60c342854 --- /dev/null +++ b/testing/e2e/skr-tester/pkg/kcp/client.go @@ -0,0 +1,158 @@ +package kcp + +import ( + "encoding/json" + "fmt" + "os" + "os/exec" + "strings" +) + +type KCPConfig struct { + AuthType string + Host string + IssuerURL string + GardenerNamespace string + Username string + Password string + ClientID string + ClientSecret string + KubeConfigApiUrl string +} + +type KCPClient struct { + Config *KCPConfig +} + +func NewKCPConfig() *KCPConfig { + return &KCPConfig{ + AuthType: getEnvOrThrow("KCP_AUTH_TYPE"), + Host: getEnvOrThrow("KCP_KEB_API_URL"), + IssuerURL: getEnvOrThrow("KCP_OIDC_ISSUER_URL"), + ClientID: getEnvOrThrow("KCP_OIDC_CLIENT_ID"), + ClientSecret: getEnvOrThrow("KCP_OIDC_CLIENT_SECRET"), + GardenerNamespace: getEnvOrThrow("KCP_GARDENER_NAMESPACE"), + Username: getEnvOrThrow("KCP_TECH_USER_LOGIN"), + Password: getEnvOrThrow("KCP_TECH_USER_PASSWORD"), + KubeConfigApiUrl: getEnvOrThrow("KCP_KUBECONFIG_API_URL"), + } +} + +func NewKCPClient() (*KCPClient, error) { + client := &KCPClient{} + if clientSecret := os.Getenv("KCP_OIDC_CLIENT_SECRET"); clientSecret != "" { + client.Config = NewKCPConfig() + client.WriteConfigToFile() + } + args := []string{"login"} + if clientSecret := os.Getenv("KCP_OIDC_CLIENT_SECRET"); clientSecret != "" { + args = append(args, "--config", "config.yaml", "-u", client.Config.Username, "-p", client.Config.Password) + } + _, err := exec.Command("kcp", args...).Output() + if err != nil { + return nil, fmt.Errorf("failed to login: %w", err) + } + return client, nil +} + +func (c *KCPClient) WriteConfigToFile() { + file, err := os.Create("config.yaml") + if err != nil { + panic(err) + } + defer file.Close() + + file.WriteString(fmt.Sprintf("auth-type: \"%s\"\n", c.Config.AuthType)) + file.WriteString(fmt.Sprintf("gardener-namespace: \"%s\"\n", c.Config.GardenerNamespace)) + file.WriteString(fmt.Sprintf("oidc-issuer-url: \"%s\"\n", c.Config.IssuerURL)) + file.WriteString(fmt.Sprintf("oidc-client-id: \"%s\"\n", c.Config.ClientID)) + file.WriteString(fmt.Sprintf("oidc-client-secret: %s\n", c.Config.ClientSecret)) + file.WriteString(fmt.Sprintf("username: %s\n", c.Config.Username)) + file.WriteString(fmt.Sprintf("keb-api-url: \"%s\"\n", c.Config.Host)) + file.WriteString(fmt.Sprintf("kubeconfig-api-url: \"%s\"\n", c.Config.KubeConfigApiUrl)) +} + +func (c *KCPClient) GetCurrentMachineType(instanceID string) (*string, error) { + args := []string{"rt", "-i", instanceID, "--runtime-config", "-o", "custom=:{.runtimeConfig.spec.shoot.provider.workers[0].machine.type}"} + if clientSecret := os.Getenv("KCP_OIDC_CLIENT_SECRET"); clientSecret != "" { + args = append(args, "--config", "config.yaml") + } + output, err := exec.Command("kcp", args...).Output() + if err != nil { + return nil, fmt.Errorf("failed to get current machine type: %w", err) + } + machineType := string(output) + machineType = strings.TrimSpace(machineType) + return &machineType, nil +} + +func (c *KCPClient) GetCurrentOIDCConfig(instanceID string) (interface{}, error) { + args := []string{"rt", "-i", instanceID, "--runtime-config", "-o", "custom=:{.runtimeConfig.spec.shoot.kubernetes.kubeAPIServer.oidcConfig}"} + if clientSecret := os.Getenv("KCP_OIDC_CLIENT_SECRET"); clientSecret != "" { + args = append(args, "--config", "config.yaml") + } + output, err := exec.Command("kcp", args...).Output() + if err != nil { + return nil, fmt.Errorf("failed to get current OIDC config: %w", err) + } + var oidcConfig interface{} + if err := json.Unmarshal(output, &oidcConfig); err != nil { + return nil, fmt.Errorf("failed to unmarshal OIDC config: %w", err) + } + return oidcConfig, nil +} + +func (c *KCPClient) GetShootID(instanceID string) (*string, error) { + args := []string{"rt", "-i", instanceID, "-o", "custom=:{.shootName}"} + if clientSecret := os.Getenv("KCP_OIDC_CLIENT_SECRET"); clientSecret != "" { + args = append(args, "--config", "config.yaml") + } + output, err := exec.Command("kcp", args...).Output() + if err != nil { + return nil, fmt.Errorf("failed to get shoot ID: %w", err) + } + shootID := strings.TrimSpace(string(output)) + return &shootID, nil +} + +func (c *KCPClient) GetKubeconfig(instanceID string) ([]byte, error) { + shootID, err := c.GetShootID(instanceID) + if err != nil { + return nil, fmt.Errorf("failed to get shoot ID: %w", err) + } + args := []string{"kubeconfig", "-c", string(*shootID)} + if clientSecret := os.Getenv("KCP_OIDC_CLIENT_SECRET"); clientSecret != "" { + args = append(args, "--config", "config.yaml") + } + output, err := exec.Command("kcp", args...).Output() + if err != nil { + return nil, fmt.Errorf("failed to get kubeconfig: %w", err) + } + kubeconfigPath := strings.TrimSpace(strings.Split(string(output), " ")[3]) + kubeconfig, err := os.ReadFile(kubeconfigPath) + if err != nil { + return nil, fmt.Errorf("failed to read kubeconfig file: %w", err) + } + return kubeconfig, nil +} + +func (c *KCPClient) GetSuspensionOperationID(instanceID string) (*string, error) { + args := []string{"rt", "-i", instanceID, "-o", "custom=:{.status.suspension.data[0].operationID}", "--ops"} + if clientSecret := os.Getenv("KCP_OIDC_CLIENT_SECRET"); clientSecret != "" { + args = append(args, "--config", "config.yaml") + } + output, err := exec.Command("kcp", args...).Output() + if err != nil { + return nil, fmt.Errorf("failed to get suspension operation ID: %w", err) + } + operationID := strings.TrimSpace(string(output)) + return &operationID, nil +} + +func getEnvOrThrow(key string) string { + value := os.Getenv(key) + if value == "" { + panic(fmt.Sprintf("Environment variable %s is required", key)) + } + return value +} diff --git a/testing/e2e/skr/package-lock.json b/testing/e2e/skr/package-lock.json index 71879f0e2d..b967d52933 100644 --- a/testing/e2e/skr/package-lock.json +++ b/testing/e2e/skr/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1-alpha.12", "license": "Apache-2.0", "dependencies": { - "@kubernetes/client-node": "1.0.0", + "@kubernetes/client-node": "0.15.1", "axios": "^1.7.4", "js-yaml": "^4.1.0", "mocha-junit-reporter": "^2.0.0", @@ -125,140 +125,42 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@isaacs/fs-minipass/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@jsep-plugin/assignment": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", - "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", - "engines": { - "node": ">= 10.16.0" - }, - "peerDependencies": { - "jsep": "^0.4.0||^1.0.0" - } - }, - "node_modules/@jsep-plugin/regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", - "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", - "engines": { - "node": ">= 10.16.0" - }, - "peerDependencies": { - "jsep": "^0.4.0||^1.0.0" - } - }, "node_modules/@kubernetes/client-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-1.0.0.tgz", - "integrity": "sha512-a8NSvFDSHKFZ0sR1hbPSf8IDFNJwctEU5RodSCNiq/moRXWmrdmqhb1RRQzF+l+TSBaDgHw3YsYNxxE92STBzw==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.15.1.tgz", + "integrity": "sha512-j3o5K4TWkdrX2yDndbEZcDxhgea6O2JKnesWoYCJ64WtMn2GbQXGBOnkn2i0WT2MugGbLR+qCm8Y3oHWBApaTA==", + "license": "Apache-2.0", "dependencies": { "@types/js-yaml": "^4.0.1", - "@types/node": "^22.0.0", - "@types/node-fetch": "^2.6.9", + "@types/node": "^10.12.0", + "@types/request": "^2.47.1", "@types/stream-buffers": "^3.0.3", - "@types/tar": "^6.1.1", - "@types/ws": "^8.5.4", - "form-data": "^4.0.0", - "isomorphic-ws": "^5.0.0", + "@types/tar": "^4.0.3", + "@types/underscore": "^1.8.9", + "@types/ws": "^6.0.1", + "byline": "^5.0.0", + "execa": "5.0.0", + "isomorphic-ws": "^4.0.1", "js-yaml": "^4.1.0", - "jsonpath-plus": "^10.2.0", - "node-fetch": "^2.6.9", - "openid-client": "^6.1.3", + "jsonpath-plus": "^0.19.0", + "openid-client": "^4.1.1", + "request": "^2.88.0", "rfc4648": "^1.3.0", + "shelljs": "^0.8.4", "stream-buffers": "^3.0.2", - "tar": "^7.0.0", + "tar": "^6.0.2", "tmp-promise": "^3.0.2", - "tslib": "^2.5.0", - "ws": "^8.18.0" + "tslib": "^1.9.3", + "underscore": "^1.9.1", + "ws": "^7.3.1" } }, + "node_modules/@kubernetes/client-node/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "license": "MIT" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -294,20 +196,87 @@ "node": ">= 8" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, + "node_modules/@panva/asn1.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz", + "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, "engines": { - "node": ">=14" + "node": ">=10" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" } }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", + "license": "MIT" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT" + }, "node_modules/@types/js-yaml": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==" }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/minipass": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/minipass/-/minipass-3.3.5.tgz", + "integrity": "sha512-M2BLHQdEmDmH671h0GIlOQQJrgezd1vNqq7PVj1VOsHZ2uQQb4iPiQIl0SlMdhxZPUsLIfEklmeEHXg8DJRewA==", + "deprecated": "This is a stub types definition. minipass provides its own type definitions, so you do not need this installed.", + "license": "MIT", + "dependencies": { + "minipass": "*" + } + }, "node_modules/@types/node": { "version": "22.10.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", @@ -316,13 +285,40 @@ "undici-types": "~6.20.0" } }, - "node_modules/@types/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "node_modules/@types/request": { + "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", + "license": "MIT", "dependencies": { + "@types/caseless": "*", "@types/node": "*", - "form-data": "^4.0.0" + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.2.tgz", + "integrity": "sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" } }, "node_modules/@types/stream-buffers": { @@ -334,18 +330,32 @@ } }, "node_modules/@types/tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tar/-/tar-4.0.5.tgz", + "integrity": "sha512-cgwPhNEabHaZcYIy5xeMtux2EmYBitfqEceBUi2t5+ETy4dW6kswt6WX4+HqLeiiKOo42EXbGiDmVJ2x+vi37Q==", + "license": "MIT", "dependencies": { - "@types/node": "*", - "minipass": "^4.0.0" + "@types/minipass": "*", + "@types/node": "*" } }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "license": "MIT" + }, + "node_modules/@types/underscore": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.13.0.tgz", + "integrity": "sha512-L6LBgy1f0EFQZ+7uSA57+n2g/s4Qs5r06Vwrwn0/nuK1de+adz00NWaztRQ30aEqw5qOaWbPI8u2cGQ52lj6VA==", + "license": "MIT" + }, "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-6.0.4.tgz", + "integrity": "sha512-PpPrX7SZW9re6+Ha8ojZG4Se8AZXgf0GK6zmfqEuCsY49LFDNXO3SByp44X3dFEqtB73lkCDAdUazhAjVPiNwg==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -371,11 +381,23 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -434,6 +456,24 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -448,6 +488,21 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "license": "MIT" + }, "node_modules/axios": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", @@ -463,6 +518,15 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -496,6 +560,57 @@ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, + "node_modules/byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -516,6 +631,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" + }, "node_modules/chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -604,11 +725,21 @@ } }, "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", "engines": { - "node": ">=18" + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", + "engines": { + "node": ">=6" } }, "node_modules/cliui": { @@ -634,6 +765,18 @@ "node": ">=8" } }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -666,6 +809,12 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -687,6 +836,18 @@ "node": "*" } }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -714,6 +875,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -732,6 +920,15 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -760,16 +957,30 @@ "node": ">=6.0.0" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -944,17 +1155,53 @@ "node": ">=0.10.0" } }, + "node_modules/execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -1055,19 +1302,13 @@ } } }, - "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/form-data": { @@ -1083,6 +1324,30 @@ "node": ">= 6" } }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1101,6 +1366,15 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -1118,6 +1392,27 @@ "node": "*" } }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -1164,12 +1459,60 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1178,6 +1521,18 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -1186,6 +1541,49 @@ "he": "bin/he" } }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -1220,6 +1618,15 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1234,6 +1641,15 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1250,6 +1666,21 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1302,6 +1733,24 @@ "node": ">=8" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -1319,31 +1768,31 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isomorphic-ws": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", - "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", "peerDependencies": { "ws": "*" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" + }, + "node_modules/jose": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/jose/-/jose-2.0.7.tgz", + "integrity": "sha512-5hFWIigKqC+e/lRyQhfnirrAqUdIPMB7SJRqflJaO29dW7q5DFvH1XCSTmv6PQ6pb++0k6MJlLRoS0Wv4s38Wg==", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@panva/asn1.js": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=10.13.0 < 13 || >=13.7.0" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jose": { - "version": "5.9.6", - "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.6.tgz", - "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==", "funding": { "url": "https://github.com/sponsors/panva" } @@ -1360,19 +1809,28 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsep": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", - "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", - "engines": { - "node": ">= 10.16.0" - } + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -1380,21 +1838,43 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, "node_modules/jsonpath-plus": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.2.0.tgz", - "integrity": "sha512-T9V+8iNYKFL2n2rF+w02LBOT2JjDnTjioaNFrxRy0Bv1y/hNsqR/EBK7Ojy2ythRHwmz2cRIls+9JitQGZC/sw==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-0.19.0.tgz", + "integrity": "sha512-GSVwsrzW9LsA5lzsqe4CkuZ9wp+kxBb2GwNniaWzI2YFn5Ig42rSW8ZxVpWXaAfakXNrx5pgY5AbQq7kzX29kg==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "license": "MIT", "dependencies": { - "@jsep-plugin/assignment": "^1.3.0", - "@jsep-plugin/regex": "^1.0.4", - "jsep": "^1.4.0" - }, - "bin": { - "jsonpath": "bin/jsonpath-cli.js", - "jsonpath-plus": "bin/jsonpath-cli.js" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=0.6.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" } }, "node_modules/levn": { @@ -1460,10 +1940,32 @@ "get-func-name": "^2.0.0" } }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "license": "ISC" }, "node_modules/md5": { "version": "2.3.0", @@ -1475,6 +1977,12 @@ "is-buffer": "~1.1.6" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -1494,6 +2002,24 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -1506,86 +2032,37 @@ } }, "node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/minizlib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", - "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/minizlib/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==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/minizlib/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minizlib/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 8" } }, "node_modules/minizlib/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib/node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { - "glob": "^10.3.7" + "yallist": "^4.0.0" }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=8" } }, "node_modules/mkdirp": { @@ -1727,25 +2204,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -1763,12 +2221,55 @@ "node": ">=0.10.0" } }, - "node_modules/oauth4webapi": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/oauth4webapi/-/oauth4webapi-3.1.4.tgz", - "integrity": "sha512-eVfN3nZNbok2s/ROifO0UAc5G8nRoLSbrcKJ09OqmucgnhXEfdIQOR4gq1eJH1rN3gV7rNw62bDEgftsgFtBEg==", + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, "funding": { - "url": "https://github.com/sponsors/panva" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/oidc-token-hash": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz", + "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || >=12.0.0" } }, "node_modules/once": { @@ -1779,13 +2280,37 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/openid-client": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-6.1.7.tgz", - "integrity": "sha512-JfY/KvQgOutmG2P+oVNKInE7zIh+im1MQOaO7g5CtNnTWMociA563WweiEMKfR9ry9XG3K2HGvj9wEqhCQkPMg==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-4.9.1.tgz", + "integrity": "sha512-DYUF07AHjI3QDKqKbn2F7RqozT4hyi4JvmpodLrq0HHoNP7t/AjeG/uqiBK1/N2PZSAQEThVjDLHSmJN4iqu/w==", + "license": "MIT", "dependencies": { - "jose": "^5.9.6", - "oauth4webapi": "^3.1.4" + "aggregate-error": "^3.1.0", + "got": "^11.8.0", + "jose": "^2.0.5", + "lru-cache": "^6.0.0", + "make-error": "^1.3.6", + "object-hash": "^2.0.1", + "oidc-token-hash": "^5.0.1" + }, + "engines": { + "node": "^10.19.0 || >=12.0.0 < 13 || >=13.7.0 < 14 || >= 14.2.0" }, "funding": { "url": "https://github.com/sponsors/panva" @@ -1808,6 +2333,15 @@ "node": ">= 0.8.0" } }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -1836,11 +2370,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1877,28 +2406,11 @@ "node": ">=8" } }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "engines": { - "node": ">=16 || 14 >=14.17" - } + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" }, "node_modules/pathval": { "version": "1.1.1", @@ -1909,6 +2421,12 @@ "node": "*" } }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -1934,15 +2452,46 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -1963,6 +2512,18 @@ } ] }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -1982,6 +2543,73 @@ "node": ">=8.10.0" } }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -1990,6 +2618,32 @@ "node": ">=0.10.0" } }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -1999,6 +2653,18 @@ "node": ">=4" } }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -2070,6 +2736,12 @@ } ] }, + "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" + }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -2097,83 +2769,60 @@ "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/stream-buffers": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", - "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "license": "BSD-3-Clause", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" }, - "engines": { - "node": ">=12" + "bin": { + "shjs": "bin/shjs" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "engines": { - "node": ">=12" + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, + "node_modules/stream-buffers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", + "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">= 0.10.0" } }, "node_modules/strip-ansi": { @@ -2187,16 +2836,13 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, "node_modules/strip-json-comments": { @@ -2221,42 +2867,42 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=10" } }, "node_modules/tar/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, "node_modules/text-table": { @@ -2295,15 +2941,42 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } }, "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense" }, "node_modules/type-check": { "version": "0.4.0", @@ -2338,6 +3011,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "license": "MIT" + }, "node_modules/undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", @@ -2347,7 +3026,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -2360,18 +3038,18 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, "node_modules/which": { @@ -2409,36 +3087,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -2458,15 +3106,16 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=8.3.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -2491,12 +3140,10 @@ } }, "node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "engines": { - "node": ">=18" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/yargs": { "version": "16.2.0", @@ -2630,99 +3277,40 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, - "@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "requires": { - "minipass": "^7.0.4" - }, - "dependencies": { - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" - } - } - }, - "@jsep-plugin/assignment": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", - "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", - "requires": {} - }, - "@jsep-plugin/regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", - "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", - "requires": {} - }, "@kubernetes/client-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-1.0.0.tgz", - "integrity": "sha512-a8NSvFDSHKFZ0sR1hbPSf8IDFNJwctEU5RodSCNiq/moRXWmrdmqhb1RRQzF+l+TSBaDgHw3YsYNxxE92STBzw==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.15.1.tgz", + "integrity": "sha512-j3o5K4TWkdrX2yDndbEZcDxhgea6O2JKnesWoYCJ64WtMn2GbQXGBOnkn2i0WT2MugGbLR+qCm8Y3oHWBApaTA==", "requires": { "@types/js-yaml": "^4.0.1", - "@types/node": "^22.0.0", - "@types/node-fetch": "^2.6.9", + "@types/node": "^10.12.0", + "@types/request": "^2.47.1", "@types/stream-buffers": "^3.0.3", - "@types/tar": "^6.1.1", - "@types/ws": "^8.5.4", - "form-data": "^4.0.0", - "isomorphic-ws": "^5.0.0", + "@types/tar": "^4.0.3", + "@types/underscore": "^1.8.9", + "@types/ws": "^6.0.1", + "byline": "^5.0.0", + "execa": "5.0.0", + "isomorphic-ws": "^4.0.1", "js-yaml": "^4.1.0", - "jsonpath-plus": "^10.2.0", - "node-fetch": "^2.6.9", - "openid-client": "^6.1.3", + "jsonpath-plus": "^0.19.0", + "openid-client": "^4.1.1", + "request": "^2.88.0", "rfc4648": "^1.3.0", + "shelljs": "^0.8.4", "stream-buffers": "^3.0.2", - "tar": "^7.0.0", + "tar": "^6.0.2", "tmp-promise": "^3.0.2", - "tslib": "^2.5.0", - "ws": "^8.18.0" + "tslib": "^1.9.3", + "underscore": "^1.9.1", + "ws": "^7.3.1" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + } } }, "@nodelib/fs.scandir": { @@ -2751,17 +3339,66 @@ "fastq": "^1.6.0" } }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true + "@panva/asn1.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz", + "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==" + }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" + }, + "@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" }, "@types/js-yaml": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==" }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "requires": { + "@types/node": "*" + } + }, + "@types/minipass": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/minipass/-/minipass-3.3.5.tgz", + "integrity": "sha512-M2BLHQdEmDmH671h0GIlOQQJrgezd1vNqq7PVj1VOsHZ2uQQb4iPiQIl0SlMdhxZPUsLIfEklmeEHXg8DJRewA==", + "requires": { + "minipass": "*" + } + }, "@types/node": { "version": "22.10.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", @@ -2770,13 +3407,36 @@ "undici-types": "~6.20.0" } }, - "@types/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "@types/request": { + "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", "requires": { + "@types/caseless": "*", "@types/node": "*", - "form-data": "^4.0.0" + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + }, + "dependencies": { + "form-data": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.2.tgz", + "integrity": "sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12", + "safe-buffer": "^5.2.1" + } + } + } + }, + "@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "requires": { + "@types/node": "*" } }, "@types/stream-buffers": { @@ -2788,18 +3448,28 @@ } }, "@types/tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tar/-/tar-4.0.5.tgz", + "integrity": "sha512-cgwPhNEabHaZcYIy5xeMtux2EmYBitfqEceBUi2t5+ETy4dW6kswt6WX4+HqLeiiKOo42EXbGiDmVJ2x+vi37Q==", "requires": { - "@types/node": "*", - "minipass": "^4.0.0" + "@types/minipass": "*", + "@types/node": "*" } }, + "@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, + "@types/underscore": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.13.0.tgz", + "integrity": "sha512-L6LBgy1f0EFQZ+7uSA57+n2g/s4Qs5r06Vwrwn0/nuK1de+adz00NWaztRQ30aEqw5qOaWbPI8u2cGQ52lj6VA==" + }, "@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-6.0.4.tgz", + "integrity": "sha512-PpPrX7SZW9re6+Ha8ojZG4Se8AZXgf0GK6zmfqEuCsY49LFDNXO3SByp44X3dFEqtB73lkCDAdUazhAjVPiNwg==", "requires": { "@types/node": "*" } @@ -2817,11 +3487,19 @@ "dev": true, "requires": {} }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2861,6 +3539,19 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -2872,6 +3563,16 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==" + }, "axios": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", @@ -2887,6 +3588,14 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + } + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2914,6 +3623,40 @@ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==" + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + } + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2925,6 +3668,11 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, "chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -2986,9 +3734,14 @@ } }, "chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "cliui": { "version": "7.0.4", @@ -3012,6 +3765,14 @@ } } }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "requires": { + "mimic-response": "^1.0.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3038,6 +3799,11 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, "cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -3053,6 +3819,14 @@ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, "debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -3066,6 +3840,21 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } + } + }, "deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -3081,6 +3870,11 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -3100,16 +3894,28 @@ "esutils": "^2.0.2" } }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -3231,17 +4037,41 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -3310,14 +4140,10 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, - "foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "form-data": { "version": "4.0.1", @@ -3329,6 +4155,24 @@ "mime-types": "^2.1.12" } }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3340,6 +4184,11 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "optional": true }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -3351,6 +4200,19 @@ "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -3382,22 +4244,91 @@ "type-fest": "^0.20.2" } }, + "got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, "graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -3420,6 +4351,11 @@ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3434,6 +4370,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3447,6 +4388,14 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "requires": { + "hasown": "^2.0.2" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3481,6 +4430,16 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -3492,24 +4451,23 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isomorphic-ws": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", - "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", "requires": {} }, - "jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "jose": { - "version": "5.9.6", - "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.6.tgz", - "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==" + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/jose/-/jose-2.0.7.tgz", + "integrity": "sha512-5hFWIigKqC+e/lRyQhfnirrAqUdIPMB7SJRqflJaO29dW7q5DFvH1XCSTmv6PQ6pb++0k6MJlLRoS0Wv4s38Wg==", + "requires": { + "@panva/asn1.js": "^1.0.0" + } }, "js-yaml": { "version": "4.1.0", @@ -3519,16 +4477,25 @@ "argparse": "^2.0.1" } }, - "jsep": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", - "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==" + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -3536,14 +4503,33 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, "jsonpath-plus": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.2.0.tgz", - "integrity": "sha512-T9V+8iNYKFL2n2rF+w02LBOT2JjDnTjioaNFrxRy0Bv1y/hNsqR/EBK7Ojy2ythRHwmz2cRIls+9JitQGZC/sw==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-0.19.0.tgz", + "integrity": "sha512-GSVwsrzW9LsA5lzsqe4CkuZ9wp+kxBb2GwNniaWzI2YFn5Ig42rSW8ZxVpWXaAfakXNrx5pgY5AbQq7kzX29kg==" + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "requires": { - "@jsep-plugin/assignment": "^1.3.0", - "@jsep-plugin/regex": "^1.0.4", - "jsep": "^1.4.0" + "json-buffer": "3.0.1" } }, "levn": { @@ -3594,10 +4580,23 @@ "get-func-name": "^2.0.0" } }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, "lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "md5": { "version": "2.3.0", @@ -3609,6 +4608,11 @@ "is-buffer": "~1.1.6" } }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -3622,6 +4626,16 @@ "mime-db": "1.52.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3631,59 +4645,25 @@ } }, "minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" }, "minizlib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", - "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "requires": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - } - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "requires": { - "brace-expansion": "^2.0.1" - } - }, "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" - }, - "rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "requires": { - "glob": "^10.3.7" + "yallist": "^4.0.0" } } } @@ -3791,14 +4771,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, "node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -3809,10 +4781,33 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, - "oauth4webapi": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/oauth4webapi/-/oauth4webapi-3.1.4.tgz", - "integrity": "sha512-eVfN3nZNbok2s/ROifO0UAc5G8nRoLSbrcKJ09OqmucgnhXEfdIQOR4gq1eJH1rN3gV7rNw62bDEgftsgFtBEg==" + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" + }, + "oidc-token-hash": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz", + "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==" }, "once": { "version": "1.4.0", @@ -3822,13 +4817,26 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, "openid-client": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-6.1.7.tgz", - "integrity": "sha512-JfY/KvQgOutmG2P+oVNKInE7zIh+im1MQOaO7g5CtNnTWMociA563WweiEMKfR9ry9XG3K2HGvj9wEqhCQkPMg==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-4.9.1.tgz", + "integrity": "sha512-DYUF07AHjI3QDKqKbn2F7RqozT4hyi4JvmpodLrq0HHoNP7t/AjeG/uqiBK1/N2PZSAQEThVjDLHSmJN4iqu/w==", "requires": { - "jose": "^5.9.6", - "oauth4webapi": "^3.1.4" + "aggregate-error": "^3.1.0", + "got": "^11.8.0", + "jose": "^2.0.5", + "lru-cache": "^6.0.0", + "make-error": "^1.3.6", + "object-hash": "^2.0.1", + "oidc-token-hash": "^5.0.1" } }, "optionator": { @@ -3845,6 +4853,11 @@ "type-check": "^0.4.0" } }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -3861,11 +4874,6 @@ "p-limit": "^3.0.2" } }, - "package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3890,21 +4898,10 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, - "path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "requires": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "dependencies": { - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" - } - } + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "pathval": { "version": "1.1.1", @@ -3912,6 +4909,11 @@ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -3928,11 +4930,32 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "requires": { + "punycode": "^2.3.1" + } + }, + "pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, "queue-microtask": { "version": "1.2.3", @@ -3940,6 +4963,11 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -3956,17 +4984,92 @@ "picomatch": "^2.2.1" } }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "requires": { + "resolve": "^1.1.6" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, + "resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "requires": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -4000,6 +5103,11 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -4021,56 +5129,42 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } }, "stream-buffers": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==" }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4079,13 +5173,10 @@ "ansi-regex": "^5.0.1" } }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" }, "strip-json-comments": { "version": "3.1.1", @@ -4100,28 +5191,28 @@ "has-flag": "^4.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, "tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "requires": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "dependencies": { "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" - }, - "mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" } } }, @@ -4155,15 +5246,32 @@ "is-number": "^7.0.0" } }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } }, "tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "type-check": { "version": "0.4.0", @@ -4186,6 +5294,11 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, + "underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==" + }, "undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", @@ -4195,7 +5308,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -4205,18 +5317,14 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, "which": { @@ -4254,37 +5362,15 @@ } } }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "requires": {} }, "xml": { @@ -4298,9 +5384,9 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { "version": "16.2.0", diff --git a/testing/e2e/skr/package.json b/testing/e2e/skr/package.json index 798ca4b3b4..d659b14b58 100644 --- a/testing/e2e/skr/package.json +++ b/testing/e2e/skr/package.json @@ -26,7 +26,7 @@ "mocha-multi-reporters": "^1.5.1" }, "dependencies": { - "@kubernetes/client-node": "1.0.0", + "@kubernetes/client-node": "0.15.1", "axios": "^1.7.4", "js-yaml": "^4.1.0", "mocha-junit-reporter": "^2.0.0", diff --git a/utils/archiver/kyma-environment-broker-archiver.yaml b/utils/archiver/kyma-environment-broker-archiver.yaml index b5433f4065..0142fc17dd 100644 --- a/utils/archiver/kyma-environment-broker-archiver.yaml +++ b/utils/archiver/kyma-environment-broker-archiver.yaml @@ -74,4 +74,4 @@ spec: template: spec: containers: - - image: europe-docker.pkg.dev/kyma-project/prod/kyma-environment-archiver-job:1.11.5 + - image: europe-docker.pkg.dev/kyma-project/prod/kyma-environment-archiver-job:1.11.11 diff --git a/utils/kyma-environments-cleanup-job/kyma-environments-cleanup-job.yaml b/utils/kyma-environments-cleanup-job/kyma-environments-cleanup-job.yaml index 8d26db0103..1ba659d1f5 100644 --- a/utils/kyma-environments-cleanup-job/kyma-environments-cleanup-job.yaml +++ b/utils/kyma-environments-cleanup-job/kyma-environments-cleanup-job.yaml @@ -28,7 +28,7 @@ spec: containers: - name: kyma-environments-cleanup command: ["/bin/main"] - image: europe-docker.pkg.dev/kyma-project/prod/kyma-environments-cleanup-job:1.11.5 + image: europe-docker.pkg.dev/kyma-project/prod/kyma-environments-cleanup-job:1.11.11 imagePullPolicy: IfNotPresent env: - name: DATABASE_EMBEDDED