diff --git a/.azdo/pipelines/azure-dev.yml b/.azdo/pipelines/azure-dev.yml
index 728f2e287..e852f1810 100644
--- a/.azdo/pipelines/azure-dev.yml
+++ b/.azdo/pipelines/azure-dev.yml
@@ -1,7 +1,20 @@
# Run when commits are pushed to mainline branch (main or master)
# Set this to the mainline branch you are using
trigger:
- - main
+ branches:
+ include:
+ - main
+ paths:
+ include:
+ - src/*
+ - infra/*
+ - azure.yaml
+ - azure_custom.yaml
+ - .azdo/pipelines/azure-dev.yml
+ exclude:
+ - '*.md'
+ - docs/*
+ - data/*
# Azure Pipelines workflow to deploy to Azure using azd
# To configure required secrets and service connection for connecting to Azure, simply run `azd pipeline config --provider azdo`
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index f1a0d6648..bdaed742d 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -32,7 +32,7 @@ updates:
- "*"
- package-ecosystem: "pip"
- directory: "/src/frontend"
+ directory: "/src/App"
schedule:
interval: "monthly"
commit-message:
diff --git a/.github/workflows/azd-template-validation.yml b/.github/workflows/azd-template-validation.yml
new file mode 100644
index 000000000..fe9dc4ca4
--- /dev/null
+++ b/.github/workflows/azd-template-validation.yml
@@ -0,0 +1,41 @@
+name: AZD Template Validation
+on:
+ schedule:
+ - cron: '30 1 * * 4' # Every Thursday at 7:00 AM IST (1:30 AM UTC)
+ workflow_dispatch:
+
+permissions:
+ contents: read
+ id-token: write
+ pull-requests: write
+
+jobs:
+ template_validation:
+ runs-on: ubuntu-latest
+ name: azd template validation
+ environment: production
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set timestamp
+ run: echo "HHMM=$(date -u +'%H%M')" >> $GITHUB_ENV
+
+ - uses: microsoft/template-validation-action@v0.4.3
+ with:
+ validateAzd: ${{ vars.TEMPLATE_VALIDATE_AZD }}
+ validateTests: ${{ vars.TEMPLATE_VALIDATE_TESTS }}
+ useDevContainer: ${{ vars.TEMPLATE_USE_DEV_CONTAINER }}
+ id: validation
+ env:
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
+ AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
+ AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
+ AZURE_ENV_NAME: azd-${{ vars.AZURE_ENV_NAME }}-${{ env.HHMM }}
+ AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
+ AZURE_ENV_OPENAI_LOCATION : ${{ vars.AZURE_AI_DEPLOYMENT_LOCATION }}
+ AZURE_ENV_MODEL_CAPACITY: 1
+ AZURE_ENV_MODEL_4_1_CAPACITY: 1 # keep low to avoid potential quota issues
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: print result
+ run: cat ${{ steps.validation.outputs.resultFile }}
\ No newline at end of file
diff --git a/.github/workflows/azure-dev.yml b/.github/workflows/azure-dev.yml
index 23bed8a20..1da05d6e7 100644
--- a/.github/workflows/azure-dev.yml
+++ b/.github/workflows/azure-dev.yml
@@ -1,40 +1,59 @@
-name: Azure Template Validation
+name: Azure Dev Deploy
+
on:
workflow_dispatch:
permissions:
contents: read
id-token: write
- pull-requests: write
jobs:
- template_validation_job:
+ deploy:
runs-on: ubuntu-latest
environment: production
- name: template validation
+ env:
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
+ AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
+ AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
+ AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
+ AZURE_ENV_OPENAI_LOCATION : ${{ vars.AZURE_AI_DEPLOYMENT_LOCATION }}
+ AZURE_ENV_MODEL_CAPACITY: 1
+ AZURE_ENV_MODEL_4_1_CAPACITY: 1
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
steps:
- # Step 1: Checkout the code from your repository
- - name: Checkout code
- uses: actions/checkout@v4
- # Step 2: Validate the Azure template using microsoft/template-validation-action
- - name: Validate Azure Template
- uses: microsoft/template-validation-action@bae4895d0a8abd4f0d5aad68ae8647b3027f4c91
- with:
- validateAzd: true
- useDevContainer: false
- id: validation
- env:
- AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
- AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
- AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- AZURE_ENV_NAME: ${{ secrets.AZURE_ENV_NAME }}
- AZURE_LOCATION: ${{ secrets.AZURE_LOCATION }}
- AZURE_ENV_OPENAI_LOCATION : ${{ secrets.AZURE_AI_DEPLOYMENT_LOCATION }}
- AZURE_ENV_MODEL_CAPACITY: 1
- AZURE_ENV_MODEL_4_1_CAPACITY: 1
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
-
- # Step 3: Print the result of the validation
- - name: print result
- run: cat ${{ steps.validation.outputs.resultFile }}
+ - name: Checkout Code
+ uses: actions/checkout@v4
+
+ - name: Set timestamp and env name
+ run: |
+ HHMM=$(date -u +'%H%M')
+ echo "AZURE_ENV_NAME=azd-${{ vars.AZURE_ENV_NAME }}-${HHMM}" >> $GITHUB_ENV
+
+ - name: Install azd
+ uses: Azure/setup-azd@v2
+
+ - name: Login to Azure
+ uses: azure/login@v2
+ with:
+ client-id: ${{ secrets.AZURE_CLIENT_ID }}
+ tenant-id: ${{ secrets.AZURE_TENANT_ID }}
+ subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
+
+ - name: Login to AZD
+ shell: bash
+ run: |
+ azd auth login \
+ --client-id "$AZURE_CLIENT_ID" \
+ --federated-credential-provider "github" \
+ --tenant-id "$AZURE_TENANT_ID"
+
+ - name: Provision and Deploy
+ shell: bash
+ run: |
+ if ! azd env select "$AZURE_ENV_NAME"; then
+ azd env new "$AZURE_ENV_NAME" --subscription "$AZURE_SUBSCRIPTION_ID" --location "$AZURE_LOCATION" --no-prompt
+ fi
+ azd config set defaults.subscription "$AZURE_SUBSCRIPTION_ID"
+ azd env set AZURE_ENV_OPENAI_LOCATION="$AZURE_ENV_OPENAI_LOCATION"
+ azd up --no-prompt
\ No newline at end of file
diff --git a/.github/workflows/deploy-waf.yml b/.github/workflows/deploy-waf.yml
index a035fae9e..e2bd38a3f 100644
--- a/.github/workflows/deploy-waf.yml
+++ b/.github/workflows/deploy-waf.yml
@@ -8,6 +8,12 @@ on:
push:
branches:
- main
+ paths:
+ - 'src/**'
+ - 'infra/**'
+ - 'azure.yaml'
+ - 'azure_custom.yaml'
+ - '.github/workflows/deploy-waf.yml'
schedule:
- cron: "0 11,23 * * *" # Runs at 11:00 AM and 11:00 PM GMT
diff --git a/.github/workflows/docker-build-and-push.yml b/.github/workflows/docker-build-and-push.yml
index 54b79a627..a98de3568 100644
--- a/.github/workflows/docker-build-and-push.yml
+++ b/.github/workflows/docker-build-and-push.yml
@@ -8,7 +8,7 @@ on:
- demo-v4
- hotfix
paths:
- - 'src/frontend/**'
+ - 'src/App/**'
- 'src/backend/**'
- 'src/mcp_server/**'
- '.github/workflows/docker-build-and-push.yml'
@@ -31,7 +31,7 @@ on:
- demo-v4
- hotfix
paths:
- - 'src/frontend/**'
+ - 'src/App/**'
- 'src/backend/**'
- 'src/mcp_server/**'
- '.github/workflows/docker-build-and-push.yml'
@@ -117,8 +117,8 @@ jobs:
- name: Build and optionally push Frontend Docker image
uses: docker/build-push-action@v6
with:
- context: ./src/frontend
- file: ./src/frontend/Dockerfile
+ context: ./src/App
+ file: ./src/App/Dockerfile
push: ${{ env.TAG != 'pullrequest-ignore' }}
tags: |
${{ steps.registry.outputs.ext_registry }}/macaefrontend:${{ env.TAG }}
diff --git a/.github/workflows/job-docker-build.yml b/.github/workflows/job-docker-build.yml
index 71e7a42b8..863b783e2 100644
--- a/.github/workflows/job-docker-build.yml
+++ b/.github/workflows/job-docker-build.yml
@@ -74,8 +74,8 @@ jobs:
env:
DOCKER_BUILD_SUMMARY: false
with:
- context: ./src/frontend
- file: ./src/frontend/Dockerfile
+ context: ./src/App
+ file: ./src/App/Dockerfile
push: true
tags: |
${{ secrets.ACR_TEST_LOGIN_SERVER }}/macaefrontend:${{ steps.generate_docker_tag.outputs.IMAGE_TAG }}
diff --git a/.github/workflows/validate-bicep-params.yml b/.github/workflows/validate-bicep-params.yml
new file mode 100644
index 000000000..a483c8473
--- /dev/null
+++ b/.github/workflows/validate-bicep-params.yml
@@ -0,0 +1,108 @@
+name: Validate Bicep Parameters
+
+permissions:
+ contents: read
+
+on:
+ schedule:
+ - cron: '30 6 * * 3' # Wednesday 12:00 PM IST (6:30 AM UTC)
+ pull_request:
+ branches:
+ - main
+ - dev
+ paths:
+ - 'infra/**/*.bicep'
+ - 'infra/**/*.parameters.json'
+ - 'infra/scripts/validate_bicep_params.py'
+ workflow_dispatch:
+
+env:
+ accelerator_name: "MACAE"
+
+jobs:
+ validate:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.11'
+
+ - name: Validate infra/ parameters
+ id: validate_infra
+ continue-on-error: true
+ run: |
+ set +e
+ python infra/scripts/validate_bicep_params.py --dir infra --strict --no-color --json-output infra_results.json 2>&1 | tee infra_output.txt
+ EXIT_CODE=${PIPESTATUS[0]}
+ set -e
+ echo "## Infra Param Validation" >> "$GITHUB_STEP_SUMMARY"
+ echo '```' >> "$GITHUB_STEP_SUMMARY"
+ cat infra_output.txt >> "$GITHUB_STEP_SUMMARY"
+ echo '```' >> "$GITHUB_STEP_SUMMARY"
+ exit $EXIT_CODE
+
+ - name: Set overall result
+ id: result
+ run: |
+ if [[ "${{ steps.validate_infra.outcome }}" == "failure" ]]; then
+ echo "status=failure" >> "$GITHUB_OUTPUT"
+ else
+ echo "status=success" >> "$GITHUB_OUTPUT"
+ fi
+
+ - name: Upload validation results
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: bicep-validation-results
+ path: |
+ infra_results.json
+ retention-days: 30
+
+ - name: Send schedule notification on failure
+ if: github.event_name == 'schedule' && steps.result.outputs.status == 'failure'
+ env:
+ LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }}
+ GITHUB_REPOSITORY: ${{ github.repository }}
+ GITHUB_RUN_ID: ${{ github.run_id }}
+ ACCELERATOR_NAME: ${{ env.accelerator_name }}
+ run: |
+ RUN_URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"
+ INFRA_OUTPUT=$(sed 's/&/\&/g; s/\</g; s/>/\>/g' infra_output.txt)
+
+ jq -n \
+ --arg name "${ACCELERATOR_NAME}" \
+ --arg infra "$INFRA_OUTPUT" \
+ --arg url "$RUN_URL" \
+ '{subject: ("Bicep Parameter Validation Report - " + $name + " - Issues Detected"), body: ("
Dear Team,
The scheduled Bicep Parameter Validation for " + $name + " has detected parameter mapping errors.
infra/ Results:
" + $infra + "
Run URL: " + $url + "
Please fix the parameter mapping issues at your earliest convenience.
Best regards,
Your Automation Team
")}' \
+ | curl -X POST "${LOGICAPP_URL}" \
+ -H "Content-Type: application/json" \
+ -d @- || echo "Failed to send notification"
+
+ - name: Send schedule notification on success
+ if: github.event_name == 'schedule' && steps.result.outputs.status == 'success'
+ env:
+ LOGICAPP_URL: ${{ secrets.EMAILNOTIFICATION_LOGICAPP_URL_TA }}
+ GITHUB_REPOSITORY: ${{ github.repository }}
+ GITHUB_RUN_ID: ${{ github.run_id }}
+ ACCELERATOR_NAME: ${{ env.accelerator_name }}
+ run: |
+ RUN_URL="https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"
+ INFRA_OUTPUT=$(sed 's/&/\&/g; s/\</g; s/>/\>/g' infra_output.txt)
+
+ jq -n \
+ --arg name "${ACCELERATOR_NAME}" \
+ --arg infra "$INFRA_OUTPUT" \
+ --arg url "$RUN_URL" \
+ '{subject: ("Bicep Parameter Validation Report - " + $name + " - Passed"), body: ("Dear Team,
The scheduled Bicep Parameter Validation for " + $name + " has completed successfully. All parameter mappings are valid.
infra/ Results:
" + $infra + "
Run URL: " + $url + "
Best regards,
Your Automation Team
")}' \
+ | curl -X POST "${LOGICAPP_URL}" \
+ -H "Content-Type: application/json" \
+ -d @- || echo "Failed to send notification"
+
+ - name: Fail if errors found
+ if: steps.result.outputs.status == 'failure'
+ run: exit 1
diff --git a/Multi-Agent-Custom-Automation-Engine-Solution-Accelerator.code-workspace b/Multi-Agent-Custom-Automation-Engine-Solution-Accelerator.code-workspace
index 1f5237069..73853d046 100644
--- a/Multi-Agent-Custom-Automation-Engine-Solution-Accelerator.code-workspace
+++ b/Multi-Agent-Custom-Automation-Engine-Solution-Accelerator.code-workspace
@@ -4,7 +4,7 @@
"path": "."
},
// {
- // "path": "./src/frontend"
+ // "path": "./src/App"
// },
// {
// "path": "./src/backend"
diff --git a/README.md b/README.md
index 0b70701cb..078ed55d0 100644
--- a/README.md
+++ b/README.md
@@ -80,6 +80,8 @@ Follow the quick deploy steps on the deployment guide to deploy this solution to
+> **Note**: Some tenants may have additional security restrictions that run periodically and could impact the application (e.g., blocking public network access). If you experience issues or the application stops working, check if these restrictions are the cause. In such cases, consider deploying the WAF-supported version to ensure compliance. To configure, [Click here](./docs/DeploymentGuide.md#31-choose-deployment-type-optional).
+
> ⚠️ **Important: Check Azure OpenAI Quota Availability**
To ensure sufficient quota is available in your subscription, please follow [quota check instructions guide](./docs/quota_check.md) before you deploy the solution.
diff --git a/azure.yaml b/azure.yaml
index af9c81738..a3b344d94 100644
--- a/azure.yaml
+++ b/azure.yaml
@@ -4,6 +4,7 @@ metadata:
template: multi-agent-custom-automation-engine-solution-accelerator@1.0
requiredVersions:
azd: '>= 1.18.0 != 1.23.9'
+ bicep: '>= 0.33.0'
hooks:
postdeploy:
windows:
diff --git a/azure_custom.yaml b/azure_custom.yaml
index 5e5ecc03f..f8bac1a36 100644
--- a/azure_custom.yaml
+++ b/azure_custom.yaml
@@ -26,7 +26,7 @@ services:
remoteBuild: true
frontend:
- project: ./src/frontend
+ project: ./src/App
language: py
host: appservice
dist: ./dist
diff --git a/docs/DeploymentGuide.md b/docs/DeploymentGuide.md
index 0ddf3e943..f14219049 100644
--- a/docs/DeploymentGuide.md
+++ b/docs/DeploymentGuide.md
@@ -6,6 +6,8 @@ This guide walks you through deploying the Multi Agent Custom Automation Engine
🆘 **Need Help?** If you encounter any issues during deployment, check our [Troubleshooting Guide](./TroubleShootingSteps.md) for solutions to common problems.
+> **Note**: Some tenants may have additional security restrictions that run periodically and could impact the application (e.g., blocking public network access). If you experience issues or the application stops working, check if these restrictions are the cause. In such cases, consider deploying the WAF-supported version to ensure compliance. To configure, [Click here](#31-choose-deployment-type-optional).
+
## Step 1: Prerequisites & Setup
### 1.1 Azure Account Requirements
diff --git a/docs/LocalDevelopmentSetup.md b/docs/LocalDevelopmentSetup.md
index f3c050b76..ab074f384 100644
--- a/docs/LocalDevelopmentSetup.md
+++ b/docs/LocalDevelopmentSetup.md
@@ -34,7 +34,7 @@ Multi-Agent-Custom-Automation-Engine-Solution-Accelerator/ ← Repository roo
│ │ ├── .venv/ ← Virtual environment
│ │ └── .env ← Backend config file
│ │ └── app.py ← Backend Entry Point
-│ ├── frontend/ ← cd src/frontend
+│ ├── App/ ← cd src/App
│ │ ├── node_modules/ ← npm dependencies
│ │ ├── .venv/ ← Virtual environment
│ │ ├── frontend_server.py ← Frontend entry point
@@ -60,7 +60,7 @@ cd path/to/Multi-Agent-Custom-Automation-Engine-Solution-Accelerator
This project uses Backend `.env` file in Backend directory with different configuration requirements:
- **Backend**: `src/backend/.env`
-
@@ -189,7 +189,7 @@ Create `.vscode/settings.json` and copy the following JSON:
},
{
"name": "Frontend",
- "path": "./src/frontend"
+ "path": "./src/App"
}
]
}
@@ -443,13 +443,13 @@ python mcp_server.py --transport streamable-http --host 0.0.0.0 --port 9000
> **📋 Terminal Reminder**: Open a **third dedicated terminal window (Terminal 3)** for the Frontend. Keep Terminals 1 (Backend) and 2 (MCP Server) running. All commands assume you start from the **repository root directory**.
-The UI is located under `src/frontend`.
+The UI is located under `src/App`.
### 6.1. Navigate to Frontend Directory
```bash
# From repository root
-cd src/frontend
+cd src/App
```
### 6.2. Install UI Dependencies
diff --git a/docs/ManualAzureDeployment.md b/docs/ManualAzureDeployment.md
index e2dd964d6..19d6ba7e5 100644
--- a/docs/ManualAzureDeployment.md
+++ b/docs/ManualAzureDeployment.md
@@ -54,7 +54,7 @@ az acr login --name
## Build and push the image
-Build the frontend and backend Docker images and push them to your Azure Container Registry. Run the following from the src/backend and the src/frontend directory contexts:
+Build the frontend and backend Docker images and push them to your Azure Container Registry. Run the following from the src/backend and the src/App directory contexts:
```sh
az acr build \
diff --git a/infra/main.bicep b/infra/main.bicep
index 998a90a5e..2b4868715 100644
--- a/infra/main.bicep
+++ b/infra/main.bicep
@@ -1518,6 +1518,9 @@ module webSite 'modules/web-sites.bicep' = {
location: location
kind: 'app,linux,container'
serverFarmResourceId: webServerFarm.?outputs.resourceId
+ managedIdentities: {
+ systemAssigned: true
+ }
siteConfig: {
linuxFxVersion: 'DOCKER|${frontendContainerRegistryHostname}/${frontendContainerImageName}:${frontendContainerImageTag}'
minTlsVersion: '1.2'
@@ -1681,6 +1684,7 @@ module searchServiceUpdate 'br/public:avm/res/search/search-service:0.11.1' = {
name: take('avm.res.search.update.${solutionSuffix}', 64)
params: {
name: searchServiceName
+ location: location
disableLocalAuth: true
hostingMode: 'default'
managedIdentities: {
diff --git a/infra/main.json b/infra/main.json
index 773e456d8..9c32501af 100644
--- a/infra/main.json
+++ b/infra/main.json
@@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.41.2.15936",
- "templateHash": "13556415974563619107"
+ "templateHash": "797205848378228584"
},
"name": "Multi-Agent Custom Automation Engine",
"description": "This module contains the resources required to deploy the [Multi-Agent Custom Automation Engine solution accelerator](https://github.com/microsoft/Multi-Agent-Custom-Automation-Engine-Solution-Accelerator) for both Sandbox environments and WAF aligned environments.\n\n> **Note:** This module is not intended for broad, generic use, as it was designed by the Commercial Solution Areas CTO team, as a Microsoft Solution Accelerator. Feature requests and bug fix requests are welcome if they support the needs of this organization but may not be incorporated if they aim to make this module more generic than what it needs to be for its primary use case. This module will likely be updated to leverage AVM resource modules in the future. This may result in breaking changes in upcoming versions when these features are implemented.\n"
@@ -35201,6 +35201,11 @@
"serverFarmResourceId": {
"value": "[tryGet(reference('webServerFarm'), 'outputs', 'resourceId', 'value')]"
},
+ "managedIdentities": {
+ "value": {
+ "systemAssigned": true
+ }
+ },
"siteConfig": {
"value": {
"linuxFxVersion": "[format('DOCKER|{0}/{1}:{2}', parameters('frontendContainerRegistryHostname'), parameters('frontendContainerImageName'), parameters('frontendContainerImageTag'))]",
@@ -43037,6 +43042,9 @@
"name": {
"value": "[variables('searchServiceName')]"
},
+ "location": {
+ "value": "[parameters('location')]"
+ },
"disableLocalAuth": {
"value": true
},
diff --git a/infra/main.waf.parameters.json b/infra/main.waf.parameters.json
index dcdfd1e23..19607121f 100644
--- a/infra/main.waf.parameters.json
+++ b/infra/main.waf.parameters.json
@@ -91,25 +91,6 @@
},
"MCPContainerRegistryHostname": {
"value": "${AZURE_ENV_CONTAINER_REGISTRY_ENDPOINT}"
- },
- "allowedFqdnList": {
- "value": [
- "mcr.microsoft.com",
- "openai.azure.com",
- "cognitiveservices.azure.com",
- "login.microsoftonline.com",
- "management.azure.com",
- "aiinfra.azure.com",
- "aiinfra.azure.net",
- "aiinfra.azureedge.net",
- "blob.core.windows.net",
- "database.windows.net",
- "vault.azure.net",
- "monitoring.azure.com",
- "dc.services.visualstudio.com",
- "azconfig.io",
- "azconfig.azure.net"
- ]
}
}
}
\ No newline at end of file
diff --git a/infra/main_custom.bicep b/infra/main_custom.bicep
index db6a6394e..c4bf94c22 100644
--- a/infra/main_custom.bicep
+++ b/infra/main_custom.bicep
@@ -1567,6 +1567,9 @@ module webSite 'modules/web-sites.bicep' = {
location: location
kind: 'app,linux'
serverFarmResourceId: webServerFarm.?outputs.resourceId
+ managedIdentities: {
+ systemAssigned: true
+ }
siteConfig: {
//linuxFxVersion: 'DOCKER|${frontendContainerRegistryHostname}/${frontendContainerImageName}:${frontendContainerImageTag}'
minTlsVersion: '1.2'
diff --git a/infra/old/00-older/deploy_ai_foundry.bicep b/infra/old/00-older/deploy_ai_foundry.bicep
deleted file mode 100644
index 4bb9e584c..000000000
--- a/infra/old/00-older/deploy_ai_foundry.bicep
+++ /dev/null
@@ -1,313 +0,0 @@
-// Creates Azure dependent resources for Azure AI studio
-param solutionName string
-param solutionLocation string
-param keyVaultName string
-param gptModelName string
-param gptModelVersion string
-param managedIdentityObjectId string
-param aiServicesEndpoint string
-param aiServicesKey string
-param aiServicesId string
-
-// Load the abbrevations file required to name the azure resources.
-var abbrs = loadJsonContent('./abbreviations.json')
-
-var storageName = '${abbrs.storage.storageAccount}${solutionName}hub'
-var storageSkuName = 'Standard_LRS'
-var aiServicesName = '${abbrs.ai.aiServices}${solutionName}'
-var workspaceName = '${abbrs.managementGovernance.logAnalyticsWorkspace}${solutionName}hub'
-//var keyvaultName = '${abbrs.security.keyVault}${solutionName}'
-var location = solutionLocation
-var aiHubName = '${abbrs.ai.aiHub}${solutionName}'
-var aiHubFriendlyName = aiHubName
-var aiHubDescription = 'AI Hub for MACAE template'
-var aiProjectName = '${abbrs.ai.aiHubProject}${solutionName}'
-var aiProjectFriendlyName = aiProjectName
-var aiSearchName = '${abbrs.ai.aiSearch}${solutionName}'
-
-resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' existing = {
- name: keyVaultName
-}
-
-resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
- name: workspaceName
- location: location
- tags: {}
- properties: {
- retentionInDays: 30
- sku: {
- name: 'PerGB2018'
- }
- }
-}
-
-var storageNameCleaned = replace(storageName, '-', '')
-
-resource storage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
- name: storageNameCleaned
- location: location
- sku: {
- name: storageSkuName
- }
- kind: 'StorageV2'
- identity: {
- type: 'SystemAssigned'
- }
- properties: {
- accessTier: 'Hot'
- allowBlobPublicAccess: false
- allowCrossTenantReplication: false
- allowSharedKeyAccess: false
- encryption: {
- keySource: 'Microsoft.Storage'
- requireInfrastructureEncryption: false
- services: {
- blob: {
- enabled: true
- keyType: 'Account'
- }
- file: {
- enabled: true
- keyType: 'Account'
- }
- queue: {
- enabled: true
- keyType: 'Service'
- }
- table: {
- enabled: true
- keyType: 'Service'
- }
- }
- }
- isHnsEnabled: false
- isNfsv4Enabled: false
- keyPolicy: {
- keyExpirationPeriodInDays: 7
- }
- largeFileSharesState: 'Disabled'
- minimumTlsVersion: 'TLS1_2'
- networkAcls: {
- bypass: 'AzureServices'
- defaultAction: 'Allow'
- }
- supportsHttpsTrafficOnly: true
- }
-}
-
-@description('This is the built-in Storage Blob Data Contributor.')
-resource blobDataContributor 'Microsoft.Authorization/roleDefinitions@2018-01-01-preview' existing = {
- scope: subscription()
- name: 'ba92f5b4-2d11-453d-a403-e96b0029c9fe'
-}
-
-resource storageroleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
- name: guid(resourceGroup().id, managedIdentityObjectId, blobDataContributor.id)
- scope: storage
- properties: {
- principalId: managedIdentityObjectId
- roleDefinitionId: blobDataContributor.id
- principalType: 'ServicePrincipal'
- }
-}
-
-resource aiHub 'Microsoft.MachineLearningServices/workspaces@2023-08-01-preview' = {
- name: aiHubName
- location: location
- identity: {
- type: 'SystemAssigned'
- }
- properties: {
- // organization
- friendlyName: aiHubFriendlyName
- description: aiHubDescription
-
- // dependent resources
- keyVault: keyVault.id
- storageAccount: storage.id
- }
- kind: 'hub'
-
- resource aiServicesConnection 'connections@2024-07-01-preview' = {
- name: '${aiHubName}-connection-AzureOpenAI'
- properties: {
- category: 'AIServices'
- target: aiServicesEndpoint
- authType: 'AAD'
- isSharedToAll: true
- metadata: {
- ApiType: 'Azure'
- ResourceId: aiServicesId
- }
- }
- }
-}
-
-resource aiHubProject 'Microsoft.MachineLearningServices/workspaces@2024-01-01-preview' = {
- name: aiProjectName
- location: location
- kind: 'Project'
- identity: {
- type: 'SystemAssigned'
- }
- properties: {
- friendlyName: aiProjectFriendlyName
- hubResourceId: aiHub.id
- }
-}
-
-resource aiDeveloper 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
- name: '64702f94-c441-49e6-a78b-ef80e0188fee'
-}
-
-resource aiDevelopertoAIProject 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
- name: guid(aiHubProject.id, aiDeveloper.id)
- scope: resourceGroup()
- properties: {
- roleDefinitionId: aiDeveloper.id
- principalId: aiHubProject.identity.principalId
- principalType: 'ServicePrincipal'
- }
-}
-
-resource tenantIdEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'TENANT-ID'
- properties: {
- value: subscription().tenantId
- }
-}
-
-resource azureOpenAIInferenceEndpoint 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-OPENAI-INFERENCE-ENDPOINT'
- properties: {
- value: ''
- }
-}
-
-resource azureOpenAIInferenceKey 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-OPENAI-INFERENCE-KEY'
- properties: {
- value: ''
- }
-}
-
-resource azureOpenAIApiKeyEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-OPENAI-KEY'
- properties: {
- value: aiServicesKey //aiServices_m.listKeys().key1
- }
-}
-
-resource azureOpenAIDeploymentModel 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-OPEN-AI-DEPLOYMENT-MODEL'
- properties: {
- value: gptModelName
- }
-}
-
-resource azureOpenAIApiVersionEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-OPENAI-PREVIEW-API-VERSION'
- properties: {
- value: gptModelVersion //'2024-02-15-preview'
- }
-}
-
-resource azureOpenAIEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-OPENAI-ENDPOINT'
- properties: {
- value: aiServicesEndpoint //aiServices_m.properties.endpoint
- }
-}
-
-resource azureAIProjectConnectionStringEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-AI-PROJECT-CONN-STRING'
- properties: {
- value: '${split(aiHubProject.properties.discoveryUrl, '/')[2]};${subscription().subscriptionId};${resourceGroup().name};${aiHubProject.name}'
- }
-}
-
-resource azureOpenAICUApiVersionEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-OPENAI-CU-VERSION'
- properties: {
- value: '?api-version=2024-12-01-preview'
- }
-}
-
-resource azureSearchIndexEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-SEARCH-INDEX'
- properties: {
- value: 'transcripts_index'
- }
-}
-
-resource cogServiceEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'COG-SERVICES-ENDPOINT'
- properties: {
- value: aiServicesEndpoint
- }
-}
-
-resource cogServiceKeyEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'COG-SERVICES-KEY'
- properties: {
- value: aiServicesKey
- }
-}
-
-resource cogServiceNameEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'COG-SERVICES-NAME'
- properties: {
- value: aiServicesName
- }
-}
-
-resource azureSubscriptionIdEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-SUBSCRIPTION-ID'
- properties: {
- value: subscription().subscriptionId
- }
-}
-
-resource resourceGroupNameEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-RESOURCE-GROUP'
- properties: {
- value: resourceGroup().name
- }
-}
-
-resource azureLocatioEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
- parent: keyVault
- name: 'AZURE-LOCATION'
- properties: {
- value: solutionLocation
- }
-}
-
-output keyvaultName string = keyVaultName
-output keyvaultId string = keyVault.id
-
-output aiServicesName string = aiServicesName
-output aiSearchName string = aiSearchName
-output aiProjectName string = aiHubProject.name
-
-output storageAccountName string = storageNameCleaned
-
-output logAnalyticsId string = logAnalytics.id
-output storageAccountId string = storage.id
-
-output projectConnectionString string = '${split(aiHubProject.properties.discoveryUrl, '/')[2]};${subscription().subscriptionId};${resourceGroup().name};${aiHubProject.name}'
diff --git a/infra/old/00-older/deploy_keyvault.bicep b/infra/old/00-older/deploy_keyvault.bicep
deleted file mode 100644
index 3a5c1f761..000000000
--- a/infra/old/00-older/deploy_keyvault.bicep
+++ /dev/null
@@ -1,62 +0,0 @@
-param solutionLocation string
-param managedIdentityObjectId string
-
-@description('KeyVault Name')
-param keyvaultName string
-
-resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' = {
- name: keyvaultName
- location: solutionLocation
- properties: {
- createMode: 'default'
- accessPolicies: [
- {
- objectId: managedIdentityObjectId
- permissions: {
- certificates: [
- 'all'
- ]
- keys: [
- 'all'
- ]
- secrets: [
- 'all'
- ]
- storage: [
- 'all'
- ]
- }
- tenantId: subscription().tenantId
- }
- ]
- enabledForDeployment: true
- enabledForDiskEncryption: true
- enabledForTemplateDeployment: true
- enableRbacAuthorization: true
- publicNetworkAccess: 'enabled'
- sku: {
- family: 'A'
- name: 'standard'
- }
- softDeleteRetentionInDays: 7
- tenantId: subscription().tenantId
- }
-}
-
-@description('This is the built-in Key Vault Administrator role.')
-resource kvAdminRole 'Microsoft.Authorization/roleDefinitions@2018-01-01-preview' existing = {
- scope: resourceGroup()
- name: '00482a5a-887f-4fb3-b363-3b7fe8e74483'
-}
-
-resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
- name: guid(resourceGroup().id, managedIdentityObjectId, kvAdminRole.id)
- properties: {
- principalId: managedIdentityObjectId
- roleDefinitionId:kvAdminRole.id
- principalType: 'ServicePrincipal'
- }
-}
-
-output keyvaultName string = keyvaultName
-output keyvaultId string = keyVault.id
diff --git a/infra/old/00-older/deploy_managed_identity.bicep b/infra/old/00-older/deploy_managed_identity.bicep
deleted file mode 100644
index 5288872cb..000000000
--- a/infra/old/00-older/deploy_managed_identity.bicep
+++ /dev/null
@@ -1,45 +0,0 @@
-// ========== Managed Identity ========== //
-targetScope = 'resourceGroup'
-
-@description('Solution Location')
-//param solutionLocation string
-param managedIdentityId string
-param managedIdentityPropPrin string
-param managedIdentityLocation string
-@description('Managed Identity Name')
-param miName string
-
-// resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
-// name: miName
-// location: solutionLocation
-// tags: {
-// app: solutionName
-// location: solutionLocation
-// }
-// }
-
-@description('This is the built-in owner role. See https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#owner')
-resource ownerRoleDefinition 'Microsoft.Authorization/roleDefinitions@2018-01-01-preview' existing = {
- scope: resourceGroup()
- name: '8e3af657-a8ff-443c-a75c-2fe8c4bcb635'
-}
-
-resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
- name: guid(resourceGroup().id, managedIdentityId, ownerRoleDefinition.id)
- properties: {
- principalId: managedIdentityPropPrin
- roleDefinitionId: ownerRoleDefinition.id
- principalType: 'ServicePrincipal'
- }
-}
-
-
-output managedIdentityOutput object = {
- id: managedIdentityId
- objectId: managedIdentityPropPrin
- resourceId: managedIdentityId
- location: managedIdentityLocation
- name: miName
-}
-
-output managedIdentityId string = managedIdentityId
diff --git a/infra/old/00-older/macae-continer-oc.json b/infra/old/00-older/macae-continer-oc.json
deleted file mode 100644
index 40c676ebe..000000000
--- a/infra/old/00-older/macae-continer-oc.json
+++ /dev/null
@@ -1,458 +0,0 @@
-{
- "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
- "languageVersion": "2.0",
- "contentVersion": "1.0.0.0",
- "metadata": {
- "_generator": {
- "name": "bicep",
- "version": "0.33.93.31351",
- "templateHash": "9524414973084491660"
- }
- },
- "parameters": {
- "location": {
- "type": "string",
- "defaultValue": "EastUS2",
- "metadata": {
- "description": "Location for all resources."
- }
- },
- "azureOpenAILocation": {
- "type": "string",
- "defaultValue": "EastUS",
- "metadata": {
- "description": "Location for OpenAI resources."
- }
- },
- "prefix": {
- "type": "string",
- "defaultValue": "macae",
- "metadata": {
- "description": "A prefix to add to the start of all resource names. Note: A \"unique\" suffix will also be added"
- }
- },
- "tags": {
- "type": "object",
- "defaultValue": {},
- "metadata": {
- "description": "Tags to apply to all deployed resources"
- }
- },
- "resourceSize": {
- "type": "object",
- "properties": {
- "gpt4oCapacity": {
- "type": "int"
- },
- "containerAppSize": {
- "type": "object",
- "properties": {
- "cpu": {
- "type": "string"
- },
- "memory": {
- "type": "string"
- },
- "minReplicas": {
- "type": "int"
- },
- "maxReplicas": {
- "type": "int"
- }
- }
- }
- },
- "defaultValue": {
- "gpt4oCapacity": 50,
- "containerAppSize": {
- "cpu": "2.0",
- "memory": "4.0Gi",
- "minReplicas": 1,
- "maxReplicas": 1
- }
- },
- "metadata": {
- "description": "The size of the resources to deploy, defaults to a mini size"
- }
- }
- },
- "variables": {
- "appVersion": "latest",
- "resgistryName": "biabcontainerreg",
- "dockerRegistryUrl": "[format('https://{0}.azurecr.io', variables('resgistryName'))]",
- "backendDockerImageURL": "[format('{0}.azurecr.io/macaebackend:{1}', variables('resgistryName'), variables('appVersion'))]",
- "frontendDockerImageURL": "[format('{0}.azurecr.io/macaefrontend:{1}', variables('resgistryName'), variables('appVersion'))]",
- "uniqueNameFormat": "[format('{0}-{{0}}-{1}', parameters('prefix'), uniqueString(resourceGroup().id, parameters('prefix')))]",
- "aoaiApiVersion": "2024-08-01-preview"
- },
- "resources": {
- "openai::gpt4o": {
- "type": "Microsoft.CognitiveServices/accounts/deployments",
- "apiVersion": "2023-10-01-preview",
- "name": "[format('{0}/{1}', format(variables('uniqueNameFormat'), 'openai'), 'gpt-4o')]",
- "sku": {
- "name": "GlobalStandard",
- "capacity": "[parameters('resourceSize').gpt4oCapacity]"
- },
- "properties": {
- "model": {
- "format": "OpenAI",
- "name": "gpt-4o",
- "version": "2024-08-06"
- },
- "versionUpgradeOption": "NoAutoUpgrade"
- },
- "dependsOn": [
- "openai"
- ]
- },
- "cosmos::autogenDb::memoryContainer": {
- "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
- "apiVersion": "2024-05-15",
- "name": "[format('{0}/{1}/{2}', format(variables('uniqueNameFormat'), 'cosmos'), 'autogen', 'memory')]",
- "properties": {
- "resource": {
- "id": "memory",
- "partitionKey": {
- "kind": "Hash",
- "version": 2,
- "paths": [
- "/session_id"
- ]
- }
- }
- },
- "dependsOn": [
- "cosmos::autogenDb"
- ]
- },
- "cosmos::contributorRoleDefinition": {
- "existing": true,
- "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions",
- "apiVersion": "2024-05-15",
- "name": "[format('{0}/{1}', format(variables('uniqueNameFormat'), 'cosmos'), '00000000-0000-0000-0000-000000000002')]",
- "dependsOn": [
- "cosmos"
- ]
- },
- "cosmos::autogenDb": {
- "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases",
- "apiVersion": "2024-05-15",
- "name": "[format('{0}/{1}', format(variables('uniqueNameFormat'), 'cosmos'), 'autogen')]",
- "properties": {
- "resource": {
- "id": "autogen",
- "createMode": "Default"
- }
- },
- "dependsOn": [
- "cosmos"
- ]
- },
- "containerAppEnv::aspireDashboard": {
- "type": "Microsoft.App/managedEnvironments/dotNetComponents",
- "apiVersion": "2024-02-02-preview",
- "name": "[format('{0}/{1}', format(variables('uniqueNameFormat'), 'containerapp'), 'aspire-dashboard')]",
- "properties": {
- "componentType": "AspireDashboard"
- },
- "dependsOn": [
- "containerAppEnv"
- ]
- },
- "logAnalytics": {
- "type": "Microsoft.OperationalInsights/workspaces",
- "apiVersion": "2023-09-01",
- "name": "[format(variables('uniqueNameFormat'), 'logs')]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "properties": {
- "retentionInDays": 30,
- "sku": {
- "name": "PerGB2018"
- }
- }
- },
- "appInsights": {
- "type": "Microsoft.Insights/components",
- "apiVersion": "2020-02-02-preview",
- "name": "[format(variables('uniqueNameFormat'), 'appins')]",
- "location": "[parameters('location')]",
- "kind": "web",
- "properties": {
- "Application_Type": "web",
- "WorkspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces', format(variables('uniqueNameFormat'), 'logs'))]"
- },
- "dependsOn": [
- "logAnalytics"
- ]
- },
- "openai": {
- "type": "Microsoft.CognitiveServices/accounts",
- "apiVersion": "2023-10-01-preview",
- "name": "[format(variables('uniqueNameFormat'), 'openai')]",
- "location": "[parameters('azureOpenAILocation')]",
- "tags": "[parameters('tags')]",
- "kind": "OpenAI",
- "sku": {
- "name": "S0"
- },
- "properties": {
- "customSubDomainName": "[format(variables('uniqueNameFormat'), 'openai')]"
- }
- },
- "aoaiUserRoleDefinition": {
- "existing": true,
- "type": "Microsoft.Authorization/roleDefinitions",
- "apiVersion": "2022-05-01-preview",
- "name": "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd"
- },
- "acaAoaiRoleAssignment": {
- "type": "Microsoft.Authorization/roleAssignments",
- "apiVersion": "2022-04-01",
- "scope": "[format('Microsoft.CognitiveServices/accounts/{0}', format(variables('uniqueNameFormat'), 'openai'))]",
- "name": "[guid(resourceId('Microsoft.App/containerApps', format('{0}-backend', parameters('prefix'))), resourceId('Microsoft.CognitiveServices/accounts', format(variables('uniqueNameFormat'), 'openai')), resourceId('Microsoft.Authorization/roleDefinitions', '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'))]",
- "properties": {
- "principalId": "[reference('containerApp', '2024-03-01', 'full').identity.principalId]",
- "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd')]",
- "principalType": "ServicePrincipal"
- },
- "dependsOn": [
- "containerApp",
- "openai"
- ]
- },
- "cosmos": {
- "type": "Microsoft.DocumentDB/databaseAccounts",
- "apiVersion": "2024-05-15",
- "name": "[format(variables('uniqueNameFormat'), 'cosmos')]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "kind": "GlobalDocumentDB",
- "properties": {
- "databaseAccountOfferType": "Standard",
- "enableFreeTier": false,
- "locations": [
- {
- "failoverPriority": 0,
- "locationName": "[parameters('location')]"
- }
- ],
- "capabilities": [
- {
- "name": "EnableServerless"
- }
- ]
- }
- },
- "pullIdentity": {
- "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
- "apiVersion": "2023-07-31-preview",
- "name": "[format(variables('uniqueNameFormat'), 'containerapp-pull')]",
- "location": "[parameters('location')]"
- },
- "containerAppEnv": {
- "type": "Microsoft.App/managedEnvironments",
- "apiVersion": "2024-03-01",
- "name": "[format(variables('uniqueNameFormat'), 'containerapp')]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "properties": {
- "daprAIConnectionString": "[reference('appInsights').ConnectionString]",
- "appLogsConfiguration": {
- "destination": "log-analytics",
- "logAnalyticsConfiguration": {
- "customerId": "[reference('logAnalytics').customerId]",
- "sharedKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces', format(variables('uniqueNameFormat'), 'logs')), '2023-09-01').primarySharedKey]"
- }
- }
- },
- "dependsOn": [
- "appInsights",
- "logAnalytics"
- ]
- },
- "acaCosomsRoleAssignment": {
- "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments",
- "apiVersion": "2024-05-15",
- "name": "[format('{0}/{1}', format(variables('uniqueNameFormat'), 'cosmos'), guid(resourceId('Microsoft.App/containerApps', format('{0}-backend', parameters('prefix'))), resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', format(variables('uniqueNameFormat'), 'cosmos'), '00000000-0000-0000-0000-000000000002')))]",
- "properties": {
- "principalId": "[reference('containerApp', '2024-03-01', 'full').identity.principalId]",
- "roleDefinitionId": "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', format(variables('uniqueNameFormat'), 'cosmos'), '00000000-0000-0000-0000-000000000002')]",
- "scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', format(variables('uniqueNameFormat'), 'cosmos'))]"
- },
- "dependsOn": [
- "containerApp",
- "cosmos"
- ]
- },
- "containerApp": {
- "type": "Microsoft.App/containerApps",
- "apiVersion": "2024-03-01",
- "name": "[format('{0}-backend', parameters('prefix'))]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "identity": {
- "type": "SystemAssigned, UserAssigned",
- "userAssignedIdentities": {
- "[format('{0}', resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', format(variables('uniqueNameFormat'), 'containerapp-pull')))]": {}
- }
- },
- "properties": {
- "managedEnvironmentId": "[resourceId('Microsoft.App/managedEnvironments', format(variables('uniqueNameFormat'), 'containerapp'))]",
- "configuration": {
- "ingress": {
- "targetPort": 8000,
- "external": true,
- "corsPolicy": {
- "allowedOrigins": [
- "[format('https://{0}.azurewebsites.net', format(variables('uniqueNameFormat'), 'frontend'))]",
- "[format('http://{0}.azurewebsites.net', format(variables('uniqueNameFormat'), 'frontend'))]"
- ]
- }
- },
- "activeRevisionsMode": "Single"
- },
- "template": {
- "scale": {
- "minReplicas": "[parameters('resourceSize').containerAppSize.minReplicas]",
- "maxReplicas": "[parameters('resourceSize').containerAppSize.maxReplicas]",
- "rules": [
- {
- "name": "http-scaler",
- "http": {
- "metadata": {
- "concurrentRequests": "100"
- }
- }
- }
- ]
- },
- "containers": [
- {
- "name": "backend",
- "image": "[variables('backendDockerImageURL')]",
- "resources": {
- "cpu": "[json(parameters('resourceSize').containerAppSize.cpu)]",
- "memory": "[parameters('resourceSize').containerAppSize.memory]"
- },
- "env": [
- {
- "name": "COSMOSDB_ENDPOINT",
- "value": "[reference('cosmos').documentEndpoint]"
- },
- {
- "name": "COSMOSDB_DATABASE",
- "value": "autogen"
- },
- {
- "name": "COSMOSDB_CONTAINER",
- "value": "memory"
- },
- {
- "name": "AZURE_OPENAI_ENDPOINT",
- "value": "[reference('openai').endpoint]"
- },
- {
- "name": "AZURE_OPENAI_DEPLOYMENT_NAME",
- "value": "gpt-4o"
- },
- {
- "name": "AZURE_OPENAI_API_VERSION",
- "value": "[variables('aoaiApiVersion')]"
- },
- {
- "name": "FRONTEND_SITE_NAME",
- "value": "[format('https://{0}.azurewebsites.net', format(variables('uniqueNameFormat'), 'frontend'))]"
- },
- {
- "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
- "value": "[reference('appInsights').ConnectionString]"
- }
- ]
- }
- ]
- }
- },
- "dependsOn": [
- "appInsights",
- "cosmos::autogenDb",
- "containerAppEnv",
- "cosmos",
- "openai::gpt4o",
- "cosmos::autogenDb::memoryContainer",
- "openai",
- "pullIdentity"
- ],
- "metadata": {
- "description": ""
- }
- },
- "frontendAppServicePlan": {
- "type": "Microsoft.Web/serverfarms",
- "apiVersion": "2021-02-01",
- "name": "[format(variables('uniqueNameFormat'), 'frontend-plan')]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "sku": {
- "name": "P1v2",
- "capacity": 1,
- "tier": "PremiumV2"
- },
- "properties": {
- "reserved": true
- },
- "kind": "linux"
- },
- "frontendAppService": {
- "type": "Microsoft.Web/sites",
- "apiVersion": "2021-02-01",
- "name": "[format(variables('uniqueNameFormat'), 'frontend')]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "kind": "app,linux,container",
- "properties": {
- "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', format(variables('uniqueNameFormat'), 'frontend-plan'))]",
- "reserved": true,
- "siteConfig": {
- "linuxFxVersion": "[format('DOCKER|{0}', variables('frontendDockerImageURL'))]",
- "appSettings": [
- {
- "name": "DOCKER_REGISTRY_SERVER_URL",
- "value": "[variables('dockerRegistryUrl')]"
- },
- {
- "name": "WEBSITES_PORT",
- "value": "3000"
- },
- {
- "name": "WEBSITES_CONTAINER_START_TIME_LIMIT",
- "value": "1800"
- },
- {
- "name": "BACKEND_API_URL",
- "value": "[format('https://{0}', reference('containerApp').configuration.ingress.fqdn)]"
- }
- ]
- }
- },
- "identity": {
- "type": "SystemAssigned,UserAssigned",
- "userAssignedIdentities": {
- "[format('{0}', resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', format(variables('uniqueNameFormat'), 'containerapp-pull')))]": {}
- }
- },
- "dependsOn": [
- "containerApp",
- "frontendAppServicePlan",
- "pullIdentity"
- ]
- }
- },
- "outputs": {
- "cosmosAssignCli": {
- "type": "string",
- "value": "[format('az cosmosdb sql role assignment create --resource-group \"{0}\" --account-name \"{1}\" --role-definition-id \"{2}\" --scope \"{3}\" --principal-id \"fill-in\"', resourceGroup().name, format(variables('uniqueNameFormat'), 'cosmos'), resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', format(variables('uniqueNameFormat'), 'cosmos'), '00000000-0000-0000-0000-000000000002'), resourceId('Microsoft.DocumentDB/databaseAccounts', format(variables('uniqueNameFormat'), 'cosmos')))]"
- }
- }
-}
\ No newline at end of file
diff --git a/infra/old/00-older/macae-continer.json b/infra/old/00-older/macae-continer.json
deleted file mode 100644
index db8539188..000000000
--- a/infra/old/00-older/macae-continer.json
+++ /dev/null
@@ -1,458 +0,0 @@
-{
- "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
- "languageVersion": "2.0",
- "contentVersion": "1.0.0.0",
- "metadata": {
- "_generator": {
- "name": "bicep",
- "version": "0.34.44.8038",
- "templateHash": "8201361287909347586"
- }
- },
- "parameters": {
- "location": {
- "type": "string",
- "defaultValue": "EastUS2",
- "metadata": {
- "description": "Location for all resources."
- }
- },
- "azureOpenAILocation": {
- "type": "string",
- "defaultValue": "EastUS",
- "metadata": {
- "description": "Location for OpenAI resources."
- }
- },
- "prefix": {
- "type": "string",
- "defaultValue": "macae",
- "metadata": {
- "description": "A prefix to add to the start of all resource names. Note: A \"unique\" suffix will also be added"
- }
- },
- "tags": {
- "type": "object",
- "defaultValue": {},
- "metadata": {
- "description": "Tags to apply to all deployed resources"
- }
- },
- "resourceSize": {
- "type": "object",
- "properties": {
- "gpt4oCapacity": {
- "type": "int"
- },
- "containerAppSize": {
- "type": "object",
- "properties": {
- "cpu": {
- "type": "string"
- },
- "memory": {
- "type": "string"
- },
- "minReplicas": {
- "type": "int"
- },
- "maxReplicas": {
- "type": "int"
- }
- }
- }
- },
- "defaultValue": {
- "gpt4oCapacity": 50,
- "containerAppSize": {
- "cpu": "2.0",
- "memory": "4.0Gi",
- "minReplicas": 1,
- "maxReplicas": 1
- }
- },
- "metadata": {
- "description": "The size of the resources to deploy, defaults to a mini size"
- }
- }
- },
- "variables": {
- "appVersion": "latest",
- "resgistryName": "biabcontainerreg",
- "dockerRegistryUrl": "[format('https://{0}.azurecr.io', variables('resgistryName'))]",
- "backendDockerImageURL": "[format('{0}.azurecr.io/macaebackend:{1}', variables('resgistryName'), variables('appVersion'))]",
- "frontendDockerImageURL": "[format('{0}.azurecr.io/macaefrontend:{1}', variables('resgistryName'), variables('appVersion'))]",
- "uniqueNameFormat": "[format('{0}-{{0}}-{1}', parameters('prefix'), uniqueString(resourceGroup().id, parameters('prefix')))]",
- "aoaiApiVersion": "2024-08-01-preview"
- },
- "resources": {
- "openai::gpt4o": {
- "type": "Microsoft.CognitiveServices/accounts/deployments",
- "apiVersion": "2023-10-01-preview",
- "name": "[format('{0}/{1}', format(variables('uniqueNameFormat'), 'openai'), 'gpt-4o')]",
- "sku": {
- "name": "GlobalStandard",
- "capacity": "[parameters('resourceSize').gpt4oCapacity]"
- },
- "properties": {
- "model": {
- "format": "OpenAI",
- "name": "gpt-4o",
- "version": "2024-08-06"
- },
- "versionUpgradeOption": "NoAutoUpgrade"
- },
- "dependsOn": [
- "openai"
- ]
- },
- "cosmos::autogenDb::memoryContainer": {
- "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
- "apiVersion": "2024-05-15",
- "name": "[format('{0}/{1}/{2}', format(variables('uniqueNameFormat'), 'cosmos'), 'autogen', 'memory')]",
- "properties": {
- "resource": {
- "id": "memory",
- "partitionKey": {
- "kind": "Hash",
- "version": 2,
- "paths": [
- "/session_id"
- ]
- }
- }
- },
- "dependsOn": [
- "cosmos::autogenDb"
- ]
- },
- "cosmos::contributorRoleDefinition": {
- "existing": true,
- "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions",
- "apiVersion": "2024-05-15",
- "name": "[format('{0}/{1}', format(variables('uniqueNameFormat'), 'cosmos'), '00000000-0000-0000-0000-000000000002')]",
- "dependsOn": [
- "cosmos"
- ]
- },
- "cosmos::autogenDb": {
- "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases",
- "apiVersion": "2024-05-15",
- "name": "[format('{0}/{1}', format(variables('uniqueNameFormat'), 'cosmos'), 'autogen')]",
- "properties": {
- "resource": {
- "id": "autogen",
- "createMode": "Default"
- }
- },
- "dependsOn": [
- "cosmos"
- ]
- },
- "containerAppEnv::aspireDashboard": {
- "type": "Microsoft.App/managedEnvironments/dotNetComponents",
- "apiVersion": "2024-02-02-preview",
- "name": "[format('{0}/{1}', format(variables('uniqueNameFormat'), 'containerapp'), 'aspire-dashboard')]",
- "properties": {
- "componentType": "AspireDashboard"
- },
- "dependsOn": [
- "containerAppEnv"
- ]
- },
- "logAnalytics": {
- "type": "Microsoft.OperationalInsights/workspaces",
- "apiVersion": "2023-09-01",
- "name": "[format(variables('uniqueNameFormat'), 'logs')]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "properties": {
- "retentionInDays": 30,
- "sku": {
- "name": "PerGB2018"
- }
- }
- },
- "appInsights": {
- "type": "Microsoft.Insights/components",
- "apiVersion": "2020-02-02-preview",
- "name": "[format(variables('uniqueNameFormat'), 'appins')]",
- "location": "[parameters('location')]",
- "kind": "web",
- "properties": {
- "Application_Type": "web",
- "WorkspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces', format(variables('uniqueNameFormat'), 'logs'))]"
- },
- "dependsOn": [
- "logAnalytics"
- ]
- },
- "openai": {
- "type": "Microsoft.CognitiveServices/accounts",
- "apiVersion": "2023-10-01-preview",
- "name": "[format(variables('uniqueNameFormat'), 'openai')]",
- "location": "[parameters('azureOpenAILocation')]",
- "tags": "[parameters('tags')]",
- "kind": "OpenAI",
- "sku": {
- "name": "S0"
- },
- "properties": {
- "customSubDomainName": "[format(variables('uniqueNameFormat'), 'openai')]"
- }
- },
- "aoaiUserRoleDefinition": {
- "existing": true,
- "type": "Microsoft.Authorization/roleDefinitions",
- "apiVersion": "2022-05-01-preview",
- "name": "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd"
- },
- "acaAoaiRoleAssignment": {
- "type": "Microsoft.Authorization/roleAssignments",
- "apiVersion": "2022-04-01",
- "scope": "[format('Microsoft.CognitiveServices/accounts/{0}', format(variables('uniqueNameFormat'), 'openai'))]",
- "name": "[guid(resourceId('Microsoft.App/containerApps', format('{0}-backend', parameters('prefix'))), resourceId('Microsoft.CognitiveServices/accounts', format(variables('uniqueNameFormat'), 'openai')), resourceId('Microsoft.Authorization/roleDefinitions', '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'))]",
- "properties": {
- "principalId": "[reference('containerApp', '2024-03-01', 'full').identity.principalId]",
- "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd')]",
- "principalType": "ServicePrincipal"
- },
- "dependsOn": [
- "containerApp",
- "openai"
- ]
- },
- "cosmos": {
- "type": "Microsoft.DocumentDB/databaseAccounts",
- "apiVersion": "2024-05-15",
- "name": "[format(variables('uniqueNameFormat'), 'cosmos')]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "kind": "GlobalDocumentDB",
- "properties": {
- "databaseAccountOfferType": "Standard",
- "enableFreeTier": false,
- "locations": [
- {
- "failoverPriority": 0,
- "locationName": "[parameters('location')]"
- }
- ],
- "capabilities": [
- {
- "name": "EnableServerless"
- }
- ]
- }
- },
- "pullIdentity": {
- "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
- "apiVersion": "2023-07-31-preview",
- "name": "[format(variables('uniqueNameFormat'), 'containerapp-pull')]",
- "location": "[parameters('location')]"
- },
- "containerAppEnv": {
- "type": "Microsoft.App/managedEnvironments",
- "apiVersion": "2024-03-01",
- "name": "[format(variables('uniqueNameFormat'), 'containerapp')]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "properties": {
- "daprAIConnectionString": "[reference('appInsights').ConnectionString]",
- "appLogsConfiguration": {
- "destination": "log-analytics",
- "logAnalyticsConfiguration": {
- "customerId": "[reference('logAnalytics').customerId]",
- "sharedKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces', format(variables('uniqueNameFormat'), 'logs')), '2023-09-01').primarySharedKey]"
- }
- }
- },
- "dependsOn": [
- "appInsights",
- "logAnalytics"
- ]
- },
- "acaCosomsRoleAssignment": {
- "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments",
- "apiVersion": "2024-05-15",
- "name": "[format('{0}/{1}', format(variables('uniqueNameFormat'), 'cosmos'), guid(resourceId('Microsoft.App/containerApps', format('{0}-backend', parameters('prefix'))), resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', format(variables('uniqueNameFormat'), 'cosmos'), '00000000-0000-0000-0000-000000000002')))]",
- "properties": {
- "principalId": "[reference('containerApp', '2024-03-01', 'full').identity.principalId]",
- "roleDefinitionId": "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', format(variables('uniqueNameFormat'), 'cosmos'), '00000000-0000-0000-0000-000000000002')]",
- "scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', format(variables('uniqueNameFormat'), 'cosmos'))]"
- },
- "dependsOn": [
- "containerApp",
- "cosmos"
- ]
- },
- "containerApp": {
- "type": "Microsoft.App/containerApps",
- "apiVersion": "2024-03-01",
- "name": "[format('{0}-backend', parameters('prefix'))]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "identity": {
- "type": "SystemAssigned, UserAssigned",
- "userAssignedIdentities": {
- "[format('{0}', resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', format(variables('uniqueNameFormat'), 'containerapp-pull')))]": {}
- }
- },
- "properties": {
- "managedEnvironmentId": "[resourceId('Microsoft.App/managedEnvironments', format(variables('uniqueNameFormat'), 'containerapp'))]",
- "configuration": {
- "ingress": {
- "targetPort": 8000,
- "external": true,
- "corsPolicy": {
- "allowedOrigins": [
- "[format('https://{0}.azurewebsites.net', format(variables('uniqueNameFormat'), 'frontend'))]",
- "[format('http://{0}.azurewebsites.net', format(variables('uniqueNameFormat'), 'frontend'))]"
- ]
- }
- },
- "activeRevisionsMode": "Single"
- },
- "template": {
- "scale": {
- "minReplicas": "[parameters('resourceSize').containerAppSize.minReplicas]",
- "maxReplicas": "[parameters('resourceSize').containerAppSize.maxReplicas]",
- "rules": [
- {
- "name": "http-scaler",
- "http": {
- "metadata": {
- "concurrentRequests": "100"
- }
- }
- }
- ]
- },
- "containers": [
- {
- "name": "backend",
- "image": "[variables('backendDockerImageURL')]",
- "resources": {
- "cpu": "[json(parameters('resourceSize').containerAppSize.cpu)]",
- "memory": "[parameters('resourceSize').containerAppSize.memory]"
- },
- "env": [
- {
- "name": "COSMOSDB_ENDPOINT",
- "value": "[reference('cosmos').documentEndpoint]"
- },
- {
- "name": "COSMOSDB_DATABASE",
- "value": "autogen"
- },
- {
- "name": "COSMOSDB_CONTAINER",
- "value": "memory"
- },
- {
- "name": "AZURE_OPENAI_ENDPOINT",
- "value": "[reference('openai').endpoint]"
- },
- {
- "name": "AZURE_OPENAI_DEPLOYMENT_NAME",
- "value": "gpt-4o"
- },
- {
- "name": "AZURE_OPENAI_API_VERSION",
- "value": "[variables('aoaiApiVersion')]"
- },
- {
- "name": "FRONTEND_SITE_NAME",
- "value": "[format('https://{0}.azurewebsites.net', format(variables('uniqueNameFormat'), 'frontend'))]"
- },
- {
- "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
- "value": "[reference('appInsights').ConnectionString]"
- }
- ]
- }
- ]
- }
- },
- "dependsOn": [
- "appInsights",
- "containerAppEnv",
- "cosmos",
- "cosmos::autogenDb",
- "cosmos::autogenDb::memoryContainer",
- "openai",
- "openai::gpt4o",
- "pullIdentity"
- ],
- "metadata": {
- "description": ""
- }
- },
- "frontendAppServicePlan": {
- "type": "Microsoft.Web/serverfarms",
- "apiVersion": "2021-02-01",
- "name": "[format(variables('uniqueNameFormat'), 'frontend-plan')]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "sku": {
- "name": "P1v2",
- "capacity": 1,
- "tier": "PremiumV2"
- },
- "properties": {
- "reserved": true
- },
- "kind": "linux"
- },
- "frontendAppService": {
- "type": "Microsoft.Web/sites",
- "apiVersion": "2021-02-01",
- "name": "[format(variables('uniqueNameFormat'), 'frontend')]",
- "location": "[parameters('location')]",
- "tags": "[parameters('tags')]",
- "kind": "app,linux,container",
- "properties": {
- "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', format(variables('uniqueNameFormat'), 'frontend-plan'))]",
- "reserved": true,
- "siteConfig": {
- "linuxFxVersion": "[format('DOCKER|{0}', variables('frontendDockerImageURL'))]",
- "appSettings": [
- {
- "name": "DOCKER_REGISTRY_SERVER_URL",
- "value": "[variables('dockerRegistryUrl')]"
- },
- {
- "name": "WEBSITES_PORT",
- "value": "3000"
- },
- {
- "name": "WEBSITES_CONTAINER_START_TIME_LIMIT",
- "value": "1800"
- },
- {
- "name": "BACKEND_API_URL",
- "value": "[format('https://{0}', reference('containerApp').configuration.ingress.fqdn)]"
- }
- ]
- }
- },
- "identity": {
- "type": "SystemAssigned,UserAssigned",
- "userAssignedIdentities": {
- "[format('{0}', resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', format(variables('uniqueNameFormat'), 'containerapp-pull')))]": {}
- }
- },
- "dependsOn": [
- "containerApp",
- "frontendAppServicePlan",
- "pullIdentity"
- ]
- }
- },
- "outputs": {
- "cosmosAssignCli": {
- "type": "string",
- "value": "[format('az cosmosdb sql role assignment create --resource-group \"{0}\" --account-name \"{1}\" --role-definition-id \"{2}\" --scope \"{3}\" --principal-id \"fill-in\"', resourceGroup().name, format(variables('uniqueNameFormat'), 'cosmos'), resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', format(variables('uniqueNameFormat'), 'cosmos'), '00000000-0000-0000-0000-000000000002'), resourceId('Microsoft.DocumentDB/databaseAccounts', format(variables('uniqueNameFormat'), 'cosmos')))]"
- }
- }
-}
\ No newline at end of file
diff --git a/infra/old/00-older/macae-dev.bicep b/infra/old/00-older/macae-dev.bicep
deleted file mode 100644
index 5157fa92f..000000000
--- a/infra/old/00-older/macae-dev.bicep
+++ /dev/null
@@ -1,131 +0,0 @@
-@description('Location for all resources.')
-param location string = resourceGroup().location
-
-@description('location for Cosmos DB resources.')
-// prompt for this as there is often quota restrictions
-param cosmosLocation string
-
-@description('Location for OpenAI resources.')
-// prompt for this as there is often quota restrictions
-param azureOpenAILocation string
-
-@description('A prefix to add to the start of all resource names. Note: A "unique" suffix will also be added')
-param prefix string = 'macae'
-
-@description('Tags to apply to all deployed resources')
-param tags object = {}
-
-@description('Principal ID to assign to the Cosmos DB contributor & Azure OpenAI user role, leave empty to skip role assignment. This is your ObjectID wihtin Entra ID.')
-param developerPrincipalId string
-
-var uniqueNameFormat = '${prefix}-{0}-${uniqueString(resourceGroup().id, prefix)}'
-var aoaiApiVersion = '2024-08-01-preview'
-
-resource openai 'Microsoft.CognitiveServices/accounts@2023-10-01-preview' = {
- name: format(uniqueNameFormat, 'openai')
- location: azureOpenAILocation
- tags: tags
- kind: 'OpenAI'
- sku: {
- name: 'S0'
- }
- properties: {
- customSubDomainName: format(uniqueNameFormat, 'openai')
- }
- resource gpt4o 'deployments' = {
- name: 'gpt-4o'
- sku: {
- name: 'GlobalStandard'
- capacity: 15
- }
- properties: {
- model: {
- format: 'OpenAI'
- name: 'gpt-4o'
- version: '2024-08-06'
- }
- versionUpgradeOption: 'NoAutoUpgrade'
- }
- }
-}
-
-resource aoaiUserRoleDefinition 'Microsoft.Authorization/roleDefinitions@2022-05-01-preview' existing = {
- name: '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd' //'Cognitive Services OpenAI User'
-}
-
-resource devAoaiRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = if(!empty(trim(developerPrincipalId))) {
- name: guid(developerPrincipalId, openai.id, aoaiUserRoleDefinition.id)
- scope: openai
- properties: {
- principalId: developerPrincipalId
- roleDefinitionId: aoaiUserRoleDefinition.id
- principalType: 'User'
- }
-}
-
-resource cosmos 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
- name: format(uniqueNameFormat, 'cosmos')
- location: cosmosLocation
- tags: tags
- kind: 'GlobalDocumentDB'
- properties: {
- databaseAccountOfferType: 'Standard'
- enableFreeTier: false
- locations: [
- {
- failoverPriority: 0
- locationName: cosmosLocation
- }
- ]
- capabilities: [ { name: 'EnableServerless' } ]
- }
-
- resource contributorRoleDefinition 'sqlRoleDefinitions' existing = {
- name: '00000000-0000-0000-0000-000000000002'
- }
-
- resource devRoleAssignment 'sqlRoleAssignments' = if(!empty(trim(developerPrincipalId))) {
- name: guid(developerPrincipalId, contributorRoleDefinition.id)
- properties: {
- principalId: developerPrincipalId
- roleDefinitionId: contributorRoleDefinition.id
- scope: cosmos.id
- }
- }
-
- resource autogenDb 'sqlDatabases' = {
- name: 'autogen'
- properties: {
- resource: {
- id: 'autogen'
- createMode: 'Default'
- }
- }
-
- resource memoryContainer 'containers' = {
- name: 'memory'
- properties: {
- resource: {
- id: 'memory'
- partitionKey: {
- kind: 'Hash'
- version: 2
- paths: [
- '/session_id'
- ]
- }
- }
- }
- }
- }
-}
-
-
-
-output COSMOSDB_ENDPOINT string = cosmos.properties.documentEndpoint
-output COSMOSDB_DATABASE string = cosmos::autogenDb.name
-output COSMOSDB_CONTAINER string = cosmos::autogenDb::memoryContainer.name
-output AZURE_OPENAI_ENDPOINT string = openai.properties.endpoint
-output AZURE_OPENAI_DEPLOYMENT_NAME string = openai::gpt4o.name
-output AZURE_OPENAI_API_VERSION string = aoaiApiVersion
-
diff --git a/infra/old/00-older/macae-large.bicepparam b/infra/old/00-older/macae-large.bicepparam
deleted file mode 100644
index 3e88f4452..000000000
--- a/infra/old/00-older/macae-large.bicepparam
+++ /dev/null
@@ -1,11 +0,0 @@
-using './macae.bicep'
-
-param resourceSize = {
- gpt4oCapacity: 50
- containerAppSize: {
- cpu: '2.0'
- memory: '4.0Gi'
- minReplicas: 1
- maxReplicas: 1
- }
-}
diff --git a/infra/old/00-older/macae-mini.bicepparam b/infra/old/00-older/macae-mini.bicepparam
deleted file mode 100644
index ee3d65127..000000000
--- a/infra/old/00-older/macae-mini.bicepparam
+++ /dev/null
@@ -1,11 +0,0 @@
-using './macae.bicep'
-
-param resourceSize = {
- gpt4oCapacity: 15
- containerAppSize: {
- cpu: '1.0'
- memory: '2.0Gi'
- minReplicas: 0
- maxReplicas: 1
- }
-}
diff --git a/infra/old/00-older/macae.bicep b/infra/old/00-older/macae.bicep
deleted file mode 100644
index bfa56c9a1..000000000
--- a/infra/old/00-older/macae.bicep
+++ /dev/null
@@ -1,362 +0,0 @@
-@description('Location for all resources.')
-param location string = resourceGroup().location
-
-@description('location for Cosmos DB resources.')
-// prompt for this as there is often quota restrictions
-param cosmosLocation string
-
-@description('Location for OpenAI resources.')
-// prompt for this as there is often quota restrictions
-param azureOpenAILocation string
-
-@description('A prefix to add to the start of all resource names. Note: A "unique" suffix will also be added')
-param prefix string = 'macae'
-
-@description('Tags to apply to all deployed resources')
-param tags object = {}
-
-@description('The size of the resources to deploy, defaults to a mini size')
-param resourceSize {
- gpt4oCapacity: int
- containerAppSize: {
- cpu: string
- memory: string
- minReplicas: int
- maxReplicas: int
- }
-} = {
- gpt4oCapacity: 50
- containerAppSize: {
- cpu: '2.0'
- memory: '4.0Gi'
- minReplicas: 1
- maxReplicas: 1
- }
-}
-
-
-// var appVersion = 'latest'
-// var resgistryName = 'biabcontainerreg'
-// var dockerRegistryUrl = 'https://${resgistryName}.azurecr.io'
-var placeholderImage = 'hello-world:latest'
-
-var uniqueNameFormat = '${prefix}-{0}-${uniqueString(resourceGroup().id, prefix)}'
-var uniqueShortNameFormat = '${toLower(prefix)}{0}${uniqueString(resourceGroup().id, prefix)}'
-//var aoaiApiVersion = '2024-08-01-preview'
-
-
-resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
- name: format(uniqueNameFormat, 'logs')
- location: location
- tags: tags
- properties: {
- retentionInDays: 30
- sku: {
- name: 'PerGB2018'
- }
- }
-}
-
-resource appInsights 'Microsoft.Insights/components@2020-02-02-preview' = {
- name: format(uniqueNameFormat, 'appins')
- location: location
- kind: 'web'
- properties: {
- Application_Type: 'web'
- WorkspaceResourceId: logAnalytics.id
- }
-}
-
-resource openai 'Microsoft.CognitiveServices/accounts@2023-10-01-preview' = {
- name: format(uniqueNameFormat, 'openai')
- location: azureOpenAILocation
- tags: tags
- kind: 'OpenAI'
- sku: {
- name: 'S0'
- }
- properties: {
- customSubDomainName: format(uniqueNameFormat, 'openai')
- }
- resource gpt4o 'deployments' = {
- name: 'gpt-4o'
- sku: {
- name: 'GlobalStandard'
- capacity: resourceSize.gpt4oCapacity
- }
- properties: {
- model: {
- format: 'OpenAI'
- name: 'gpt-4o'
- version: '2024-08-06'
- }
- versionUpgradeOption: 'NoAutoUpgrade'
- }
- }
-}
-
-resource aoaiUserRoleDefinition 'Microsoft.Authorization/roleDefinitions@2022-05-01-preview' existing = {
- name: '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd' //'Cognitive Services OpenAI User'
-}
-
-resource acaAoaiRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
- name: guid(containerApp.id, openai.id, aoaiUserRoleDefinition.id)
- scope: openai
- properties: {
- principalId: containerApp.identity.principalId
- roleDefinitionId: aoaiUserRoleDefinition.id
- principalType: 'ServicePrincipal'
- }
-}
-
-resource acr 'Microsoft.ContainerRegistry/registries@2023-11-01-preview' = {
- name: format(uniqueShortNameFormat, 'acr')
- location: location
- sku: {
- name: 'Standard'
- }
- properties: {
- adminUserEnabled: true // Add this line
- }
-}
-
-resource pullIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-07-31-preview' = {
- name: format(uniqueNameFormat, 'containerapp-pull')
- location: location
-}
-
-resource acrPullDefinition 'Microsoft.Authorization/roleDefinitions@2022-05-01-preview' existing = {
- name: '7f951dda-4ed3-4680-a7ca-43fe172d538d' //'AcrPull'
-}
-
-resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
- name: guid(acr.id, pullIdentity.id, acrPullDefinition.id)
- properties: {
- principalId: pullIdentity.properties.principalId
- principalType: 'ServicePrincipal'
- roleDefinitionId: acrPullDefinition.id
- }
-}
-
-resource cosmos 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
- name: format(uniqueNameFormat, 'cosmos')
- location: cosmosLocation
- tags: tags
- kind: 'GlobalDocumentDB'
- properties: {
- databaseAccountOfferType: 'Standard'
- enableFreeTier: false
- locations: [
- {
- failoverPriority: 0
- locationName: cosmosLocation
- }
- ]
- capabilities: [ { name: 'EnableServerless' } ]
- }
-
- resource contributorRoleDefinition 'sqlRoleDefinitions' existing = {
- name: '00000000-0000-0000-0000-000000000002'
- }
-
- resource autogenDb 'sqlDatabases' = {
- name: 'autogen'
- properties: {
- resource: {
- id: 'autogen'
- createMode: 'Default'
- }
- }
-
- resource memoryContainer 'containers' = {
- name: 'memory'
- properties: {
- resource: {
- id: 'memory'
- partitionKey: {
- kind: 'Hash'
- version: 2
- paths: [
- '/session_id'
- ]
- }
- }
- }
- }
- }
-}
-
-resource containerAppEnv 'Microsoft.App/managedEnvironments@2024-03-01' = {
- name: format(uniqueNameFormat, 'containerapp')
- location: location
- tags: tags
- properties: {
- daprAIConnectionString: appInsights.properties.ConnectionString
- appLogsConfiguration: {
- destination: 'log-analytics'
- logAnalyticsConfiguration: {
- customerId: logAnalytics.properties.customerId
- sharedKey: logAnalytics.listKeys().primarySharedKey
- }
- }
- }
- resource aspireDashboard 'dotNetComponents@2024-02-02-preview' = {
- name: 'aspire-dashboard'
- properties: {
- componentType: 'AspireDashboard'
- }
- }
-}
-
-resource acaCosomsRoleAssignment 'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments@2024-05-15' = {
- name: guid(containerApp.id, cosmos::contributorRoleDefinition.id)
- parent: cosmos
- properties: {
- principalId: containerApp.identity.principalId
- roleDefinitionId: cosmos::contributorRoleDefinition.id
- scope: cosmos.id
- }
-}
-
-@description('')
-resource containerApp 'Microsoft.App/containerApps@2024-03-01' = {
- name: '${prefix}-backend'
- location: location
- tags: tags
- identity: {
- type: 'SystemAssigned, UserAssigned'
- userAssignedIdentities: {
- '${pullIdentity.id}': {}
- }
- }
- properties: {
- managedEnvironmentId: containerAppEnv.id
- configuration: {
- ingress: {
- targetPort: 8000
- external: true
- corsPolicy: {
- allowedOrigins: [
- 'https://${format(uniqueNameFormat, 'frontend')}.azurewebsites.net'
- 'http://${format(uniqueNameFormat, 'frontend')}.azurewebsites.net'
- ]
- }
- }
- activeRevisionsMode: 'Single'
- }
- template: {
- scale: {
- minReplicas: resourceSize.containerAppSize.minReplicas
- maxReplicas: resourceSize.containerAppSize.maxReplicas
- rules: [
- {
- name: 'http-scaler'
- http: {
- metadata: {
- concurrentRequests: '100'
- }
- }
- }
- ]
- }
- containers: [
- {
- name: 'backend'
- image: placeholderImage
- resources: {
- cpu: json(resourceSize.containerAppSize.cpu)
- memory: resourceSize.containerAppSize.memory
- }
- }
- // env: [
- // {
- // name: 'COSMOSDB_ENDPOINT'
- // value: cosmos.properties.documentEndpoint
- // }
- // {
- // name: 'COSMOSDB_DATABASE'
- // value: cosmos::autogenDb.name
- // }
- // {
- // name: 'COSMOSDB_CONTAINER'
- // value: cosmos::autogenDb::memoryContainer.name
- // }
- // {
- // name: 'AZURE_OPENAI_ENDPOINT'
- // value: openai.properties.endpoint
- // }
- // {
- // name: 'AZURE_OPENAI_DEPLOYMENT_NAME'
- // value: openai::gpt4o.name
- // }
- // {
- // name: 'AZURE_OPENAI_API_VERSION'
- // value: aoaiApiVersion
- // }
- // {
- // name: 'FRONTEND_SITE_NAME'
- // value: 'https://${format(uniqueNameFormat, 'frontend')}.azurewebsites.net'
- // }
- // ]
- // }
- ]
- }
-
- }
-
- }
-resource frontendAppServicePlan 'Microsoft.Web/serverfarms@2021-02-01' = {
- name: format(uniqueNameFormat, 'frontend-plan')
- location: location
- tags: tags
- sku: {
- name: 'P1v2'
- capacity: 1
- tier: 'PremiumV2'
- }
- properties: {
- reserved: true
- }
- kind: 'linux' // Add this line to support Linux containers
-}
-
-resource frontendAppService 'Microsoft.Web/sites@2021-02-01' = {
- name: format(uniqueNameFormat, 'frontend')
- location: location
- tags: tags
- kind: 'app,linux,container' // Add this line
- properties: {
- serverFarmId: frontendAppServicePlan.id
- reserved: true
- siteConfig: {
- linuxFxVersion:''//'DOCKER|${frontendDockerImageURL}'
- appSettings: [
- {
- name: 'DOCKER_REGISTRY_SERVER_URL'
- value: acr.properties.loginServer
- }
- {
- name: 'WEBSITES_PORT'
- value: '3000'
- }
- {
- name: 'WEBSITES_CONTAINER_START_TIME_LIMIT' // Add startup time limit
- value: '1800' // 30 minutes, adjust as needed
- }
- {
- name: 'BACKEND_API_URL'
- value: 'https://${containerApp.properties.configuration.ingress.fqdn}'
- }
- ]
- }
- }
- dependsOn: [containerApp]
- identity: {
- type: 'SystemAssigned, UserAssigned'
- userAssignedIdentities: {
- '${pullIdentity.id}': {}
- }
- }
-}
-
-output cosmosAssignCli string = 'az cosmosdb sql role assignment create --resource-group "${resourceGroup().name}" --account-name "${cosmos.name}" --role-definition-id "${cosmos::contributorRoleDefinition.id}" --scope "${cosmos.id}" --principal-id "fill-in"'
diff --git a/infra/old/00-older/main.bicep b/infra/old/00-older/main.bicep
deleted file mode 100644
index 22f9bcd7e..000000000
--- a/infra/old/00-older/main.bicep
+++ /dev/null
@@ -1,1298 +0,0 @@
-extension graphV1
-//extension graphBeta
-
-metadata name = ''
-metadata description = ''
-
-@description('Required. The prefix to add in the default names given to all deployed Azure resources.')
-@maxLength(19)
-param solutionPrefix string
-
-@description('Optional. Location for all Resources.')
-param solutionLocation string = resourceGroup().location
-
-@description('Optional. Enable/Disable usage telemetry for module.')
-param enableTelemetry bool
-
-@description('Optional. Enable/Disable usage telemetry for module.')
-param enableNetworkSecurity bool
-
-@description('Optional. The tags to apply to all deployed Azure resources.')
-param tags object = {
- app: solutionPrefix
- location: solutionLocation
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Log Analytics Workspace resource.')
-param logAnalyticsWorkspaceConfiguration logAnalyticsWorkspaceConfigurationType = {
- enabled: true
- name: '${solutionPrefix}laws'
- location: solutionLocation
- sku: 'PerGB2018'
- tags: tags
- dataRetentionInDays: 30
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Application Insights resource.')
-param applicationInsightsConfiguration applicationInsightsConfigurationType = {
- enabled: true
- name: '${solutionPrefix}appi'
- location: solutionLocation
- tags: tags
- retentionInDays: 30
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Managed Identity resource.')
-param userAssignedManagedIdentityConfiguration userAssignedManagedIdentityType = {
- enabled: true
- name: '${solutionPrefix}mgid'
- location: solutionLocation
- tags: tags
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Network Security Group resource for the backend subnet.')
-param networkSecurityGroupBackendConfiguration networkSecurityGroupConfigurationType = {
- enabled: enableNetworkSecurity
- name: '${solutionPrefix}nsgr-backend'
- location: solutionLocation
- tags: tags
- securityRules: [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound'
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
- ]
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Network Security Group resource for the containers subnet.')
-param networkSecurityGroupContainersConfiguration networkSecurityGroupConfigurationType = {
- enabled: enableNetworkSecurity
- name: '${solutionPrefix}nsgr-containers'
- location: solutionLocation
- tags: tags
- securityRules: [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound'
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
- ]
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Network Security Group resource for the Bastion subnet.')
-param networkSecurityGroupBastionConfiguration networkSecurityGroupConfigurationType = {
- enabled: enableNetworkSecurity
- name: '${solutionPrefix}nsgr-bastion'
- location: solutionLocation
- tags: tags
- securityRules: [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound'
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
- ]
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Network Security Group resource for the administration subnet.')
-param networkSecurityGroupAdministrationConfiguration networkSecurityGroupConfigurationType = {
- enabled: enableNetworkSecurity
- name: '${solutionPrefix}nsgr-administration'
- location: solutionLocation
- tags: tags
- securityRules: [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
- ]
-}
-
-@description('Optional. Configuration for the virtual machine.')
-param virtualMachineConfiguration virtualMachineConfigurationType = {
- enabled: enableNetworkSecurity
- adminUsername: 'adminuser'
- adminPassword: guid(solutionPrefix, subscription().subscriptionId)
-}
-var virtualMachineEnabled = virtualMachineConfiguration.?enabled ?? true
-
-@description('Optional. Configuration for the virtual machine.')
-param virtualNetworkConfiguration virtualNetworkConfigurationType = {
- enabled: enableNetworkSecurity
-}
-var virtualNetworkEnabled = virtualNetworkConfiguration.?enabled ?? true
-
-@description('Optional. The configuration of the Entra ID Application used to authenticate the website.')
-param entraIdApplicationConfiguration entraIdApplicationConfigurationType = {
- enabled: false
-}
-
-@description('Optional. The UTC time deployment.')
-param deploymentTime string = utcNow()
-
-//
-// Add your parameters here
-//
-
-// ============== //
-// Resources //
-// ============== //
-
-/* #disable-next-line no-deployments-resources
-resource avmTelemetry 'Microsoft.Resources/deployments@2024-03-01' = if (enableTelemetry) {
- name: '46d3xbcp.[[REPLACE WITH TELEMETRY IDENTIFIER]].${replace('-..--..-', '.', '-')}.${substring(uniqueString(deployment().name, location), 0, 4)}'
- properties: {
- mode: 'Incremental'
- template: {
- '$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#'
- contentVersion: '1.0.0.0'
- resources: []
- outputs: {
- telemetry: {
- type: 'String'
- value: 'For more information, see https://aka.ms/avm/TelemetryInfo'
- }
- }
- }
- }
-} */
-
-// ========== Log Analytics Workspace ========== //
-// Log Analytics configuration defaults
-var logAnalyticsWorkspaceEnabled = logAnalyticsWorkspaceConfiguration.?enabled ?? true
-var logAnalyticsWorkspaceResourceName = logAnalyticsWorkspaceConfiguration.?name ?? '${solutionPrefix}-laws'
-var logAnalyticsWorkspaceTags = logAnalyticsWorkspaceConfiguration.?tags ?? tags
-var logAnalyticsWorkspaceLocation = logAnalyticsWorkspaceConfiguration.?location ?? solutionLocation
-var logAnalyticsWorkspaceSkuName = logAnalyticsWorkspaceConfiguration.?sku ?? 'PerGB2018'
-var logAnalyticsWorkspaceDataRetentionInDays = logAnalyticsWorkspaceConfiguration.?dataRetentionInDays ?? 30
-module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0.11.2' = if (logAnalyticsWorkspaceEnabled) {
- name: take('operational-insights.workspace.${logAnalyticsWorkspaceResourceName}', 64)
- params: {
- name: logAnalyticsWorkspaceResourceName
- tags: logAnalyticsWorkspaceTags
- location: logAnalyticsWorkspaceLocation
- enableTelemetry: enableTelemetry
- skuName: logAnalyticsWorkspaceSkuName
- dataRetention: logAnalyticsWorkspaceDataRetentionInDays
- diagnosticSettings: [{ useThisWorkspace: true }]
- }
-}
-
-// ========== Application Insights ========== //
-// Application Insights configuration defaults
-var applicationInsightsEnabled = applicationInsightsConfiguration.?enabled ?? true
-var applicationInsightsResourceName = applicationInsightsConfiguration.?name ?? '${solutionPrefix}appi'
-var applicationInsightsTags = applicationInsightsConfiguration.?tags ?? tags
-var applicationInsightsLocation = applicationInsightsConfiguration.?location ?? solutionLocation
-var applicationInsightsRetentionInDays = applicationInsightsConfiguration.?retentionInDays ?? 365
-module applicationInsights 'br/public:avm/res/insights/component:0.6.0' = if (applicationInsightsEnabled) {
- name: take('insights.component.${applicationInsightsResourceName}', 64)
- params: {
- name: applicationInsightsResourceName
- workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId
- location: applicationInsightsLocation
- enableTelemetry: enableTelemetry
- tags: applicationInsightsTags
- retentionInDays: applicationInsightsRetentionInDays
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- kind: 'web'
- disableIpMasking: false
- flowType: 'Bluefield'
- }
-}
-
-// ========== User assigned identity Web App ========== //
-var userAssignedManagedIdentityEnabled = userAssignedManagedIdentityConfiguration.?enabled ?? true
-var userAssignedManagedIdentityResourceName = userAssignedManagedIdentityConfiguration.?name ?? '${solutionPrefix}uaid'
-var userAssignedManagedIdentityTags = userAssignedManagedIdentityConfiguration.?tags ?? tags
-var userAssignedManagedIdentityLocation = userAssignedManagedIdentityConfiguration.?location ?? solutionLocation
-module userAssignedIdentity 'br/public:avm/res/managed-identity/user-assigned-identity:0.4.1' = if (userAssignedManagedIdentityEnabled) {
- name: take('managed-identity.user-assigned-identity.${userAssignedManagedIdentityResourceName}', 64)
- params: {
- name: userAssignedManagedIdentityResourceName
- tags: userAssignedManagedIdentityTags
- location: userAssignedManagedIdentityLocation
- enableTelemetry: enableTelemetry
- }
-}
-
-// ========== Network Security Groups ========== //
-var networkSecurityGroupBackendEnabled = networkSecurityGroupBackendConfiguration.?enabled ?? true
-var networkSecurityGroupBackendResourceName = networkSecurityGroupBackendConfiguration.?name ?? '${solutionPrefix}nsgr-backend'
-var networkSecurityGroupBackendTags = networkSecurityGroupBackendConfiguration.?tags ?? tags
-var networkSecurityGroupBackendLocation = networkSecurityGroupBackendConfiguration.?location ?? solutionLocation
-var networkSecurityGroupBackendSecurityRules = networkSecurityGroupBackendConfiguration.?securityRules ?? [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound'
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
-]
-module networkSecurityGroupBackend 'br/public:avm/res/network/network-security-group:0.5.1' = if (virtualNetworkEnabled && networkSecurityGroupBackendEnabled) {
- name: take('network.network-security-group.${networkSecurityGroupBackendResourceName}', 64)
- params: {
- name: networkSecurityGroupBackendResourceName
- location: networkSecurityGroupBackendLocation
- tags: networkSecurityGroupBackendTags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- securityRules: networkSecurityGroupBackendSecurityRules
- }
-}
-
-var networkSecurityGroupContainersEnabled = networkSecurityGroupContainersConfiguration.?enabled ?? true
-var networkSecurityGroupContainersResourceName = networkSecurityGroupContainersConfiguration.?name ?? '${solutionPrefix}nsgr-containers'
-var networkSecurityGroupContainersTags = networkSecurityGroupContainersConfiguration.?tags ?? tags
-var networkSecurityGroupContainersLocation = networkSecurityGroupContainersConfiguration.?location ?? solutionLocation
-var networkSecurityGroupContainersSecurityRules = networkSecurityGroupContainersConfiguration.?securityRules ?? [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound'
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
-]
-module networkSecurityGroupContainers 'br/public:avm/res/network/network-security-group:0.5.1' = if (virtualNetworkEnabled && networkSecurityGroupContainersEnabled) {
- name: take('network.network-security-group.${networkSecurityGroupContainersResourceName}', 64)
- params: {
- name: networkSecurityGroupContainersResourceName
- location: networkSecurityGroupContainersLocation
- tags: networkSecurityGroupContainersTags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- securityRules: networkSecurityGroupContainersSecurityRules
- }
-}
-
-var networkSecurityGroupBastionEnabled = networkSecurityGroupBastionConfiguration.?enabled ?? true
-var networkSecurityGroupBastionResourceName = networkSecurityGroupBastionConfiguration.?name ?? '${solutionPrefix}nsgr-bastion'
-var networkSecurityGroupBastionTags = networkSecurityGroupBastionConfiguration.?tags ?? tags
-var networkSecurityGroupBastionLocation = networkSecurityGroupBastionConfiguration.?location ?? solutionLocation
-var networkSecurityGroupBastionSecurityRules = networkSecurityGroupBastionConfiguration.?securityRules ?? [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound'
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
-]
-module networkSecurityGroupBastion 'br/public:avm/res/network/network-security-group:0.5.1' = if (virtualNetworkEnabled && networkSecurityGroupBastionEnabled) {
- name: take('network.network-security-group.${networkSecurityGroupBastionResourceName}', 64)
- params: {
- name: networkSecurityGroupBastionResourceName
- location: networkSecurityGroupBastionLocation
- tags: networkSecurityGroupBastionTags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- securityRules: networkSecurityGroupBastionSecurityRules
- }
-}
-
-var networkSecurityGroupAdministrationEnabled = networkSecurityGroupAdministrationConfiguration.?enabled ?? true
-var networkSecurityGroupAdministrationResourceName = networkSecurityGroupAdministrationConfiguration.?name ?? '${solutionPrefix}nsgr-administration'
-var networkSecurityGroupAdministrationTags = networkSecurityGroupAdministrationConfiguration.?tags ?? tags
-var networkSecurityGroupAdministrationLocation = networkSecurityGroupAdministrationConfiguration.?location ?? solutionLocation
-var networkSecurityGroupAdministrationSecurityRules = networkSecurityGroupAdministrationConfiguration.?securityRules ?? [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound'
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
-]
-module networkSecurityGroupAdministration 'br/public:avm/res/network/network-security-group:0.5.1' = if (virtualNetworkEnabled && networkSecurityGroupAdministrationEnabled) {
- name: take('network.network-security-group.${networkSecurityGroupAdministrationResourceName}', 64)
- params: {
- name: networkSecurityGroupAdministrationResourceName
- location: networkSecurityGroupAdministrationLocation
- tags: networkSecurityGroupAdministrationTags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- securityRules: networkSecurityGroupAdministrationSecurityRules
- }
-}
-
-// ========== Virtual Network ========== //
-
-module virtualNetwork 'br/public:avm/res/network/virtual-network:0.6.1' = if (virtualNetworkEnabled) {
- name: 'network-virtual-network'
- params: {
- name: '${solutionPrefix}vnet'
- location: solutionLocation
- tags: tags
- enableTelemetry: enableTelemetry
- addressPrefixes: ['10.0.0.0/8']
- subnets: [
- // The default subnet **must** be the first in the subnets array
- {
- name: 'backend'
- addressPrefix: '10.0.0.0/27'
- //defaultOutboundAccess: false TODO: check this configuration for a more restricted outbound access
- networkSecurityGroupResourceId: networkSecurityGroupBackend.outputs.resourceId
- }
- {
- name: 'administration'
- addressPrefix: '10.0.0.32/27'
- networkSecurityGroupResourceId: networkSecurityGroupAdministration.outputs.resourceId
- //defaultOutboundAccess: false TODO: check this configuration for a more restricted outbound access
- //natGatewayResourceId: natGateway.outputs.resourceId
- }
- {
- // For Azure Bastion resources deployed on or after November 2, 2021, the minimum AzureBastionSubnet size is /26 or larger (/25, /24, etc.).
- // https://learn.microsoft.com/en-us/azure/bastion/configuration-settings#subnet
- name: 'AzureBastionSubnet' //This exact name is required for Azure Bastion
- addressPrefix: '10.0.0.64/26'
- networkSecurityGroupResourceId: networkSecurityGroupBastion.outputs.resourceId
- }
- {
- // If you use your own VNet, you need to provide a subnet that is dedicated exclusively to the Container App environment you deploy. This subnet isn't available to other services
- // https://learn.microsoft.com/en-us/azure/container-apps/networking?tabs=workload-profiles-env%2Cazure-cli#custom-vnet-configuration
- name: 'containers'
- addressPrefix: '10.0.1.0/23' //subnet of size /23 is required for container app
- //defaultOutboundAccess: false TODO: check this configuration for a more restricted outbound access
- delegation: 'Microsoft.App/environments'
- networkSecurityGroupResourceId: networkSecurityGroupContainers.outputs.resourceId
- privateEndpointNetworkPolicies: 'Disabled'
- privateLinkServiceNetworkPolicies: 'Enabled'
- }
- ]
- }
-}
-
-// ========== Bastion host ========== //
-
-module bastionHost 'br/public:avm/res/network/bastion-host:0.6.1' = if (virtualNetworkEnabled) {
- name: 'network-dns-zone-bastion-host'
- params: {
- name: '${solutionPrefix}bstn'
- location: solutionLocation
- skuName: 'Standard'
- enableTelemetry: enableTelemetry
- tags: tags
- virtualNetworkResourceId: virtualNetwork.outputs.resourceId
- publicIPAddressObject: {
- name: '${solutionPrefix}pbipbstn'
- }
- disableCopyPaste: false
- enableFileCopy: false
- enableIpConnect: true
- //enableKerberos: bastionConfiguration.?enableKerberos
- enableShareableLink: true
- //scaleUnits: bastionConfiguration.?scaleUnits
- }
-}
-
-// ========== Virtual machine ========== //
-
-module virtualMachine 'br/public:avm/res/compute/virtual-machine:0.13.0' = if (virtualNetworkEnabled && virtualMachineEnabled) {
- name: 'compute-virtual-machine'
- params: {
- name: '${solutionPrefix}vmws'
- computerName: take('${solutionPrefix}vmws', 15)
- location: solutionLocation
- tags: tags
- enableTelemetry: enableTelemetry
- adminUsername: virtualMachineConfiguration.?adminUsername!
- adminPassword: virtualMachineConfiguration.?adminPassword!
- nicConfigurations: [
- {
- //networkSecurityGroupResourceId: virtualMachineConfiguration.?nicConfigurationConfiguration.networkSecurityGroupResourceId
- nicSuffix: 'nic01'
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- ipConfigurations: [
- {
- name: 'ipconfig01'
- subnetResourceId: virtualNetwork.outputs.subnetResourceIds[1]
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- }
- ]
- }
- ]
- imageReference: {
- publisher: 'microsoft-dsvm'
- offer: 'dsvm-win-2022'
- sku: 'winserver-2022'
- version: 'latest'
- }
- osDisk: {
- createOption: 'FromImage'
- managedDisk: {
- storageAccountType: 'Premium_ZRS'
- }
- diskSizeGB: 128
- caching: 'ReadWrite'
- }
- //patchMode: virtualMachineConfiguration.?patchMode
- osType: 'Windows'
- encryptionAtHost: false //The property 'securityProfile.encryptionAtHost' is not valid because the 'Microsoft.Compute/EncryptionAtHost' feature is not enabled for this subscription.
- vmSize: 'Standard_D2s_v4'
- zone: 0
- extensionAadJoinConfig: {
- enabled: true
- typeHandlerVersion: '1.0'
- }
- // extensionMonitoringAgentConfig: {
- // enabled: true
- // }
- // maintenanceConfigurationResourceId: virtualMachineConfiguration.?maintenanceConfigurationResourceId
- }
-}
-// ========== DNS Zone for AI Foundry: Open AI ========== //
-var openAiSubResource = 'account'
-var openAiPrivateDnsZones = {
- 'privatelink.cognitiveservices.azure.com': openAiSubResource
- 'privatelink.openai.azure.com': openAiSubResource
- 'privatelink.services.ai.azure.com': openAiSubResource
-}
-
-module privateDnsZonesAiServices 'br/public:avm/res/network/private-dns-zone:0.7.1' = [
- for zone in objectKeys(openAiPrivateDnsZones): if (virtualNetworkEnabled) {
- name: 'network-dns-zone-${uniqueString(deployment().name, zone)}'
- params: {
- name: zone
- tags: tags
- enableTelemetry: enableTelemetry
- virtualNetworkLinks: [{ virtualNetworkResourceId: virtualNetwork.outputs.resourceId }]
- }
- }
-]
-
-// ========== AI Foundry: AI Services ==========
-// NOTE: Required version 'Microsoft.CognitiveServices/accounts@2024-04-01-preview' not available in AVM
-var aiFoundryAiServicesModelDeployment = {
- format: 'OpenAI'
- name: 'gpt-4o'
- version: '2024-08-06'
- sku: {
- name: 'GlobalStandard'
- capacity: 50
- }
- raiPolicyName: 'Microsoft.Default'
-}
-
-var aiFoundryAiServicesAccountName = '${solutionPrefix}aifdaisv'
-module aiFoundryAiServices 'br/public:avm/res/cognitive-services/account:0.10.2' = {
- name: 'cognitive-services-account'
- params: {
- name: aiFoundryAiServicesAccountName
- tags: tags
- location: solutionLocation
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- sku: 'S0'
- kind: 'AIServices'
- disableLocalAuth: false //Should be set to true for WAF aligned configuration
- customSubDomainName: aiFoundryAiServicesAccountName
- apiProperties: {
- //staticsEnabled: false
- }
- //publicNetworkAccess: virtualNetworkEnabled ? 'Disabled' : 'Enabled'
- publicNetworkAccess: 'Enabled' //TODO: connection via private endpoint is not working from containers network. Change this when fixed
- privateEndpoints: virtualNetworkEnabled
- ? ([
- {
- subnetResourceId: virtualNetwork.outputs.subnetResourceIds[0]
- privateDnsZoneGroup: {
- privateDnsZoneGroupConfigs: map(objectKeys(openAiPrivateDnsZones), zone => {
- name: replace(zone, '.', '-')
- privateDnsZoneResourceId: resourceId('Microsoft.Network/privateDnsZones', zone)
- })
- }
- }
- ])
- : []
- roleAssignments: [
- // {
- // principalId: userAssignedIdentity.outputs.principalId
- // principalType: 'ServicePrincipal'
- // roleDefinitionIdOrName: 'Cognitive Services OpenAI User'
- // }
- {
- principalId: containerApp.outputs.?systemAssignedMIPrincipalId!
- principalType: 'ServicePrincipal'
- roleDefinitionIdOrName: 'Cognitive Services OpenAI User'
- }
- ]
- deployments: [
- {
- name: aiFoundryAiServicesModelDeployment.name
- model: {
- format: aiFoundryAiServicesModelDeployment.format
- name: aiFoundryAiServicesModelDeployment.name
- version: aiFoundryAiServicesModelDeployment.version
- }
- raiPolicyName: aiFoundryAiServicesModelDeployment.raiPolicyName
- sku: {
- name: aiFoundryAiServicesModelDeployment.sku.name
- capacity: aiFoundryAiServicesModelDeployment.sku.capacity
- }
- }
- ]
- }
-}
-
-// AI Foundry: storage account
-
-var storageAccountPrivateDnsZones = {
- 'privatelink.blob.${environment().suffixes.storage}': 'blob'
- 'privatelink.file.${environment().suffixes.storage}': 'file'
-}
-
-module privateDnsZonesAiFoundryStorageAccount 'br/public:avm/res/network/private-dns-zone:0.3.1' = [
- for zone in objectKeys(storageAccountPrivateDnsZones): if (virtualNetworkEnabled) {
- name: 'network-dns-zone-aifd-stac-${zone}'
- params: {
- name: zone
- tags: tags
- enableTelemetry: enableTelemetry
- virtualNetworkLinks: [
- {
- virtualNetworkResourceId: virtualNetwork.outputs.resourceId
- }
- ]
- }
- }
-]
-
-var aiFoundryStorageAccountName = '${solutionPrefix}aifdstrg'
-module aiFoundryStorageAccount 'br/public:avm/res/storage/storage-account:0.18.2' = {
- name: 'storage-storage-account'
- dependsOn: [
- privateDnsZonesAiFoundryStorageAccount
- ]
- params: {
- name: aiFoundryStorageAccountName
- location: solutionLocation
- tags: tags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- skuName: 'Standard_LRS'
- allowSharedKeyAccess: false
- networkAcls: {
- bypass: 'AzureServices'
- defaultAction: 'Allow'
- }
- blobServices: {
- deleteRetentionPolicyEnabled: false
- containerDeleteRetentionPolicyDays: 7
- containerDeleteRetentionPolicyEnabled: false
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- }
- publicNetworkAccess: virtualNetworkEnabled ? 'Disabled' : 'Enabled'
- allowBlobPublicAccess: virtualNetworkEnabled ? false : true
- privateEndpoints: virtualNetworkEnabled
- ? map(items(storageAccountPrivateDnsZones), zone => {
- name: 'pep-${zone.value}-${aiFoundryStorageAccountName}'
- customNetworkInterfaceName: 'nic-${zone.value}-${aiFoundryStorageAccountName}'
- service: zone.value
- subnetResourceId: virtualNetwork.outputs.subnetResourceIds[0] ?? ''
- privateDnsZoneResourceIds: [resourceId('Microsoft.Network/privateDnsZones', zone.key)]
- })
- : null
- roleAssignments: [
- {
- principalId: userAssignedIdentity.outputs.principalId
- roleDefinitionIdOrName: 'Storage Blob Data Contributor'
- principalType: 'ServicePrincipal'
- }
- ]
- }
-}
-
-// AI Foundry: AI Hub
-var mlTargetSubResource = 'amlworkspace'
-var mlPrivateDnsZones = {
- 'privatelink.api.azureml.ms': mlTargetSubResource
- 'privatelink.notebooks.azure.net': mlTargetSubResource
-}
-module privateDnsZonesAiFoundryWorkspaceHub 'br/public:avm/res/network/private-dns-zone:0.3.1' = [
- for zone in objectKeys(mlPrivateDnsZones): if (virtualNetworkEnabled) {
- name: 'network-dns-zone-${zone}'
- params: {
- name: zone
- enableTelemetry: enableTelemetry
- tags: tags
- virtualNetworkLinks: [
- {
- virtualNetworkResourceId: virtualNetwork.outputs.resourceId
- }
- ]
- }
- }
-]
-var aiFoundryAiHubName = '${solutionPrefix}aifdaihb'
-module aiFoundryAiHub 'modules/ai-hub.bicep' = {
- name: 'modules-ai-hub'
- dependsOn: [
- privateDnsZonesAiFoundryWorkspaceHub
- ]
- params: {
- name: aiFoundryAiHubName
- location: solutionLocation
- tags: tags
- aiFoundryAiServicesName: aiFoundryAiServices.outputs.name
- applicationInsightsResourceId: applicationInsights.outputs.resourceId
- enableTelemetry: enableTelemetry
- logAnalyticsWorkspaceResourceId: logAnalyticsWorkspace.outputs.resourceId
- storageAccountResourceId: aiFoundryStorageAccount.outputs.resourceId
- virtualNetworkEnabled: virtualNetworkEnabled
- privateEndpoints: virtualNetworkEnabled
- ? [
- {
- name: 'pep-${mlTargetSubResource}-${aiFoundryAiHubName}'
- customNetworkInterfaceName: 'nic-${mlTargetSubResource}-${aiFoundryAiHubName}'
- service: mlTargetSubResource
- subnetResourceId: virtualNetworkEnabled ? virtualNetwork.?outputs.?subnetResourceIds[0] : null
- privateDnsZoneGroup: {
- privateDnsZoneGroupConfigs: map(objectKeys(mlPrivateDnsZones), zone => {
- name: replace(zone, '.', '-')
- privateDnsZoneResourceId: resourceId('Microsoft.Network/privateDnsZones', zone)
- })
- }
- }
- ]
- : []
- }
-}
-
-// AI Foundry: AI Project
-var aiFoundryAiProjectName = '${solutionPrefix}aifdaipj'
-
-module aiFoundryAiProject 'br/public:avm/res/machine-learning-services/workspace:0.12.0' = {
- name: 'machine-learning-services-workspace-project'
- params: {
- name: aiFoundryAiProjectName
- location: solutionLocation
- tags: tags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- sku: 'Basic'
- kind: 'Project'
- hubResourceId: aiFoundryAiHub.outputs.resourceId
- roleAssignments: [
- {
- principalId: containerApp.outputs.?systemAssignedMIPrincipalId!
- // Assigning the role with the role name instead of the role ID freezes the deployment at this point
- roleDefinitionIdOrName: '64702f94-c441-49e6-a78b-ef80e0188fee' //'Azure AI Developer'
- principalType: 'ServicePrincipal'
- }
- ]
- }
-}
-
-// ========== DNS Zone for Cosmos DB ========== //
-module privateDnsZonesCosmosDb 'br/public:avm/res/network/private-dns-zone:0.7.0' = if (virtualNetworkEnabled) {
- name: 'network-dns-zone-cosmos-db'
- params: {
- name: 'privatelink.documents.azure.com'
- enableTelemetry: enableTelemetry
- virtualNetworkLinks: [{ virtualNetworkResourceId: virtualNetwork.outputs.resourceId }]
- tags: tags
- }
-}
-
-// ========== Cosmos DB ========== //
-var cosmosDbName = '${solutionPrefix}csdb'
-var cosmosDbDatabaseName = 'autogen'
-var cosmosDbDatabaseMemoryContainerName = 'memory'
-module cosmosDb 'br/public:avm/res/document-db/database-account:0.12.0' = {
- name: 'cosmos-db'
- params: {
- // Required parameters
- name: cosmosDbName
- tags: tags
- location: solutionLocation
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- databaseAccountOfferType: 'Standard'
- enableFreeTier: false
- networkRestrictions: {
- networkAclBypass: 'None'
- publicNetworkAccess: virtualNetworkEnabled ? 'Disabled' : 'Enabled'
- }
- privateEndpoints: virtualNetworkEnabled
- ? [
- {
- privateDnsZoneGroup: {
- privateDnsZoneGroupConfigs: [{ privateDnsZoneResourceId: privateDnsZonesCosmosDb.outputs.resourceId }]
- }
- service: 'Sql'
- subnetResourceId: virtualNetwork.outputs.subnetResourceIds[0]
- }
- ]
- : []
- sqlDatabases: [
- {
- name: cosmosDbDatabaseName
- containers: [
- {
- name: cosmosDbDatabaseMemoryContainerName
- paths: [
- '/session_id'
- ]
- kind: 'Hash'
- version: 2
- }
- ]
- }
- ]
- locations: [
- {
- locationName: solutionLocation
- failoverPriority: 0
- }
- ]
- capabilitiesToAdd: [
- 'EnableServerless'
- ]
- sqlRoleAssignmentsPrincipalIds: [
- //userAssignedIdentity.outputs.principalId
- containerApp.outputs.?systemAssignedMIPrincipalId
- ]
- sqlRoleDefinitions: [
- {
- // Replace this with built-in role definition Cosmos DB Built-in Data Contributor: https://docs.azure.cn/en-us/cosmos-db/nosql/security/reference-data-plane-roles#cosmos-db-built-in-data-contributor
- roleType: 'CustomRole'
- roleName: 'Cosmos DB SQL Data Contributor'
- name: 'cosmos-db-sql-data-contributor'
- dataAction: [
- 'Microsoft.DocumentDB/databaseAccounts/readMetadata'
- 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*'
- 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*'
- ]
- }
- ]
- }
-}
-
-// ========== Backend Container App Environment ========== //
-
-module containerAppEnvironment 'modules/container-app-environment.bicep' = {
- name: 'modules-container-app-environment'
- params: {
- name: '${solutionPrefix}cenv'
- tags: tags
- location: solutionLocation
- logAnalyticsResourceName: logAnalyticsWorkspace.outputs.name
- publicNetworkAccess: 'Enabled'
- zoneRedundant: virtualNetworkEnabled ? true : false
- aspireDashboardEnabled: !virtualNetworkEnabled
- vnetConfiguration: virtualNetworkEnabled
- ? {
- internal: false
- infrastructureSubnetId: virtualNetwork.?outputs.?subnetResourceIds[2] ?? ''
- }
- : {}
- }
-}
-
-// module containerAppEnvironment 'br/public:avm/res/app/managed-environment:0.11.0' = {
-// name: 'container-app-environment'
-// params: {
-// name: '${solutionPrefix}cenv'
-// location: solutionLocation
-// tags: tags
-// enableTelemetry: enableTelemetry
-// //daprAIConnectionString: applicationInsights.outputs.connectionString //Troubleshoot: ContainerAppsConfiguration.DaprAIConnectionString is invalid. DaprAIConnectionString can not be set when AppInsightsConfiguration has been set, please set DaprAIConnectionString to null. (Code:InvalidRequestParameterWithDetails
-// appLogsConfiguration: {
-// destination: 'log-analytics'
-// logAnalyticsConfiguration: {
-// customerId: logAnalyticsWorkspace.outputs.logAnalyticsWorkspaceId
-// sharedKey: listKeys(
-// '${resourceGroup().id}/providers/Microsoft.OperationalInsights/workspaces/${logAnalyticsWorkspaceName}',
-// '2023-09-01'
-// ).primarySharedKey
-// }
-// }
-// appInsightsConnectionString: applicationInsights.outputs.connectionString
-// publicNetworkAccess: virtualNetworkEnabled ? 'Disabled' : 'Enabled' //TODO: use Azure Front Door WAF or Application Gateway WAF instead
-// zoneRedundant: true //TODO: make it zone redundant for waf aligned
-// infrastructureSubnetResourceId: virtualNetworkEnabled
-// ? virtualNetwork.outputs.subnetResourceIds[1]
-// : null
-// internal: false
-// }
-// }
-
-// ========== Backend Container App Service ========== //
-module containerApp 'br/public:avm/res/app/container-app:0.14.2' = {
- name: 'container-app'
- params: {
- name: '${solutionPrefix}capp'
- tags: tags
- location: solutionLocation
- enableTelemetry: enableTelemetry
- //environmentResourceId: containerAppEnvironment.outputs.resourceId
- environmentResourceId: containerAppEnvironment.outputs.resourceId
- managedIdentities: {
- systemAssigned: true //Replace with user assigned identity
- userAssignedResourceIds: [userAssignedIdentity.outputs.resourceId]
- }
- ingressTargetPort: 8000
- ingressExternal: true
- activeRevisionsMode: 'Single'
- corsPolicy: {
- allowedOrigins: [
- 'https://${webSiteName}.azurewebsites.net'
- 'http://${webSiteName}.azurewebsites.net'
- ]
- }
- scaleSettings: {
- //TODO: Make maxReplicas and minReplicas parameterized
- maxReplicas: 1
- minReplicas: 1
- rules: [
- {
- name: 'http-scaler'
- http: {
- metadata: {
- concurrentRequests: '100'
- }
- }
- }
- ]
- }
- containers: [
- {
- name: 'backend'
- //TODO: Make image parameterized for the registry name and the appversion
- image: 'biabcontainerreg.azurecr.io/macaebackend:fnd01'
- resources: {
- //TODO: Make cpu and memory parameterized
- cpu: '2.0'
- memory: '4.0Gi'
- }
- env: [
- {
- name: 'COSMOSDB_ENDPOINT'
- value: 'https://${cosmosDbName}.documents.azure.com:443/'
- }
- {
- name: 'COSMOSDB_DATABASE'
- value: cosmosDbDatabaseName
- }
- {
- name: 'COSMOSDB_CONTAINER'
- value: cosmosDbDatabaseMemoryContainerName
- }
- {
- name: 'AZURE_OPENAI_ENDPOINT'
- value: 'https://${aiFoundryAiServicesAccountName}.openai.azure.com/'
- }
- {
- name: 'AZURE_OPENAI_MODEL_NAME'
- value: aiFoundryAiServicesModelDeployment.name
- }
- {
- name: 'AZURE_OPENAI_DEPLOYMENT_NAME'
- value: aiFoundryAiServicesModelDeployment.name
- }
- {
- name: 'AZURE_OPENAI_API_VERSION'
- value: '2025-01-01-preview' //TODO: set parameter/variable
- }
- {
- name: 'APPLICATIONINSIGHTS_INSTRUMENTATION_KEY'
- value: applicationInsights.outputs.instrumentationKey
- }
- {
- name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
- value: applicationInsights.outputs.connectionString
- }
- {
- name: 'AZURE_AI_AGENT_PROJECT_CONNECTION_STRING'
- value: '${toLower(replace(solutionLocation,' ',''))}.api.azureml.ms;${subscription().subscriptionId};${resourceGroup().name};${aiFoundryAiProjectName}'
- //Location should be the AI Foundry AI Project location
- }
- {
- name: 'AZURE_AI_SUBSCRIPTION_ID'
- value: subscription().subscriptionId
- }
- {
- name: 'AZURE_AI_RESOURCE_GROUP'
- value: resourceGroup().name
- }
- {
- name: 'AZURE_AI_PROJECT_NAME'
- value: aiFoundryAiProjectName
- }
- {
- name: 'FRONTEND_SITE_NAME'
- value: 'https://${webSiteName}.azurewebsites.net'
- }
- ]
- }
- ]
- }
-}
-
-// ========== Frontend server farm ========== //
-module webServerfarm 'br/public:avm/res/web/serverfarm:0.4.1' = {
- name: 'web-server-farm'
- params: {
- tags: tags
- location: solutionLocation
- name: '${solutionPrefix}sfrm'
- skuName: 'P1v2'
- skuCapacity: 1
- reserved: true
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspace.outputs.resourceId }]
- kind: 'linux'
- zoneRedundant: false //TODO: make it zone redundant for waf aligned
- }
-}
-
-// ========== Entra ID Application ========== //
-resource entraIdApplication 'Microsoft.Graph/applications@v1.0' = if (entraIdApplicationConfiguration.?enabled!) {
- displayName: '${webSiteName}-app'
- uniqueName: '${webSiteName}-app-${uniqueString(resourceGroup().id, webSiteName)}'
- description: 'EntraId Application for ${webSiteName} authentication'
- passwordCredentials: [
- {
- displayName: 'Credential for website ${webSiteName}'
- endDateTime: dateTimeAdd(deploymentTime, 'P180D')
- // keyId: 'string'
- // startDateTime: 'string'
- }
- ]
-}
-
-var graphAppId = '00000003-0000-0000-c000-000000000000' //Microsoft Graph ID
-// Get the Microsoft Graph service principal so that the scope names can be looked up and mapped to a permission ID
-resource msGraphSP 'Microsoft.Graph/servicePrincipals@v1.0' existing = {
- appId: graphAppId
-}
-
-// ========== Entra ID Service Principal ========== //
-resource entraIdServicePrincipal 'Microsoft.Graph/servicePrincipals@v1.0' = if (entraIdApplicationConfiguration.?enabled!) {
- appId: entraIdApplication.appId
-}
-
-// Grant the OAuth2.0 scopes (requested in parameters) to the basic app, for all users in the tenant
-resource graphScopesAssignment 'Microsoft.Graph/oauth2PermissionGrants@v1.0' = if (entraIdApplicationConfiguration.?enabled!) {
- clientId: entraIdServicePrincipal.id
- resourceId: msGraphSP.id
- consentType: 'AllPrincipals'
- scope: 'User.Read'
-}
-
-// ========== Frontend web site ========== //
-var webSiteName = '${solutionPrefix}wapp'
-var entraIdApplicationCredentialSecretSettingName = 'MICROSOFT_PROVIDER_AUTHENTICATION_SECRET'
-module webSite 'br/public:avm/res/web/site:0.15.1' = {
- name: 'web-site'
- params: {
- tags: tags
- kind: 'app,linux,container'
- name: webSiteName
- location: solutionLocation
- serverFarmResourceId: webServerfarm.outputs.resourceId
- appInsightResourceId: applicationInsights.outputs.resourceId
- siteConfig: {
- linuxFxVersion: 'DOCKER|biabcontainerreg.azurecr.io/macaefrontend:fnd01'
- }
- publicNetworkAccess: 'Enabled' //TODO: use Azure Front Door WAF or Application Gateway WAF instead
- //privateEndpoints: [{ subnetResourceId: virtualNetwork.outputs.subnetResourceIds[0] }]
- //Not required, this resource only serves a static website
- appSettingsKeyValuePairs: union(
- {
- SCM_DO_BUILD_DURING_DEPLOYMENT: 'true'
- DOCKER_REGISTRY_SERVER_URL: 'https://biabcontainerreg.azurecr.io'
- WEBSITES_PORT: '3000'
- WEBSITES_CONTAINER_START_TIME_LIMIT: '1800' // 30 minutes, adjust as needed
- BACKEND_API_URL: 'https://${containerApp.outputs.fqdn}'
- AUTH_ENABLED: 'false'
- },
- (entraIdApplicationConfiguration.?enabled!
- ? { '${entraIdApplicationCredentialSecretSettingName}': entraIdApplication.passwordCredentials[0].secretText }
- : {})
- )
- authSettingV2Configuration: {
- platform: {
- enabled: entraIdApplicationConfiguration.?enabled!
- runtimeVersion: '~1'
- }
- login: {
- cookieExpiration: {
- convention: 'FixedTime'
- timeToExpiration: '08:00:00'
- }
- nonce: {
- nonceExpirationInterval: '00:05:00'
- validateNonce: true
- }
- preserveUrlFragmentsForLogins: false
- routes: {}
- tokenStore: {
- azureBlobStorage: {}
- enabled: true
- fileSystem: {}
- tokenRefreshExtensionHours: 72
- }
- }
- globalValidation: {
- requireAuthentication: true
- unauthenticatedClientAction: 'RedirectToLoginPage'
- redirectToProvider: 'azureactivedirectory'
- }
- httpSettings: {
- forwardProxy: {
- convention: 'NoProxy'
- }
- requireHttps: true
- routes: {
- apiPrefix: '/.auth'
- }
- }
- identityProviders: {
- azureActiveDirectory: entraIdApplicationConfiguration.?enabled!
- ? {
- isAutoProvisioned: true
- enabled: true
- login: {
- disableWWWAuthenticate: false
- }
- registration: {
- clientId: entraIdApplication.appId //create application in AAD
- clientSecretSettingName: entraIdApplicationCredentialSecretSettingName
- openIdIssuer: 'https://sts.windows.net/${tenant().tenantId}/v2.0/'
- }
- validation: {
- allowedAudiences: [
- 'api://${entraIdApplication.appId}'
- ]
- defaultAuthorizationPolicy: {
- allowedPrincipals: {}
- allowedApplications: ['86e2d249-6832-461f-8888-cfa0394a5f8c']
- }
- jwtClaimChecks: {}
- }
- }
- : {}
- }
- }
- }
-}
-
-// ============ //
-// Outputs //
-// ============ //
-
-// Add your outputs here
-
-// @description('The resource ID of the resource.')
-// output resourceId string = .id
-
-// @description('The name of the resource.')
-// output name string = .name
-
-// @description('The location the resource was deployed into.')
-// output location string = .location
-
-// ================ //
-// Definitions //
-// ================ //
-//
-// Add your User-defined-types here, if any
-//
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Log Analytics Workspace resource configuration.')
-type logAnalyticsWorkspaceConfigurationType = {
- @description('Optional. If the Log Analytics Workspace resource should be enabled or not.')
- enabled: bool?
-
- @description('Optional. The name of the Log Analytics Workspace resource.')
- @maxLength(63)
- name: string?
-
- @description('Optional. Location for the Log Analytics Workspace resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to for the Log Analytics Workspace resource.')
- tags: object?
-
- @description('Optional. The SKU for the Log Analytics Workspace resource.')
- sku: ('CapacityReservation' | 'Free' | 'LACluster' | 'PerGB2018' | 'PerNode' | 'Premium' | 'Standalone' | 'Standard')?
-
- @description('Optional. The number of days to retain the data in the Log Analytics Workspace. If empty, it will be set to 30 days.')
- @maxValue(730)
- dataRetentionInDays: int?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Application Insights resource configuration.')
-type applicationInsightsConfigurationType = {
- @description('Optional. If the Application Insights resource should be enabled or not.')
- enabled: bool?
-
- @description('Optional. The name of the Application Insights resource.')
- @maxLength(90)
- name: string?
-
- @description('Optional. Location for the Application Insights resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Application Insights resource.')
- tags: object?
-
- @description('Optional. The retention of Application Insights data in days. If empty, Standard will be used.')
- retentionInDays: (120 | 180 | 270 | 30 | 365 | 550 | 60 | 730 | 90)?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Application User Assigned Managed Identity resource configuration.')
-type userAssignedManagedIdentityType = {
- @description('Optional. If the User Assigned Managed Identity resource should be enabled or not.')
- enabled: bool?
-
- @description('Optional. The name of the User Assigned Managed Identity resource.')
- @maxLength(128)
- name: string?
-
- @description('Optional. Location for the User Assigned Managed Identity resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the User Assigned Managed Identity resource.')
- tags: object?
-}
-
-@export()
-import { securityRuleType } from 'br/public:avm/res/network/network-security-group:0.5.1'
-@description('The type for the Multi-Agent Custom Automation Engine Network Security Group resource configuration.')
-type networkSecurityGroupConfigurationType = {
- @description('Optional. If the Network Security Group resource should be enabled or not.')
- enabled: bool?
-
- @description('Optional. The name of the Network Security Group resource.')
- @maxLength(90)
- name: string?
-
- @description('Optional. Location for the Network Security Group resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Network Security Group resource.')
- tags: object?
-
- @description('Optional. The security rules to set for the Network Security Group resource.')
- securityRules: securityRuleType[]?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation virtual machine resource configuration.')
-type virtualMachineConfigurationType = {
- @description('Optional. If the Virtual Machine resource should be enabled or not.')
- enabled: bool?
-
- @description('Required. The username for the administrator account on the virtual machine. Required if a virtual machine is created as part of the module.')
- adminUsername: string?
-
- @description('Required. The password for the administrator account on the virtual machine. Required if a virtual machine is created as part of the module.')
- @secure()
- adminPassword: string?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation virtual network resource configuration.')
-type virtualNetworkConfigurationType = {
- @description('Optional. If the Virtual Network resource should be enabled or not.')
- enabled: bool?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Entra ID Application resource configuration.')
-type entraIdApplicationConfigurationType = {
- @description('Optional. If the Entra ID Application for website authentication should be enabled or not.')
- enabled: bool?
-}
diff --git a/infra/old/00-older/main2.bicep b/infra/old/00-older/main2.bicep
deleted file mode 100644
index 9d9f3f1ca..000000000
--- a/infra/old/00-older/main2.bicep
+++ /dev/null
@@ -1,54 +0,0 @@
-targetScope = 'subscription'
-
-@minLength(1)
-@maxLength(64)
-@description('Name of the environment that can be used as part of naming resource convention')
-param environmentName string
-
-@minLength(1)
-@description('Primary location for all resources')
-param location string
-
-param backendExists bool
-@secure()
-param backendDefinition object
-param frontendExists bool
-@secure()
-param frontendDefinition object
-
-@description('Id of the user or app to assign application roles')
-param principalId string
-
-// Tags that should be applied to all resources.
-//
-// Note that 'azd-service-name' tags should be applied separately to service host resources.
-// Example usage:
-// tags: union(tags, { 'azd-service-name': })
-var tags = {
- 'azd-env-name': environmentName
-}
-
-// Organize resources in a resource group
-resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
- name: 'rg-${environmentName}'
- location: location
- tags: tags
-}
-
-module resources 'resources.bicep' = {
- scope: rg
- name: 'resources'
- params: {
- location: location
- tags: tags
- principalId: principalId
- backendExists: backendExists
- backendDefinition: backendDefinition
- frontendExists: frontendExists
- frontendDefinition: frontendDefinition
- }
-}
-
-output AZURE_CONTAINER_REGISTRY_ENDPOINT string = resources.outputs.AZURE_CONTAINER_REGISTRY_ENDPOINT
-output AZURE_RESOURCE_BACKEND_ID string = resources.outputs.AZURE_RESOURCE_BACKEND_ID
-output AZURE_RESOURCE_FRONTEND_ID string = resources.outputs.AZURE_RESOURCE_FRONTEND_ID
diff --git a/infra/old/00-older/resources.bicep b/infra/old/00-older/resources.bicep
deleted file mode 100644
index 3c9a580c2..000000000
--- a/infra/old/00-older/resources.bicep
+++ /dev/null
@@ -1,242 +0,0 @@
-@description('The location used for all deployed resources')
-param location string = resourceGroup().location
-
-@description('Tags that will be applied to all resources')
-param tags object = {}
-
-
-param backendExists bool
-@secure()
-param backendDefinition object
-param frontendExists bool
-@secure()
-param frontendDefinition object
-
-@description('Id of the user or app to assign application roles')
-param principalId string
-
-var abbrs = loadJsonContent('./abbreviations.json')
-var resourceToken = uniqueString(subscription().id, resourceGroup().id, location)
-
-// Monitor application with Azure Monitor
-module monitoring 'br/public:avm/ptn/azd/monitoring:0.1.0' = {
- name: 'monitoring'
- params: {
- logAnalyticsName: '${abbrs.operationalInsightsWorkspaces}${resourceToken}'
- applicationInsightsName: '${abbrs.insightsComponents}${resourceToken}'
- applicationInsightsDashboardName: '${abbrs.portalDashboards}${resourceToken}'
- location: location
- tags: tags
- }
-}
-
-// Container registry
-module containerRegistry 'br/public:avm/res/container-registry/registry:0.1.1' = {
- name: 'registry'
- params: {
- name: '${abbrs.containerRegistryRegistries}${resourceToken}'
- location: location
- tags: tags
- publicNetworkAccess: 'Enabled'
- roleAssignments:[
- {
- principalId: backendIdentity.outputs.principalId
- principalType: 'ServicePrincipal'
- roleDefinitionIdOrName: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '7f951dda-4ed3-4680-a7ca-43fe172d538d')
- }
- {
- principalId: frontendIdentity.outputs.principalId
- principalType: 'ServicePrincipal'
- roleDefinitionIdOrName: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '7f951dda-4ed3-4680-a7ca-43fe172d538d')
- }
- ]
- }
-}
-
-// Container apps environment
-module containerAppsEnvironment 'br/public:avm/res/app/managed-environment:0.4.5' = {
- name: 'container-apps-environment'
- params: {
- logAnalyticsWorkspaceResourceId: monitoring.outputs.logAnalyticsWorkspaceResourceId
- name: '${abbrs.appManagedEnvironments}${resourceToken}'
- location: location
- zoneRedundant: false
- }
-}
-
-module backendIdentity 'br/public:avm/res/managed-identity/user-assigned-identity:0.2.1' = {
- name: 'backendidentity'
- params: {
- name: '${abbrs.managedIdentityUserAssignedIdentities}backend-${resourceToken}'
- location: location
- }
-}
-
-module backendFetchLatestImage './modules/fetch-container-image.bicep' = {
- name: 'backend-fetch-image'
- params: {
- exists: backendExists
- name: 'backend'
- }
-}
-
-var backendAppSettingsArray = filter(array(backendDefinition.settings), i => i.name != '')
-var backendSecrets = map(filter(backendAppSettingsArray, i => i.?secret != null), i => {
- name: i.name
- value: i.value
- secretRef: i.?secretRef ?? take(replace(replace(toLower(i.name), '_', '-'), '.', '-'), 32)
-})
-var backendEnv = map(filter(backendAppSettingsArray, i => i.?secret == null), i => {
- name: i.name
- value: i.value
-})
-
-module backend 'br/public:avm/res/app/container-app:0.8.0' = {
- name: 'backend'
- params: {
- name: 'backend'
- ingressTargetPort: 8000
- scaleMinReplicas: 1
- scaleMaxReplicas: 10
- secrets: {
- secureList: union([
- ],
- map(backendSecrets, secret => {
- name: secret.secretRef
- value: secret.value
- }))
- }
- containers: [
- {
- image: backendFetchLatestImage.outputs.?containers[?0].?image ?? 'mcr.microsoft.com/azuredocs/containerapps-helloworld:latest'
- name: 'main'
- resources: {
- cpu: json('0.5')
- memory: '1.0Gi'
- }
- env: union([
- {
- name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
- value: monitoring.outputs.applicationInsightsConnectionString
- }
- {
- name: 'AZURE_CLIENT_ID'
- value: backendIdentity.outputs.clientId
- }
- {
- name: 'PORT'
- value: '8000'
- }
- ],
- backendEnv,
- map(backendSecrets, secret => {
- name: secret.name
- secretRef: secret.secretRef
- }))
- }
- ]
- managedIdentities:{
- systemAssigned: false
- userAssignedResourceIds: [backendIdentity.outputs.resourceId]
- }
- registries:[
- {
- server: containerRegistry.outputs.loginServer
- identity: backendIdentity.outputs.resourceId
- }
- ]
- environmentResourceId: containerAppsEnvironment.outputs.resourceId
- location: location
- tags: union(tags, { 'azd-service-name': 'backend' })
- }
-}
-
-module frontendIdentity 'br/public:avm/res/managed-identity/user-assigned-identity:0.2.1' = {
- name: 'frontendidentity'
- params: {
- name: '${abbrs.managedIdentityUserAssignedIdentities}frontend-${resourceToken}'
- location: location
- }
-}
-
-module frontendFetchLatestImage './modules/fetch-container-image.bicep' = {
- name: 'frontend-fetch-image'
- params: {
- exists: frontendExists
- name: 'frontend'
- }
-}
-
-var frontendAppSettingsArray = filter(array(frontendDefinition.settings), i => i.name != '')
-var frontendSecrets = map(filter(frontendAppSettingsArray, i => i.?secret != null), i => {
- name: i.name
- value: i.value
- secretRef: i.?secretRef ?? take(replace(replace(toLower(i.name), '_', '-'), '.', '-'), 32)
-})
-var frontendEnv = map(filter(frontendAppSettingsArray, i => i.?secret == null), i => {
- name: i.name
- value: i.value
-})
-
-module frontend 'br/public:avm/res/app/container-app:0.8.0' = {
- name: 'frontend'
- params: {
- name: 'frontend'
- ingressTargetPort: 3000
- scaleMinReplicas: 1
- scaleMaxReplicas: 10
- secrets: {
- secureList: union([
- ],
- map(frontendSecrets, secret => {
- name: secret.secretRef
- value: secret.value
- }))
- }
- containers: [
- {
- image: frontendFetchLatestImage.outputs.?containers[?0].?image ?? 'mcr.microsoft.com/azuredocs/containerapps-helloworld:latest'
- name: 'main'
- resources: {
- cpu: json('0.5')
- memory: '1.0Gi'
- }
- env: union([
- {
- name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
- value: monitoring.outputs.applicationInsightsConnectionString
- }
- {
- name: 'AZURE_CLIENT_ID'
- value: frontendIdentity.outputs.clientId
- }
- {
- name: 'PORT'
- value: '3000'
- }
- ],
- frontendEnv,
- map(frontendSecrets, secret => {
- name: secret.name
- secretRef: secret.secretRef
- }))
- }
- ]
- managedIdentities:{
- systemAssigned: false
- userAssignedResourceIds: [frontendIdentity.outputs.resourceId]
- }
- registries:[
- {
- server: containerRegistry.outputs.loginServer
- identity: frontendIdentity.outputs.resourceId
- }
- ]
- environmentResourceId: containerAppsEnvironment.outputs.resourceId
- location: location
- tags: union(tags, { 'azd-service-name': 'frontend' })
- }
-}
-output AZURE_CONTAINER_REGISTRY_ENDPOINT string = containerRegistry.outputs.loginServer
-output AZURE_RESOURCE_BACKEND_ID string = backend.outputs.resourceId
-output AZURE_RESOURCE_FRONTEND_ID string = frontend.outputs.resourceId
diff --git a/infra/old/08-2025/abbreviations.json b/infra/old/08-2025/abbreviations.json
deleted file mode 100644
index 93b95656b..000000000
--- a/infra/old/08-2025/abbreviations.json
+++ /dev/null
@@ -1,227 +0,0 @@
-{
- "ai": {
- "aiSearch": "srch-",
- "aiServices": "aisa-",
- "aiVideoIndexer": "avi-",
- "machineLearningWorkspace": "mlw-",
- "openAIService": "oai-",
- "botService": "bot-",
- "computerVision": "cv-",
- "contentModerator": "cm-",
- "contentSafety": "cs-",
- "customVisionPrediction": "cstv-",
- "customVisionTraining": "cstvt-",
- "documentIntelligence": "di-",
- "faceApi": "face-",
- "healthInsights": "hi-",
- "immersiveReader": "ir-",
- "languageService": "lang-",
- "speechService": "spch-",
- "translator": "trsl-",
- "aiHub": "aih-",
- "aiHubProject": "aihp-"
- },
- "analytics": {
- "analysisServicesServer": "as",
- "databricksWorkspace": "dbw-",
- "dataExplorerCluster": "dec",
- "dataExplorerClusterDatabase": "dedb",
- "dataFactory": "adf-",
- "digitalTwin": "dt-",
- "streamAnalytics": "asa-",
- "synapseAnalyticsPrivateLinkHub": "synplh-",
- "synapseAnalyticsSQLDedicatedPool": "syndp",
- "synapseAnalyticsSparkPool": "synsp",
- "synapseAnalyticsWorkspaces": "synw",
- "dataLakeStoreAccount": "dls",
- "dataLakeAnalyticsAccount": "dla",
- "eventHubsNamespace": "evhns-",
- "eventHub": "evh-",
- "eventGridDomain": "evgd-",
- "eventGridSubscriptions": "evgs-",
- "eventGridTopic": "evgt-",
- "eventGridSystemTopic": "egst-",
- "hdInsightHadoopCluster": "hadoop-",
- "hdInsightHBaseCluster": "hbase-",
- "hdInsightKafkaCluster": "kafka-",
- "hdInsightSparkCluster": "spark-",
- "hdInsightStormCluster": "storm-",
- "hdInsightMLServicesCluster": "mls-",
- "iotHub": "iot-",
- "provisioningServices": "provs-",
- "provisioningServicesCertificate": "pcert-",
- "powerBIEmbedded": "pbi-",
- "timeSeriesInsightsEnvironment": "tsi-"
- },
- "compute": {
- "appServiceEnvironment": "ase-",
- "appServicePlan": "asp-",
- "loadTesting": "lt-",
- "availabilitySet": "avail-",
- "arcEnabledServer": "arcs-",
- "arcEnabledKubernetesCluster": "arck",
- "batchAccounts": "ba-",
- "cloudService": "cld-",
- "communicationServices": "acs-",
- "diskEncryptionSet": "des",
- "functionApp": "func-",
- "gallery": "gal",
- "hostingEnvironment": "host-",
- "imageTemplate": "it-",
- "managedDiskOS": "osdisk",
- "managedDiskData": "disk",
- "notificationHubs": "ntf-",
- "notificationHubsNamespace": "ntfns-",
- "proximityPlacementGroup": "ppg-",
- "restorePointCollection": "rpc-",
- "snapshot": "snap-",
- "staticWebApp": "stapp-",
- "virtualMachine": "vm",
- "virtualMachineScaleSet": "vmss-",
- "virtualMachineMaintenanceConfiguration": "mc-",
- "virtualMachineStorageAccount": "stvm",
- "webApp": "app-"
- },
- "containers": {
- "aksCluster": "aks-",
- "aksSystemNodePool": "npsystem-",
- "aksUserNodePool": "np-",
- "containerApp": "ca-",
- "containerAppsEnvironment": "cae-",
- "containerRegistry": "cr",
- "containerInstance": "ci",
- "serviceFabricCluster": "sf-",
- "serviceFabricManagedCluster": "sfmc-"
- },
- "databases": {
- "cosmosDBDatabase": "cosmos-",
- "cosmosDBApacheCassandra": "coscas-",
- "cosmosDBMongoDB": "cosmon-",
- "cosmosDBNoSQL": "cosno-",
- "cosmosDBTable": "costab-",
- "cosmosDBGremlin": "cosgrm-",
- "cosmosDBPostgreSQL": "cospos-",
- "cacheForRedis": "redis-",
- "sqlDatabaseServer": "sql-",
- "sqlDatabase": "sqldb-",
- "sqlElasticJobAgent": "sqlja-",
- "sqlElasticPool": "sqlep-",
- "mariaDBServer": "maria-",
- "mariaDBDatabase": "mariadb-",
- "mySQLDatabase": "mysql-",
- "postgreSQLDatabase": "psql-",
- "sqlServerStretchDatabase": "sqlstrdb-",
- "sqlManagedInstance": "sqlmi-"
- },
- "developerTools": {
- "appConfigurationStore": "appcs-",
- "mapsAccount": "map-",
- "signalR": "sigr",
- "webPubSub": "wps-"
- },
- "devOps": {
- "managedGrafana": "amg-"
- },
- "integration": {
- "apiManagementService": "apim-",
- "integrationAccount": "ia-",
- "logicApp": "logic-",
- "serviceBusNamespace": "sbns-",
- "serviceBusQueue": "sbq-",
- "serviceBusTopic": "sbt-",
- "serviceBusTopicSubscription": "sbts-"
- },
- "managementGovernance": {
- "automationAccount": "aa-",
- "applicationInsights": "appi-",
- "monitorActionGroup": "ag-",
- "monitorDataCollectionRules": "dcr-",
- "monitorAlertProcessingRule": "apr-",
- "blueprint": "bp-",
- "blueprintAssignment": "bpa-",
- "dataCollectionEndpoint": "dce-",
- "logAnalyticsWorkspace": "log-",
- "logAnalyticsQueryPacks": "pack-",
- "managementGroup": "mg-",
- "purviewInstance": "pview-",
- "resourceGroup": "rg-",
- "templateSpecsName": "ts-"
- },
- "migration": {
- "migrateProject": "migr-",
- "databaseMigrationService": "dms-",
- "recoveryServicesVault": "rsv-"
- },
- "networking": {
- "applicationGateway": "agw-",
- "applicationSecurityGroup": "asg-",
- "cdnProfile": "cdnp-",
- "cdnEndpoint": "cdne-",
- "connections": "con-",
- "dnsForwardingRuleset": "dnsfrs-",
- "dnsPrivateResolver": "dnspr-",
- "dnsPrivateResolverInboundEndpoint": "in-",
- "dnsPrivateResolverOutboundEndpoint": "out-",
- "firewall": "afw-",
- "firewallPolicy": "afwp-",
- "expressRouteCircuit": "erc-",
- "expressRouteGateway": "ergw-",
- "frontDoorProfile": "afd-",
- "frontDoorEndpoint": "fde-",
- "frontDoorFirewallPolicy": "fdfp-",
- "ipGroups": "ipg-",
- "loadBalancerInternal": "lbi-",
- "loadBalancerExternal": "lbe-",
- "loadBalancerRule": "rule-",
- "localNetworkGateway": "lgw-",
- "natGateway": "ng-",
- "networkInterface": "nic-",
- "networkSecurityGroup": "nsg-",
- "networkSecurityGroupSecurityRules": "nsgsr-",
- "networkWatcher": "nw-",
- "privateLink": "pl-",
- "privateEndpoint": "pep-",
- "publicIPAddress": "pip-",
- "publicIPAddressPrefix": "ippre-",
- "routeFilter": "rf-",
- "routeServer": "rtserv-",
- "routeTable": "rt-",
- "serviceEndpointPolicy": "se-",
- "trafficManagerProfile": "traf-",
- "userDefinedRoute": "udr-",
- "virtualNetwork": "vnet-",
- "virtualNetworkGateway": "vgw-",
- "virtualNetworkManager": "vnm-",
- "virtualNetworkPeering": "peer-",
- "virtualNetworkSubnet": "snet-",
- "virtualWAN": "vwan-",
- "virtualWANHub": "vhub-"
- },
- "security": {
- "bastion": "bas-",
- "keyVault": "kv-",
- "keyVaultManagedHSM": "kvmhsm-",
- "managedIdentity": "id-",
- "sshKey": "sshkey-",
- "vpnGateway": "vpng-",
- "vpnConnection": "vcn-",
- "vpnSite": "vst-",
- "webApplicationFirewallPolicy": "waf",
- "webApplicationFirewallPolicyRuleGroup": "wafrg"
- },
- "storage": {
- "storSimple": "ssimp",
- "backupVault": "bvault-",
- "backupVaultPolicy": "bkpol-",
- "fileShare": "share-",
- "storageAccount": "st",
- "storageSyncService": "sss-"
- },
- "virtualDesktop": {
- "labServicesPlan": "lp-",
- "virtualDesktopHostPool": "vdpool-",
- "virtualDesktopApplicationGroup": "vdag-",
- "virtualDesktopWorkspace": "vdws-",
- "virtualDesktopScalingPlan": "vdscaling-"
- }
- }
\ No newline at end of file
diff --git a/infra/old/08-2025/bicepconfig.json b/infra/old/08-2025/bicepconfig.json
deleted file mode 100644
index 7d7839f72..000000000
--- a/infra/old/08-2025/bicepconfig.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "experimentalFeaturesEnabled": {
- "extensibility": true
- },
- "extensions": {
- "graphV1": "br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:0.2.0-preview" // ,
- // "graphBeta": "br:mcr.microsoft.com/bicep/extensions/microsoftgraph/beta:0.2.0-preview"
- }
- }
\ No newline at end of file
diff --git a/infra/old/08-2025/main.bicep b/infra/old/08-2025/main.bicep
deleted file mode 100644
index a23b5bc8e..000000000
--- a/infra/old/08-2025/main.bicep
+++ /dev/null
@@ -1,1726 +0,0 @@
-metadata name = 'Multi-Agent Custom Automation Engine'
-metadata description = 'This module contains the resources required to deploy the Multi-Agent Custom Automation Engine solution accelerator for both Sandbox environments and WAF aligned environments.'
-
-@description('Set to true if you want to deploy WAF-aligned infrastructure.')
-param useWafAlignedArchitecture bool
-
-@description('Use this parameter to use an existing AI project resource ID')
-param existingFoundryProjectResourceId string = ''
-
-@description('Required. Name of the environment to deploy the solution into.')
-param environmentName string
-
-@description('Required. Location for all Resources except AI Foundry.')
-param solutionLocation string = resourceGroup().location
-
-@description('Optional. Enable/Disable usage telemetry for module.')
-param enableTelemetry bool = true
-
-param existingLogAnalyticsWorkspaceId string = ''
-
-// Restricting deployment to only supported Azure OpenAI regions validated with GPT-4o model
-@metadata({
- azd: {
- type: 'location'
- usageName: [
- 'OpenAI.GlobalStandard.gpt-4o, 150'
- ]
- }
-})
-@allowed(['australiaeast', 'eastus2', 'francecentral', 'japaneast', 'norwayeast', 'swedencentral', 'uksouth', 'westus'])
-@description('Azure OpenAI Location')
-param aiDeploymentsLocation string
-
-@minLength(1)
-@description('Name of the GPT model to deploy:')
-param gptModelName string = 'gpt-4o'
-
-param gptModelVersion string = '2024-08-06'
-
-@minLength(1)
-@description('GPT model deployment type:')
-param modelDeploymentType string = 'GlobalStandard'
-
-@description('Optional. AI model deployment token capacity.')
-param gptModelCapacity int = 150
-
-@description('Set the image tag for the container images used in the solution. Default is "latest".')
-param imageTag string = 'latest'
-
-param solutionPrefix string = 'macae-${padLeft(take(toLower(uniqueString(subscription().id, environmentName, resourceGroup().location, resourceGroup().name)), 12), 12, '0')}'
-
-@description('Optional. The tags to apply to all deployed Azure resources.')
-param tags object = {
- app: solutionPrefix
- location: solutionLocation
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Log Analytics Workspace resource.')
-param logAnalyticsWorkspaceConfiguration logAnalyticsWorkspaceConfigurationType = {
- enabled: true
- name: 'log-${solutionPrefix}'
- location: solutionLocation
- sku: 'PerGB2018'
- tags: tags
- dataRetentionInDays: useWafAlignedArchitecture ? 365 : 30
- existingWorkspaceResourceId: existingLogAnalyticsWorkspaceId
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Application Insights resource.')
-param applicationInsightsConfiguration applicationInsightsConfigurationType = {
- enabled: true
- name: 'appi-${solutionPrefix}'
- location: solutionLocation
- tags: tags
- retentionInDays: useWafAlignedArchitecture ? 365 : 30
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Managed Identity resource.')
-param userAssignedManagedIdentityConfiguration userAssignedManagedIdentityType = {
- enabled: true
- name: 'id-${solutionPrefix}'
- location: solutionLocation
- tags: tags
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Network Security Group resource for the backend subnet.')
-param networkSecurityGroupBackendConfiguration networkSecurityGroupConfigurationType = {
- enabled: true
- name: 'nsg-backend-${solutionPrefix}'
- location: solutionLocation
- tags: tags
- securityRules: null //Default value set on module configuration
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Network Security Group resource for the containers subnet.')
-param networkSecurityGroupContainersConfiguration networkSecurityGroupConfigurationType = {
- enabled: true
- name: 'nsg-containers-${solutionPrefix}'
- location: solutionLocation
- tags: tags
- securityRules: null //Default value set on module configuration
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Network Security Group resource for the Bastion subnet.')
-param networkSecurityGroupBastionConfiguration networkSecurityGroupConfigurationType = {
- enabled: true
- name: 'nsg-bastion-${solutionPrefix}'
- location: solutionLocation
- tags: tags
- securityRules: null //Default value set on module configuration
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine Network Security Group resource for the administration subnet.')
-param networkSecurityGroupAdministrationConfiguration networkSecurityGroupConfigurationType = {
- enabled: true
- name: 'nsg-administration-${solutionPrefix}'
- location: solutionLocation
- tags: tags
- securityRules: null //Default value set on module configuration
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine virtual network resource.')
-param virtualNetworkConfiguration virtualNetworkConfigurationType = {
- enabled: useWafAlignedArchitecture ? true : false
- name: 'vnet-${solutionPrefix}'
- location: solutionLocation
- tags: tags
- addressPrefixes: null //Default value set on module configuration
- subnets: null //Default value set on module configuration
-}
-
-@description('Optional. The configuration to apply for the Multi-Agent Custom Automation Engine bastion resource.')
-param bastionConfiguration bastionConfigurationType = {
- enabled: true
- name: 'bas-${solutionPrefix}'
- location: solutionLocation
- tags: tags
- sku: 'Standard'
- virtualNetworkResourceId: null //Default value set on module configuration
- publicIpResourceName: 'pip-bas${solutionPrefix}'
-}
-
-@description('Optional. Configuration for the Windows virtual machine.')
-param virtualMachineConfiguration virtualMachineConfigurationType = {
- enabled: true
- name: 'vm${solutionPrefix}'
- location: solutionLocation
- tags: tags
- adminUsername: 'adminuser'
- adminPassword: useWafAlignedArchitecture ? 'P@ssw0rd1234' : guid(solutionPrefix, subscription().subscriptionId)
- vmSize: 'Standard_D2s_v4'
- subnetResourceId: null //Default value set on module configuration
-}
-
-@description('Optional. The configuration to apply for the AI Foundry AI Services resource.')
-param aiFoundryAiServicesConfiguration aiServicesConfigurationType = {
- enabled: true
- name: 'aisa-${solutionPrefix}'
- location: aiDeploymentsLocation
- sku: 'S0'
- deployments: null //Default value set on module configuration
- subnetResourceId: null //Default value set on module configuration
- modelCapacity: gptModelCapacity
-}
-
-@description('Optional. The configuration to apply for the AI Foundry AI Project resource.')
-param aiFoundryAiProjectConfiguration aiProjectConfigurationType = {
- enabled: true
- name: 'aifp-${solutionPrefix}'
- location: aiDeploymentsLocation
- sku: 'Basic'
- tags: tags
-}
-
-@description('Optional. The configuration to apply for the Cosmos DB Account resource.')
-param cosmosDbAccountConfiguration cosmosDbAccountConfigurationType = {
- enabled: true
- name: 'cosmos-${solutionPrefix}'
- location: solutionLocation
- tags: tags
- subnetResourceId: null //Default value set on module configuration
- sqlDatabases: null //Default value set on module configuration
-}
-
-@description('Optional. The configuration to apply for the Container App Environment resource.')
-param containerAppEnvironmentConfiguration containerAppEnvironmentConfigurationType = {
- enabled: true
- name: 'cae-${solutionPrefix}'
- location: solutionLocation
- tags: tags
- subnetResourceId: null //Default value set on module configuration
-}
-
-@description('Optional. The configuration to apply for the Container App resource.')
-param containerAppConfiguration containerAppConfigurationType = {
- enabled: true
- name: 'ca-${solutionPrefix}'
- location: solutionLocation
- tags: tags
- environmentResourceId: null //Default value set on module configuration
- concurrentRequests: '100'
- containerCpu: '2.0'
- containerMemory: '4.0Gi'
- containerImageRegistryDomain: 'biabcontainerreg.azurecr.io'
- containerImageName: 'macaebackend'
- containerImageTag: imageTag
- containerName: 'backend'
- ingressTargetPort: 8000
- maxReplicas: 1
- minReplicas: 1
-}
-
-@description('Optional. The configuration to apply for the Web Server Farm resource.')
-param webServerFarmConfiguration webServerFarmConfigurationType = {
- enabled: true
- name: 'asp-${solutionPrefix}'
- location: solutionLocation
- skuName: useWafAlignedArchitecture ? 'P1v4' : 'B2'
- skuCapacity: useWafAlignedArchitecture ? 3 : 1
- tags: tags
-}
-
-@description('Optional. The configuration to apply for the Web Server Farm resource.')
-param webSiteConfiguration webSiteConfigurationType = {
- enabled: true
- name: 'app-${solutionPrefix}'
- location: solutionLocation
- containerImageRegistryDomain: 'biabcontainerreg.azurecr.io'
- containerImageName: 'macaefrontend'
- containerImageTag: imageTag
- containerName: 'backend'
- tags: tags
- environmentResourceId: null //Default value set on module configuration
-}
-
-// ========== Resource Group Tag ========== //
-resource resourceGroupTags 'Microsoft.Resources/tags@2021-04-01' = {
- name: 'default'
- properties: {
- tags: {
- ...tags
- TemplateName: 'Macae'
- }
- }
-}
-
-// ========== Log Analytics Workspace ========== //
-// WAF best practices for Log Analytics: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-log-analytics
-// Log Analytics configuration defaults
-var logAnalyticsWorkspaceEnabled = logAnalyticsWorkspaceConfiguration.?enabled ?? true
-var logAnalyticsWorkspaceResourceName = logAnalyticsWorkspaceConfiguration.?name ?? 'log-${solutionPrefix}'
-var existingWorkspaceResourceId = logAnalyticsWorkspaceConfiguration.?existingWorkspaceResourceId ?? ''
-var useExistingWorkspace = existingWorkspaceResourceId != ''
-
-module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0.11.2' = if (logAnalyticsWorkspaceEnabled && !useExistingWorkspace) {
- name: take('avm.res.operational-insights.workspace.${logAnalyticsWorkspaceResourceName}', 64)
- params: {
- name: logAnalyticsWorkspaceResourceName
- tags: logAnalyticsWorkspaceConfiguration.?tags ?? tags
- location: logAnalyticsWorkspaceConfiguration.?location ?? solutionLocation
- enableTelemetry: enableTelemetry
- skuName: logAnalyticsWorkspaceConfiguration.?sku ?? 'PerGB2018'
- dataRetention: logAnalyticsWorkspaceConfiguration.?dataRetentionInDays ?? 365
- diagnosticSettings: [{ useThisWorkspace: true }]
- }
-}
-
-var logAnalyticsWorkspaceId = useExistingWorkspace
- ? existingWorkspaceResourceId
- : logAnalyticsWorkspace.outputs.resourceId
-
-// ========== Application Insights ========== //
-// WAF best practices for Application Insights: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/application-insights
-// Application Insights configuration defaults
-var applicationInsightsEnabled = applicationInsightsConfiguration.?enabled ?? true
-var applicationInsightsResourceName = applicationInsightsConfiguration.?name ?? 'appi-${solutionPrefix}'
-module applicationInsights 'br/public:avm/res/insights/component:0.6.0' = if (applicationInsightsEnabled) {
- name: take('avm.res.insights.component.${applicationInsightsResourceName}', 64)
- params: {
- name: applicationInsightsResourceName
- workspaceResourceId: logAnalyticsWorkspaceId
- location: applicationInsightsConfiguration.?location ?? solutionLocation
- enableTelemetry: enableTelemetry
- tags: applicationInsightsConfiguration.?tags ?? tags
- retentionInDays: applicationInsightsConfiguration.?retentionInDays ?? 365
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- kind: 'web'
- disableIpMasking: false
- flowType: 'Bluefield'
- }
-}
-
-// ========== User assigned identity Web Site ========== //
-// WAF best practices for identity and access management: https://learn.microsoft.com/en-us/azure/well-architected/security/identity-access
-var userAssignedManagedIdentityEnabled = userAssignedManagedIdentityConfiguration.?enabled ?? true
-var userAssignedManagedIdentityResourceName = userAssignedManagedIdentityConfiguration.?name ?? 'id-${solutionPrefix}'
-module userAssignedIdentity 'br/public:avm/res/managed-identity/user-assigned-identity:0.4.1' = if (userAssignedManagedIdentityEnabled) {
- name: take('avm.res.managed-identity.user-assigned-identity.${userAssignedManagedIdentityResourceName}', 64)
- params: {
- name: userAssignedManagedIdentityResourceName
- tags: userAssignedManagedIdentityConfiguration.?tags ?? tags
- location: userAssignedManagedIdentityConfiguration.?location ?? solutionLocation
- enableTelemetry: enableTelemetry
- }
-}
-
-// ========== Network Security Groups ========== //
-// WAF best practices for virtual networks: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/virtual-network
-// WAF recommendations for networking and connectivity: https://learn.microsoft.com/en-us/azure/well-architected/security/networking
-var networkSecurityGroupBackendEnabled = networkSecurityGroupBackendConfiguration.?enabled ?? true
-var networkSecurityGroupBackendResourceName = networkSecurityGroupBackendConfiguration.?name ?? 'nsg-backend-${solutionPrefix}'
-module networkSecurityGroupBackend 'br/public:avm/res/network/network-security-group:0.5.1' = if (virtualNetworkEnabled && networkSecurityGroupBackendEnabled) {
- name: take('avm.res.network.network-security-group.${networkSecurityGroupBackendResourceName}', 64)
- params: {
- name: networkSecurityGroupBackendResourceName
- location: networkSecurityGroupBackendConfiguration.?location ?? solutionLocation
- tags: networkSecurityGroupBackendConfiguration.?tags ?? tags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- securityRules: networkSecurityGroupBackendConfiguration.?securityRules ?? [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound'
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
- ]
- }
-}
-
-var networkSecurityGroupContainersEnabled = networkSecurityGroupContainersConfiguration.?enabled ?? true
-var networkSecurityGroupContainersResourceName = networkSecurityGroupContainersConfiguration.?name ?? 'nsg-containers-${solutionPrefix}'
-module networkSecurityGroupContainers 'br/public:avm/res/network/network-security-group:0.5.1' = if (virtualNetworkEnabled && networkSecurityGroupContainersEnabled) {
- name: take('avm.res.network.network-security-group.${networkSecurityGroupContainersResourceName}', 64)
- params: {
- name: networkSecurityGroupContainersResourceName
- location: networkSecurityGroupContainersConfiguration.?location ?? solutionLocation
- tags: networkSecurityGroupContainersConfiguration.?tags ?? tags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- securityRules: networkSecurityGroupContainersConfiguration.?securityRules ?? [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound'
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
- ]
- }
-}
-
-var networkSecurityGroupBastionEnabled = networkSecurityGroupBastionConfiguration.?enabled ?? true
-var networkSecurityGroupBastionResourceName = networkSecurityGroupBastionConfiguration.?name ?? 'nsg-bastion-${solutionPrefix}'
-module networkSecurityGroupBastion 'br/public:avm/res/network/network-security-group:0.5.1' = if (virtualNetworkEnabled && networkSecurityGroupBastionEnabled) {
- name: take('avm.res.network.network-security-group.${networkSecurityGroupBastionResourceName}', 64)
- params: {
- name: networkSecurityGroupBastionResourceName
- location: networkSecurityGroupBastionConfiguration.?location ?? solutionLocation
- tags: networkSecurityGroupBastionConfiguration.?tags ?? tags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- securityRules: networkSecurityGroupBastionConfiguration.?securityRules ?? [
- {
- name: 'AllowHttpsInBound'
- properties: {
- protocol: 'Tcp'
- sourcePortRange: '*'
- sourceAddressPrefix: 'Internet'
- destinationPortRange: '443'
- destinationAddressPrefix: '*'
- access: 'Allow'
- priority: 100
- direction: 'Inbound'
- }
- }
- {
- name: 'AllowGatewayManagerInBound'
- properties: {
- protocol: 'Tcp'
- sourcePortRange: '*'
- sourceAddressPrefix: 'GatewayManager'
- destinationPortRange: '443'
- destinationAddressPrefix: '*'
- access: 'Allow'
- priority: 110
- direction: 'Inbound'
- }
- }
- {
- name: 'AllowLoadBalancerInBound'
- properties: {
- protocol: 'Tcp'
- sourcePortRange: '*'
- sourceAddressPrefix: 'AzureLoadBalancer'
- destinationPortRange: '443'
- destinationAddressPrefix: '*'
- access: 'Allow'
- priority: 120
- direction: 'Inbound'
- }
- }
- {
- name: 'AllowBastionHostCommunicationInBound'
- properties: {
- protocol: '*'
- sourcePortRange: '*'
- sourceAddressPrefix: 'VirtualNetwork'
- destinationPortRanges: [
- '8080'
- '5701'
- ]
- destinationAddressPrefix: 'VirtualNetwork'
- access: 'Allow'
- priority: 130
- direction: 'Inbound'
- }
- }
- {
- name: 'DenyAllInBound'
- properties: {
- protocol: '*'
- sourcePortRange: '*'
- sourceAddressPrefix: '*'
- destinationPortRange: '*'
- destinationAddressPrefix: '*'
- access: 'Deny'
- priority: 1000
- direction: 'Inbound'
- }
- }
- {
- name: 'AllowSshRdpOutBound'
- properties: {
- protocol: 'Tcp'
- sourcePortRange: '*'
- sourceAddressPrefix: '*'
- destinationPortRanges: [
- '22'
- '3389'
- ]
- destinationAddressPrefix: 'VirtualNetwork'
- access: 'Allow'
- priority: 100
- direction: 'Outbound'
- }
- }
- {
- name: 'AllowAzureCloudCommunicationOutBound'
- properties: {
- protocol: 'Tcp'
- sourcePortRange: '*'
- sourceAddressPrefix: '*'
- destinationPortRange: '443'
- destinationAddressPrefix: 'AzureCloud'
- access: 'Allow'
- priority: 110
- direction: 'Outbound'
- }
- }
- {
- name: 'AllowBastionHostCommunicationOutBound'
- properties: {
- protocol: '*'
- sourcePortRange: '*'
- sourceAddressPrefix: 'VirtualNetwork'
- destinationPortRanges: [
- '8080'
- '5701'
- ]
- destinationAddressPrefix: 'VirtualNetwork'
- access: 'Allow'
- priority: 120
- direction: 'Outbound'
- }
- }
- {
- name: 'AllowGetSessionInformationOutBound'
- properties: {
- protocol: '*'
- sourcePortRange: '*'
- sourceAddressPrefix: '*'
- destinationAddressPrefix: 'Internet'
- destinationPortRanges: [
- '80'
- '443'
- ]
- access: 'Allow'
- priority: 130
- direction: 'Outbound'
- }
- }
- {
- name: 'DenyAllOutBound'
- properties: {
- protocol: '*'
- sourcePortRange: '*'
- destinationPortRange: '*'
- sourceAddressPrefix: '*'
- destinationAddressPrefix: '*'
- access: 'Deny'
- priority: 1000
- direction: 'Outbound'
- }
- }
- ]
- }
-}
-
-var networkSecurityGroupAdministrationEnabled = networkSecurityGroupAdministrationConfiguration.?enabled ?? true
-var networkSecurityGroupAdministrationResourceName = networkSecurityGroupAdministrationConfiguration.?name ?? 'nsg-administration-${solutionPrefix}'
-module networkSecurityGroupAdministration 'br/public:avm/res/network/network-security-group:0.5.1' = if (virtualNetworkEnabled && networkSecurityGroupAdministrationEnabled) {
- name: take('avm.res.network.network-security-group.${networkSecurityGroupAdministrationResourceName}', 64)
- params: {
- name: networkSecurityGroupAdministrationResourceName
- location: networkSecurityGroupAdministrationConfiguration.?location ?? solutionLocation
- tags: networkSecurityGroupAdministrationConfiguration.?tags ?? tags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- securityRules: networkSecurityGroupAdministrationConfiguration.?securityRules ?? [
- // {
- // name: 'DenySshRdpOutbound' //Azure Bastion
- // properties: {
- // priority: 200
- // access: 'Deny'
- // protocol: '*'
- // direction: 'Outbound'
- // sourceAddressPrefix: 'VirtualNetwork'
- // sourcePortRange: '*'
- // destinationAddressPrefix: '*'
- // destinationPortRanges: [
- // '3389'
- // '22'
- // ]
- // }
- // }
- ]
- }
-}
-
-// ========== Virtual Network ========== //
-// WAF best practices for virtual networks: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/virtual-network
-// WAF recommendations for networking and connectivity: https://learn.microsoft.com/en-us/azure/well-architected/security/networking
-var virtualNetworkEnabled = virtualNetworkConfiguration.?enabled ?? true
-var virtualNetworkResourceName = virtualNetworkConfiguration.?name ?? 'vnet-${solutionPrefix}'
-module virtualNetwork 'br/public:avm/res/network/virtual-network:0.6.1' = if (virtualNetworkEnabled) {
- name: take('avm.res.network.virtual-network.${virtualNetworkResourceName}', 64)
- params: {
- name: virtualNetworkResourceName
- location: virtualNetworkConfiguration.?location ?? solutionLocation
- tags: virtualNetworkConfiguration.?tags ?? tags
- enableTelemetry: enableTelemetry
- addressPrefixes: virtualNetworkConfiguration.?addressPrefixes ?? ['10.0.0.0/8']
- subnets: virtualNetworkConfiguration.?subnets ?? [
- {
- name: 'backend'
- addressPrefix: '10.0.0.0/27'
- //defaultOutboundAccess: false TODO: check this configuration for a more restricted outbound access
- networkSecurityGroupResourceId: networkSecurityGroupBackend.outputs.resourceId
- }
- {
- name: 'administration'
- addressPrefix: '10.0.0.32/27'
- networkSecurityGroupResourceId: networkSecurityGroupAdministration.outputs.resourceId
- }
- {
- // For Azure Bastion resources deployed on or after November 2, 2021, the minimum AzureBastionSubnet size is /26 or larger (/25, /24, etc.).
- // https://learn.microsoft.com/en-us/azure/bastion/configuration-settings#subnet
- name: 'AzureBastionSubnet' //This exact name is required for Azure Bastion
- addressPrefix: '10.0.0.64/26'
- networkSecurityGroupResourceId: networkSecurityGroupBastion.outputs.resourceId
- }
- {
- // If you use your own vnw, you need to provide a subnet that is dedicated exclusively to the Container App environment you deploy. This subnet isn't available to other services
- // https://learn.microsoft.com/en-us/azure/container-apps/networking?tabs=workload-profiles-env%2Cazure-cli#custom-vnw-configuration
- name: 'containers'
- addressPrefix: '10.0.2.0/23' //subnet of size /23 is required for container app
- delegation: 'Microsoft.App/environments'
- networkSecurityGroupResourceId: networkSecurityGroupContainers.outputs.resourceId
- privateEndpointNetworkPolicies: 'Disabled'
- privateLinkServiceNetworkPolicies: 'Enabled'
- }
- ]
- }
-}
-var bastionEnabled = bastionConfiguration.?enabled ?? true
-var bastionResourceName = bastionConfiguration.?name ?? 'bas-${solutionPrefix}'
-
-// ========== Bastion host ========== //
-// WAF best practices for virtual networks: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/virtual-network
-// WAF recommendations for networking and connectivity: https://learn.microsoft.com/en-us/azure/well-architected/security/networking
-module bastionHost 'br/public:avm/res/network/bastion-host:0.6.1' = if (virtualNetworkEnabled && bastionEnabled) {
- name: take('avm.res.network.bastion-host.${bastionResourceName}', 64)
- params: {
- name: bastionResourceName
- location: bastionConfiguration.?location ?? solutionLocation
- skuName: bastionConfiguration.?sku ?? 'Standard'
- enableTelemetry: enableTelemetry
- tags: bastionConfiguration.?tags ?? tags
- virtualNetworkResourceId: bastionConfiguration.?virtualNetworkResourceId ?? virtualNetwork.?outputs.?resourceId
- publicIPAddressObject: {
- name: bastionConfiguration.?publicIpResourceName ?? 'pip-bas${solutionPrefix}'
- zones: []
- }
- disableCopyPaste: false
- enableFileCopy: false
- enableIpConnect: true
- enableShareableLink: true
- }
-}
-
-// ========== Virtual machine ========== //
-// WAF best practices for virtual machines: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/virtual-machines
-var virtualMachineEnabled = virtualMachineConfiguration.?enabled ?? true
-var virtualMachineResourceName = virtualMachineConfiguration.?name ?? 'vm${solutionPrefix}'
-module virtualMachine 'br/public:avm/res/compute/virtual-machine:0.13.0' = if (virtualNetworkEnabled && virtualMachineEnabled) {
- name: take('avm.res.compute.virtual-machine.${virtualMachineResourceName}', 64)
- params: {
- name: virtualMachineResourceName
- computerName: take(virtualMachineResourceName, 15)
- location: virtualMachineConfiguration.?location ?? solutionLocation
- tags: virtualMachineConfiguration.?tags ?? tags
- enableTelemetry: enableTelemetry
- vmSize: virtualMachineConfiguration.?vmSize ?? 'Standard_D2s_v4'
- adminUsername: virtualMachineConfiguration.?adminUsername ?? 'adminuser'
- adminPassword: virtualMachineConfiguration.?adminPassword ?? guid(solutionPrefix, subscription().subscriptionId)
- nicConfigurations: [
- {
- name: 'nic-${virtualMachineResourceName}'
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- ipConfigurations: [
- {
- name: '${virtualMachineResourceName}-nic01-ipconfig01'
- subnetResourceId: virtualMachineConfiguration.?subnetResourceId ?? virtualNetwork.outputs.subnetResourceIds[1]
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- }
- ]
- }
- ]
- imageReference: {
- publisher: 'microsoft-dsvm'
- offer: 'dsvm-win-2022'
- sku: 'winserver-2022'
- version: 'latest'
- }
- osDisk: {
- name: 'osdisk-${virtualMachineResourceName}'
- createOption: 'FromImage'
- managedDisk: {
- storageAccountType: 'Standard_LRS'
- }
- diskSizeGB: 128
- caching: 'ReadWrite'
- }
- osType: 'Windows'
- encryptionAtHost: false //The property 'securityProfile.encryptionAtHost' is not valid because the 'Microsoft.Compute/EncryptionAtHost' feature is not enabled for this subscription.
- zone: 0
- extensionAadJoinConfig: {
- enabled: true
- typeHandlerVersion: '1.0'
- }
- }
-}
-
-// ========== AI Foundry: AI Services ========== //
-// WAF best practices for Open AI: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-openai
-var openAiSubResource = 'account'
-var openAiPrivateDnsZones = {
- 'privatelink.cognitiveservices.azure.com': openAiSubResource
- 'privatelink.openai.azure.com': openAiSubResource
- 'privatelink.services.ai.azure.com': openAiSubResource
-}
-
-module privateDnsZonesAiServices 'br/public:avm/res/network/private-dns-zone:0.7.1' = [
- for zone in objectKeys(openAiPrivateDnsZones): if (virtualNetworkEnabled && aiFoundryAIservicesEnabled) {
- name: take(
- 'avm.res.network.private-dns-zone.ai-services.${uniqueString(aiFoundryAiServicesResourceName,zone)}.${solutionPrefix}',
- 64
- )
- params: {
- name: zone
- tags: tags
- enableTelemetry: enableTelemetry
- virtualNetworkLinks: [
- {
- name: 'vnetlink-${split(zone, '.')[1]}'
- virtualNetworkResourceId: virtualNetwork.outputs.resourceId
- }
- ]
- }
- }
-]
-
-// NOTE: Required version 'Microsoft.CognitiveServices/accounts@2024-04-01-preview' not available in AVM
-var useExistingFoundryProject = !empty(existingFoundryProjectResourceId)
-var existingAiFoundryName = useExistingFoundryProject ? split(existingFoundryProjectResourceId, '/')[8] : ''
-var aiFoundryAiServicesResourceName = useExistingFoundryProject
- ? existingAiFoundryName
- : aiFoundryAiServicesConfiguration.?name ?? 'aisa-${solutionPrefix}'
-var aiFoundryAIservicesEnabled = aiFoundryAiServicesConfiguration.?enabled ?? true
-var aiFoundryAiServicesModelDeployment = {
- format: 'OpenAI'
- name: gptModelName
- version: gptModelVersion
- sku: {
- name: modelDeploymentType
- //Curently the capacity is set to 140 for opinanal performance.
- capacity: aiFoundryAiServicesConfiguration.?modelCapacity ?? gptModelCapacity
- }
- raiPolicyName: 'Microsoft.Default'
-}
-
-module aiFoundryAiServices 'modules/account/main.bicep' = if (aiFoundryAIservicesEnabled) {
- name: take('avm.res.cognitive-services.account.${aiFoundryAiServicesResourceName}', 64)
- params: {
- name: aiFoundryAiServicesResourceName
- tags: aiFoundryAiServicesConfiguration.?tags ?? tags
- location: aiFoundryAiServicesConfiguration.?location ?? aiDeploymentsLocation
- enableTelemetry: enableTelemetry
- projectName: 'aifp-${solutionPrefix}'
- projectDescription: 'aifp-${solutionPrefix}'
- existingFoundryProjectResourceId: existingFoundryProjectResourceId
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- sku: aiFoundryAiServicesConfiguration.?sku ?? 'S0'
- kind: 'AIServices'
- disableLocalAuth: true //Should be set to true for WAF aligned configuration
- customSubDomainName: aiFoundryAiServicesResourceName
- apiProperties: {
- //staticsEnabled: false
- }
- allowProjectManagement: true
- managedIdentities: {
- systemAssigned: true
- }
- publicNetworkAccess: virtualNetworkEnabled ? 'Disabled' : 'Enabled'
- networkAcls: {
- bypass: 'AzureServices'
- defaultAction: (virtualNetworkEnabled) ? 'Deny' : 'Allow'
- }
- privateEndpoints: virtualNetworkEnabled && !useExistingFoundryProject
- ? ([
- {
- name: 'pep-${aiFoundryAiServicesResourceName}'
- customNetworkInterfaceName: 'nic-${aiFoundryAiServicesResourceName}'
- subnetResourceId: aiFoundryAiServicesConfiguration.?subnetResourceId ?? virtualNetwork.outputs.subnetResourceIds[0]
- privateDnsZoneGroup: {
- privateDnsZoneGroupConfigs: map(objectKeys(openAiPrivateDnsZones), zone => {
- name: replace(zone, '.', '-')
- privateDnsZoneResourceId: resourceId('Microsoft.Network/privateDnsZones', zone)
- })
- }
- }
- ])
- : []
- deployments: aiFoundryAiServicesConfiguration.?deployments ?? [
- {
- name: aiFoundryAiServicesModelDeployment.name
- model: {
- format: aiFoundryAiServicesModelDeployment.format
- name: aiFoundryAiServicesModelDeployment.name
- version: aiFoundryAiServicesModelDeployment.version
- }
- raiPolicyName: aiFoundryAiServicesModelDeployment.raiPolicyName
- sku: {
- name: aiFoundryAiServicesModelDeployment.sku.name
- capacity: aiFoundryAiServicesModelDeployment.sku.capacity
- }
- }
- ]
- }
-}
-
-// AI Foundry: AI Project
-// WAF best practices for Open AI: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-openai
-var existingAiFounryProjectName = useExistingFoundryProject ? last(split(existingFoundryProjectResourceId, '/')) : ''
-var aiFoundryAiProjectName = useExistingFoundryProject
- ? existingAiFounryProjectName
- : aiFoundryAiProjectConfiguration.?name ?? 'aifp-${solutionPrefix}'
-
-var useExistingResourceId = !empty(existingFoundryProjectResourceId)
-
-module cogServiceRoleAssignmentsNew './modules/role.bicep' = if (!useExistingResourceId) {
- params: {
- name: 'new-${guid(containerApp.name, aiFoundryAiServices.outputs.resourceId)}'
- principalId: containerApp.outputs.?systemAssignedMIPrincipalId!
- aiServiceName: aiFoundryAiServices.outputs.name
- }
- scope: resourceGroup(subscription().subscriptionId, resourceGroup().name)
-}
-
-module cogServiceRoleAssignmentsExisting './modules/role.bicep' = if (useExistingResourceId) {
- params: {
- name: 'reuse-${guid(containerApp.name, aiFoundryAiServices.outputs.aiProjectInfo.resourceId)}'
- principalId: containerApp.outputs.?systemAssignedMIPrincipalId!
- aiServiceName: aiFoundryAiServices.outputs.name
- }
- scope: resourceGroup(split(existingFoundryProjectResourceId, '/')[2], split(existingFoundryProjectResourceId, '/')[4])
-}
-
-// ========== Cosmos DB ========== //
-// WAF best practices for Cosmos DB: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/cosmos-db
-module privateDnsZonesCosmosDb 'br/public:avm/res/network/private-dns-zone:0.7.0' = if (virtualNetworkEnabled) {
- name: take('avm.res.network.private-dns-zone.cosmos-db.${solutionPrefix}', 64)
- params: {
- name: 'privatelink.documents.azure.com'
- enableTelemetry: enableTelemetry
- virtualNetworkLinks: [
- {
- name: 'vnetlink-cosmosdb'
- virtualNetworkResourceId: virtualNetwork.outputs.resourceId
- }
- ]
- tags: tags
- }
-}
-
-var cosmosDbAccountEnabled = cosmosDbAccountConfiguration.?enabled ?? true
-var cosmosDbResourceName = cosmosDbAccountConfiguration.?name ?? 'cosmos-${solutionPrefix}'
-var cosmosDbDatabaseName = 'macae'
-var cosmosDbDatabaseMemoryContainerName = 'memory'
-module cosmosDb 'br/public:avm/res/document-db/database-account:0.12.0' = if (cosmosDbAccountEnabled) {
- name: take('avm.res.document-db.database-account.${cosmosDbResourceName}', 64)
- params: {
- // Required parameters
- name: cosmosDbAccountConfiguration.?name ?? 'cosmos-${solutionPrefix}'
- location: cosmosDbAccountConfiguration.?location ?? solutionLocation
- tags: cosmosDbAccountConfiguration.?tags ?? tags
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- databaseAccountOfferType: 'Standard'
- enableFreeTier: false
- networkRestrictions: {
- networkAclBypass: 'None'
- publicNetworkAccess: virtualNetworkEnabled ? 'Disabled' : 'Enabled'
- }
- privateEndpoints: virtualNetworkEnabled
- ? [
- {
- name: 'pep-${cosmosDbResourceName}'
- customNetworkInterfaceName: 'nic-${cosmosDbResourceName}'
- privateDnsZoneGroup: {
- privateDnsZoneGroupConfigs: [{ privateDnsZoneResourceId: privateDnsZonesCosmosDb.outputs.resourceId }]
- }
- service: 'Sql'
- subnetResourceId: cosmosDbAccountConfiguration.?subnetResourceId ?? virtualNetwork.outputs.subnetResourceIds[0]
- }
- ]
- : []
- sqlDatabases: concat(cosmosDbAccountConfiguration.?sqlDatabases ?? [], [
- {
- name: cosmosDbDatabaseName
- containers: [
- {
- name: cosmosDbDatabaseMemoryContainerName
- paths: [
- '/session_id'
- ]
- kind: 'Hash'
- version: 2
- }
- ]
- }
- ])
- locations: [
- {
- locationName: cosmosDbAccountConfiguration.?location ?? solutionLocation
- failoverPriority: 0
- isZoneRedundant: false
- }
- ]
- capabilitiesToAdd: [
- 'EnableServerless'
- ]
- sqlRoleAssignmentsPrincipalIds: [
- containerApp.outputs.?systemAssignedMIPrincipalId
- ]
- sqlRoleDefinitions: [
- {
- // Replace this with built-in role definition Cosmos DB Built-in Data Contributor: https://docs.azure.cn/en-us/cosmos-db/nosql/security/reference-data-plane-roles#cosmos-db-built-in-data-contributor
- roleType: 'CustomRole'
- roleName: 'Cosmos DB SQL Data Contributor'
- name: 'cosmos-db-sql-data-contributor'
- dataAction: [
- 'Microsoft.DocumentDB/databaseAccounts/readMetadata'
- 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*'
- 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*'
- ]
- }
- ]
- }
-}
-
-// ========== Backend Container App Environment ========== //
-// WAF best practices for container apps: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-container-apps
-var containerAppEnvironmentEnabled = containerAppEnvironmentConfiguration.?enabled ?? true
-var containerAppEnvironmentResourceName = containerAppEnvironmentConfiguration.?name ?? 'cae-${solutionPrefix}'
-module containerAppEnvironment 'modules/container-app-environment.bicep' = if (containerAppEnvironmentEnabled) {
- name: take('module.container-app-environment.${containerAppEnvironmentResourceName}', 64)
- params: {
- name: containerAppEnvironmentResourceName
- tags: containerAppEnvironmentConfiguration.?tags ?? tags
- location: containerAppEnvironmentConfiguration.?location ?? solutionLocation
- logAnalyticsResourceId: logAnalyticsWorkspaceId
- publicNetworkAccess: 'Enabled'
- zoneRedundant: false
- applicationInsightsConnectionString: applicationInsights.outputs.connectionString
- enableTelemetry: enableTelemetry
- subnetResourceId: virtualNetworkEnabled
- ? containerAppEnvironmentConfiguration.?subnetResourceId ?? virtualNetwork.?outputs.?subnetResourceIds[3] ?? ''
- : ''
- }
-}
-
-// ========== Backend Container App Service ========== //
-// WAF best practices for container apps: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-container-apps
-var containerAppEnabled = containerAppConfiguration.?enabled ?? true
-var containerAppResourceName = containerAppConfiguration.?name ?? 'ca-${solutionPrefix}'
-module containerApp 'br/public:avm/res/app/container-app:0.14.2' = if (containerAppEnabled) {
- name: take('avm.res.app.container-app.${containerAppResourceName}', 64)
- params: {
- name: containerAppResourceName
- tags: containerAppConfiguration.?tags ?? tags
- location: containerAppConfiguration.?location ?? solutionLocation
- enableTelemetry: enableTelemetry
- environmentResourceId: containerAppConfiguration.?environmentResourceId ?? containerAppEnvironment.outputs.resourceId
- managedIdentities: {
- systemAssigned: true //Replace with user assigned identity
- userAssignedResourceIds: [userAssignedIdentity.outputs.resourceId]
- }
- ingressTargetPort: containerAppConfiguration.?ingressTargetPort ?? 8000
- ingressExternal: true
- activeRevisionsMode: 'Single'
- corsPolicy: {
- allowedOrigins: [
- 'https://${webSiteName}.azurewebsites.net'
- 'http://${webSiteName}.azurewebsites.net'
- ]
- }
- scaleSettings: {
- //TODO: Make maxReplicas and minReplicas parameterized
- maxReplicas: containerAppConfiguration.?maxReplicas ?? 1
- minReplicas: containerAppConfiguration.?minReplicas ?? 1
- rules: [
- {
- name: 'http-scaler'
- http: {
- metadata: {
- concurrentRequests: containerAppConfiguration.?concurrentRequests ?? '100'
- }
- }
- }
- ]
- }
- containers: [
- {
- name: containerAppConfiguration.?containerName ?? 'backend'
- image: '${containerAppConfiguration.?containerImageRegistryDomain ?? 'biabcontainerreg.azurecr.io'}/${containerAppConfiguration.?containerImageName ?? 'macaebackend'}:${containerAppConfiguration.?containerImageTag ?? 'latest'}'
- resources: {
- //TODO: Make cpu and memory parameterized
- cpu: containerAppConfiguration.?containerCpu ?? '2.0'
- memory: containerAppConfiguration.?containerMemory ?? '4.0Gi'
- }
- env: [
- {
- name: 'COSMOSDB_ENDPOINT'
- value: 'https://${cosmosDbResourceName}.documents.azure.com:443/'
- }
- {
- name: 'COSMOSDB_DATABASE'
- value: cosmosDbDatabaseName
- }
- {
- name: 'COSMOSDB_CONTAINER'
- value: cosmosDbDatabaseMemoryContainerName
- }
- {
- name: 'AZURE_OPENAI_ENDPOINT'
- value: 'https://${aiFoundryAiServicesResourceName}.openai.azure.com/'
- }
- {
- name: 'AZURE_OPENAI_MODEL_NAME'
- value: aiFoundryAiServicesModelDeployment.name
- }
- {
- name: 'AZURE_OPENAI_DEPLOYMENT_NAME'
- value: aiFoundryAiServicesModelDeployment.name
- }
- {
- name: 'AZURE_OPENAI_API_VERSION'
- value: '2025-01-01-preview' //TODO: set parameter/variable
- }
- {
- name: 'APPLICATIONINSIGHTS_INSTRUMENTATION_KEY'
- value: applicationInsights.outputs.instrumentationKey
- }
- {
- name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
- value: applicationInsights.outputs.connectionString
- }
- {
- name: 'AZURE_AI_SUBSCRIPTION_ID'
- value: subscription().subscriptionId
- }
- {
- name: 'AZURE_AI_RESOURCE_GROUP'
- value: resourceGroup().name
- }
- {
- name: 'AZURE_AI_PROJECT_NAME'
- value: aiFoundryAiProjectName
- }
- {
- name: 'FRONTEND_SITE_NAME'
- value: 'https://${webSiteName}.azurewebsites.net'
- }
- {
- name: 'AZURE_AI_AGENT_ENDPOINT'
- value: aiFoundryAiServices.outputs.aiProjectInfo.apiEndpoint
- }
- {
- name: 'AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME'
- value: aiFoundryAiServicesModelDeployment.name
- }
- {
- name: 'APP_ENV'
- value: 'Prod'
- }
- ]
- }
- ]
- }
-}
-
-var webServerFarmEnabled = webServerFarmConfiguration.?enabled ?? true
-var webServerFarmResourceName = webServerFarmConfiguration.?name ?? 'asp-${solutionPrefix}'
-
-// ========== Frontend server farm ========== //
-// WAF best practices for web app service: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/app-service-web-apps
-module webServerFarm 'br/public:avm/res/web/serverfarm:0.4.1' = if (webServerFarmEnabled) {
- name: take('avm.res.web.serverfarm.${webServerFarmResourceName}', 64)
- params: {
- name: webServerFarmResourceName
- tags: tags
- location: webServerFarmConfiguration.?location ?? solutionLocation
- skuName: webServerFarmConfiguration.?skuName ?? 'P1v4'
- skuCapacity: webServerFarmConfiguration.?skuCapacity ?? 3
- reserved: true
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- kind: 'linux'
- zoneRedundant: false //TODO: make it zone redundant for waf aligned
- }
-}
-
-// ========== Frontend web site ========== //
-// WAF best practices for web app service: https://learn.microsoft.com/en-us/azure/well-architected/service-guides/app-service-web-apps
-var webSiteEnabled = webSiteConfiguration.?enabled ?? true
-
-var webSiteName = 'app-${solutionPrefix}'
-module webSite 'br/public:avm/res/web/site:0.15.1' = if (webSiteEnabled) {
- name: take('avm.res.web.site.${webSiteName}', 64)
- params: {
- name: webSiteName
- tags: webSiteConfiguration.?tags ?? tags
- location: webSiteConfiguration.?location ?? solutionLocation
- kind: 'app,linux,container'
- enableTelemetry: enableTelemetry
- serverFarmResourceId: webSiteConfiguration.?environmentResourceId ?? webServerFarm.?outputs.resourceId
- appInsightResourceId: applicationInsights.outputs.resourceId
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceId }]
- publicNetworkAccess: 'Enabled' //TODO: use Azure Front Door WAF or Application Gateway WAF instead
- siteConfig: {
- linuxFxVersion: 'DOCKER|${webSiteConfiguration.?containerImageRegistryDomain ?? 'biabcontainerreg.azurecr.io'}/${webSiteConfiguration.?containerImageName ?? 'macaefrontend'}:${webSiteConfiguration.?containerImageTag ?? 'latest'}'
- }
- appSettingsKeyValuePairs: {
- SCM_DO_BUILD_DURING_DEPLOYMENT: 'true'
- DOCKER_REGISTRY_SERVER_URL: 'https://${webSiteConfiguration.?containerImageRegistryDomain ?? 'biabcontainerreg.azurecr.io'}'
- WEBSITES_PORT: '3000'
- WEBSITES_CONTAINER_START_TIME_LIMIT: '1800' // 30 minutes, adjust as needed
- BACKEND_API_URL: 'https://${containerApp.outputs.fqdn}'
- AUTH_ENABLED: 'false'
- APP_ENV: 'Prod'
- }
- }
-}
-
-// ============ //
-// Outputs //
-// ============ //
-
-// Add your outputs here
-
-@description('The default url of the website to connect to the Multi-Agent Custom Automation Engine solution.')
-output webSiteDefaultHostname string = webSite.outputs.defaultHostname
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Log Analytics Workspace resource configuration.')
-type logAnalyticsWorkspaceConfigurationType = {
- @description('Optional. If the Log Analytics Workspace resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the Log Analytics Workspace resource.')
- @maxLength(63)
- name: string?
-
- @description('Optional. Location for the Log Analytics Workspace resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to for the Log Analytics Workspace resource.')
- tags: object?
-
- @description('Optional. The SKU for the Log Analytics Workspace resource.')
- sku: ('CapacityReservation' | 'Free' | 'LACluster' | 'PerGB2018' | 'PerNode' | 'Premium' | 'Standalone' | 'Standard')?
-
- @description('Optional. The number of days to retain the data in the Log Analytics Workspace. If empty, it will be set to 365 days.')
- @maxValue(730)
- dataRetentionInDays: int?
-
- @description('Optional: Existing Log Analytics Workspace Resource ID')
- existingWorkspaceResourceId: string?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Application Insights resource configuration.')
-type applicationInsightsConfigurationType = {
- @description('Optional. If the Application Insights resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the Application Insights resource.')
- @maxLength(90)
- name: string?
-
- @description('Optional. Location for the Application Insights resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Application Insights resource.')
- tags: object?
-
- @description('Optional. The retention of Application Insights data in days. If empty, Standard will be used.')
- retentionInDays: (120 | 180 | 270 | 30 | 365 | 550 | 60 | 730 | 90)?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Application User Assigned Managed Identity resource configuration.')
-type userAssignedManagedIdentityType = {
- @description('Optional. If the User Assigned Managed Identity resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the User Assigned Managed Identity resource.')
- @maxLength(128)
- name: string?
-
- @description('Optional. Location for the User Assigned Managed Identity resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the User Assigned Managed Identity resource.')
- tags: object?
-}
-
-@export()
-import { securityRuleType } from 'br/public:avm/res/network/network-security-group:0.5.1'
-@description('The type for the Multi-Agent Custom Automation Engine Network Security Group resource configuration.')
-type networkSecurityGroupConfigurationType = {
- @description('Optional. If the Network Security Group resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the Network Security Group resource.')
- @maxLength(90)
- name: string?
-
- @description('Optional. Location for the Network Security Group resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Network Security Group resource.')
- tags: object?
-
- @description('Optional. The security rules to set for the Network Security Group resource.')
- securityRules: securityRuleType[]?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation virtual network resource configuration.')
-type virtualNetworkConfigurationType = {
- @description('Optional. If the Virtual Network resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the Virtual Network resource.')
- @maxLength(90)
- name: string?
-
- @description('Optional. Location for the Virtual Network resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Virtual Network resource.')
- tags: object?
-
- @description('Optional. An array of 1 or more IP Addresses prefixes for the Virtual Network resource.')
- addressPrefixes: string[]?
-
- @description('Optional. An array of 1 or more subnets for the Virtual Network resource.')
- subnets: subnetType[]?
-}
-
-import { roleAssignmentType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-type subnetType = {
- @description('Optional. The Name of the subnet resource.')
- name: string
-
- @description('Conditional. The address prefix for the subnet. Required if `addressPrefixes` is empty.')
- addressPrefix: string?
-
- @description('Conditional. List of address prefixes for the subnet. Required if `addressPrefix` is empty.')
- addressPrefixes: string[]?
-
- @description('Optional. Application gateway IP configurations of virtual network resource.')
- applicationGatewayIPConfigurations: object[]?
-
- @description('Optional. The delegation to enable on the subnet.')
- delegation: string?
-
- @description('Optional. The resource ID of the NAT Gateway to use for the subnet.')
- natGatewayResourceId: string?
-
- @description('Optional. The resource ID of the network security group to assign to the subnet.')
- networkSecurityGroupResourceId: string?
-
- @description('Optional. enable or disable apply network policies on private endpoint in the subnet.')
- privateEndpointNetworkPolicies: ('Disabled' | 'Enabled' | 'NetworkSecurityGroupEnabled' | 'RouteTableEnabled')?
-
- @description('Optional. enable or disable apply network policies on private link service in the subnet.')
- privateLinkServiceNetworkPolicies: ('Disabled' | 'Enabled')?
-
- @description('Optional. Array of role assignments to create.')
- roleAssignments: roleAssignmentType[]?
-
- @description('Optional. The resource ID of the route table to assign to the subnet.')
- routeTableResourceId: string?
-
- @description('Optional. An array of service endpoint policies.')
- serviceEndpointPolicies: object[]?
-
- @description('Optional. The service endpoints to enable on the subnet.')
- serviceEndpoints: string[]?
-
- @description('Optional. Set this property to false to disable default outbound connectivity for all VMs in the subnet. This property can only be set at the time of subnet creation and cannot be updated for an existing subnet.')
- defaultOutboundAccess: bool?
-
- @description('Optional. Set this property to Tenant to allow sharing subnet with other subscriptions in your AAD tenant. This property can only be set if defaultOutboundAccess is set to false, both properties can only be set if subnet is empty.')
- sharingScope: ('DelegatedServices' | 'Tenant')?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Bastion resource configuration.')
-type bastionConfigurationType = {
- @description('Optional. If the Bastion resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the Bastion resource.')
- @maxLength(90)
- name: string?
-
- @description('Optional. Location for the Bastion resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Bastion resource.')
- tags: object?
-
- @description('Optional. The SKU for the Bastion resource.')
- sku: ('Basic' | 'Developer' | 'Premium' | 'Standard')?
-
- @description('Optional. The Virtual Network resource id where the Bastion resource should be deployed.')
- virtualNetworkResourceId: string?
-
- @description('Optional. The name of the Public Ip resource created to connect to Bastion.')
- publicIpResourceName: string?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine virtual machine resource configuration.')
-type virtualMachineConfigurationType = {
- @description('Optional. If the Virtual Machine resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the Virtual Machine resource.')
- @maxLength(90)
- name: string?
-
- @description('Optional. Location for the Virtual Machine resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Virtual Machine resource.')
- tags: object?
-
- @description('Optional. Specifies the size for the Virtual Machine resource.')
- vmSize: (
- | 'Basic_A0'
- | 'Basic_A1'
- | 'Basic_A2'
- | 'Basic_A3'
- | 'Basic_A4'
- | 'Standard_A0'
- | 'Standard_A1'
- | 'Standard_A2'
- | 'Standard_A3'
- | 'Standard_A4'
- | 'Standard_A5'
- | 'Standard_A6'
- | 'Standard_A7'
- | 'Standard_A8'
- | 'Standard_A9'
- | 'Standard_A10'
- | 'Standard_A11'
- | 'Standard_A1_v2'
- | 'Standard_A2_v2'
- | 'Standard_A4_v2'
- | 'Standard_A8_v2'
- | 'Standard_A2m_v2'
- | 'Standard_A4m_v2'
- | 'Standard_A8m_v2'
- | 'Standard_B1s'
- | 'Standard_B1ms'
- | 'Standard_B2s'
- | 'Standard_B2ms'
- | 'Standard_B4ms'
- | 'Standard_B8ms'
- | 'Standard_D1'
- | 'Standard_D2'
- | 'Standard_D3'
- | 'Standard_D4'
- | 'Standard_D11'
- | 'Standard_D12'
- | 'Standard_D13'
- | 'Standard_D14'
- | 'Standard_D1_v2'
- | 'Standard_D2_v2'
- | 'Standard_D3_v2'
- | 'Standard_D4_v2'
- | 'Standard_D5_v2'
- | 'Standard_D2_v4'
- | 'Standard_D4_v4'
- | 'Standard_D8_v4'
- | 'Standard_D16_v4'
- | 'Standard_D32_v4'
- | 'Standard_D64_v4'
- | 'Standard_D2s_v4'
- | 'Standard_D4s_v4'
- | 'Standard_D8s_v4'
- | 'Standard_D16s_v4'
- | 'Standard_D32s_v4'
- | 'Standard_D64s_v4'
- | 'Standard_D11_v2'
- | 'Standard_D12_v2'
- | 'Standard_D13_v2'
- | 'Standard_D14_v2'
- | 'Standard_D15_v2'
- | 'Standard_DS1'
- | 'Standard_DS2'
- | 'Standard_DS3'
- | 'Standard_DS4'
- | 'Standard_DS11'
- | 'Standard_DS12'
- | 'Standard_DS13'
- | 'Standard_DS14'
- | 'Standard_DS1_v2'
- | 'Standard_DS2_v2'
- | 'Standard_DS3_v2'
- | 'Standard_DS4_v2'
- | 'Standard_DS5_v2'
- | 'Standard_DS11_v2'
- | 'Standard_DS12_v2'
- | 'Standard_DS13_v2'
- | 'Standard_DS14_v2'
- | 'Standard_DS15_v2'
- | 'Standard_DS13-4_v2'
- | 'Standard_DS13-2_v2'
- | 'Standard_DS14-8_v2'
- | 'Standard_DS14-4_v2'
- | 'Standard_E2_v4'
- | 'Standard_E4_v4'
- | 'Standard_E8_v4'
- | 'Standard_E16_v4'
- | 'Standard_E32_v4'
- | 'Standard_E64_v4'
- | 'Standard_E2s_v4'
- | 'Standard_E4s_v4'
- | 'Standard_E8s_v4'
- | 'Standard_E16s_v4'
- | 'Standard_E32s_v4'
- | 'Standard_E64s_v4'
- | 'Standard_E32-16_v4'
- | 'Standard_E32-8s_v4'
- | 'Standard_E64-32s_v4'
- | 'Standard_E64-16s_v4'
- | 'Standard_F1'
- | 'Standard_F2'
- | 'Standard_F4'
- | 'Standard_F8'
- | 'Standard_F16'
- | 'Standard_F1s'
- | 'Standard_F2s'
- | 'Standard_F4s'
- | 'Standard_F8s'
- | 'Standard_F16s'
- | 'Standard_F2s_v2'
- | 'Standard_F4s_v2'
- | 'Standard_F8s_v2'
- | 'Standard_F16s_v2'
- | 'Standard_F32s_v2'
- | 'Standard_F64s_v2'
- | 'Standard_F72s_v2'
- | 'Standard_G1'
- | 'Standard_G2'
- | 'Standard_G3'
- | 'Standard_G4'
- | 'Standard_G5'
- | 'Standard_GS1'
- | 'Standard_GS2'
- | 'Standard_GS3'
- | 'Standard_GS4'
- | 'Standard_GS5'
- | 'Standard_GS4-8'
- | 'Standard_GS4-4'
- | 'Standard_GS5-16'
- | 'Standard_GS5-8'
- | 'Standard_H8'
- | 'Standard_H16'
- | 'Standard_H8m'
- | 'Standard_H16m'
- | 'Standard_H16r'
- | 'Standard_H16mr'
- | 'Standard_L4s'
- | 'Standard_L8s'
- | 'Standard_L16s'
- | 'Standard_L32s'
- | 'Standard_M64s'
- | 'Standard_M64ms'
- | 'Standard_M128s'
- | 'Standard_M128ms'
- | 'Standard_M64-32ms'
- | 'Standard_M64-16ms'
- | 'Standard_M128-64ms'
- | 'Standard_M128-32ms'
- | 'Standard_NC6'
- | 'Standard_NC12'
- | 'Standard_NC24'
- | 'Standard_NC24r'
- | 'Standard_NC6s_v2'
- | 'Standard_NC12s_v2'
- | 'Standard_NC24s_v2'
- | 'Standard_NC24rs_v2'
- | 'Standard_NC6s_v4'
- | 'Standard_NC12s_v4'
- | 'Standard_NC24s_v4'
- | 'Standard_NC24rs_v4'
- | 'Standard_ND6s'
- | 'Standard_ND12s'
- | 'Standard_ND24s'
- | 'Standard_ND24rs'
- | 'Standard_NV6'
- | 'Standard_NV12'
- | 'Standard_NV24')?
-
- @description('Optional. The username for the administrator account on the virtual machine. Required if a virtual machine is created as part of the module.')
- adminUsername: string?
-
- @description('Optional. The password for the administrator account on the virtual machine. Required if a virtual machine is created as part of the module.')
- @secure()
- adminPassword: string?
-
- @description('Optional. The resource ID of the subnet where the Virtual Machine resource should be deployed.')
- subnetResourceId: string?
-}
-
-@export()
-import { deploymentType } from 'br/public:avm/res/cognitive-services/account:0.10.2'
-@description('The type for the Multi-Agent Custom Automation Engine AI Services resource configuration.')
-type aiServicesConfigurationType = {
- @description('Optional. If the AI Services resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the AI Services resource.')
- @maxLength(90)
- name: string?
-
- @description('Optional. Location for the AI Services resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the AI Services resource.')
- tags: object?
-
- @description('Optional. The SKU of the AI Services resource. Use \'Get-AzCognitiveServicesAccountSku\' to determine a valid combinations of \'kind\' and \'SKU\' for your Azure region.')
- sku: (
- | 'C2'
- | 'C3'
- | 'C4'
- | 'F0'
- | 'F1'
- | 'S'
- | 'S0'
- | 'S1'
- | 'S10'
- | 'S2'
- | 'S3'
- | 'S4'
- | 'S5'
- | 'S6'
- | 'S7'
- | 'S8'
- | 'S9')?
-
- @description('Optional. The resource Id of the subnet where the AI Services private endpoint should be created.')
- subnetResourceId: string?
-
- @description('Optional. The model deployments to set for the AI Services resource.')
- deployments: deploymentType[]?
-
- @description('Optional. The capacity to set for AI Services GTP model.')
- modelCapacity: int?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine AI Foundry AI Project resource configuration.')
-type aiProjectConfigurationType = {
- @description('Optional. If the AI Project resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the AI Project resource.')
- @maxLength(90)
- name: string?
-
- @description('Optional. Location for the AI Project resource deployment.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The SKU of the AI Project resource.')
- sku: ('Basic' | 'Free' | 'Standard' | 'Premium')?
-
- @description('Optional. The tags to set for the AI Project resource.')
- tags: object?
-}
-
-import { sqlDatabaseType } from 'br/public:avm/res/document-db/database-account:0.13.0'
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Cosmos DB Account resource configuration.')
-type cosmosDbAccountConfigurationType = {
- @description('Optional. If the Cosmos DB Account resource should be deployed or not.')
- enabled: bool?
- @description('Optional. The name of the Cosmos DB Account resource.')
- @maxLength(60)
- name: string?
-
- @description('Optional. Location for the Cosmos DB Account resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Cosmos DB Account resource.')
- tags: object?
-
- @description('Optional. The resource Id of the subnet where the Cosmos DB Account private endpoint should be created.')
- subnetResourceId: string?
-
- @description('Optional. The SQL databases configuration for the Cosmos DB Account resource.')
- sqlDatabases: sqlDatabaseType[]?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Container App Environment resource configuration.')
-type containerAppEnvironmentConfigurationType = {
- @description('Optional. If the Container App Environment resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the Container App Environment resource.')
- @maxLength(60)
- name: string?
-
- @description('Optional. Location for the Container App Environment resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Container App Environment resource.')
- tags: object?
-
- @description('Optional. The resource Id of the subnet where the Container App Environment private endpoint should be created.')
- subnetResourceId: string?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Container App resource configuration.')
-type containerAppConfigurationType = {
- @description('Optional. If the Container App resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the Container App resource.')
- @maxLength(60)
- name: string?
-
- @description('Optional. Location for the Container App resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Container App resource.')
- tags: object?
-
- @description('Optional. The resource Id of the Container App Environment where the Container App should be created.')
- environmentResourceId: string?
-
- @description('Optional. The maximum number of replicas of the Container App.')
- maxReplicas: int?
-
- @description('Optional. The minimum number of replicas of the Container App.')
- minReplicas: int?
-
- @description('Optional. The ingress target port of the Container App.')
- ingressTargetPort: int?
-
- @description('Optional. The concurrent requests allowed for the Container App.')
- concurrentRequests: string?
-
- @description('Optional. The name given to the Container App.')
- containerName: string?
-
- @description('Optional. The container registry domain of the container image to be used by the Container App. Default to `biabcontainerreg.azurecr.io`')
- containerImageRegistryDomain: string?
-
- @description('Optional. The name of the container image to be used by the Container App.')
- containerImageName: string?
-
- @description('Optional. The tag of the container image to be used by the Container App.')
- containerImageTag: string?
-
- @description('Optional. The CPU reserved for the Container App. Defaults to 2.0')
- containerCpu: string?
-
- @description('Optional. The Memory reserved for the Container App. Defaults to 4.0Gi')
- containerMemory: string?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Entra ID Application resource configuration.')
-type entraIdApplicationConfigurationType = {
- @description('Optional. If the Entra ID Application for website authentication should be deployed or not.')
- enabled: bool?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Web Server Farm resource configuration.')
-type webServerFarmConfigurationType = {
- @description('Optional. If the Web Server Farm resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the Web Server Farm resource.')
- @maxLength(60)
- name: string?
-
- @description('Optional. Location for the Web Server Farm resource.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Web Server Farm resource.')
- tags: object?
-
- @description('Optional. The name of th SKU that will determine the tier, size and family for the Web Server Farm resource. This defaults to P1v4 to leverage availability zones.')
- skuName: string?
-
- @description('Optional. Number of workers associated with the App Service Plan. This defaults to 3, to leverage availability zones.')
- skuCapacity: int?
-}
-
-@export()
-@description('The type for the Multi-Agent Custom Automation Engine Web Site resource configuration.')
-type webSiteConfigurationType = {
- @description('Optional. If the Web Site resource should be deployed or not.')
- enabled: bool?
-
- @description('Optional. The name of the Web Site resource.')
- @maxLength(60)
- name: string?
-
- @description('Optional. Location for the Web Site resource deployment.')
- @metadata({ azd: { type: 'location' } })
- location: string?
-
- @description('Optional. The tags to set for the Web Site resource.')
- tags: object?
-
- @description('Optional. The resource Id of the Web Site Environment where the Web Site should be created.')
- environmentResourceId: string?
-
- @description('Optional. The name given to the Container App.')
- containerName: string?
-
- @description('Optional. The container registry domain of the container image to be used by the Web Site. Default to `biabcontainerreg.azurecr.io`')
- containerImageRegistryDomain: string?
-
- @description('Optional. The name of the container image to be used by the Web Site.')
- containerImageName: string?
-
- @description('Optional. The tag of the container image to be used by the Web Site.')
- containerImageTag: string?
-}
diff --git a/infra/old/08-2025/main.parameters.json b/infra/old/08-2025/main.parameters.json
deleted file mode 100644
index efab1db7f..000000000
--- a/infra/old/08-2025/main.parameters.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
- "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "aiModelDeployments": {
- "value": [
- {
- "name": "gpt",
- "model": {
- "name": "gpt-4o",
- "version": "2024-08-06",
- "format": "OpenAI"
- },
- "sku": {
- "name": "GlobalStandard",
- "capacity": 140
- }
- }
- ]
- },
- "environmentName": {
- "value": "${AZURE_ENV_NAME}"
- },
- "solutionLocation": {
- "value": "${AZURE_LOCATION}"
- },
- "aiDeploymentsLocation": {
- "value": "${AZURE_ENV_OPENAI_LOCATION}"
- },
- "modelDeploymentType": {
- "value": "${AZURE_ENV_MODEL_DEPLOYMENT_TYPE}"
- },
- "gptModelName": {
- "value": "${AZURE_ENV_MODEL_NAME}"
- },
- "gptModelVersion": {
- "value": "${AZURE_ENV_MODEL_VERSION}"
- },
- "gptModelCapacity": {
- "value": "${AZURE_ENV_MODEL_CAPACITY}"
- },
- "existingFoundryProjectResourceId": {
- "value": "${AZURE_EXISTING_AI_PROJECT_RESOURCE_ID}"
- },
- "imageTag": {
- "value": "${AZURE_ENV_IMAGE_TAG}"
- },
- "enableTelemetry": {
- "value": "${AZURE_ENV_ENABLE_TELEMETRY}"
- },
- "existingLogAnalyticsWorkspaceId": {
- "value": "${AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID}"
- },
- "backendExists": {
- "value": "${SERVICE_BACKEND_RESOURCE_EXISTS=false}"
- },
- "backendDefinition": {
- "value": {
- "settings": [
- {
- "name": "",
- "value": "${VAR}",
- "_comment_name": "The name of the environment variable when running in Azure. If empty, ignored.",
- "_comment_value": "The value to provide. This can be a fixed literal, or an expression like ${VAR} to use the value of 'VAR' from the current environment."
- },
- {
- "name": "",
- "value": "${VAR_S}",
- "secret": true,
- "_comment_name": "The name of the environment variable when running in Azure. If empty, ignored.",
- "_comment_value": "The value to provide. This can be a fixed literal, or an expression like ${VAR_S} to use the value of 'VAR_S' from the current environment."
- }
- ]
- }
- },
- "frontendExists": {
- "value": "${SERVICE_FRONTEND_RESOURCE_EXISTS=false}"
- },
- "frontendDefinition": {
- "value": {
- "settings": [
- {
- "name": "",
- "value": "${VAR}",
- "_comment_name": "The name of the environment variable when running in Azure. If empty, ignored.",
- "_comment_value": "The value to provide. This can be a fixed literal, or an expression like ${VAR} to use the value of 'VAR' from the current environment."
- },
- {
- "name": "",
- "value": "${VAR_S}",
- "secret": true,
- "_comment_name": "The name of the environment variable when running in Azure. If empty, ignored.",
- "_comment_value": "The value to provide. This can be a fixed literal, or an expression like ${VAR_S} to use the value of 'VAR_S' from the current environment."
- }
- ]
- }
- },
- "principalId": {
- "value": "${AZURE_PRINCIPAL_ID}"
- }
- }
-}
\ No newline at end of file
diff --git a/infra/old/08-2025/modules/account/main.bicep b/infra/old/08-2025/modules/account/main.bicep
deleted file mode 100644
index b1fad4456..000000000
--- a/infra/old/08-2025/modules/account/main.bicep
+++ /dev/null
@@ -1,421 +0,0 @@
-metadata name = 'Cognitive Services'
-metadata description = 'This module deploys a Cognitive Service.'
-
-@description('Required. The name of Cognitive Services account.')
-param name string
-
-@description('Optional: Name for the project which needs to be created.')
-param projectName string
-
-@description('Optional: Description for the project which needs to be created.')
-param projectDescription string
-
-param existingFoundryProjectResourceId string = ''
-
-@description('Required. Kind of the Cognitive Services account. Use \'Get-AzCognitiveServicesAccountSku\' to determine a valid combinations of \'kind\' and \'SKU\' for your Azure region.')
-@allowed([
- 'AIServices'
- 'AnomalyDetector'
- 'CognitiveServices'
- 'ComputerVision'
- 'ContentModerator'
- 'ContentSafety'
- 'ConversationalLanguageUnderstanding'
- 'CustomVision.Prediction'
- 'CustomVision.Training'
- 'Face'
- 'FormRecognizer'
- 'HealthInsights'
- 'ImmersiveReader'
- 'Internal.AllInOne'
- 'LUIS'
- 'LUIS.Authoring'
- 'LanguageAuthoring'
- 'MetricsAdvisor'
- 'OpenAI'
- 'Personalizer'
- 'QnAMaker.v2'
- 'SpeechServices'
- 'TextAnalytics'
- 'TextTranslation'
-])
-param kind string
-
-@description('Optional. SKU of the Cognitive Services account. Use \'Get-AzCognitiveServicesAccountSku\' to determine a valid combinations of \'kind\' and \'SKU\' for your Azure region.')
-@allowed([
- 'C2'
- 'C3'
- 'C4'
- 'F0'
- 'F1'
- 'S'
- 'S0'
- 'S1'
- 'S10'
- 'S2'
- 'S3'
- 'S4'
- 'S5'
- 'S6'
- 'S7'
- 'S8'
- 'S9'
-])
-param sku string = 'S0'
-
-@description('Optional. Location for all Resources.')
-param location string = resourceGroup().location
-
-import { diagnosticSettingFullType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Optional. The diagnostic settings of the service.')
-param diagnosticSettings diagnosticSettingFullType[]?
-
-@description('Optional. Whether or not public network access is allowed for this resource. For security reasons it should be disabled. If not specified, it will be disabled by default if private endpoints are set and networkAcls are not set.')
-@allowed([
- 'Enabled'
- 'Disabled'
-])
-param publicNetworkAccess string?
-
-@description('Conditional. Subdomain name used for token-based authentication. Required if \'networkAcls\' or \'privateEndpoints\' are set.')
-param customSubDomainName string?
-
-@description('Optional. A collection of rules governing the accessibility from specific network locations.')
-param networkAcls object?
-
-import { privateEndpointSingleServiceType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Optional. Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible.')
-param privateEndpoints privateEndpointSingleServiceType[]?
-
-import { lockType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Optional. The lock settings of the service.')
-param lock lockType?
-
-import { roleAssignmentType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Optional. Array of role assignments to create.')
-param roleAssignments roleAssignmentType[]?
-
-@description('Optional. Tags of the resource.')
-param tags object?
-
-@description('Optional. List of allowed FQDN.')
-param allowedFqdnList array?
-
-@description('Optional. The API properties for special APIs.')
-param apiProperties object?
-
-@description('Optional. Allow only Azure AD authentication. Should be enabled for security reasons.')
-param disableLocalAuth bool = true
-
-import { customerManagedKeyType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Optional. The customer managed key definition.')
-param customerManagedKey customerManagedKeyType?
-
-@description('Optional. The flag to enable dynamic throttling.')
-param dynamicThrottlingEnabled bool = false
-
-@secure()
-@description('Optional. Resource migration token.')
-param migrationToken string?
-
-@description('Optional. Restore a soft-deleted cognitive service at deployment time. Will fail if no such soft-deleted resource exists.')
-param restore bool = false
-
-@description('Optional. Restrict outbound network access.')
-param restrictOutboundNetworkAccess bool = true
-
-@description('Optional. The storage accounts for this resource.')
-param userOwnedStorage array?
-
-import { managedIdentityAllType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Optional. The managed identity definition for this resource.')
-param managedIdentities managedIdentityAllType?
-
-@description('Optional. Enable/Disable usage telemetry for module.')
-param enableTelemetry bool = true
-
-@description('Optional. Array of deployments about cognitive service accounts to create.')
-param deployments deploymentType[]?
-
-@description('Optional. Key vault reference and secret settings for the module\'s secrets export.')
-param secretsExportConfiguration secretsExportConfigurationType?
-
-@description('Optional. Enable/Disable project management feature for AI Foundry.')
-param allowProjectManagement bool?
-
-var formattedUserAssignedIdentities = reduce(
- map((managedIdentities.?userAssignedResourceIds ?? []), (id) => { '${id}': {} }),
- {},
- (cur, next) => union(cur, next)
-) // Converts the flat array to an object like { '${id1}': {}, '${id2}': {} }
-
-var identity = !empty(managedIdentities)
- ? {
- type: (managedIdentities.?systemAssigned ?? false)
- ? (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'SystemAssigned, UserAssigned' : 'SystemAssigned')
- : (!empty(managedIdentities.?userAssignedResourceIds ?? {}) ? 'UserAssigned' : null)
- userAssignedIdentities: !empty(formattedUserAssignedIdentities) ? formattedUserAssignedIdentities : null
- }
- : null
-
-#disable-next-line no-deployments-resources
-resource avmTelemetry 'Microsoft.Resources/deployments@2024-03-01' = if (enableTelemetry) {
- name: '46d3xbcp.res.cognitiveservices-account.${replace('-..--..-', '.', '-')}.${substring(uniqueString(deployment().name, location), 0, 4)}'
- properties: {
- mode: 'Incremental'
- template: {
- '$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#'
- contentVersion: '1.0.0.0'
- resources: []
- outputs: {
- telemetry: {
- type: 'String'
- value: 'For more information, see https://aka.ms/avm/TelemetryInfo'
- }
- }
- }
- }
-}
-
-resource cMKKeyVault 'Microsoft.KeyVault/vaults@2023-07-01' existing = if (!empty(customerManagedKey.?keyVaultResourceId)) {
- name: last(split(customerManagedKey.?keyVaultResourceId!, '/'))
- scope: resourceGroup(
- split(customerManagedKey.?keyVaultResourceId!, '/')[2],
- split(customerManagedKey.?keyVaultResourceId!, '/')[4]
- )
-
- resource cMKKey 'keys@2023-07-01' existing = if (!empty(customerManagedKey.?keyVaultResourceId) && !empty(customerManagedKey.?keyName)) {
- name: customerManagedKey.?keyName!
- }
-}
-
-resource cMKUserAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2025-01-31-preview' existing = if (!empty(customerManagedKey.?userAssignedIdentityResourceId)) {
- name: last(split(customerManagedKey.?userAssignedIdentityResourceId!, '/'))
- scope: resourceGroup(
- split(customerManagedKey.?userAssignedIdentityResourceId!, '/')[2],
- split(customerManagedKey.?userAssignedIdentityResourceId!, '/')[4]
- )
-}
-
-var useExistingService = !empty(existingFoundryProjectResourceId)
-
-resource cognitiveServiceNew 'Microsoft.CognitiveServices/accounts@2025-04-01-preview' = if(!useExistingService) {
- name: name
- kind: kind
- identity: identity
- location: location
- tags: tags
- sku: {
- name: sku
- }
- properties: {
- allowProjectManagement: allowProjectManagement // allows project management for Cognitive Services accounts in AI Foundry - FDP updates
- customSubDomainName: customSubDomainName
- networkAcls: !empty(networkAcls ?? {})
- ? {
- defaultAction: networkAcls.?defaultAction
- virtualNetworkRules: networkAcls.?virtualNetworkRules ?? []
- ipRules: networkAcls.?ipRules ?? []
- }
- : null
- publicNetworkAccess: publicNetworkAccess != null
- ? publicNetworkAccess
- : (!empty(networkAcls) ? 'Enabled' : 'Disabled')
- allowedFqdnList: allowedFqdnList
- apiProperties: apiProperties
- disableLocalAuth: disableLocalAuth
- encryption: !empty(customerManagedKey)
- ? {
- keySource: 'Microsoft.KeyVault'
- keyVaultProperties: {
- identityClientId: !empty(customerManagedKey.?userAssignedIdentityResourceId ?? '')
- ? cMKUserAssignedIdentity.properties.clientId
- : null
- keyVaultUri: cMKKeyVault.properties.vaultUri
- keyName: customerManagedKey!.keyName
- keyVersion: !empty(customerManagedKey.?keyVersion ?? '')
- ? customerManagedKey!.?keyVersion
- : last(split(cMKKeyVault::cMKKey.properties.keyUriWithVersion, '/'))
- }
- }
- : null
- migrationToken: migrationToken
- restore: restore
- restrictOutboundNetworkAccess: restrictOutboundNetworkAccess
- userOwnedStorage: userOwnedStorage
- dynamicThrottlingEnabled: dynamicThrottlingEnabled
- }
-}
-
-var existingCognitiveServiceDetails = split(existingFoundryProjectResourceId, '/')
-
-resource cognitiveServiceExisting 'Microsoft.CognitiveServices/accounts@2025-04-01-preview' existing = if(useExistingService) {
- name: existingCognitiveServiceDetails[8]
- scope: resourceGroup(existingCognitiveServiceDetails[2], existingCognitiveServiceDetails[4])
-}
-
-module cognigive_service_dependencies 'modules/dependencies.bicep' = if(!useExistingService) {
- params: {
- projectName: projectName
- projectDescription: projectDescription
- name: cognitiveServiceNew.name
- location: location
- deployments: deployments
- diagnosticSettings: diagnosticSettings
- lock: lock
- privateEndpoints: privateEndpoints
- roleAssignments: roleAssignments
- secretsExportConfiguration: secretsExportConfiguration
- sku: sku
- tags: tags
- }
-}
-
-module existing_cognigive_service_dependencies 'modules/dependencies.bicep' = if(useExistingService) {
- params: {
- name: cognitiveServiceExisting.name
- projectName: projectName
- projectDescription: projectDescription
- azureExistingAIProjectResourceId: existingFoundryProjectResourceId
- location: location
- deployments: deployments
- diagnosticSettings: diagnosticSettings
- lock: lock
- privateEndpoints: privateEndpoints
- roleAssignments: roleAssignments
- secretsExportConfiguration: secretsExportConfiguration
- sku: sku
- tags: tags
- }
- scope: resourceGroup(existingCognitiveServiceDetails[2], existingCognitiveServiceDetails[4])
-}
-
-var cognitiveService = useExistingService ? cognitiveServiceExisting : cognitiveServiceNew
-
-@description('The name of the cognitive services account.')
-output name string = useExistingService ? cognitiveServiceExisting.name : cognitiveServiceNew.name
-
-@description('The resource ID of the cognitive services account.')
-output resourceId string = useExistingService ? cognitiveServiceExisting.id : cognitiveServiceNew.id
-
-@description('The resource group the cognitive services account was deployed into.')
-output subscriptionId string = useExistingService ? existingCognitiveServiceDetails[2] : subscription().subscriptionId
-
-@description('The resource group the cognitive services account was deployed into.')
-output resourceGroupName string = useExistingService ? existingCognitiveServiceDetails[4] : resourceGroup().name
-
-@description('The service endpoint of the cognitive services account.')
-output endpoint string = useExistingService ? cognitiveServiceExisting.properties.endpoint : cognitiveService.properties.endpoint
-
-@description('All endpoints available for the cognitive services account, types depends on the cognitive service kind.')
-output endpoints endpointType = useExistingService ? cognitiveServiceExisting.properties.endpoints : cognitiveService.properties.endpoints
-
-@description('The principal ID of the system assigned identity.')
-output systemAssignedMIPrincipalId string? = useExistingService ? cognitiveServiceExisting.identity.principalId : cognitiveService.?identity.?principalId
-
-@description('The location the resource was deployed into.')
-output location string = useExistingService ? cognitiveServiceExisting.location : cognitiveService.location
-
-import { secretsOutputType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('A hashtable of references to the secrets exported to the provided Key Vault. The key of each reference is each secret\'s name.')
-output exportedSecrets secretsOutputType = useExistingService ? existing_cognigive_service_dependencies.outputs.exportedSecrets : cognigive_service_dependencies.outputs.exportedSecrets
-
-@description('The private endpoints of the congitive services account.')
-output privateEndpoints privateEndpointOutputType[] = useExistingService ? existing_cognigive_service_dependencies.outputs.privateEndpoints : cognigive_service_dependencies.outputs.privateEndpoints
-
-import { aiProjectOutputType } from './modules/project.bicep'
-output aiProjectInfo aiProjectOutputType = useExistingService ? existing_cognigive_service_dependencies.outputs.aiProjectInfo : cognigive_service_dependencies.outputs.aiProjectInfo
-
-// ================ //
-// Definitions //
-// ================ //
-
-@export()
-@description('The type for the private endpoint output.')
-type privateEndpointOutputType = {
- @description('The name of the private endpoint.')
- name: string
-
- @description('The resource ID of the private endpoint.')
- resourceId: string
-
- @description('The group Id for the private endpoint Group.')
- groupId: string?
-
- @description('The custom DNS configurations of the private endpoint.')
- customDnsConfigs: {
- @description('FQDN that resolves to private endpoint IP address.')
- fqdn: string?
-
- @description('A list of private IP addresses of the private endpoint.')
- ipAddresses: string[]
- }[]
-
- @description('The IDs of the network interfaces associated with the private endpoint.')
- networkInterfaceResourceIds: string[]
-}
-
-@export()
-@description('The type for a cognitive services account deployment.')
-type deploymentType = {
- @description('Optional. Specify the name of cognitive service account deployment.')
- name: string?
-
- @description('Required. Properties of Cognitive Services account deployment model.')
- model: {
- @description('Required. The name of Cognitive Services account deployment model.')
- name: string
-
- @description('Required. The format of Cognitive Services account deployment model.')
- format: string
-
- @description('Required. The version of Cognitive Services account deployment model.')
- version: string
- }
-
- @description('Optional. The resource model definition representing SKU.')
- sku: {
- @description('Required. The name of the resource model definition representing SKU.')
- name: string
-
- @description('Optional. The capacity of the resource model definition representing SKU.')
- capacity: int?
-
- @description('Optional. The tier of the resource model definition representing SKU.')
- tier: string?
-
- @description('Optional. The size of the resource model definition representing SKU.')
- size: string?
-
- @description('Optional. The family of the resource model definition representing SKU.')
- family: string?
- }?
-
- @description('Optional. The name of RAI policy.')
- raiPolicyName: string?
-
- @description('Optional. The version upgrade option.')
- versionUpgradeOption: string?
-}
-
-@export()
-@description('The type for a cognitive services account endpoint.')
-type endpointType = {
- @description('Type of the endpoint.')
- name: string?
- @description('The endpoint URI.')
- endpoint: string?
-}
-
-@export()
-@description('The type of the secrets exported to the provided Key Vault.')
-type secretsExportConfigurationType = {
- @description('Required. The key vault name where to store the keys and connection strings generated by the modules.')
- keyVaultResourceId: string
-
- @description('Optional. The name for the accessKey1 secret to create.')
- accessKey1Name: string?
-
- @description('Optional. The name for the accessKey2 secret to create.')
- accessKey2Name: string?
-}
diff --git a/infra/old/08-2025/modules/account/modules/dependencies.bicep b/infra/old/08-2025/modules/account/modules/dependencies.bicep
deleted file mode 100644
index c2d7de6f8..000000000
--- a/infra/old/08-2025/modules/account/modules/dependencies.bicep
+++ /dev/null
@@ -1,479 +0,0 @@
-@description('Required. The name of Cognitive Services account.')
-param name string
-
-@description('Optional. SKU of the Cognitive Services account. Use \'Get-AzCognitiveServicesAccountSku\' to determine a valid combinations of \'kind\' and \'SKU\' for your Azure region.')
-@allowed([
- 'C2'
- 'C3'
- 'C4'
- 'F0'
- 'F1'
- 'S'
- 'S0'
- 'S1'
- 'S10'
- 'S2'
- 'S3'
- 'S4'
- 'S5'
- 'S6'
- 'S7'
- 'S8'
- 'S9'
-])
-param sku string = 'S0'
-
-@description('Optional. Location for all Resources.')
-param location string = resourceGroup().location
-
-@description('Optional. Tags of the resource.')
-param tags object?
-
-@description('Optional. Array of deployments about cognitive service accounts to create.')
-param deployments deploymentType[]?
-
-@description('Optional. Key vault reference and secret settings for the module\'s secrets export.')
-param secretsExportConfiguration secretsExportConfigurationType?
-
-import { privateEndpointSingleServiceType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Optional. Configuration details for private endpoints. For security reasons, it is recommended to use private endpoints whenever possible.')
-param privateEndpoints privateEndpointSingleServiceType[]?
-
-import { lockType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Optional. The lock settings of the service.')
-param lock lockType?
-
-import { roleAssignmentType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Optional. Array of role assignments to create.')
-param roleAssignments roleAssignmentType[]?
-
-import { diagnosticSettingFullType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Optional. The diagnostic settings of the service.')
-param diagnosticSettings diagnosticSettingFullType[]?
-
-@description('Optional: Name for the project which needs to be created.')
-param projectName string
-
-@description('Optional: Description for the project which needs to be created.')
-param projectDescription string
-
-@description('Optional: Provide the existing project resource id in case if it needs to be reused')
-param azureExistingAIProjectResourceId string = ''
-
-var builtInRoleNames = {
- 'Cognitive Services Contributor': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '25fbc0a9-bd7c-42a3-aa1a-3b75d497ee68'
- )
- 'Cognitive Services Custom Vision Contributor': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'c1ff6cc2-c111-46fe-8896-e0ef812ad9f3'
- )
- 'Cognitive Services Custom Vision Deployment': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '5c4089e1-6d96-4d2f-b296-c1bc7137275f'
- )
- 'Cognitive Services Custom Vision Labeler': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '88424f51-ebe7-446f-bc41-7fa16989e96c'
- )
- 'Cognitive Services Custom Vision Reader': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '93586559-c37d-4a6b-ba08-b9f0940c2d73'
- )
- 'Cognitive Services Custom Vision Trainer': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '0a5ae4ab-0d65-4eeb-be61-29fc9b54394b'
- )
- 'Cognitive Services Data Reader (Preview)': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'b59867f0-fa02-499b-be73-45a86b5b3e1c'
- )
- 'Cognitive Services Face Recognizer': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '9894cab4-e18a-44aa-828b-cb588cd6f2d7'
- )
- 'Cognitive Services Immersive Reader User': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'b2de6794-95db-4659-8781-7e080d3f2b9d'
- )
- 'Cognitive Services Language Owner': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'f07febfe-79bc-46b1-8b37-790e26e6e498'
- )
- 'Cognitive Services Language Reader': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '7628b7b8-a8b2-4cdc-b46f-e9b35248918e'
- )
- 'Cognitive Services Language Writer': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'f2310ca1-dc64-4889-bb49-c8e0fa3d47a8'
- )
- 'Cognitive Services LUIS Owner': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'f72c8140-2111-481c-87ff-72b910f6e3f8'
- )
- 'Cognitive Services LUIS Reader': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '18e81cdc-4e98-4e29-a639-e7d10c5a6226'
- )
- 'Cognitive Services LUIS Writer': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '6322a993-d5c9-4bed-b113-e49bbea25b27'
- )
- 'Cognitive Services Metrics Advisor Administrator': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'cb43c632-a144-4ec5-977c-e80c4affc34a'
- )
- 'Cognitive Services Metrics Advisor User': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '3b20f47b-3825-43cb-8114-4bd2201156a8'
- )
- 'Cognitive Services OpenAI Contributor': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'a001fd3d-188f-4b5d-821b-7da978bf7442'
- )
- 'Cognitive Services OpenAI User': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'
- )
- 'Cognitive Services QnA Maker Editor': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'f4cc2bf9-21be-47a1-bdf1-5c5804381025'
- )
- 'Cognitive Services QnA Maker Reader': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '466ccd10-b268-4a11-b098-b4849f024126'
- )
- 'Cognitive Services Speech Contributor': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '0e75ca1e-0464-4b4d-8b93-68208a576181'
- )
- 'Cognitive Services Speech User': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'f2dc8367-1007-4938-bd23-fe263f013447'
- )
- 'Cognitive Services User': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'a97b65f3-24c7-4388-baec-2e87135dc908'
- )
- 'Azure AI Developer': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '64702f94-c441-49e6-a78b-ef80e0188fee'
- )
- Contributor: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
- Owner: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')
- Reader: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')
- 'Role Based Access Control Administrator': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- 'f58310d9-a9f6-439a-9e8d-f62e7b41a168'
- )
- 'User Access Administrator': subscriptionResourceId(
- 'Microsoft.Authorization/roleDefinitions',
- '18d7d88d-d35e-4fb5-a5c3-7773c20a72d9'
- )
-}
-
-var formattedRoleAssignments = [
- for (roleAssignment, index) in (roleAssignments ?? []): union(roleAssignment, {
- roleDefinitionId: builtInRoleNames[?roleAssignment.roleDefinitionIdOrName] ?? (contains(
- roleAssignment.roleDefinitionIdOrName,
- '/providers/Microsoft.Authorization/roleDefinitions/'
- )
- ? roleAssignment.roleDefinitionIdOrName
- : subscriptionResourceId('Microsoft.Authorization/roleDefinitions', roleAssignment.roleDefinitionIdOrName))
- })
-]
-
-var enableReferencedModulesTelemetry = false
-
-resource cognitiveService 'Microsoft.CognitiveServices/accounts@2025-04-01-preview' existing = {
- name: name
-}
-
-@batchSize(1)
-resource cognitiveService_deployments 'Microsoft.CognitiveServices/accounts/deployments@2025-04-01-preview' = [
- for (deployment, index) in (deployments ?? []): {
- parent: cognitiveService
- name: deployment.?name ?? '${name}-deployments'
- properties: {
- model: deployment.model
- raiPolicyName: deployment.?raiPolicyName
- versionUpgradeOption: deployment.?versionUpgradeOption
- }
- sku: deployment.?sku ?? {
- name: sku
- capacity: sku.?capacity
- tier: sku.?tier
- size: sku.?size
- family: sku.?family
- }
- }
-]
-
-resource cognitiveService_lock 'Microsoft.Authorization/locks@2020-05-01' = if (!empty(lock ?? {}) && lock.?kind != 'None') {
- name: lock.?name ?? 'lock-${name}'
- properties: {
- level: lock.?kind ?? ''
- notes: lock.?kind == 'CanNotDelete'
- ? 'Cannot delete resource or child resources.'
- : 'Cannot delete or modify the resource or child resources.'
- }
- scope: cognitiveService
-}
-
-resource cognitiveService_diagnosticSettings 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = [
- for (diagnosticSetting, index) in (diagnosticSettings ?? []): {
- name: diagnosticSetting.?name ?? '${name}-diagnosticSettings'
- properties: {
- storageAccountId: diagnosticSetting.?storageAccountResourceId
- workspaceId: diagnosticSetting.?workspaceResourceId
- eventHubAuthorizationRuleId: diagnosticSetting.?eventHubAuthorizationRuleResourceId
- eventHubName: diagnosticSetting.?eventHubName
- metrics: [
- for group in (diagnosticSetting.?metricCategories ?? [{ category: 'AllMetrics' }]): {
- category: group.category
- enabled: group.?enabled ?? true
- timeGrain: null
- }
- ]
- logs: [
- for group in (diagnosticSetting.?logCategoriesAndGroups ?? [{ categoryGroup: 'allLogs' }]): {
- categoryGroup: group.?categoryGroup
- category: group.?category
- enabled: group.?enabled ?? true
- }
- ]
- marketplacePartnerId: diagnosticSetting.?marketplacePartnerResourceId
- logAnalyticsDestinationType: diagnosticSetting.?logAnalyticsDestinationType
- }
- scope: cognitiveService
- }
-]
-
-module cognitiveService_privateEndpoints 'br/public:avm/res/network/private-endpoint:0.11.0' = [
- for (privateEndpoint, index) in (privateEndpoints ?? []): {
- name: '${uniqueString(deployment().name, location)}-cognitiveService-PrivateEndpoint-${index}'
- scope: resourceGroup(
- split(privateEndpoint.?resourceGroupResourceId ?? resourceGroup().id, '/')[2],
- split(privateEndpoint.?resourceGroupResourceId ?? resourceGroup().id, '/')[4]
- )
- params: {
- name: privateEndpoint.?name ?? 'pep-${last(split(cognitiveService.id, '/'))}-${privateEndpoint.?service ?? 'account'}-${index}'
- privateLinkServiceConnections: privateEndpoint.?isManualConnection != true
- ? [
- {
- name: privateEndpoint.?privateLinkServiceConnectionName ?? '${last(split(cognitiveService.id, '/'))}-${privateEndpoint.?service ?? 'account'}-${index}'
- properties: {
- privateLinkServiceId: cognitiveService.id
- groupIds: [
- privateEndpoint.?service ?? 'account'
- ]
- }
- }
- ]
- : null
- manualPrivateLinkServiceConnections: privateEndpoint.?isManualConnection == true
- ? [
- {
- name: privateEndpoint.?privateLinkServiceConnectionName ?? '${last(split(cognitiveService.id, '/'))}-${privateEndpoint.?service ?? 'account'}-${index}'
- properties: {
- privateLinkServiceId: cognitiveService.id
- groupIds: [
- privateEndpoint.?service ?? 'account'
- ]
- requestMessage: privateEndpoint.?manualConnectionRequestMessage ?? 'Manual approval required.'
- }
- }
- ]
- : null
- subnetResourceId: privateEndpoint.subnetResourceId
- enableTelemetry: enableReferencedModulesTelemetry
- location: privateEndpoint.?location ?? reference(
- split(privateEndpoint.subnetResourceId, '/subnets/')[0],
- '2020-06-01',
- 'Full'
- ).location
- lock: privateEndpoint.?lock ?? lock
- privateDnsZoneGroup: privateEndpoint.?privateDnsZoneGroup
- roleAssignments: privateEndpoint.?roleAssignments
- tags: privateEndpoint.?tags ?? tags
- customDnsConfigs: privateEndpoint.?customDnsConfigs
- ipConfigurations: privateEndpoint.?ipConfigurations
- applicationSecurityGroupResourceIds: privateEndpoint.?applicationSecurityGroupResourceIds
- customNetworkInterfaceName: privateEndpoint.?customNetworkInterfaceName
- }
- }
-]
-
-resource cognitiveService_roleAssignments 'Microsoft.Authorization/roleAssignments@2022-04-01' = [
- for (roleAssignment, index) in (formattedRoleAssignments ?? []): {
- name: roleAssignment.?name ?? guid(cognitiveService.id, roleAssignment.principalId, roleAssignment.roleDefinitionId)
- properties: {
- roleDefinitionId: roleAssignment.roleDefinitionId
- principalId: roleAssignment.principalId
- description: roleAssignment.?description
- principalType: roleAssignment.?principalType
- condition: roleAssignment.?condition
- conditionVersion: !empty(roleAssignment.?condition) ? (roleAssignment.?conditionVersion ?? '2.0') : null // Must only be set if condtion is set
- delegatedManagedIdentityResourceId: roleAssignment.?delegatedManagedIdentityResourceId
- }
- scope: cognitiveService
- }
-]
-
-module secretsExport './keyVaultExport.bicep' = if (secretsExportConfiguration != null) {
- name: '${uniqueString(deployment().name, location)}-secrets-kv'
- scope: resourceGroup(
- split(secretsExportConfiguration.?keyVaultResourceId!, '/')[2],
- split(secretsExportConfiguration.?keyVaultResourceId!, '/')[4]
- )
- params: {
- keyVaultName: last(split(secretsExportConfiguration.?keyVaultResourceId!, '/'))
- secretsToSet: union(
- [],
- contains(secretsExportConfiguration!, 'accessKey1Name')
- ? [
- {
- name: secretsExportConfiguration!.?accessKey1Name
- value: cognitiveService.listKeys().key1
- }
- ]
- : [],
- contains(secretsExportConfiguration!, 'accessKey2Name')
- ? [
- {
- name: secretsExportConfiguration!.?accessKey2Name
- value: cognitiveService.listKeys().key2
- }
- ]
- : []
- )
- }
-}
-
-module aiProject 'project.bicep' = if(!empty(projectName) || !empty(azureExistingAIProjectResourceId)) {
- name: take('${name}-ai-project-${projectName}-deployment', 64)
- params: {
- name: projectName
- desc: projectDescription
- aiServicesName: cognitiveService.name
- location: location
- tags: tags
- azureExistingAIProjectResourceId: azureExistingAIProjectResourceId
- }
-}
-
-import { secretsOutputType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('A hashtable of references to the secrets exported to the provided Key Vault. The key of each reference is each secret\'s name.')
-output exportedSecrets secretsOutputType = (secretsExportConfiguration != null)
- ? toObject(secretsExport.outputs.secretsSet, secret => last(split(secret.secretResourceId, '/')), secret => secret)
- : {}
-
-@description('The private endpoints of the congitive services account.')
-output privateEndpoints privateEndpointOutputType[] = [
- for (pe, index) in (privateEndpoints ?? []): {
- name: cognitiveService_privateEndpoints[index].outputs.name
- resourceId: cognitiveService_privateEndpoints[index].outputs.resourceId
- groupId: cognitiveService_privateEndpoints[index].outputs.?groupId!
- customDnsConfigs: cognitiveService_privateEndpoints[index].outputs.customDnsConfigs
- networkInterfaceResourceIds: cognitiveService_privateEndpoints[index].outputs.networkInterfaceResourceIds
- }
-]
-
-import { aiProjectOutputType } from 'project.bicep'
-output aiProjectInfo aiProjectOutputType = aiProject.outputs.aiProjectInfo
-
-// ================ //
-// Definitions //
-// ================ //
-
-@export()
-@description('The type for the private endpoint output.')
-type privateEndpointOutputType = {
- @description('The name of the private endpoint.')
- name: string
-
- @description('The resource ID of the private endpoint.')
- resourceId: string
-
- @description('The group Id for the private endpoint Group.')
- groupId: string?
-
- @description('The custom DNS configurations of the private endpoint.')
- customDnsConfigs: {
- @description('FQDN that resolves to private endpoint IP address.')
- fqdn: string?
-
- @description('A list of private IP addresses of the private endpoint.')
- ipAddresses: string[]
- }[]
-
- @description('The IDs of the network interfaces associated with the private endpoint.')
- networkInterfaceResourceIds: string[]
-}
-
-@export()
-@description('The type for a cognitive services account deployment.')
-type deploymentType = {
- @description('Optional. Specify the name of cognitive service account deployment.')
- name: string?
-
- @description('Required. Properties of Cognitive Services account deployment model.')
- model: {
- @description('Required. The name of Cognitive Services account deployment model.')
- name: string
-
- @description('Required. The format of Cognitive Services account deployment model.')
- format: string
-
- @description('Required. The version of Cognitive Services account deployment model.')
- version: string
- }
-
- @description('Optional. The resource model definition representing SKU.')
- sku: {
- @description('Required. The name of the resource model definition representing SKU.')
- name: string
-
- @description('Optional. The capacity of the resource model definition representing SKU.')
- capacity: int?
-
- @description('Optional. The tier of the resource model definition representing SKU.')
- tier: string?
-
- @description('Optional. The size of the resource model definition representing SKU.')
- size: string?
-
- @description('Optional. The family of the resource model definition representing SKU.')
- family: string?
- }?
-
- @description('Optional. The name of RAI policy.')
- raiPolicyName: string?
-
- @description('Optional. The version upgrade option.')
- versionUpgradeOption: string?
-}
-
-@export()
-@description('The type for a cognitive services account endpoint.')
-type endpointType = {
- @description('Type of the endpoint.')
- name: string?
- @description('The endpoint URI.')
- endpoint: string?
-}
-
-@export()
-@description('The type of the secrets exported to the provided Key Vault.')
-type secretsExportConfigurationType = {
- @description('Required. The key vault name where to store the keys and connection strings generated by the modules.')
- keyVaultResourceId: string
-
- @description('Optional. The name for the accessKey1 secret to create.')
- accessKey1Name: string?
-
- @description('Optional. The name for the accessKey2 secret to create.')
- accessKey2Name: string?
-}
diff --git a/infra/old/08-2025/modules/account/modules/keyVaultExport.bicep b/infra/old/08-2025/modules/account/modules/keyVaultExport.bicep
deleted file mode 100644
index a54cc5576..000000000
--- a/infra/old/08-2025/modules/account/modules/keyVaultExport.bicep
+++ /dev/null
@@ -1,43 +0,0 @@
-// ============== //
-// Parameters //
-// ============== //
-
-@description('Required. The name of the Key Vault to set the ecrets in.')
-param keyVaultName string
-
-import { secretToSetType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('Required. The secrets to set in the Key Vault.')
-param secretsToSet secretToSetType[]
-
-// ============= //
-// Resources //
-// ============= //
-
-resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
- name: keyVaultName
-}
-
-resource secrets 'Microsoft.KeyVault/vaults/secrets@2023-07-01' = [
- for secret in secretsToSet: {
- name: secret.name
- parent: keyVault
- properties: {
- value: secret.value
- }
- }
-]
-
-// =========== //
-// Outputs //
-// =========== //
-
-import { secretSetOutputType } from 'br/public:avm/utl/types/avm-common-types:0.5.1'
-@description('The references to the secrets exported to the provided Key Vault.')
-output secretsSet secretSetOutputType[] = [
- #disable-next-line outputs-should-not-contain-secrets // Only returning the references, not a secret value
- for index in range(0, length(secretsToSet ?? [])): {
- secretResourceId: secrets[index].id
- secretUri: secrets[index].properties.secretUri
- secretUriWithVersion: secrets[index].properties.secretUriWithVersion
- }
-]
diff --git a/infra/old/08-2025/modules/account/modules/project.bicep b/infra/old/08-2025/modules/account/modules/project.bicep
deleted file mode 100644
index 8ca346546..000000000
--- a/infra/old/08-2025/modules/account/modules/project.bicep
+++ /dev/null
@@ -1,61 +0,0 @@
-@description('Required. Name of the AI Services project.')
-param name string
-
-@description('Required. The location of the Project resource.')
-param location string = resourceGroup().location
-
-@description('Optional. The description of the AI Foundry project to create. Defaults to the project name.')
-param desc string = name
-
-@description('Required. Name of the existing Cognitive Services resource to create the AI Foundry project in.')
-param aiServicesName string
-
-@description('Optional. Tags to be applied to the resources.')
-param tags object = {}
-
-@description('Optional. Use this parameter to use an existing AI project resource ID from different resource group')
-param azureExistingAIProjectResourceId string = ''
-
-// // Extract components from existing AI Project Resource ID if provided
-var useExistingProject = !empty(azureExistingAIProjectResourceId)
-var existingProjName = useExistingProject ? last(split(azureExistingAIProjectResourceId, '/')) : ''
-var existingProjEndpoint = useExistingProject ? format('https://{0}.services.ai.azure.com/api/projects/{1}', aiServicesName, existingProjName) : ''
-// Reference to cognitive service in current resource group for new projects
-resource cogServiceReference 'Microsoft.CognitiveServices/accounts@2024-10-01' existing = {
- name: aiServicesName
-}
-
-// Create new AI project only if not reusing existing one
-resource aiProject 'Microsoft.CognitiveServices/accounts/projects@2025-04-01-preview' = if(!useExistingProject) {
- parent: cogServiceReference
- name: name
- tags: tags
- location: location
- identity: {
- type: 'SystemAssigned'
- }
- properties: {
- description: desc
- displayName: name
- }
-}
-
-@description('AI Project metadata including name, resource ID, and API endpoint.')
-output aiProjectInfo aiProjectOutputType = {
- name: useExistingProject ? existingProjName : aiProject.name
- resourceId: useExistingProject ? azureExistingAIProjectResourceId : aiProject.id
- apiEndpoint: useExistingProject ? existingProjEndpoint : aiProject.properties.endpoints['AI Foundry API']
-}
-
-@export()
-@description('Output type representing AI project information.')
-type aiProjectOutputType = {
- @description('Required. Name of the AI project.')
- name: string
-
- @description('Required. Resource ID of the AI project.')
- resourceId: string
-
- @description('Required. API endpoint for the AI project.')
- apiEndpoint: string
-}
diff --git a/infra/old/08-2025/modules/ai-hub.bicep b/infra/old/08-2025/modules/ai-hub.bicep
deleted file mode 100644
index c92acff92..000000000
--- a/infra/old/08-2025/modules/ai-hub.bicep
+++ /dev/null
@@ -1,62 +0,0 @@
-param name string
-param tags object
-param location string
-param sku string
-param storageAccountResourceId string
-param logAnalyticsWorkspaceResourceId string
-param applicationInsightsResourceId string
-param aiFoundryAiServicesName string
-param enableTelemetry bool
-param virtualNetworkEnabled bool
-import { privateEndpointSingleServiceType } from 'br/public:avm/utl/types/avm-common-types:0.4.0'
-param privateEndpoints privateEndpointSingleServiceType[]
-
-resource aiServices 'Microsoft.CognitiveServices/accounts@2023-05-01' existing = {
- name: aiFoundryAiServicesName
-}
-
-module aiFoundryAiHub 'br/public:avm/res/machine-learning-services/workspace:0.10.1' = {
- name: take('avm.res.machine-learning-services.workspace.${name}', 64)
- params: {
- name: name
- tags: tags
- location: location
- enableTelemetry: enableTelemetry
- diagnosticSettings: [{ workspaceResourceId: logAnalyticsWorkspaceResourceId }]
- kind: 'Hub'
- sku: sku
- description: 'AI Hub for Multi Agent Custom Automation Engine Solution Accelerator template'
- //associatedKeyVaultResourceId: keyVaultResourceId
- associatedStorageAccountResourceId: storageAccountResourceId
- associatedApplicationInsightsResourceId: applicationInsightsResourceId
- connections: [
- {
- name: 'connection-AzureOpenAI'
- category: 'AIServices'
- target: aiServices.properties.endpoint
- isSharedToAll: true
- metadata: {
- ApiType: 'Azure'
- ResourceId: aiServices.id
- }
- connectionProperties: {
- authType: 'ApiKey'
- credentials: {
- key: aiServices.listKeys().key1
- }
- }
- }
- ]
- //publicNetworkAccess: virtualNetworkEnabled ? 'Disabled' : 'Enabled'
- publicNetworkAccess: 'Enabled' //TODO: connection via private endpoint is not working from containers network. Change this when fixed
- managedNetworkSettings: virtualNetworkEnabled
- ? {
- isolationMode: 'AllowInternetOutbound'
- outboundRules: null //TODO: Refine this
- }
- : null
- privateEndpoints: privateEndpoints
- }
-}
-
-output resourceId string = aiFoundryAiHub.outputs.resourceId
diff --git a/infra/old/08-2025/modules/container-app-environment.bicep b/infra/old/08-2025/modules/container-app-environment.bicep
deleted file mode 100644
index 0fc2721f2..000000000
--- a/infra/old/08-2025/modules/container-app-environment.bicep
+++ /dev/null
@@ -1,93 +0,0 @@
-param name string
-param location string
-param logAnalyticsResourceId string
-param tags object
-param publicNetworkAccess string
-//param vnetConfiguration object
-param zoneRedundant bool
-//param aspireDashboardEnabled bool
-param enableTelemetry bool
-param subnetResourceId string
-param applicationInsightsConnectionString string
-
-var logAnalyticsSubscription = split(logAnalyticsResourceId, '/')[2]
-var logAnalyticsResourceGroup = split(logAnalyticsResourceId, '/')[4]
-var logAnalyticsName = split(logAnalyticsResourceId, '/')[8]
-
-resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-08-01' existing = {
- name: logAnalyticsName
- scope: resourceGroup(logAnalyticsSubscription, logAnalyticsResourceGroup)
-}
-
-// resource containerAppEnvironment 'Microsoft.App/managedEnvironments@2024-08-02-preview' = {
-// name: name
-// location: location
-// tags: tags
-// properties: {
-// //daprAIConnectionString: appInsights.properties.ConnectionString
-// //daprAIConnectionString: applicationInsights.outputs.connectionString
-// appLogsConfiguration: {
-// destination: 'log-analytics'
-// logAnalyticsConfiguration: {
-// customerId: logAnalyticsWorkspace.properties.customerId
-// #disable-next-line use-secure-value-for-secure-inputs
-// sharedKey: logAnalyticsWorkspace.listKeys().primarySharedKey
-// }
-// }
-// workloadProfiles: [
-// //THIS IS REQUIRED TO ADD PRIVATE ENDPOINTS
-// {
-// name: 'Consumption'
-// workloadProfileType: 'Consumption'
-// }
-// ]
-// publicNetworkAccess: publicNetworkAccess
-// vnetConfiguration: vnetConfiguration
-// zoneRedundant: zoneRedundant
-// }
-// }
-
-module containerAppEnvironment 'br/public:avm/res/app/managed-environment:0.11.1' = {
- name: take('avm.res.app.managed-environment.${name}', 64)
- params: {
- name: name
- location: location
- tags: tags
- enableTelemetry: enableTelemetry
- //daprAIConnectionString: applicationInsights.outputs.connectionString //Troubleshoot: ContainerAppsConfiguration.DaprAIConnectionString is invalid. DaprAIConnectionString can not be set when AppInsightsConfiguration has been set, please set DaprAIConnectionString to null. (Code:InvalidRequestParameterWithDetails
- appLogsConfiguration: {
- destination: 'log-analytics'
- logAnalyticsConfiguration: {
- customerId: logAnalyticsWorkspace.properties.customerId
- #disable-next-line use-secure-value-for-secure-inputs
- sharedKey: logAnalyticsWorkspace.listKeys().primarySharedKey
- }
- }
- workloadProfiles: [
- //THIS IS REQUIRED TO ADD PRIVATE ENDPOINTS
- {
- name: 'Consumption'
- workloadProfileType: 'Consumption'
- }
- ]
- publicNetworkAccess: publicNetworkAccess
- appInsightsConnectionString: applicationInsightsConnectionString
- zoneRedundant: zoneRedundant
- infrastructureSubnetResourceId: subnetResourceId
- internal: false
- }
-}
-
-//TODO: FIX when deployed to vnet. This needs access to Azure to work
-// resource aspireDashboard 'Microsoft.App/managedEnvironments/dotNetComponents@2024-10-02-preview' = if (aspireDashboardEnabled) {
-// parent: containerAppEnvironment
-// name: 'aspire-dashboard'
-// properties: {
-// componentType: 'AspireDashboard'
-// }
-// }
-
-//output resourceId string = containerAppEnvironment.id
-output resourceId string = containerAppEnvironment.outputs.resourceId
-//output location string = containerAppEnvironment.location
-output location string = containerAppEnvironment.outputs.location
diff --git a/infra/old/08-2025/modules/fetch-container-image.bicep b/infra/old/08-2025/modules/fetch-container-image.bicep
deleted file mode 100644
index 78d1e7eeb..000000000
--- a/infra/old/08-2025/modules/fetch-container-image.bicep
+++ /dev/null
@@ -1,8 +0,0 @@
-param exists bool
-param name string
-
-resource existingApp 'Microsoft.App/containerApps@2023-05-02-preview' existing = if (exists) {
- name: name
-}
-
-output containers array = exists ? existingApp.properties.template.containers : []
diff --git a/infra/old/08-2025/modules/role.bicep b/infra/old/08-2025/modules/role.bicep
deleted file mode 100644
index cf8251635..000000000
--- a/infra/old/08-2025/modules/role.bicep
+++ /dev/null
@@ -1,58 +0,0 @@
-@description('The name of the role assignment resource. Typically generated using `guid()` for uniqueness.')
-param name string
-
-@description('The object ID of the principal (user, group, or service principal) to whom the role will be assigned.')
-param principalId string
-
-@description('The name of the existing Azure Cognitive Services account.')
-param aiServiceName string
-
-
-@allowed(['Device', 'ForeignGroup', 'Group', 'ServicePrincipal', 'User'])
-param principalType string = 'ServicePrincipal'
-
-resource cognitiveServiceExisting 'Microsoft.CognitiveServices/accounts@2025-04-01-preview' existing = {
- name: aiServiceName
-}
-
-resource aiUser 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
- name: '53ca6127-db72-4b80-b1b0-d745d6d5456d'
-}
-
-resource aiDeveloper 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
- name: '64702f94-c441-49e6-a78b-ef80e0188fee'
-}
-
-resource cognitiveServiceOpenAIUser 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
- name: '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'
-}
-
-resource aiUserAccessFoundry 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
- name: guid(name, 'aiUserAccessFoundry')
- scope: cognitiveServiceExisting
- properties: {
- roleDefinitionId: aiUser.id
- principalId: principalId
- principalType: principalType
- }
-}
-
-resource aiDeveloperAccessFoundry 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
- name: guid(name, 'aiDeveloperAccessFoundry')
- scope: cognitiveServiceExisting
- properties: {
- roleDefinitionId: aiDeveloper.id
- principalId: principalId
- principalType: principalType
- }
-}
-
-resource cognitiveServiceOpenAIUserAccessFoundry 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
- name: guid(name, 'cognitiveServiceOpenAIUserAccessFoundry')
- scope: cognitiveServiceExisting
- properties: {
- roleDefinitionId: cognitiveServiceOpenAIUser.id
- principalId: principalId
- principalType: principalType
- }
-}
diff --git a/infra/scripts/validate_bicep_params.py b/infra/scripts/validate_bicep_params.py
new file mode 100644
index 000000000..1e87e6b15
--- /dev/null
+++ b/infra/scripts/validate_bicep_params.py
@@ -0,0 +1,423 @@
+"""
+Bicep Parameter Mapping Validator
+=================================
+Validates that parameter names in *.parameters.json files exactly match
+the param declarations in their corresponding Bicep templates.
+
+Checks performed:
+ 1. Whitespace – parameter names must have no leading/trailing spaces.
+ 2. Existence – every JSON parameter must map to a `param` in the Bicep file.
+ 3. Casing – names must match exactly (case-sensitive).
+ 4. Orphaned – required Bicep params (no default) missing from the JSON file.
+ 5. Env vars – parameter values bound to environment variables must use the
+ AZURE_ENV_* naming convention, except for explicitly allowed
+ names (for example, AZURE_LOCATION, AZURE_EXISTING_AIPROJECT_RESOURCE_ID).
+
+Usage:
+ # Validate a specific pair
+ python validate_bicep_params.py --bicep main.bicep --params main.parameters.json
+
+ # Auto-discover all *.parameters.json files under infra/
+ python validate_bicep_params.py --dir infra
+
+ # CI mode – exit code 1 on any error
+ python validate_bicep_params.py --dir infra --strict
+
+Returns exit-code 0 when no errors are found, 1 when errors are found (in --strict mode).
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import re
+import sys
+from dataclasses import dataclass, field
+from pathlib import Path
+
+# Environment variables exempt from the AZURE_ENV_ naming convention.
+_ENV_VAR_EXCEPTIONS = {"AZURE_LOCATION", "AZURE_EXISTING_AIPROJECT_RESOURCE_ID"}
+
+# ---------------------------------------------------------------------------
+# Bicep param parser
+# ---------------------------------------------------------------------------
+
+# Matches lines like: param environmentName string
+# param tags resourceInput<...>
+# param gptDeploymentCapacity int = 150
+# Ignores commented-out lines (// param ...).
+# Captures the type token and the rest of the line so we can detect defaults.
+_PARAM_RE = re.compile(
+ r"^(?!//)[ \t]*param\s+(?P[A-Za-z_]\w*)\s+(?P\S+)(?P.*)",
+ re.MULTILINE,
+)
+
+
+@dataclass
+class BicepParam:
+ name: str
+ has_default: bool
+
+
+def parse_bicep_params(bicep_path: Path) -> list[BicepParam]:
+ """Extract all `param` declarations from a Bicep file."""
+ text = bicep_path.read_text(encoding="utf-8-sig")
+ params: list[BicepParam] = []
+ for match in _PARAM_RE.finditer(text):
+ name = match.group("name")
+ param_type = match.group("type")
+ rest = match.group("rest")
+ # A param is optional if it has a default value (= ...) or is nullable (type ends with ?)
+ has_default = "=" in rest or param_type.endswith("?")
+ params.append(BicepParam(name=name, has_default=has_default))
+ return params
+
+
+# ---------------------------------------------------------------------------
+# Parameters JSON parser
+# ---------------------------------------------------------------------------
+
+
+def parse_parameters_json(json_path: Path) -> list[str]:
+ """Return the raw parameter key names (preserving whitespace) from a
+ parameters JSON file."""
+ text = json_path.read_text(encoding="utf-8-sig")
+ # azd parameter files may include ${VAR} or ${VAR=default} placeholders inside
+ # string values. These are valid JSON strings, but we sanitize them so that
+ # json.loads remains resilient to azd-specific placeholders and any unusual
+ # default formats.
+ sanitized = re.sub(r'"\$\{[^}]+\}"', '"__placeholder__"', text)
+ try:
+ data = json.loads(sanitized)
+ except json.JSONDecodeError:
+ # Fallback: extract keys with regex for resilience.
+ return _extract_keys_regex(text)
+ return list(data.get("parameters", {}).keys())
+
+
+def parse_parameters_env_vars(json_path: Path) -> dict[str, list[str]]:
+ """Return a mapping of parameter name → list of azd env var names
+ referenced in its value (e.g. ``${AZURE_ENV_NAME}``)."""
+ text = json_path.read_text(encoding="utf-8-sig")
+ result: dict[str, list[str]] = {}
+ params = {}
+
+ # Parse the JSON to get the proper parameter structure.
+ sanitized = re.sub(r'"\$\{([^}]+)\}"', r'"__azd_\1__"', text)
+ try:
+ data = json.loads(sanitized)
+ params = data.get("parameters", {})
+ except json.JSONDecodeError:
+ # Malformed JSON cannot be reliably parsed for env-var extraction;
+ # return an empty mapping so the caller can still proceed.
+ return {}
+
+ # Walk each top-level parameter and scan its entire serialized value
+ # for ${VAR} references from the original text.
+ for param_name, param_obj in params.items():
+ # Find the raw text block for this parameter in the original file
+ # by scanning for all ${VAR} patterns in the original value section.
+ raw_value = json.dumps(param_obj)
+ # Restore original var references from the sanitized placeholders
+ for m in re.finditer(r'__azd_([^_].*?)__', raw_value):
+ var_ref = m.group(1)
+ # var_ref may contain "=default", extract just the var name
+ var_name = var_ref.split("=")[0].strip()
+ if re.match(r'^[A-Za-z_][A-Za-z0-9_]*$', var_name):
+ result.setdefault(param_name, []).append(var_name)
+
+ return result
+
+
+def _extract_keys_regex(text: str) -> list[str]:
+ """Fallback key extraction via regex when JSON is non-standard."""
+ # Matches the key inside "parameters": { "key": ... }
+ keys: list[str] = []
+ in_params = False
+ for line in text.splitlines():
+ if '"parameters"' in line:
+ in_params = True
+ continue
+ if in_params:
+ m = re.match(r'\s*"([^"]+)"\s*:', line)
+ if m:
+ keys.append(m.group(1))
+ return keys
+
+
+# ---------------------------------------------------------------------------
+# Validation logic
+# ---------------------------------------------------------------------------
+
+@dataclass
+class ValidationIssue:
+ severity: str # "ERROR" or "WARNING"
+ param_file: str
+ bicep_file: str
+ param_name: str
+ message: str
+
+
+@dataclass
+class ValidationResult:
+ pair: str
+ issues: list[ValidationIssue] = field(default_factory=list)
+
+ @property
+ def has_errors(self) -> bool:
+ return any(i.severity == "ERROR" for i in self.issues)
+
+
+def validate_pair(
+ bicep_path: Path,
+ params_path: Path,
+) -> ValidationResult:
+ """Validate a single (bicep, parameters.json) pair."""
+ result = ValidationResult(
+ pair=f"{params_path.name} -> {bicep_path.name}"
+ )
+
+ bicep_params = parse_bicep_params(bicep_path)
+ bicep_names = {p.name for p in bicep_params}
+ bicep_names_lower = {p.name.lower(): p.name for p in bicep_params}
+ required_bicep = {p.name for p in bicep_params if not p.has_default}
+
+ json_keys = parse_parameters_json(params_path)
+
+ seen_json_keys: set[str] = set()
+
+ for raw_key in json_keys:
+ stripped = raw_key.strip()
+
+ # 1. Whitespace check
+ if raw_key != stripped:
+ result.issues.append(ValidationIssue(
+ severity="ERROR",
+ param_file=str(params_path),
+ bicep_file=str(bicep_path),
+ param_name=repr(raw_key),
+ message=(
+ f"Parameter name has leading/trailing whitespace. "
+ f"Raw key: {repr(raw_key)}, expected: {repr(stripped)}"
+ ),
+ ))
+
+ # 2. Exact match check
+ if stripped not in bicep_names:
+ # 3. Case-insensitive near-match
+ suggestion = bicep_names_lower.get(stripped.lower())
+ if suggestion:
+ result.issues.append(ValidationIssue(
+ severity="ERROR",
+ param_file=str(params_path),
+ bicep_file=str(bicep_path),
+ param_name=stripped,
+ message=(
+ f"Case mismatch: JSON has '{stripped}', "
+ f"Bicep declares '{suggestion}'."
+ ),
+ ))
+ else:
+ result.issues.append(ValidationIssue(
+ severity="ERROR",
+ param_file=str(params_path),
+ bicep_file=str(bicep_path),
+ param_name=stripped,
+ message=(
+ f"Parameter '{stripped}' exists in JSON but has no "
+ f"matching param in the Bicep template."
+ ),
+ ))
+ seen_json_keys.add(stripped)
+
+ # 4. Required Bicep params missing from JSON
+ for req in sorted(required_bicep - seen_json_keys):
+ result.issues.append(ValidationIssue(
+ severity="WARNING",
+ param_file=str(params_path),
+ bicep_file=str(bicep_path),
+ param_name=req,
+ message=(
+ f"Required Bicep param '{req}' (no default value) is not "
+ f"supplied in the parameters file."
+ ),
+ ))
+
+ # 5. Env var naming convention – all azd vars should start with AZURE_ENV_
+ env_vars = parse_parameters_env_vars(params_path)
+ for param_name, var_names in sorted(env_vars.items()):
+ for var in var_names:
+ if not var.startswith("AZURE_ENV_") and var not in _ENV_VAR_EXCEPTIONS:
+ result.issues.append(ValidationIssue(
+ severity="WARNING",
+ param_file=str(params_path),
+ bicep_file=str(bicep_path),
+ param_name=param_name,
+ message=(
+ f"Env var '${{{var}}}' does not follow the "
+ f"AZURE_ENV_ naming convention."
+ ),
+ ))
+
+ return result
+
+
+# ---------------------------------------------------------------------------
+# Discovery – find (bicep, params) pairs automatically
+# ---------------------------------------------------------------------------
+
+def discover_pairs(infra_dir: Path) -> list[tuple[Path, Path]]:
+ """For each *.parameters.json, find the matching Bicep file.
+
+ Naming convention: a file like ``main.waf.parameters.json`` is a
+ variant of ``main.parameters.json`` — the user copies its contents
+ into ``main.parameters.json`` before running ``azd up``. Both
+ files should therefore be validated against ``main.bicep``.
+
+ Resolution order:
+ 1. Exact stem match (e.g. ``foo.parameters.json`` → ``foo.bicep``).
+ 2. Base-stem match (e.g. ``main.waf.parameters.json`` → ``main.bicep``).
+ """
+ pairs: list[tuple[Path, Path]] = []
+ for pf in sorted(infra_dir.rglob("*.parameters.json")):
+ stem = pf.name.replace(".parameters.json", "")
+ bicep_candidate = pf.parent / f"{stem}.bicep"
+ if bicep_candidate.exists():
+ pairs.append((bicep_candidate, pf))
+ else:
+ # Try the base stem (first segment before the first dot).
+ base_stem = stem.split(".")[0]
+ base_candidate = pf.parent / f"{base_stem}.bicep"
+ if base_candidate.exists():
+ pairs.append((base_candidate, pf))
+ else:
+ print(f" [SKIP] No matching Bicep file for {pf.name}")
+ return pairs
+
+
+# ---------------------------------------------------------------------------
+# Reporting
+# ---------------------------------------------------------------------------
+
+_COLORS = {
+ "ERROR": "\033[91m", # red
+ "WARNING": "\033[93m", # yellow
+ "OK": "\033[92m", # green
+ "RESET": "\033[0m",
+}
+
+
+def print_report(results: list[ValidationResult], *, use_color: bool = True) -> None:
+ c = _COLORS if use_color else {k: "" for k in _COLORS}
+ total_errors = 0
+ total_warnings = 0
+
+ for r in results:
+ errors = [i for i in r.issues if i.severity == "ERROR"]
+ warnings = [i for i in r.issues if i.severity == "WARNING"]
+ total_errors += len(errors)
+ total_warnings += len(warnings)
+
+ if not r.issues:
+ print(f"\n{c['OK']}[PASS]{c['RESET']} {r.pair}")
+ elif errors:
+ print(f"\n{c['ERROR']}[FAIL]{c['RESET']} {r.pair}")
+ else:
+ print(f"\n{c['WARNING']}[WARN]{c['RESET']} {r.pair}")
+
+ for issue in r.issues:
+ tag = (
+ f"{c['ERROR']}ERROR{c['RESET']}"
+ if issue.severity == "ERROR"
+ else f"{c['WARNING']}WARN {c['RESET']}"
+ )
+ print(f" {tag} {issue.param_name}: {issue.message}")
+
+ print(f"\n{'='*60}")
+ print(f"Total: {total_errors} error(s), {total_warnings} warning(s)")
+ if total_errors == 0:
+ print(f"{c['OK']}All parameter mappings are valid.{c['RESET']}")
+ else:
+ print(f"{c['ERROR']}Parameter mapping issues detected!{c['RESET']}")
+
+
+# ---------------------------------------------------------------------------
+# CLI
+# ---------------------------------------------------------------------------
+
+def main() -> int:
+ parser = argparse.ArgumentParser(
+ description="Validate Bicep ↔ parameters.json parameter mappings.",
+ )
+ parser.add_argument(
+ "--bicep",
+ type=Path,
+ help="Path to a specific Bicep template.",
+ )
+ parser.add_argument(
+ "--params",
+ type=Path,
+ help="Path to a specific parameters JSON file.",
+ )
+ parser.add_argument(
+ "--dir",
+ type=Path,
+ help="Directory to scan for *.parameters.json files (auto-discovers pairs).",
+ )
+ parser.add_argument(
+ "--strict",
+ action="store_true",
+ help="Exit with code 1 if any errors are found.",
+ )
+ parser.add_argument(
+ "--no-color",
+ action="store_true",
+ help="Disable colored output (useful for CI logs).",
+ )
+ parser.add_argument(
+ "--json-output",
+ type=Path,
+ help="Write results as JSON to the given file path.",
+ )
+ args = parser.parse_args()
+
+ results: list[ValidationResult] = []
+
+ if args.bicep and args.params:
+ results.append(validate_pair(args.bicep, args.params))
+ elif args.dir:
+ pairs = discover_pairs(args.dir)
+ if not pairs:
+ print(f"No (bicep, parameters.json) pairs found under {args.dir}")
+ return 0
+ for bicep_path, params_path in pairs:
+ results.append(validate_pair(bicep_path, params_path))
+ else:
+ parser.error("Provide either --bicep/--params or --dir.")
+
+ print_report(results, use_color=not args.no_color)
+
+ # Optional JSON output for CI artifact consumption
+ if args.json_output:
+ json_data = []
+ for r in results:
+ for issue in r.issues:
+ json_data.append({
+ "severity": issue.severity,
+ "paramFile": issue.param_file,
+ "bicepFile": issue.bicep_file,
+ "paramName": issue.param_name,
+ "message": issue.message,
+ })
+ args.json_output.parent.mkdir(parents=True, exist_ok=True)
+ args.json_output.write_text(
+ json.dumps(json_data, indent=2), encoding="utf-8"
+ )
+ print(f"\nJSON report written to {args.json_output}")
+
+ has_errors = any(r.has_errors for r in results)
+ return 1 if args.strict and has_errors else 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/src/frontend/.dockerignore b/src/App/.dockerignore
similarity index 100%
rename from src/frontend/.dockerignore
rename to src/App/.dockerignore
diff --git a/src/frontend/.env.sample b/src/App/.env.sample
similarity index 100%
rename from src/frontend/.env.sample
rename to src/App/.env.sample
diff --git a/src/frontend/.eslintrc.js b/src/App/.eslintrc.js
similarity index 100%
rename from src/frontend/.eslintrc.js
rename to src/App/.eslintrc.js
diff --git a/src/frontend/.gitignore b/src/App/.gitignore
similarity index 100%
rename from src/frontend/.gitignore
rename to src/App/.gitignore
diff --git a/src/frontend/.python-version b/src/App/.python-version
similarity index 100%
rename from src/frontend/.python-version
rename to src/App/.python-version
diff --git a/src/frontend/Dockerfile b/src/App/Dockerfile
similarity index 100%
rename from src/frontend/Dockerfile
rename to src/App/Dockerfile
diff --git a/src/frontend/README.md b/src/App/README.md
similarity index 100%
rename from src/frontend/README.md
rename to src/App/README.md
diff --git a/src/frontend/frontend_server.py b/src/App/frontend_server.py
similarity index 100%
rename from src/frontend/frontend_server.py
rename to src/App/frontend_server.py
diff --git a/src/frontend/index.html b/src/App/index.html
similarity index 100%
rename from src/frontend/index.html
rename to src/App/index.html
diff --git a/src/frontend/migration-commands.txt b/src/App/migration-commands.txt
similarity index 100%
rename from src/frontend/migration-commands.txt
rename to src/App/migration-commands.txt
diff --git a/src/frontend/package-lock.json b/src/App/package-lock.json
similarity index 50%
rename from src/frontend/package-lock.json
rename to src/App/package-lock.json
index e252664aa..82267ea6c 100644
--- a/src/frontend/package-lock.json
+++ b/src/App/package-lock.json
@@ -11,6 +11,7 @@
"@fluentui/merge-styles": "^8.6.14",
"@fluentui/react-components": "^9.64.0",
"@fluentui/react-icons": "^2.0.300",
+ "@reduxjs/toolkit": "^2.11.2",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.3.0",
@@ -19,10 +20,10 @@
"@types/node": "^16.18.126",
"@types/react": "^18.3.23",
"@types/react-dom": "^18.3.7",
- "axios": "^1.13.5",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-markdown": "^10.1.0",
+ "react-redux": "^9.2.0",
"react-router-dom": "^7.12.0",
"rehype-prism": "^2.3.3",
"remark-gfm": "^4.0.1",
@@ -40,20 +41,16 @@
"jsdom": "^26.1.0",
"rollup": "^4.59.0",
"typescript": "^5.8.3",
- "vite": "^7.1.2",
+ "vite": "7.1.11",
"vitest": "^3.2.4"
}
},
"node_modules/@adobe/css-tools": {
"version": "4.4.4",
- "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz",
- "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==",
"license": "MIT"
},
"node_modules/@asamuzakjp/css-color": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz",
- "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -66,18 +63,14 @@
},
"node_modules/@asamuzakjp/css-color/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==",
"dev": true,
"license": "ISC"
},
"node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "version": "7.29.0",
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -86,9 +79,7 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz",
- "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==",
+ "version": "7.29.0",
"dev": true,
"license": "MIT",
"engines": {
@@ -96,21 +87,19 @@
}
},
"node_modules/@babel/core": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
- "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
+ "version": "7.29.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.3",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.28.3",
- "@babel/helpers": "^7.28.4",
- "@babel/parser": "^7.28.4",
- "@babel/template": "^7.27.2",
- "@babel/traverse": "^7.28.4",
- "@babel/types": "^7.28.4",
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helpers": "^7.28.6",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/traverse": "^7.29.0",
+ "@babel/types": "^7.29.0",
"@jridgewell/remapping": "^2.3.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
@@ -128,8 +117,6 @@
},
"node_modules/@babel/core/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -137,14 +124,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
- "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
+ "version": "7.29.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.3",
- "@babel/types": "^7.28.2",
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -154,13 +139,11 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
- "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "version": "7.28.6",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.27.2",
+ "@babel/compat-data": "^7.28.6",
"@babel/helper-validator-option": "^7.27.1",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
@@ -172,8 +155,6 @@
},
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -182,8 +163,6 @@
},
"node_modules/@babel/helper-globals": {
"version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
- "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -191,29 +170,25 @@
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
- "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "version": "7.28.6",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
- "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "version": "7.28.6",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.28.3"
+ "@babel/helper-module-imports": "^7.28.6",
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/traverse": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -223,9 +198,7 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
- "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "version": "7.28.6",
"dev": true,
"license": "MIT",
"engines": {
@@ -234,8 +207,6 @@
},
"node_modules/@babel/helper-string-parser": {
"version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
- "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -243,9 +214,7 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
- "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "version": "7.28.5",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -253,8 +222,6 @@
},
"node_modules/@babel/helper-validator-option": {
"version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
- "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -262,27 +229,23 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
- "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "version": "7.29.2",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.4"
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
- "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
+ "version": "7.29.2",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.28.4"
+ "@babel/types": "^7.29.0"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -293,8 +256,6 @@
},
"node_modules/@babel/plugin-transform-react-jsx-self": {
"version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
- "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -309,8 +270,6 @@
},
"node_modules/@babel/plugin-transform-react-jsx-source": {
"version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
- "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -324,42 +283,36 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
- "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
+ "version": "7.29.2",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/template": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
- "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "version": "7.28.6",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/parser": "^7.27.2",
- "@babel/types": "^7.27.1"
+ "@babel/code-frame": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz",
- "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==",
+ "version": "7.29.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.3",
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
"@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.4",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.4",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0",
"debug": "^4.3.1"
},
"engines": {
@@ -367,14 +320,12 @@
}
},
"node_modules/@babel/types": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
- "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
+ "version": "7.29.0",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1"
+ "@babel/helper-validator-identifier": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@@ -382,8 +333,6 @@
},
"node_modules/@csstools/color-helpers": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
- "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==",
"dev": true,
"funding": [
{
@@ -402,8 +351,6 @@
},
"node_modules/@csstools/css-calc": {
"version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
- "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
"dev": true,
"funding": [
{
@@ -426,8 +373,6 @@
},
"node_modules/@csstools/css-color-parser": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz",
- "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==",
"dev": true,
"funding": [
{
@@ -454,8 +399,6 @@
},
"node_modules/@csstools/css-parser-algorithms": {
"version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
- "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
"dev": true,
"funding": [
{
@@ -477,8 +420,6 @@
},
"node_modules/@csstools/css-tokenizer": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
- "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
"dev": true,
"funding": [
{
@@ -497,8 +438,6 @@
},
"node_modules/@ctrl/tinycolor": {
"version": "3.6.1",
- "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
- "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
"license": "MIT",
"engines": {
"node": ">=10"
@@ -506,14 +445,12 @@
},
"node_modules/@emotion/hash": {
"version": "0.9.2",
- "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
- "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==",
"license": "MIT"
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
- "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
"cpu": [
"ppc64"
],
@@ -528,9 +465,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
- "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
"cpu": [
"arm"
],
@@ -545,9 +482,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
- "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
"cpu": [
"arm64"
],
@@ -562,9 +499,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
- "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
"cpu": [
"x64"
],
@@ -579,9 +516,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
- "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
"cpu": [
"arm64"
],
@@ -596,9 +533,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
- "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
"cpu": [
"x64"
],
@@ -613,9 +550,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
- "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
"cpu": [
"arm64"
],
@@ -630,9 +567,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
- "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
"cpu": [
"x64"
],
@@ -647,9 +584,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
- "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
"cpu": [
"arm"
],
@@ -664,9 +601,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
- "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
"cpu": [
"arm64"
],
@@ -681,9 +618,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
- "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
"cpu": [
"ia32"
],
@@ -698,9 +635,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
- "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
"cpu": [
"loong64"
],
@@ -715,9 +652,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
- "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
"cpu": [
"mips64el"
],
@@ -732,9 +669,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
- "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
"cpu": [
"ppc64"
],
@@ -749,9 +686,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
- "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
"cpu": [
"riscv64"
],
@@ -766,9 +703,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
- "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
"cpu": [
"s390x"
],
@@ -783,9 +720,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
- "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
"cpu": [
"x64"
],
@@ -800,9 +737,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
- "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
"cpu": [
"arm64"
],
@@ -817,9 +754,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
- "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
"cpu": [
"x64"
],
@@ -834,9 +771,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
- "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
"cpu": [
"arm64"
],
@@ -851,9 +788,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
- "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
"cpu": [
"x64"
],
@@ -868,9 +805,9 @@
}
},
"node_modules/@esbuild/openharmony-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
- "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
+ "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
"cpu": [
"arm64"
],
@@ -885,9 +822,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
- "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
"cpu": [
"x64"
],
@@ -902,9 +839,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
- "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
"cpu": [
"arm64"
],
@@ -919,9 +856,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
- "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
"cpu": [
"ia32"
],
@@ -936,9 +873,7 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
- "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
+ "version": "0.25.12",
"cpu": [
"x64"
],
@@ -953,9 +888,7 @@
}
},
"node_modules/@eslint-community/eslint-utils": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
- "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
+ "version": "4.9.1",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -972,9 +905,7 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.12.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
- "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+ "version": "4.12.2",
"dev": true,
"license": "MIT",
"engines": {
@@ -983,8 +914,6 @@
},
"node_modules/@eslint/eslintrc": {
"version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1007,8 +936,6 @@
},
"node_modules/@eslint/js": {
"version": "8.57.1",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
- "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1016,43 +943,33 @@
}
},
"node_modules/@floating-ui/core": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz",
- "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==",
+ "version": "1.7.5",
"license": "MIT",
"dependencies": {
- "@floating-ui/utils": "^0.2.10"
+ "@floating-ui/utils": "^0.2.11"
}
},
"node_modules/@floating-ui/devtools": {
"version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@floating-ui/devtools/-/devtools-0.2.3.tgz",
- "integrity": "sha512-ZTcxTvgo9CRlP7vJV62yCxdqmahHTGpSTi5QaTDgGoyQq0OyjaVZhUhXv/qdkQFOI3Sxlfmz0XGG4HaZMsDf8Q==",
"license": "MIT",
"peerDependencies": {
"@floating-ui/dom": "^1.0.0"
}
},
"node_modules/@floating-ui/dom": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz",
- "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
+ "version": "1.7.6",
"license": "MIT",
"dependencies": {
- "@floating-ui/core": "^1.7.3",
- "@floating-ui/utils": "^0.2.10"
+ "@floating-ui/core": "^1.7.5",
+ "@floating-ui/utils": "^0.2.11"
}
},
"node_modules/@floating-ui/utils": {
- "version": "0.2.10",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
- "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
+ "version": "0.2.11",
"license": "MIT"
},
"node_modules/@fluentui/keyboard-keys": {
"version": "9.0.8",
- "resolved": "https://registry.npmjs.org/@fluentui/keyboard-keys/-/keyboard-keys-9.0.8.tgz",
- "integrity": "sha512-iUSJUUHAyTosnXK8O2Ilbfxma+ZyZPMua5vB028Ys96z80v+LFwntoehlFsdH3rMuPsA8GaC1RE7LMezwPBPdw==",
"license": "MIT",
"dependencies": {
"@swc/helpers": "^0.5.1"
@@ -1060,8 +977,6 @@
},
"node_modules/@fluentui/merge-styles": {
"version": "8.6.14",
- "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.6.14.tgz",
- "integrity": "sha512-vghuHFAfQgS9WLIIs4kgDOCh/DHd5vGIddP4/bzposhlAVLZR6wUBqldm9AuCdY88r5LyCRMavVJLV+Up3xdvA==",
"license": "MIT",
"dependencies": {
"@fluentui/set-version": "^8.2.24",
@@ -1069,1551 +984,1423 @@
}
},
"node_modules/@fluentui/priority-overflow": {
- "version": "9.1.15",
- "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.1.15.tgz",
- "integrity": "sha512-/3jPBBq64hRdA416grVj+ZeMBUIaKZk2S5HiRg7CKCAV1JuyF84Do0rQI6ns8Vb9XOGuc4kurMcL/UEftoEVrg==",
+ "version": "9.3.0",
"license": "MIT",
"dependencies": {
"@swc/helpers": "^0.5.1"
}
},
"node_modules/@fluentui/react-accordion": {
- "version": "9.8.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.8.5.tgz",
- "integrity": "sha512-e3RNtrzTgTRSwueOaxjQimG3u8QQUa8EiTIpRThadedleVtS0KWfuvSv2/EKUL85I6toaTthOFFuJRpP6C9Frw==",
+ "version": "9.10.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-context-selector": "^9.2.6",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-context-selector": "^9.2.15",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-motion": "^9.10.3",
- "@fluentui/react-motion-components-preview": "^0.9.0",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-motion-components-preview": "^0.15.3",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-alert": {
- "version": "9.0.0-beta.124",
- "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.124.tgz",
- "integrity": "sha512-yFBo3B5H9hnoaXxlkuz8wRz04DEyQ+ElYA/p5p+Vojf19Zuta8DmFZZ6JtWdtxcdnnQ4LvAfC5OYYlzdReozPA==",
+ "version": "9.0.0-beta.138",
"license": "MIT",
"dependencies": {
- "@fluentui/react-avatar": "^9.6.29",
- "@fluentui/react-button": "^9.3.83",
+ "@fluentui/react-avatar": "^9.11.0",
+ "@fluentui/react-button": "^9.9.0",
"@fluentui/react-icons": "^2.0.239",
- "@fluentui/react-jsx-runtime": "^9.0.39",
- "@fluentui/react-tabster": "^9.21.5",
- "@fluentui/react-theme": "^9.1.19",
- "@fluentui/react-utilities": "^9.18.10",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-aria": {
- "version": "9.16.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.16.4.tgz",
- "integrity": "sha512-ent+vc93+6EAeg26tnZMoRp8lIJtfFMbKFAa0WvZGbN5jU24NQUniJCdXcsfrmVCQ2hHophQDvUSwGhPkABURw==",
+ "version": "9.17.10",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-utilities": "^9.24.0",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-utilities": "^9.26.2",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-avatar": {
- "version": "9.9.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.9.5.tgz",
- "integrity": "sha512-xl1oewoY7dtNCyEuhghJCzHF1RVARZdtVsuleMvI9TZuyjoKuXyOzaLSyFhh1lXGkcrSsS3JtrVrTVFyR2u/wg==",
+ "version": "9.11.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-badge": "^9.4.4",
- "@fluentui/react-context-selector": "^9.2.6",
+ "@fluentui/react-badge": "^9.5.1",
+ "@fluentui/react-context-selector": "^9.2.15",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-popover": "^9.12.5",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-tooltip": "^9.8.4",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-popover": "^9.14.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-tooltip": "^9.10.0",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-badge": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.4.4.tgz",
- "integrity": "sha512-XfAwIweS9ypwkNsWfEApM6xLAqAJjgC4Vb31owRqUBGu+IKlKDLqhNKQPyTLVb8Ql+okiEFu7tZellCRr5K1Uw==",
+ "version": "9.5.1",
"license": "MIT",
"dependencies": {
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-breadcrumb": {
- "version": "9.3.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.3.5.tgz",
- "integrity": "sha512-AkBMEo1L81wH5UYTQs6QqOFiAbAF9xrA6V7CDSfzOO0yBAlQH5N4DD6b+Q8dEDBWPfUmy15VzYVmhQosm4Tztg==",
+ "version": "9.4.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-button": "^9.6.5",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-button": "^9.9.0",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-link": "^9.6.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-link": "^9.8.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-button": {
- "version": "9.6.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.6.5.tgz",
- "integrity": "sha512-UMhGNn82rhz4o9dAVVG/4OUI7XjZlUW4F2u8BkSh0RAUD+d3wQn4EFYSF7/VbLvdq+dgLIaCTUMkd1UerDRvYw==",
+ "version": "9.9.0",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-aria": "^9.16.4",
+ "@fluentui/react-aria": "^9.17.10",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-card": {
- "version": "9.4.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.4.5.tgz",
- "integrity": "sha512-MFsbbT38AzjvAdvFlPGetPV01FJTlPf3cC/UiKmR4nhZg2ss2H4+jh0p4Y/xHSCUUe5Q5nMtVX0+xSUrEt+Lig==",
+ "version": "9.6.0",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-text": "^9.6.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-text": "^9.6.15",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-carousel": {
- "version": "9.8.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-carousel/-/react-carousel-9.8.5.tgz",
- "integrity": "sha512-mSgUvznEzBGhJ3PRX8BQGILbD/C0UiKul0Ry79h3y/0A8TGm8wVFDzXOH0QQsugOio4JpUamm/fDApHodsMVmw==",
+ "version": "9.9.6",
"license": "MIT",
"dependencies": {
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-button": "^9.6.5",
- "@fluentui/react-context-selector": "^9.2.6",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-button": "^9.9.0",
+ "@fluentui/react-context-selector": "^9.2.15",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-tooltip": "^9.8.4",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-tooltip": "^9.10.0",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1",
"embla-carousel": "^8.5.1",
"embla-carousel-autoplay": "^8.5.1",
"embla-carousel-fade": "^8.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-checkbox": {
- "version": "9.5.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.5.4.tgz",
- "integrity": "sha512-1OcjlGAOhtv67aUcHHXCFFO2Phmps30NcagQX1PhDjQNWCQa8k3de6obpgTNfLvD6EA8K0Yz+x4BkpwK11DxGQ==",
+ "version": "9.6.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-field": "^9.4.4",
+ "@fluentui/react-field": "^9.5.0",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-label": "^9.3.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-label": "^9.4.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-color-picker": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-color-picker/-/react-color-picker-9.2.4.tgz",
- "integrity": "sha512-LjjwfUvD0TyWTJnAIZgpgDwLj3HtBGcW4ZlM0AllJN8q3RnxnEA5ygFrhB2bFjOc6a4ijCavKEU5ZfdtmS+Kpg==",
+ "version": "9.2.15",
"license": "MIT",
"dependencies": {
"@ctrl/tinycolor": "^3.3.4",
- "@fluentui/react-context-selector": "^9.2.6",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-context-selector": "^9.2.15",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-combobox": {
- "version": "9.16.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.16.5.tgz",
- "integrity": "sha512-hgBru9DW1XIysbfk7RsnfhwoxQ8JpaAFoPZF16sAtkM2W+WpBYWcHHnYHbntCos1TB2yDKCdOfkQDaHwgOUeQw==",
+ "version": "9.17.0",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-context-selector": "^9.2.6",
- "@fluentui/react-field": "^9.4.4",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-context-selector": "^9.2.15",
+ "@fluentui/react-field": "^9.5.0",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-portal": "^9.8.1",
- "@fluentui/react-positioning": "^9.20.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-portal": "^9.8.11",
+ "@fluentui/react-positioning": "^9.22.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-components": {
- "version": "9.69.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.69.0.tgz",
- "integrity": "sha512-iw6gZVdAMPgPLbAwwAcA+2wRfeHdV27tRMPfrNYnFlXMAYfcXQvWjxeD8XTL5j2PYfOhRJjnWvjL0srJjjMcfA==",
- "license": "MIT",
- "dependencies": {
- "@fluentui/react-accordion": "^9.8.5",
- "@fluentui/react-alert": "9.0.0-beta.124",
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-avatar": "^9.9.5",
- "@fluentui/react-badge": "^9.4.4",
- "@fluentui/react-breadcrumb": "^9.3.5",
- "@fluentui/react-button": "^9.6.5",
- "@fluentui/react-card": "^9.4.5",
- "@fluentui/react-carousel": "^9.8.5",
- "@fluentui/react-checkbox": "^9.5.4",
- "@fluentui/react-color-picker": "^9.2.4",
- "@fluentui/react-combobox": "^9.16.5",
- "@fluentui/react-dialog": "^9.15.0",
- "@fluentui/react-divider": "^9.4.4",
- "@fluentui/react-drawer": "^9.10.0",
- "@fluentui/react-field": "^9.4.4",
- "@fluentui/react-image": "^9.3.4",
- "@fluentui/react-infobutton": "9.0.0-beta.102",
- "@fluentui/react-infolabel": "^9.4.5",
- "@fluentui/react-input": "^9.7.4",
- "@fluentui/react-label": "^9.3.4",
- "@fluentui/react-link": "^9.6.4",
- "@fluentui/react-list": "^9.5.0",
- "@fluentui/react-menu": "^9.19.5",
- "@fluentui/react-message-bar": "^9.6.5",
- "@fluentui/react-motion": "^9.10.3",
- "@fluentui/react-nav": "^9.3.5",
- "@fluentui/react-overflow": "^9.5.5",
- "@fluentui/react-persona": "^9.5.5",
- "@fluentui/react-popover": "^9.12.5",
- "@fluentui/react-portal": "^9.8.1",
- "@fluentui/react-positioning": "^9.20.4",
- "@fluentui/react-progress": "^9.4.4",
- "@fluentui/react-provider": "^9.22.4",
- "@fluentui/react-radio": "^9.5.4",
- "@fluentui/react-rating": "^9.3.4",
- "@fluentui/react-search": "^9.3.4",
- "@fluentui/react-select": "^9.4.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-skeleton": "^9.4.4",
- "@fluentui/react-slider": "^9.5.4",
- "@fluentui/react-spinbutton": "^9.5.4",
- "@fluentui/react-spinner": "^9.7.4",
- "@fluentui/react-swatch-picker": "^9.4.4",
- "@fluentui/react-switch": "^9.4.4",
- "@fluentui/react-table": "^9.18.5",
- "@fluentui/react-tabs": "^9.10.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-tag-picker": "^9.7.5",
- "@fluentui/react-tags": "^9.7.5",
- "@fluentui/react-teaching-popover": "^9.6.5",
- "@fluentui/react-text": "^9.6.4",
- "@fluentui/react-textarea": "^9.6.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-toast": "^9.7.0",
- "@fluentui/react-toolbar": "^9.6.5",
- "@fluentui/react-tooltip": "^9.8.4",
- "@fluentui/react-tree": "^9.13.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@fluentui/react-virtualizer": "9.0.0-alpha.102",
- "@griffel/react": "^1.5.22",
+ "version": "9.73.7",
+ "license": "MIT",
+ "dependencies": {
+ "@fluentui/react-accordion": "^9.10.0",
+ "@fluentui/react-alert": "9.0.0-beta.138",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-avatar": "^9.11.0",
+ "@fluentui/react-badge": "^9.5.1",
+ "@fluentui/react-breadcrumb": "^9.4.0",
+ "@fluentui/react-button": "^9.9.0",
+ "@fluentui/react-card": "^9.6.0",
+ "@fluentui/react-carousel": "^9.9.6",
+ "@fluentui/react-checkbox": "^9.6.0",
+ "@fluentui/react-color-picker": "^9.2.15",
+ "@fluentui/react-combobox": "^9.17.0",
+ "@fluentui/react-dialog": "^9.17.3",
+ "@fluentui/react-divider": "^9.7.0",
+ "@fluentui/react-drawer": "^9.11.6",
+ "@fluentui/react-field": "^9.5.0",
+ "@fluentui/react-image": "^9.4.0",
+ "@fluentui/react-infobutton": "9.0.0-beta.114",
+ "@fluentui/react-infolabel": "^9.4.19",
+ "@fluentui/react-input": "^9.8.1",
+ "@fluentui/react-label": "^9.4.0",
+ "@fluentui/react-link": "^9.8.0",
+ "@fluentui/react-list": "^9.6.13",
+ "@fluentui/react-menu": "^9.24.0",
+ "@fluentui/react-message-bar": "^9.6.23",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-nav": "^9.3.23",
+ "@fluentui/react-overflow": "^9.7.1",
+ "@fluentui/react-persona": "^9.7.2",
+ "@fluentui/react-popover": "^9.14.1",
+ "@fluentui/react-portal": "^9.8.11",
+ "@fluentui/react-positioning": "^9.22.0",
+ "@fluentui/react-progress": "^9.5.0",
+ "@fluentui/react-provider": "^9.22.15",
+ "@fluentui/react-radio": "^9.6.1",
+ "@fluentui/react-rating": "^9.4.0",
+ "@fluentui/react-search": "^9.4.1",
+ "@fluentui/react-select": "^9.5.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-skeleton": "^9.7.1",
+ "@fluentui/react-slider": "^9.6.1",
+ "@fluentui/react-spinbutton": "^9.6.1",
+ "@fluentui/react-spinner": "^9.8.1",
+ "@fluentui/react-swatch-picker": "^9.5.1",
+ "@fluentui/react-switch": "^9.7.1",
+ "@fluentui/react-table": "^9.19.14",
+ "@fluentui/react-tabs": "^9.12.0",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-tag-picker": "^9.8.5",
+ "@fluentui/react-tags": "^9.8.0",
+ "@fluentui/react-teaching-popover": "^9.6.20",
+ "@fluentui/react-text": "^9.6.15",
+ "@fluentui/react-textarea": "^9.7.1",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-toast": "^9.7.16",
+ "@fluentui/react-toolbar": "^9.7.7",
+ "@fluentui/react-tooltip": "^9.10.0",
+ "@fluentui/react-tree": "^9.15.16",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@fluentui/react-virtualizer": "9.0.0-alpha.111",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-context-selector": {
- "version": "9.2.6",
- "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.2.6.tgz",
- "integrity": "sha512-AskFoj248mH8USB/GfXRxj4PbVETVg+T1Xl+uVS6owYchVqkDDHW3oYnZdOTY/rMf1hxOUJhcC3GtXP0JRFdbg==",
+ "version": "9.2.15",
"license": "MIT",
"dependencies": {
- "@fluentui/react-utilities": "^9.24.0",
+ "@fluentui/react-utilities": "^9.26.2",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0",
- "scheduler": ">=0.19.0 <=0.23.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0",
+ "scheduler": ">=0.19.0"
}
},
"node_modules/@fluentui/react-dialog": {
- "version": "9.15.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.15.0.tgz",
- "integrity": "sha512-sB8ilho8af0QW+pekkBJRpXaZvh1CQkEUOUdB0UhGWlH0zuRdl3gbMujjh06anVJgeo6bT2yomlG2YPjVLv9Rg==",
+ "version": "9.17.3",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-context-selector": "^9.2.6",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-context-selector": "^9.2.15",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-motion": "^9.10.3",
- "@fluentui/react-motion-components-preview": "^0.9.0",
- "@fluentui/react-portal": "^9.8.1",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-motion-components-preview": "^0.15.3",
+ "@fluentui/react-portal": "^9.8.11",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-divider": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.4.4.tgz",
- "integrity": "sha512-Hg61v5YSh02H/fQJdfkzpqkrrupXIdzfbnRczCsjl5r9W2sqlO0STC100/SCmxtLoZN5208tM268NIPGfQLArw==",
+ "version": "9.7.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-drawer": {
- "version": "9.10.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.10.0.tgz",
- "integrity": "sha512-yoTJGoH6jgL2/Nu3wfJptbMZdGnHhUh4cOKESTiiSjCmVgmr56gGFzMjAICek1YLtrnxGBEAJngkOpyQFNHQtw==",
- "license": "MIT",
- "dependencies": {
- "@fluentui/react-dialog": "^9.15.0",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-motion": "^9.10.3",
- "@fluentui/react-portal": "^9.8.1",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "version": "9.11.6",
+ "license": "MIT",
+ "dependencies": {
+ "@fluentui/react-dialog": "^9.17.3",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-motion-components-preview": "^0.15.3",
+ "@fluentui/react-portal": "^9.8.11",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-field": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.4.4.tgz",
- "integrity": "sha512-JtW3faTdKIE/d/mum9ZDkiC6vyip7h5rLa7zhIQ/Eek0JR2vHZwta8BODxY0Mwvga/xTK9aC3fNo/FcXSoL3Rg==",
+ "version": "9.5.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-context-selector": "^9.2.6",
+ "@fluentui/react-context-selector": "^9.2.15",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-label": "^9.3.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-label": "^9.4.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-icons": {
- "version": "2.0.309",
- "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.309.tgz",
- "integrity": "sha512-rxR1iTh7FfVuFzyaLym0NLzAkfR+dVo2M53qv1uISYUvoZUGoTUazECTPmRXnMb33vtHuf6VT/quQyhCrLCmlA==",
+ "version": "2.0.323",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.323.tgz",
+ "integrity": "sha512-BWFvdg8Er3668fri7o5RVqdfDO3jIg0OvJmUl5EWg6lO7TeC8A+OTggjzqO+J062ONaHPHpQ9IHbnYQ+QXGwXg==",
"license": "MIT",
"dependencies": {
- "@griffel/react": "^1.0.0",
+ "@griffel/react": "^1.6.1",
"tslib": "^2.1.0"
},
"peerDependencies": {
- "react": ">=16.8.0 <19.0.0"
+ "react": ">=16.8.0 <20.0.0"
}
},
"node_modules/@fluentui/react-image": {
- "version": "9.3.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.3.4.tgz",
- "integrity": "sha512-wtRE7D+1Td9Ha5asRxDuUCIGfx75ilIWgZDws2MQoZrVo05iSAf3F+Ylv+MuiQ2p8N46n8gGyUBNmyFwfWUfKA==",
+ "version": "9.4.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-infobutton": {
- "version": "9.0.0-beta.102",
- "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.102.tgz",
- "integrity": "sha512-3kA4F0Vga8Ds6JGlBajLCCDOo/LmPuS786Wg7ui4ZTDYVIMzy1yp2XuVcZniifBFvEp0HQCUoDPWUV0VI3FfzQ==",
+ "version": "9.0.0-beta.114",
"license": "MIT",
"dependencies": {
"@fluentui/react-icons": "^2.0.237",
- "@fluentui/react-jsx-runtime": "^9.0.36",
- "@fluentui/react-label": "^9.1.68",
- "@fluentui/react-popover": "^9.9.6",
- "@fluentui/react-tabster": "^9.21.0",
- "@fluentui/react-theme": "^9.1.19",
- "@fluentui/react-utilities": "^9.18.7",
- "@griffel/react": "^1.5.14",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-label": "^9.4.0",
+ "@fluentui/react-popover": "^9.14.1",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-infolabel": {
- "version": "9.4.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.4.5.tgz",
- "integrity": "sha512-sjUPSt1VeBkvHIn+Iq3LL+KXwrzLGANkR2MC80+OJNn59tk3jVFkcnlPxWYWnOD/Zlpl6SqIlKnzrVQGfIxxvA==",
+ "version": "9.4.19",
"license": "MIT",
"dependencies": {
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-label": "^9.3.4",
- "@fluentui/react-popover": "^9.12.5",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-label": "^9.4.0",
+ "@fluentui/react-popover": "^9.14.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.8.0 <19.0.0",
- "@types/react-dom": ">=16.8.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.8.0 <19.0.0"
+ "@types/react": ">=16.8.0 <20.0.0",
+ "@types/react-dom": ">=16.8.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.8.0 <20.0.0"
}
},
"node_modules/@fluentui/react-input": {
- "version": "9.7.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.7.4.tgz",
- "integrity": "sha512-ZNhM5xKckA39O3g6LjwoZCqy8kopFQ1ujfwxl0D60fEDMBwUYoK2NR1Zr/pEF9ItuhKlIN9fs1F/Hqay7fnYDw==",
+ "version": "9.8.1",
"license": "MIT",
"dependencies": {
- "@fluentui/react-field": "^9.4.4",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-field": "^9.5.0",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-jsx-runtime": {
- "version": "9.1.6",
- "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.1.6.tgz",
- "integrity": "sha512-ClaksavUB9CPRPuMKxtsjVCg+N95jMt3Oi5RBGY4dAMxwaERpweQPv5CCuZzOq4Ybp4FpAXwK1jGNZzXizvfaA==",
+ "version": "9.4.1",
"license": "MIT",
"dependencies": {
- "@fluentui/react-utilities": "^9.24.0",
- "@swc/helpers": "^0.5.1",
- "react-is": "^17.0.2"
+ "@fluentui/react-utilities": "^9.26.2",
+ "@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-label": {
- "version": "9.3.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.3.4.tgz",
- "integrity": "sha512-oBdN3J5qFuiS57eCk+rXEYg+zt/7Mgt7SqxQlJzkU8uzlj5J5B+IjITlADOEYjuG0QDzhNA4/et2AX8c8kA55Q==",
+ "version": "9.4.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-link": {
- "version": "9.6.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.6.4.tgz",
- "integrity": "sha512-jmn/lkDt31bE8ZMgPQ9ZCeUeHJ7fL28HelOj8Mod9lhTfykyFESzWjd3oJQ0FSKta5I1oqwrBcxa4dIuDM2sfw==",
+ "version": "9.8.0",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-list": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-list/-/react-list-9.5.0.tgz",
- "integrity": "sha512-iJIq5DNxRDog2AFror7d/7q7mzTcVnjejfF4ZhpIZW0hYOzpeVsZvCWilvg96ItvXgNApM3F369ZLLs1Q3uUIQ==",
+ "version": "9.6.13",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-checkbox": "^9.5.4",
- "@fluentui/react-context-selector": "^9.2.6",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-checkbox": "^9.6.0",
+ "@fluentui/react-context-selector": "^9.2.15",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.8.0 <19.0.0",
- "@types/react-dom": ">=16.8.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.8.0 <19.0.0"
+ "@types/react": ">=16.8.0 <20.0.0",
+ "@types/react-dom": ">=16.8.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.8.0 <20.0.0"
}
},
"node_modules/@fluentui/react-menu": {
- "version": "9.19.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.19.5.tgz",
- "integrity": "sha512-+tvO4m8DB0NBPnFedcpCvmNJVmC/6VQd2Gzn8VIqJOBVnm1xRQ85YjH7d8CK1FKdW26JhYAAj8pVIh8k+mLseA==",
+ "version": "9.24.0",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-context-selector": "^9.2.6",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-context-selector": "^9.2.15",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-portal": "^9.8.1",
- "@fluentui/react-positioning": "^9.20.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-motion-components-preview": "^0.15.3",
+ "@fluentui/react-portal": "^9.8.11",
+ "@fluentui/react-positioning": "^9.22.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-message-bar": {
- "version": "9.6.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.6.5.tgz",
- "integrity": "sha512-YpCaYxN4Y0sFalk1GZ1L4MXSGLepvyON9uW1PVeWS89XQlWGPCSSEhFTUjWrQJar2wsJ8kv/LKreQb87mCYolg==",
+ "version": "9.6.23",
"license": "MIT",
"dependencies": {
- "@fluentui/react-button": "^9.6.5",
+ "@fluentui/react-button": "^9.9.0",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-link": "^9.6.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
- "@swc/helpers": "^0.5.1",
- "react-transition-group": "^4.4.1"
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-link": "^9.8.0",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-motion-components-preview": "^0.15.3",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
+ "@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.8.0 <19.0.0",
- "@types/react-dom": ">=16.8.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.8.0 <19.0.0"
+ "@types/react": ">=16.8.0 <20.0.0",
+ "@types/react-dom": ">=16.8.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.8.0 <20.0.0"
}
},
"node_modules/@fluentui/react-motion": {
- "version": "9.10.3",
- "resolved": "https://registry.npmjs.org/@fluentui/react-motion/-/react-motion-9.10.3.tgz",
- "integrity": "sha512-0UZyBSY73wP+p2s8FQsi4XdBCuGzjZ5MXy/2oohqX3yAb8t+F7e1ID0fJym9pnwwYkGeugZUlkWfyWgFPuSQag==",
+ "version": "9.14.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-utilities": "^9.24.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-utilities": "^9.26.2",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.8.0 <19.0.0",
- "@types/react-dom": ">=16.8.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.8.0 <19.0.0"
+ "@types/react": ">=16.8.0 <20.0.0",
+ "@types/react-dom": ">=16.8.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.8.0 <20.0.0"
}
},
"node_modules/@fluentui/react-motion-components-preview": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-motion-components-preview/-/react-motion-components-preview-0.9.0.tgz",
- "integrity": "sha512-MkzDBtuZzFCW9RC7zW9e7r8AdcocpGigMQpL6gi9OYYEUDiIPSjTsitok9W0ZZ7H4gBy+p7MjG/we5JcsBCnpQ==",
+ "version": "0.15.3",
"license": "MIT",
"dependencies": {
"@fluentui/react-motion": "*",
+ "@fluentui/react-utilities": "*",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-nav": {
- "version": "9.3.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-nav/-/react-nav-9.3.5.tgz",
- "integrity": "sha512-SumdUakSW1XWmzJG7OsiNuJDAhxHWa+uNvZ/rURJTFGkwSt+a1Fi0UL1uutyMtK1U5rCBRMtrf79r3M3+DURJw==",
+ "version": "9.3.23",
"license": "MIT",
"dependencies": {
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-button": "^9.6.5",
- "@fluentui/react-context-selector": "^9.2.6",
- "@fluentui/react-divider": "^9.4.4",
- "@fluentui/react-drawer": "^9.10.0",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-button": "^9.9.0",
+ "@fluentui/react-context-selector": "^9.2.15",
+ "@fluentui/react-divider": "^9.7.0",
+ "@fluentui/react-drawer": "^9.11.6",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-motion": "^9.10.3",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-tooltip": "^9.8.4",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-motion-components-preview": "^0.15.3",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-tooltip": "^9.10.0",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-overflow": {
- "version": "9.5.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.5.5.tgz",
- "integrity": "sha512-WbG0DMJ5B7hOIYncmXjG1odS37mlldPpqm4WXpDv2IMIYzzlcI8JDk0KimrAb2/FgLrRm3vWbxZ1hyb5YjImrg==",
+ "version": "9.7.1",
"license": "MIT",
"dependencies": {
- "@fluentui/priority-overflow": "^9.1.15",
- "@fluentui/react-context-selector": "^9.2.6",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/priority-overflow": "^9.3.0",
+ "@fluentui/react-context-selector": "^9.2.15",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-persona": {
- "version": "9.5.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.5.5.tgz",
- "integrity": "sha512-s//UCtV+Vf+/ghY3+InWph1mLOOG3NxhoRzttXDSfinzLXgDzf6PUPd+FbntK8eu6RyOllnquydnLTkDLt/k/g==",
- "license": "MIT",
- "dependencies": {
- "@fluentui/react-avatar": "^9.9.5",
- "@fluentui/react-badge": "^9.4.4",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "version": "9.7.2",
+ "license": "MIT",
+ "dependencies": {
+ "@fluentui/react-avatar": "^9.11.0",
+ "@fluentui/react-badge": "^9.5.1",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-popover": {
- "version": "9.12.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.12.5.tgz",
- "integrity": "sha512-GzIkJoyzRmgz8UgVq2xhqii/trIAMLpLYbr3XrxukrkDg837OZKFcBbSbqTUSNVZ6ra4RrlGMaF4yhWHBTSs1A==",
+ "version": "9.14.1",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-context-selector": "^9.2.6",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-portal": "^9.8.1",
- "@fluentui/react-positioning": "^9.20.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-context-selector": "^9.2.15",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-motion-components-preview": "^0.15.3",
+ "@fluentui/react-portal": "^9.8.11",
+ "@fluentui/react-positioning": "^9.22.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-portal": {
- "version": "9.8.1",
- "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.8.1.tgz",
- "integrity": "sha512-PjcKGNpphryhHBtlObbBVNrsasPt6QCbTyLYfmUKR92+XQI0U92AV9fHS7sArXGP3HrXjzUDvf+rLnecRMQmcA==",
+ "version": "9.8.11",
"license": "MIT",
"dependencies": {
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-positioning": {
- "version": "9.20.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.20.4.tgz",
- "integrity": "sha512-MyldPBLO+hX0+qI2kfRZRI1hdSihgDKqpdqkl6O25PVce2SaGvvDAK72GDNOyoAApnXlVOFIEAyLSWzxjTGDbw==",
+ "version": "9.22.0",
"license": "MIT",
"dependencies": {
"@floating-ui/devtools": "^0.2.3",
"@floating-ui/dom": "^1.6.12",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1",
"use-sync-external-store": "^1.2.0"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-progress": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.4.4.tgz",
- "integrity": "sha512-53oBCjgnqKLhX3amF8UczzBajOn1iQ1li4e14IIo+pmocI6kqohUWEBX6FUyor9+gSoty47pmS1T8izxyqnaCA==",
+ "version": "9.5.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-field": "^9.4.4",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-field": "^9.5.0",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-provider": {
- "version": "9.22.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.22.4.tgz",
- "integrity": "sha512-GhNGnFtNue7ZDxZjln4NtZMon0WNgaVBwEeqk2f5v6yzaGQN6Qm6/Ke/oCVTv++weimk2Sxysy2iN+/fMG3w0Q==",
+ "version": "9.22.15",
"license": "MIT",
"dependencies": {
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
"@griffel/core": "^1.16.0",
- "@griffel/react": "^1.5.22",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-radio": {
- "version": "9.5.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.5.4.tgz",
- "integrity": "sha512-wgqNgEMUbDmiSSNG8rtYYLVmkfABZyotTGAlyUMAsE4mw4wlcsLEFhVL2LNckH4a4DR/jeJb5McatgdpX7T4+Q==",
- "license": "MIT",
- "dependencies": {
- "@fluentui/react-field": "^9.4.4",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-label": "^9.3.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "version": "9.6.1",
+ "license": "MIT",
+ "dependencies": {
+ "@fluentui/react-field": "^9.5.0",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-label": "^9.4.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-rating": {
- "version": "9.3.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-rating/-/react-rating-9.3.4.tgz",
- "integrity": "sha512-Nq1dp7tVxTPJ8arqPaQKW9Apw7clkqVH6zZc/9ssSqEQO4ap4pWZPY0omSkxwdk15jH0AKzXMGTN5eT9MfK8Kw==",
+ "version": "9.4.0",
"license": "MIT",
"dependencies": {
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.8.0 <19.0.0",
- "@types/react-dom": ">=16.8.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.8.0 <19.0.0"
+ "@types/react": ">=16.8.0 <20.0.0",
+ "@types/react-dom": ">=16.8.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.8.0 <20.0.0"
}
},
"node_modules/@fluentui/react-search": {
- "version": "9.3.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-search/-/react-search-9.3.4.tgz",
- "integrity": "sha512-l3JK18E+VQ+zZ0u9Id+xr3b1+KS8bWRVqbhU5Cm/BdtipW0pr/uzG8i5IH64pPLu9S0hfI4ROCQ2miZ5bBmO4g==",
+ "version": "9.4.1",
"license": "MIT",
"dependencies": {
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-input": "^9.7.4",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-input": "^9.8.1",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-select": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.4.4.tgz",
- "integrity": "sha512-NFAaZ1kMrMLNOqKlxkgIW66rO8RCNG3PRwbPBvHkMawupoFSiHag5r7YLxZsn1OX8HFnXz9wp083ZjWXHvEwWA==",
+ "version": "9.5.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-field": "^9.4.4",
+ "@fluentui/react-field": "^9.5.0",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-shared-contexts": {
- "version": "9.25.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.25.0.tgz",
- "integrity": "sha512-uFWi93L5ZjZACx5VA4+gbWgg6l/on3ultJpXTyFYFuox0paJbqENsPf383GKZW7UnUs08Kqry5CFC36VfqDdSg==",
+ "version": "9.26.2",
"license": "MIT",
"dependencies": {
- "@fluentui/react-theme": "^9.2.0",
+ "@fluentui/react-theme": "^9.2.1",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-skeleton": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.4.4.tgz",
- "integrity": "sha512-keXTUdweqPMffECCLoc2Fu35xxpLUNh3opGy4/ShT73YVTQgLyRTJMKv5v+y2TzujWP9T/THm+HHxe56eQBrVQ==",
+ "version": "9.7.1",
"license": "MIT",
"dependencies": {
- "@fluentui/react-field": "^9.4.4",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-field": "^9.5.0",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-slider": {
- "version": "9.5.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.5.4.tgz",
- "integrity": "sha512-AX6t49OMF/OWDN6M+gsBUu5ZAuhswLdvrnuRJY+jMHWSMitTK2DBgruNUKhpA1K5Kl0ZqFHlU8eTMti8FT6Nog==",
- "license": "MIT",
- "dependencies": {
- "@fluentui/react-field": "^9.4.4",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "version": "9.6.1",
+ "license": "MIT",
+ "dependencies": {
+ "@fluentui/react-field": "^9.5.0",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-spinbutton": {
- "version": "9.5.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.5.4.tgz",
- "integrity": "sha512-MiNih2+ds5acPXNLYufvD9pnD6z2pZH0OHATrCh6MngAdbSTC5vR2+lP9qvBj02zQ/L4nZEcuaLbd4BrP7KUpg==",
+ "version": "9.6.1",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-field": "^9.4.4",
+ "@fluentui/react-field": "^9.5.0",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-spinner": {
- "version": "9.7.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.7.4.tgz",
- "integrity": "sha512-d4HTD4TlvM4PN+J5iWOrGqcfOyoPbX+KEQbUexX/4ZBNcGPsAbHtLH4IHoQTZIYUKRurLZH1dnTgyeTjraR2HQ==",
+ "version": "9.8.1",
"license": "MIT",
"dependencies": {
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-label": "^9.3.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-label": "^9.4.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-swatch-picker": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-swatch-picker/-/react-swatch-picker-9.4.4.tgz",
- "integrity": "sha512-U0xZRd9v4C/fwlx7ux4ufY2OWCnLzClqc97r+Roeg+5FCF3ACEwocwQoA/Md/uQxqVjeIMTyxW20Ozlk4rnLYQ==",
+ "version": "9.5.1",
"license": "MIT",
"dependencies": {
- "@fluentui/react-context-selector": "^9.2.6",
- "@fluentui/react-field": "^9.4.4",
+ "@fluentui/react-context-selector": "^9.2.15",
+ "@fluentui/react-field": "^9.5.0",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.8.0 <19.0.0",
- "@types/react-dom": ">=16.8.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.8.0 <19.0.0"
+ "@types/react": ">=16.8.0 <20.0.0",
+ "@types/react-dom": ">=16.8.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.8.0 <20.0.0"
}
},
"node_modules/@fluentui/react-switch": {
- "version": "9.4.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.4.4.tgz",
- "integrity": "sha512-9DyAGW5L/cmxp6R9HNmP4SoSlzdf9oO7Z3Hbu5DoMHKTvL3hU86K84MeU1fNaDbHEkdgdVFMYt5QFbzoW/lkqw==",
+ "version": "9.7.1",
"license": "MIT",
"dependencies": {
- "@fluentui/react-field": "^9.4.4",
+ "@fluentui/react-field": "^9.5.0",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-label": "^9.3.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-label": "^9.4.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-table": {
- "version": "9.18.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.18.5.tgz",
- "integrity": "sha512-JQy7HiHiMkfi0H8u/cKui8mhRc3ESuClGSS2IRoGyCDPILRuwf1OW6h6uPMTf5DYJV5OnEwxQTM8zAjPTmZH1g==",
+ "version": "9.19.14",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-avatar": "^9.9.5",
- "@fluentui/react-checkbox": "^9.5.4",
- "@fluentui/react-context-selector": "^9.2.6",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-avatar": "^9.11.0",
+ "@fluentui/react-checkbox": "^9.6.0",
+ "@fluentui/react-context-selector": "^9.2.15",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-radio": "^9.5.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-radio": "^9.6.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-tabs": {
- "version": "9.10.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.10.0.tgz",
- "integrity": "sha512-fFHAXmOwz+ESt23CKgicvu76FzVYywcCj+/nL8xjMtulEnoNrKC1SkLwScTgeJgo+WQw2RchyG1fdFppPVz+zA==",
+ "version": "9.12.0",
"license": "MIT",
"dependencies": {
- "@fluentui/react-context-selector": "^9.2.6",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-context-selector": "^9.2.15",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-tabster": {
- "version": "9.26.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.26.4.tgz",
- "integrity": "sha512-ri/h4MHdSdTPn40isPZw1tOnB4W+wLj0EtJWDdKc49vDX8NXTmULLBDodHDsqauVJpKMw3Jw69Ccuf09S+qhTA==",
+ "version": "9.26.13",
"license": "MIT",
"dependencies": {
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1",
"keyborg": "^2.6.0",
"tabster": "^8.5.5"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-tag-picker": {
- "version": "9.7.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tag-picker/-/react-tag-picker-9.7.5.tgz",
- "integrity": "sha512-0FlRcHhk08q1fR6YkUNShqSPT+Cq9LPsTVU2nlwk0piVY2BxTbCYD+lK+qjJmJHIXUtOA1naQESRdQMmrStfYA==",
+ "version": "9.8.5",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-combobox": "^9.16.5",
- "@fluentui/react-context-selector": "^9.2.6",
- "@fluentui/react-field": "^9.4.4",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-combobox": "^9.17.0",
+ "@fluentui/react-context-selector": "^9.2.15",
+ "@fluentui/react-field": "^9.5.0",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-portal": "^9.8.1",
- "@fluentui/react-positioning": "^9.20.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-tags": "^9.7.5",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-portal": "^9.8.11",
+ "@fluentui/react-positioning": "^9.22.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-tags": "^9.8.0",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-tags": {
- "version": "9.7.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.7.5.tgz",
- "integrity": "sha512-9rJv6bHzMsEvmWJFIUwq1bgLZ7D1XZ556fOtPl9P7JU2i6gCYzkXCakHm9faUJnNw2CcKq0aw38sGJoHR7wNuA==",
+ "version": "9.8.0",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-avatar": "^9.9.5",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-avatar": "^9.11.0",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-teaching-popover": {
- "version": "9.6.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-teaching-popover/-/react-teaching-popover-9.6.5.tgz",
- "integrity": "sha512-fNSwEXRPDa5qRjgEI8vvlki279/hhCWeQyYFyJ4D4pRga8u3CGa6RI33GuUsxHO2ROOgMRFh2JJIYlG/+GMhjQ==",
+ "version": "9.6.20",
"license": "MIT",
"dependencies": {
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-button": "^9.6.5",
- "@fluentui/react-context-selector": "^9.2.6",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-button": "^9.9.0",
+ "@fluentui/react-context-selector": "^9.2.15",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-popover": "^9.12.5",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-popover": "^9.14.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1",
"use-sync-external-store": "^1.2.0"
},
"peerDependencies": {
- "@types/react": ">=16.8.0 <19.0.0",
- "@types/react-dom": ">=16.8.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.8.0 <19.0.0"
+ "@types/react": ">=16.8.0 <20.0.0",
+ "@types/react-dom": ">=16.8.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.8.0 <20.0.0"
}
},
"node_modules/@fluentui/react-text": {
- "version": "9.6.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.6.4.tgz",
- "integrity": "sha512-plHq9chCXcV9wtwNUtQYJSCTMJyEtMKHFj9s54ZS6GZOIxm/SIqsSz5ZAR25mgdn4mlyuMS+Ac3nBR83T+zVDw==",
+ "version": "9.6.15",
"license": "MIT",
"dependencies": {
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-textarea": {
- "version": "9.6.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.6.4.tgz",
- "integrity": "sha512-Gb6XkGNAiPE19cBfIkJVph3hKxubNrh5/idRQVDpQapjlRC2d8RmnNtUIlLwkiWtIdFvis0lxZuATQlDTQlnBA==",
+ "version": "9.7.1",
"license": "MIT",
"dependencies": {
- "@fluentui/react-field": "^9.4.4",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-field": "^9.5.0",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-theme": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-theme/-/react-theme-9.2.0.tgz",
- "integrity": "sha512-Q0zp/MY1m5RjlkcwMcjn/PQRT2T+q3bgxuxWbhgaD07V+tLzBhGROvuqbsdg4YWF/IK21zPfLhmGyifhEu0DnQ==",
+ "version": "9.2.1",
"license": "MIT",
"dependencies": {
- "@fluentui/tokens": "1.0.0-alpha.22",
+ "@fluentui/tokens": "1.0.0-alpha.23",
"@swc/helpers": "^0.5.1"
}
},
"node_modules/@fluentui/react-toast": {
- "version": "9.7.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.7.0.tgz",
- "integrity": "sha512-8GjhlUhKheDOEJudFCVCU9zFnXO66cAfn7xeMeIda5ZwdknD9Qh05bFLK68MRfBj9KpzfJC7tX84ztLDihVqzg==",
+ "version": "9.7.16",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-aria": "^9.16.4",
+ "@fluentui/react-aria": "^9.17.10",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-motion": "^9.10.3",
- "@fluentui/react-motion-components-preview": "^0.9.0",
- "@fluentui/react-portal": "^9.8.1",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-motion-components-preview": "^0.15.3",
+ "@fluentui/react-portal": "^9.8.11",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-toolbar": {
- "version": "9.6.5",
- "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.6.5.tgz",
- "integrity": "sha512-eHnZb2+/2AL0ZWO9dgm4IirXBgzFTCVEDT2oXMXNG49IbbZOrPo+MX+POb4gduKUdOE7STJvrgw79ePs+Q94hA==",
- "license": "MIT",
- "dependencies": {
- "@fluentui/react-button": "^9.6.5",
- "@fluentui/react-context-selector": "^9.2.6",
- "@fluentui/react-divider": "^9.4.4",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-radio": "^9.5.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "version": "9.7.7",
+ "license": "MIT",
+ "dependencies": {
+ "@fluentui/react-button": "^9.9.0",
+ "@fluentui/react-context-selector": "^9.2.15",
+ "@fluentui/react-divider": "^9.7.0",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-radio": "^9.6.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-tooltip": {
- "version": "9.8.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.8.4.tgz",
- "integrity": "sha512-Yb8kW37CmK2CI5zilYYnvVjeXKyH1S8Fdi5lXmL6sm48Vf/Ad5s8WKYGzTRq7faLN7oR2R53Z+t8g7EEGfhO2w==",
+ "version": "9.10.0",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-portal": "^9.8.1",
- "@fluentui/react-positioning": "^9.20.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-portal": "^9.8.11",
+ "@fluentui/react-positioning": "^9.22.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-tree": {
- "version": "9.13.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.13.0.tgz",
- "integrity": "sha512-UJKiZyqtqE1c2ICtUSDuTVe1bZb+i5CVOZvQrgjNiSolRKAFrLEOk7G+wOjq6X4OPwiZRp+rpkHLr6KTJ3LFsg==",
+ "version": "9.15.16",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-aria": "^9.16.4",
- "@fluentui/react-avatar": "^9.9.5",
- "@fluentui/react-button": "^9.6.5",
- "@fluentui/react-checkbox": "^9.5.4",
- "@fluentui/react-context-selector": "^9.2.6",
+ "@fluentui/react-aria": "^9.17.10",
+ "@fluentui/react-avatar": "^9.11.0",
+ "@fluentui/react-button": "^9.9.0",
+ "@fluentui/react-checkbox": "^9.6.0",
+ "@fluentui/react-context-selector": "^9.2.15",
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-jsx-runtime": "^9.1.6",
- "@fluentui/react-motion": "^9.10.3",
- "@fluentui/react-motion-components-preview": "^0.9.0",
- "@fluentui/react-radio": "^9.5.4",
- "@fluentui/react-shared-contexts": "^9.25.0",
- "@fluentui/react-tabster": "^9.26.4",
- "@fluentui/react-theme": "^9.2.0",
- "@fluentui/react-utilities": "^9.24.0",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-motion": "^9.14.0",
+ "@fluentui/react-motion-components-preview": "^0.15.3",
+ "@fluentui/react-radio": "^9.6.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-tabster": "^9.26.13",
+ "@fluentui/react-theme": "^9.2.1",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-utilities": {
- "version": "9.24.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.24.0.tgz",
- "integrity": "sha512-fIAEi62slg3YGe9nbUW4crD9KLx//eNWBVRuwEvhqJeqrbLL6dTWRAmRhmYOmzzySy+4gxHP7I/D7jl3BjeXpA==",
+ "version": "9.26.2",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
- "@fluentui/react-shared-contexts": "^9.25.0",
+ "@fluentui/react-shared-contexts": "^9.26.2",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-virtualizer": {
- "version": "9.0.0-alpha.102",
- "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.102.tgz",
- "integrity": "sha512-kt/kuAMTKTTY/00ToUlgUwUCty2HGj4Tnr+fxKRmr7Ziy5VWhi1YoNJ8vcgmxog5J90t4tS29LB0LP0KztQUVg==",
+ "version": "9.0.0-alpha.111",
"license": "MIT",
"dependencies": {
- "@fluentui/react-jsx-runtime": "^9.1.4",
- "@fluentui/react-shared-contexts": "^9.24.1",
- "@fluentui/react-utilities": "^9.23.1",
- "@griffel/react": "^1.5.22",
+ "@fluentui/react-jsx-runtime": "^9.4.1",
+ "@fluentui/react-shared-contexts": "^9.26.2",
+ "@fluentui/react-utilities": "^9.26.2",
+ "@griffel/react": "^1.5.32",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
- "@types/react": ">=16.14.0 <19.0.0",
- "@types/react-dom": ">=16.9.0 <19.0.0",
- "react": ">=16.14.0 <19.0.0",
- "react-dom": ">=16.14.0 <19.0.0"
+ "@types/react": ">=16.14.0 <20.0.0",
+ "@types/react-dom": ">=16.9.0 <20.0.0",
+ "react": ">=16.14.0 <20.0.0",
+ "react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/set-version": {
"version": "8.2.24",
- "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.24.tgz",
- "integrity": "sha512-8uNi2ThvNgF+6d3q2luFVVdk/wZV0AbRfJ85kkvf2+oSRY+f6QVK0w13vMorNhA5puumKcZniZoAfUF02w7NSg==",
"license": "MIT",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/@fluentui/tokens": {
- "version": "1.0.0-alpha.22",
- "resolved": "https://registry.npmjs.org/@fluentui/tokens/-/tokens-1.0.0-alpha.22.tgz",
- "integrity": "sha512-i9fgYyyCWFRdUi+vQwnV6hp7wpLGK4p09B+O/f2u71GBXzPuniubPYvrIJYtl444DD6shLjYToJhQ1S6XTFwLg==",
+ "version": "1.0.0-alpha.23",
"license": "MIT",
"dependencies": {
"@swc/helpers": "^0.5.1"
}
},
"node_modules/@griffel/core": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.19.2.tgz",
- "integrity": "sha512-WkB/QQkjy9dE4vrNYGhQvRRUHFkYVOuaznVOMNTDT4pS9aTJ9XPrMTXXlkpcwaf0D3vNKoerj4zAwnU2lBzbOg==",
+ "version": "1.20.1",
"license": "MIT",
"dependencies": {
"@emotion/hash": "^0.9.0",
- "@griffel/style-types": "^1.3.0",
+ "@griffel/style-types": "^1.4.0",
"csstype": "^3.1.3",
"rtl-css-js": "^1.16.1",
"stylis": "^4.2.0",
@@ -2621,12 +2408,10 @@
}
},
"node_modules/@griffel/react": {
- "version": "1.5.30",
- "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.30.tgz",
- "integrity": "sha512-1q4ojbEVFY5YA0j1NamP0WWF4BKh+GHsVugltDYeEgEaVbH3odJ7tJabuhQgY+7Nhka0pyEFWSiHJev0K3FSew==",
+ "version": "1.6.1",
"license": "MIT",
"dependencies": {
- "@griffel/core": "^1.19.2",
+ "@griffel/core": "^1.20.1",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -2634,9 +2419,7 @@
}
},
"node_modules/@griffel/style-types": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@griffel/style-types/-/style-types-1.3.0.tgz",
- "integrity": "sha512-bHwD3sUE84Xwv4dH011gOKe1jul77M1S6ZFN9Tnq8pvZ48UMdY//vtES6fv7GRS5wXYT4iqxQPBluAiYAfkpmw==",
+ "version": "1.4.0",
"license": "MIT",
"dependencies": {
"csstype": "^3.1.3"
@@ -2644,9 +2427,6 @@
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
- "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
- "deprecated": "Use @eslint/config-array instead",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -2660,8 +2440,6 @@
},
"node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -2674,16 +2452,11 @@
},
"node_modules/@humanwhocodes/object-schema": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "deprecated": "Use @eslint/object-schema instead",
"dev": true,
"license": "BSD-3-Clause"
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.13",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
- "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2693,8 +2466,6 @@
},
"node_modules/@jridgewell/remapping": {
"version": "2.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
- "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2704,8 +2475,6 @@
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2714,15 +2483,11 @@
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
- "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"dev": true,
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.30",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz",
- "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==",
+ "version": "0.3.31",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2732,8 +2497,6 @@
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2746,8 +2509,6 @@
},
"node_modules/@nodelib/fs.stat": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2756,8 +2517,6 @@
},
"node_modules/@nodelib/fs.walk": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2770,22 +2529,42 @@
},
"node_modules/@polka/url": {
"version": "1.0.0-next.29",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
- "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
"dev": true,
"license": "MIT"
},
+ "node_modules/@reduxjs/toolkit": {
+ "version": "2.11.2",
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/spec": "^1.0.0",
+ "@standard-schema/utils": "^0.3.0",
+ "immer": "^11.0.0",
+ "redux": "^5.0.1",
+ "redux-thunk": "^3.1.0",
+ "reselect": "^5.1.0"
+ },
+ "peerDependencies": {
+ "react": "^16.9.0 || ^17.0.0 || ^18 || ^19",
+ "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-redux": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@rolldown/pluginutils": {
"version": "1.0.0-beta.27",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
- "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==",
"dev": true,
"license": "MIT"
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz",
- "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz",
+ "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==",
"cpu": [
"arm"
],
@@ -2797,9 +2576,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz",
- "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz",
+ "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==",
"cpu": [
"arm64"
],
@@ -2811,9 +2590,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz",
- "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz",
+ "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==",
"cpu": [
"arm64"
],
@@ -2825,9 +2604,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz",
- "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz",
+ "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==",
"cpu": [
"x64"
],
@@ -2839,9 +2618,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz",
- "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz",
+ "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==",
"cpu": [
"arm64"
],
@@ -2853,9 +2632,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz",
- "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz",
+ "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==",
"cpu": [
"x64"
],
@@ -2867,9 +2646,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz",
- "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz",
+ "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==",
"cpu": [
"arm"
],
@@ -2881,9 +2660,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz",
- "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz",
+ "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==",
"cpu": [
"arm"
],
@@ -2895,9 +2674,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz",
- "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz",
+ "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==",
"cpu": [
"arm64"
],
@@ -2909,9 +2688,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz",
- "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz",
+ "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==",
"cpu": [
"arm64"
],
@@ -2923,9 +2702,9 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz",
- "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz",
+ "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==",
"cpu": [
"loong64"
],
@@ -2937,9 +2716,9 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz",
- "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz",
+ "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==",
"cpu": [
"loong64"
],
@@ -2951,9 +2730,9 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz",
- "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz",
+ "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==",
"cpu": [
"ppc64"
],
@@ -2965,9 +2744,9 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz",
- "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz",
+ "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==",
"cpu": [
"ppc64"
],
@@ -2979,9 +2758,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz",
- "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz",
+ "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==",
"cpu": [
"riscv64"
],
@@ -2993,9 +2772,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz",
- "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz",
+ "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==",
"cpu": [
"riscv64"
],
@@ -3007,9 +2786,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz",
- "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz",
+ "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==",
"cpu": [
"s390x"
],
@@ -3021,12 +2800,13 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.40.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz",
- "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz",
+ "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==",
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -3034,9 +2814,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz",
- "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz",
+ "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==",
"cpu": [
"x64"
],
@@ -3048,9 +2828,9 @@
]
},
"node_modules/@rollup/rollup-openbsd-x64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz",
- "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz",
+ "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==",
"cpu": [
"x64"
],
@@ -3062,9 +2842,9 @@
]
},
"node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz",
- "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz",
+ "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==",
"cpu": [
"arm64"
],
@@ -3076,9 +2856,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz",
- "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz",
+ "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==",
"cpu": [
"arm64"
],
@@ -3090,9 +2870,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz",
- "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==",
+ "version": "4.60.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz",
+ "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==",
"cpu": [
"ia32"
],
@@ -3104,9 +2884,7 @@
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz",
- "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==",
+ "version": "4.60.1",
"cpu": [
"x64"
],
@@ -3118,9 +2896,7 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz",
- "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==",
+ "version": "4.60.1",
"cpu": [
"x64"
],
@@ -3131,10 +2907,16 @@
"win32"
]
},
+ "node_modules/@standard-schema/spec": {
+ "version": "1.1.0",
+ "license": "MIT"
+ },
+ "node_modules/@standard-schema/utils": {
+ "version": "0.3.0",
+ "license": "MIT"
+ },
"node_modules/@swc/helpers": {
- "version": "0.5.17",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
- "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
+ "version": "0.5.21",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.8.0"
@@ -3142,8 +2924,6 @@
},
"node_modules/@testing-library/dom": {
"version": "10.4.1",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz",
- "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.10.4",
@@ -3160,9 +2940,7 @@
}
},
"node_modules/@testing-library/jest-dom": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.8.0.tgz",
- "integrity": "sha512-WgXcWzVM6idy5JaftTVC8Vs83NKRmGJz4Hqs4oyOuO2J4r/y79vvKZsb+CaGyCSEbUPI6OsewfPd0G1A0/TUZQ==",
+ "version": "6.9.1",
"license": "MIT",
"dependencies": {
"@adobe/css-tools": "^4.4.0",
@@ -3180,14 +2958,10 @@
},
"node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": {
"version": "0.6.3",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz",
- "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==",
"license": "MIT"
},
"node_modules/@testing-library/react": {
- "version": "16.3.0",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz",
- "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==",
+ "version": "16.3.2",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.12.5"
@@ -3213,8 +2987,6 @@
},
"node_modules/@testing-library/user-event": {
"version": "13.5.0",
- "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz",
- "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.12.5"
@@ -3229,14 +3001,10 @@
},
"node_modules/@types/aria-query": {
"version": "5.0.4",
- "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
- "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
"license": "MIT"
},
"node_modules/@types/babel__core": {
"version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3249,8 +3017,6 @@
},
"node_modules/@types/babel__generator": {
"version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
- "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3259,8 +3025,6 @@
},
"node_modules/@types/babel__template": {
"version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3270,8 +3034,6 @@
},
"node_modules/@types/babel__traverse": {
"version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
- "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3279,19 +3041,16 @@
}
},
"node_modules/@types/chai": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz",
- "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==",
+ "version": "5.2.3",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/deep-eql": "*"
+ "@types/deep-eql": "*",
+ "assertion-error": "^2.0.1"
}
},
"node_modules/@types/debug": {
- "version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "version": "4.1.13",
"license": "MIT",
"dependencies": {
"@types/ms": "*"
@@ -3299,21 +3058,15 @@
},
"node_modules/@types/deep-eql": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
- "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/estree": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
- "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
"license": "MIT"
},
"node_modules/@types/estree-jsx": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
- "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
"license": "MIT",
"dependencies": {
"@types/estree": "*"
@@ -3321,8 +3074,6 @@
},
"node_modules/@types/hast": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
"license": "MIT",
"dependencies": {
"@types/unist": "*"
@@ -3330,8 +3081,6 @@
},
"node_modules/@types/jest": {
"version": "27.5.2",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz",
- "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==",
"license": "MIT",
"dependencies": {
"jest-matcher-utils": "^27.0.0",
@@ -3340,15 +3089,11 @@
},
"node_modules/@types/json-schema": {
"version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/mdast": {
"version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
"license": "MIT",
"dependencies": {
"@types/unist": "*"
@@ -3356,14 +3101,10 @@
},
"node_modules/@types/ms": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
- "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "20.19.13",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.13.tgz",
- "integrity": "sha512-yCAeZl7a0DxgNVteXFHt9+uyFbqXGy/ShC4BlcHkoE0AfGXYv/BUiplV72DjMYXHDBXFjhvr6DD1NiRVfB4j8g==",
+ "version": "20.19.39",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3372,24 +3113,18 @@
},
"node_modules/@types/prop-types": {
"version": "15.7.15",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
- "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
"license": "MIT"
},
"node_modules/@types/react": {
- "version": "18.3.24",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.24.tgz",
- "integrity": "sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==",
+ "version": "18.3.28",
"license": "MIT",
"dependencies": {
"@types/prop-types": "*",
- "csstype": "^3.0.2"
+ "csstype": "^3.2.2"
}
},
"node_modules/@types/react-dom": {
"version": "18.3.7",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
- "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
"license": "MIT",
"peerDependencies": {
"@types/react": "^18.0.0"
@@ -3397,21 +3132,19 @@
},
"node_modules/@types/semver": {
"version": "7.7.1",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/unist": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
+ "node_modules/@types/use-sync-external-store": {
+ "version": "0.0.6",
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
- "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3445,8 +3178,6 @@
},
"node_modules/@typescript-eslint/parser": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
- "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -3473,8 +3204,6 @@
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3491,8 +3220,6 @@
},
"node_modules/@typescript-eslint/type-utils": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
- "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3519,8 +3246,6 @@
},
"node_modules/@typescript-eslint/types": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3533,8 +3258,6 @@
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -3561,8 +3284,6 @@
},
"node_modules/@typescript-eslint/utils": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3588,8 +3309,6 @@
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3606,14 +3325,10 @@
},
"node_modules/@ungap/structured-clone": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
- "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
"license": "ISC"
},
"node_modules/@vitejs/plugin-react": {
"version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
- "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3633,8 +3348,6 @@
},
"node_modules/@vitest/expect": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz",
- "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3650,8 +3363,6 @@
},
"node_modules/@vitest/mocker": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz",
- "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3677,8 +3388,6 @@
},
"node_modules/@vitest/pretty-format": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz",
- "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3690,8 +3399,6 @@
},
"node_modules/@vitest/runner": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz",
- "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3705,8 +3412,6 @@
},
"node_modules/@vitest/snapshot": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz",
- "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3720,8 +3425,6 @@
},
"node_modules/@vitest/spy": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz",
- "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3733,8 +3436,6 @@
},
"node_modules/@vitest/ui": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.2.4.tgz",
- "integrity": "sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3755,8 +3456,6 @@
},
"node_modules/@vitest/utils": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz",
- "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3769,9 +3468,7 @@
}
},
"node_modules/acorn": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
- "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "version": "8.16.0",
"dev": true,
"license": "MIT",
"bin": {
@@ -3783,8 +3480,6 @@
},
"node_modules/acorn-jsx": {
"version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -3793,8 +3488,6 @@
},
"node_modules/agent-base": {
"version": "7.1.4",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
- "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3802,9 +3495,7 @@
}
},
"node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "6.14.0",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3820,8 +3511,6 @@
},
"node_modules/ansi-regex": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"license": "MIT",
"engines": {
"node": ">=8"
@@ -3829,8 +3518,6 @@
},
"node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
@@ -3844,15 +3531,11 @@
},
"node_modules/argparse": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
"license": "Python-2.0"
},
"node_modules/aria-query": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
- "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
"license": "Apache-2.0",
"dependencies": {
"dequal": "^2.0.3"
@@ -3860,8 +3543,6 @@
},
"node_modules/array-buffer-byte-length": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
- "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3877,8 +3558,6 @@
},
"node_modules/array-includes": {
"version": "3.1.9",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz",
- "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3900,8 +3579,6 @@
},
"node_modules/array-union": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3910,8 +3587,6 @@
},
"node_modules/array.prototype.findlast": {
"version": "1.2.5",
- "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
- "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3931,8 +3606,6 @@
},
"node_modules/array.prototype.flat": {
"version": "1.3.3",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz",
- "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3950,8 +3623,6 @@
},
"node_modules/array.prototype.flatmap": {
"version": "1.3.3",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz",
- "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3969,8 +3640,6 @@
},
"node_modules/array.prototype.tosorted": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
- "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3986,8 +3655,6 @@
},
"node_modules/arraybuffer.prototype.slice": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
- "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4008,8 +3675,6 @@
},
"node_modules/assertion-error": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
- "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4018,24 +3683,14 @@
},
"node_modules/async-function": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
- "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "license": "MIT"
- },
"node_modules/available-typed-arrays": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
- "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4048,21 +3703,8 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/axios": {
- "version": "1.13.5",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz",
- "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.15.11",
- "form-data": "^4.0.5",
- "proxy-from-env": "^1.1.0"
- }
- },
"node_modules/bail": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
- "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
"license": "MIT",
"funding": {
"type": "github",
@@ -4071,21 +3713,26 @@
},
"node_modules/balanced-match": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true,
"license": "MIT"
},
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.10.16",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/boolbase": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
"license": "ISC"
},
"node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.13",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4095,8 +3742,6 @@
},
"node_modules/braces": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4107,9 +3752,7 @@
}
},
"node_modules/browserslist": {
- "version": "4.25.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz",
- "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==",
+ "version": "4.28.2",
"dev": true,
"funding": [
{
@@ -4127,10 +3770,11 @@
],
"license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001737",
- "electron-to-chromium": "^1.5.211",
- "node-releases": "^2.0.19",
- "update-browserslist-db": "^1.1.3"
+ "baseline-browser-mapping": "^2.10.12",
+ "caniuse-lite": "^1.0.30001782",
+ "electron-to-chromium": "^1.5.328",
+ "node-releases": "^2.0.36",
+ "update-browserslist-db": "^1.2.3"
},
"bin": {
"browserslist": "cli.js"
@@ -4141,8 +3785,6 @@
},
"node_modules/cac": {
"version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4151,8 +3793,6 @@
},
"node_modules/call-bind": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
- "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4170,8 +3810,7 @@
},
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -4183,8 +3822,6 @@
},
"node_modules/call-bound": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
- "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4200,8 +3837,6 @@
},
"node_modules/callsites": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4209,9 +3844,7 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001741",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz",
- "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==",
+ "version": "1.0.30001787",
"dev": true,
"funding": [
{
@@ -4231,8 +3864,6 @@
},
"node_modules/ccount": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
"license": "MIT",
"funding": {
"type": "github",
@@ -4241,8 +3872,6 @@
},
"node_modules/chai": {
"version": "5.3.3",
- "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz",
- "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4258,8 +3887,6 @@
},
"node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -4274,8 +3901,6 @@
},
"node_modules/character-entities": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
"license": "MIT",
"funding": {
"type": "github",
@@ -4284,8 +3909,6 @@
},
"node_modules/character-entities-html4": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
- "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
"license": "MIT",
"funding": {
"type": "github",
@@ -4294,8 +3917,6 @@
},
"node_modules/character-entities-legacy": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
- "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
"license": "MIT",
"funding": {
"type": "github",
@@ -4304,8 +3925,6 @@
},
"node_modules/character-reference-invalid": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
- "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
"license": "MIT",
"funding": {
"type": "github",
@@ -4313,9 +3932,7 @@
}
},
"node_modules/check-error": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
- "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
+ "version": "2.1.3",
"dev": true,
"license": "MIT",
"engines": {
@@ -4324,8 +3941,6 @@
},
"node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
@@ -4336,26 +3951,10 @@
},
"node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"license": "MIT"
},
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "license": "MIT",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/comma-separated-tokens": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
- "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
"license": "MIT",
"funding": {
"type": "github",
@@ -4364,22 +3963,16 @@
},
"node_modules/concat-map": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true,
"license": "MIT"
},
"node_modules/convert-source-map": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true,
"license": "MIT"
},
"node_modules/cookie": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz",
- "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -4391,8 +3984,6 @@
},
"node_modules/cross-spawn": {
"version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4405,9 +3996,7 @@
}
},
"node_modules/css-selector-parser": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.1.3.tgz",
- "integrity": "sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==",
+ "version": "3.3.0",
"funding": [
{
"type": "github",
@@ -4422,14 +4011,10 @@
},
"node_modules/css.escape": {
"version": "1.5.1",
- "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
- "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
"license": "MIT"
},
"node_modules/cssstyle": {
"version": "4.6.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz",
- "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4441,15 +4026,11 @@
}
},
"node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "version": "3.2.3",
"license": "MIT"
},
"node_modules/data-urls": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
- "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4462,8 +4043,6 @@
},
"node_modules/data-view-buffer": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
- "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4480,8 +4059,6 @@
},
"node_modules/data-view-byte-length": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
- "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4498,8 +4075,6 @@
},
"node_modules/data-view-byte-offset": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
- "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4515,9 +4090,7 @@
}
},
"node_modules/debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "version": "4.4.3",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
@@ -4533,15 +4106,11 @@
},
"node_modules/decimal.js": {
"version": "10.6.0",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
- "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
"dev": true,
"license": "MIT"
},
"node_modules/decode-named-character-reference": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
- "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
+ "version": "1.3.0",
"license": "MIT",
"dependencies": {
"character-entities": "^2.0.0"
@@ -4553,8 +4122,6 @@
},
"node_modules/deep-eql": {
"version": "5.0.2",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
- "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4563,15 +4130,11 @@
},
"node_modules/deep-is": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true,
"license": "MIT"
},
"node_modules/define-data-property": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4588,8 +4151,6 @@
},
"node_modules/define-properties": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4604,19 +4165,8 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/dequal": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
"license": "MIT",
"engines": {
"node": ">=6"
@@ -4624,8 +4174,6 @@
},
"node_modules/devlop": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
- "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
"license": "MIT",
"dependencies": {
"dequal": "^2.0.0"
@@ -4637,8 +4185,6 @@
},
"node_modules/diff-sequences": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
- "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
"license": "MIT",
"engines": {
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
@@ -4646,8 +4192,6 @@
},
"node_modules/dir-glob": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4659,8 +4203,6 @@
},
"node_modules/doctrine": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -4672,24 +4214,11 @@
},
"node_modules/dom-accessibility-api": {
"version": "0.5.16",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
- "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
"license": "MIT"
},
- "node_modules/dom-helpers": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
- "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.8.7",
- "csstype": "^3.0.2"
- }
- },
"node_modules/dunder-proto": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
@@ -4701,22 +4230,16 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.214",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.214.tgz",
- "integrity": "sha512-TpvUNdha+X3ybfU78NoQatKvQEm1oq3lf2QbnmCEdw+Bd9RuIAY+hJTvq1avzHM0f7EJfnH3vbCnbzKzisc/9Q==",
+ "version": "1.5.333",
"dev": true,
"license": "ISC"
},
"node_modules/embla-carousel": {
"version": "8.6.0",
- "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz",
- "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==",
"license": "MIT"
},
"node_modules/embla-carousel-autoplay": {
"version": "8.6.0",
- "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.6.0.tgz",
- "integrity": "sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA==",
"license": "MIT",
"peerDependencies": {
"embla-carousel": "8.6.0"
@@ -4724,8 +4247,6 @@
},
"node_modules/embla-carousel-fade": {
"version": "8.6.0",
- "resolved": "https://registry.npmjs.org/embla-carousel-fade/-/embla-carousel-fade-8.6.0.tgz",
- "integrity": "sha512-qaYsx5mwCz72ZrjlsXgs1nKejSrW+UhkbOMwLgfRT7w2LtdEB03nPRI06GHuHv5ac2USvbEiX2/nAHctcDwvpg==",
"license": "MIT",
"peerDependencies": {
"embla-carousel": "8.6.0"
@@ -4733,8 +4254,6 @@
},
"node_modules/entities": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
- "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
@@ -4744,9 +4263,7 @@
}
},
"node_modules/es-abstract": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz",
- "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==",
+ "version": "1.24.2",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4814,8 +4331,7 @@
},
"node_modules/es-define-property": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -4823,35 +4339,33 @@
},
"node_modules/es-errors": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-iterator-helpers": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz",
- "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==",
+ "version": "1.3.1",
"dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
- "call-bound": "^1.0.3",
+ "call-bound": "^1.0.4",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.6",
+ "es-abstract": "^1.24.1",
"es-errors": "^1.3.0",
- "es-set-tostringtag": "^2.0.3",
+ "es-set-tostringtag": "^2.1.0",
"function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.6",
+ "get-intrinsic": "^1.3.0",
"globalthis": "^1.0.4",
"gopd": "^1.2.0",
"has-property-descriptors": "^1.0.2",
"has-proto": "^1.2.0",
"has-symbols": "^1.1.0",
"internal-slot": "^1.1.0",
- "iterator.prototype": "^1.1.4",
+ "iterator.prototype": "^1.1.5",
+ "math-intrinsics": "^1.1.0",
"safe-array-concat": "^1.1.3"
},
"engines": {
@@ -4860,15 +4374,12 @@
},
"node_modules/es-module-lexer": {
"version": "1.7.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
- "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
"dev": true,
"license": "MIT"
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
@@ -4879,8 +4390,7 @@
},
"node_modules/es-set-tostringtag": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
- "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -4894,8 +4404,6 @@
},
"node_modules/es-shim-unscopables": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz",
- "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4907,8 +4415,6 @@
},
"node_modules/es-to-primitive": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
- "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4924,9 +4430,7 @@
}
},
"node_modules/esbuild": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
- "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
+ "version": "0.25.12",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -4937,38 +4441,36 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.25.9",
- "@esbuild/android-arm": "0.25.9",
- "@esbuild/android-arm64": "0.25.9",
- "@esbuild/android-x64": "0.25.9",
- "@esbuild/darwin-arm64": "0.25.9",
- "@esbuild/darwin-x64": "0.25.9",
- "@esbuild/freebsd-arm64": "0.25.9",
- "@esbuild/freebsd-x64": "0.25.9",
- "@esbuild/linux-arm": "0.25.9",
- "@esbuild/linux-arm64": "0.25.9",
- "@esbuild/linux-ia32": "0.25.9",
- "@esbuild/linux-loong64": "0.25.9",
- "@esbuild/linux-mips64el": "0.25.9",
- "@esbuild/linux-ppc64": "0.25.9",
- "@esbuild/linux-riscv64": "0.25.9",
- "@esbuild/linux-s390x": "0.25.9",
- "@esbuild/linux-x64": "0.25.9",
- "@esbuild/netbsd-arm64": "0.25.9",
- "@esbuild/netbsd-x64": "0.25.9",
- "@esbuild/openbsd-arm64": "0.25.9",
- "@esbuild/openbsd-x64": "0.25.9",
- "@esbuild/openharmony-arm64": "0.25.9",
- "@esbuild/sunos-x64": "0.25.9",
- "@esbuild/win32-arm64": "0.25.9",
- "@esbuild/win32-ia32": "0.25.9",
- "@esbuild/win32-x64": "0.25.9"
+ "@esbuild/aix-ppc64": "0.25.12",
+ "@esbuild/android-arm": "0.25.12",
+ "@esbuild/android-arm64": "0.25.12",
+ "@esbuild/android-x64": "0.25.12",
+ "@esbuild/darwin-arm64": "0.25.12",
+ "@esbuild/darwin-x64": "0.25.12",
+ "@esbuild/freebsd-arm64": "0.25.12",
+ "@esbuild/freebsd-x64": "0.25.12",
+ "@esbuild/linux-arm": "0.25.12",
+ "@esbuild/linux-arm64": "0.25.12",
+ "@esbuild/linux-ia32": "0.25.12",
+ "@esbuild/linux-loong64": "0.25.12",
+ "@esbuild/linux-mips64el": "0.25.12",
+ "@esbuild/linux-ppc64": "0.25.12",
+ "@esbuild/linux-riscv64": "0.25.12",
+ "@esbuild/linux-s390x": "0.25.12",
+ "@esbuild/linux-x64": "0.25.12",
+ "@esbuild/netbsd-arm64": "0.25.12",
+ "@esbuild/netbsd-x64": "0.25.12",
+ "@esbuild/openbsd-arm64": "0.25.12",
+ "@esbuild/openbsd-x64": "0.25.12",
+ "@esbuild/openharmony-arm64": "0.25.12",
+ "@esbuild/sunos-x64": "0.25.12",
+ "@esbuild/win32-arm64": "0.25.12",
+ "@esbuild/win32-ia32": "0.25.12",
+ "@esbuild/win32-x64": "0.25.12"
}
},
"node_modules/escalade": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4977,8 +4479,6 @@
},
"node_modules/escape-string-regexp": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4990,9 +4490,6 @@
},
"node_modules/eslint": {
"version": "8.57.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
- "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
- "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5047,8 +4544,6 @@
},
"node_modules/eslint-plugin-react": {
"version": "7.37.5",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz",
- "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5080,8 +4575,6 @@
},
"node_modules/eslint-plugin-react/node_modules/doctrine": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -5093,8 +4586,6 @@
},
"node_modules/eslint-plugin-react/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -5103,8 +4594,6 @@
},
"node_modules/eslint-scope": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -5117,8 +4606,6 @@
},
"node_modules/eslint-scope/node_modules/estraverse": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
@@ -5127,8 +4614,6 @@
},
"node_modules/eslint-visitor-keys": {
"version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -5140,8 +4625,6 @@
},
"node_modules/eslint/node_modules/eslint-scope": {
"version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -5157,8 +4640,6 @@
},
"node_modules/espree": {
"version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -5174,9 +4655,7 @@
}
},
"node_modules/esquery": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
- "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "version": "1.7.0",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -5188,8 +4667,6 @@
},
"node_modules/esrecurse": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -5201,8 +4678,6 @@
},
"node_modules/estraverse": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
@@ -5211,8 +4686,6 @@
},
"node_modules/estree-util-is-identifier-name": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
- "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
"license": "MIT",
"funding": {
"type": "opencollective",
@@ -5221,8 +4694,6 @@
},
"node_modules/estree-walker": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
- "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5231,8 +4702,6 @@
},
"node_modules/esutils": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
@@ -5240,9 +4709,7 @@
}
},
"node_modules/expect-type": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz",
- "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==",
+ "version": "1.3.0",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -5251,21 +4718,15 @@
},
"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/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,
"license": "MIT"
},
"node_modules/fast-glob": {
"version": "3.3.3",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
- "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5281,8 +4742,6 @@
},
"node_modules/fast-glob/node_modules/glob-parent": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -5294,39 +4753,45 @@
},
"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,
"license": "MIT"
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true,
"license": "MIT"
},
"node_modules/fastq": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
- "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "version": "1.20.1",
"dev": true,
"license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
}
},
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
"node_modules/fflate": {
"version": "0.8.2",
- "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
- "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
"dev": true,
"license": "MIT"
},
"node_modules/file-entry-cache": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5338,8 +4803,6 @@
},
"node_modules/fill-range": {
"version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5351,8 +4814,6 @@
},
"node_modules/find-up": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5368,8 +4829,6 @@
},
"node_modules/flat-cache": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5383,35 +4842,11 @@
},
"node_modules/flatted": {
"version": "3.4.2",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
- "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
"dev": true,
"license": "ISC"
},
- "node_modules/follow-redirects": {
- "version": "1.15.11",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
- "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
"node_modules/for-each": {
"version": "0.3.5",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
- "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5424,26 +4859,8 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/form-data": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
- "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "es-set-tostringtag": "^2.1.0",
- "hasown": "^2.0.2",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/fs.realpath": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true,
"license": "ISC"
},
@@ -5464,8 +4881,7 @@
},
"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==",
+ "dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5473,8 +4889,6 @@
},
"node_modules/function.prototype.name": {
"version": "1.1.8",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
- "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5494,18 +4908,22 @@
},
"node_modules/functions-have-names": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
"dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/generator-function": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5514,8 +4932,7 @@
},
"node_modules/get-intrinsic": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
@@ -5538,8 +4955,7 @@
},
"node_modules/get-proto": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
@@ -5551,8 +4967,6 @@
},
"node_modules/get-symbol-description": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
- "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5569,9 +4983,6 @@
},
"node_modules/glob": {
"version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -5591,8 +5002,6 @@
},
"node_modules/glob-parent": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -5604,8 +5013,6 @@
},
"node_modules/globals": {
"version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5620,8 +5027,6 @@
},
"node_modules/globalthis": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
- "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5637,8 +5042,6 @@
},
"node_modules/globby": {
"version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5658,8 +5061,7 @@
},
"node_modules/gopd": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -5670,15 +5072,11 @@
},
"node_modules/graphemer": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true,
"license": "MIT"
},
"node_modules/has-bigints": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
- "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5690,8 +5088,6 @@
},
"node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"license": "MIT",
"engines": {
"node": ">=8"
@@ -5699,8 +5095,6 @@
},
"node_modules/has-property-descriptors": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5712,8 +5106,6 @@
},
"node_modules/has-proto": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
- "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5728,8 +5120,7 @@
},
"node_modules/has-symbols": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -5740,8 +5131,7 @@
},
"node_modules/has-tostringtag": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
@@ -5755,8 +5145,7 @@
},
"node_modules/hasown": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
@@ -5767,8 +5156,6 @@
},
"node_modules/hast-util-from-html": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz",
- "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -5785,8 +5172,6 @@
},
"node_modules/hast-util-from-parse5": {
"version": "8.0.3",
- "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz",
- "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -5805,8 +5190,6 @@
},
"node_modules/hast-util-from-parse5/node_modules/hastscript": {
"version": "9.0.1",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz",
- "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -5822,8 +5205,6 @@
},
"node_modules/hast-util-parse-selector": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
- "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0"
@@ -5835,8 +5216,6 @@
},
"node_modules/hast-util-to-jsx-runtime": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz",
- "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0",
@@ -5862,8 +5241,6 @@
},
"node_modules/hast-util-whitespace": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
- "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0"
@@ -5875,8 +5252,6 @@
},
"node_modules/hastscript": {
"version": "8.0.0",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz",
- "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -5892,8 +5267,6 @@
},
"node_modules/hastscript/node_modules/property-information": {
"version": "6.5.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
- "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
"license": "MIT",
"funding": {
"type": "github",
@@ -5902,8 +5275,6 @@
},
"node_modules/html-encoding-sniffer": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
- "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5915,8 +5286,6 @@
},
"node_modules/html-url-attributes": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
- "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==",
"license": "MIT",
"funding": {
"type": "opencollective",
@@ -5925,8 +5294,6 @@
},
"node_modules/http-proxy-agent": {
"version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5939,8 +5306,6 @@
},
"node_modules/https-proxy-agent": {
"version": "7.0.6",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
- "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5953,8 +5318,6 @@
},
"node_modules/iconv-lite": {
"version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5966,18 +5329,22 @@
},
"node_modules/ignore": {
"version": "5.3.2",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
- "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 4"
}
},
+ "node_modules/immer": {
+ "version": "11.1.4",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
+ }
+ },
"node_modules/import-fresh": {
"version": "3.3.1",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
- "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5993,8 +5360,6 @@
},
"node_modules/imurmurhash": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6003,8 +5368,6 @@
},
"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"
@@ -6012,9 +5375,6 @@
},
"node_modules/inflight": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -6024,21 +5384,15 @@
},
"node_modules/inherits": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true,
"license": "ISC"
},
"node_modules/inline-style-parser": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
- "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==",
+ "version": "0.2.7",
"license": "MIT"
},
"node_modules/internal-slot": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
- "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6052,8 +5406,6 @@
},
"node_modules/is-alphabetical": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
- "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
"license": "MIT",
"funding": {
"type": "github",
@@ -6062,8 +5414,6 @@
},
"node_modules/is-alphanumerical": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
- "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
"license": "MIT",
"dependencies": {
"is-alphabetical": "^2.0.0",
@@ -6076,8 +5426,6 @@
},
"node_modules/is-array-buffer": {
"version": "3.0.5",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
- "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6094,8 +5442,6 @@
},
"node_modules/is-async-function": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
- "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6114,8 +5460,6 @@
},
"node_modules/is-bigint": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
- "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6130,8 +5474,6 @@
},
"node_modules/is-boolean-object": {
"version": "1.2.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
- "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6147,8 +5489,6 @@
},
"node_modules/is-callable": {
"version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6160,8 +5500,6 @@
},
"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==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6176,8 +5514,6 @@
},
"node_modules/is-data-view": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
- "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6194,8 +5530,6 @@
},
"node_modules/is-date-object": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
- "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6211,8 +5545,6 @@
},
"node_modules/is-decimal": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
- "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
"license": "MIT",
"funding": {
"type": "github",
@@ -6221,8 +5553,6 @@
},
"node_modules/is-extglob": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6231,8 +5561,6 @@
},
"node_modules/is-finalizationregistry": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
- "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6246,14 +5574,13 @@
}
},
"node_modules/is-generator-function": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz",
- "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==",
+ "version": "1.1.2",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bound": "^1.0.3",
- "get-proto": "^1.0.0",
+ "call-bound": "^1.0.4",
+ "generator-function": "^2.0.0",
+ "get-proto": "^1.0.1",
"has-tostringtag": "^1.0.2",
"safe-regex-test": "^1.1.0"
},
@@ -6266,8 +5593,6 @@
},
"node_modules/is-glob": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6279,8 +5604,6 @@
},
"node_modules/is-hexadecimal": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
- "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
"license": "MIT",
"funding": {
"type": "github",
@@ -6289,8 +5612,6 @@
},
"node_modules/is-map": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
- "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6302,8 +5623,6 @@
},
"node_modules/is-negative-zero": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
- "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6315,8 +5634,6 @@
},
"node_modules/is-number": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6325,8 +5642,6 @@
},
"node_modules/is-number-object": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
- "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6342,8 +5657,6 @@
},
"node_modules/is-path-inside": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6352,8 +5665,6 @@
},
"node_modules/is-plain-obj": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -6364,15 +5675,11 @@
},
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
"dev": true,
"license": "MIT"
},
"node_modules/is-regex": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
- "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6390,8 +5697,6 @@
},
"node_modules/is-set": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
- "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6403,8 +5708,6 @@
},
"node_modules/is-shared-array-buffer": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
- "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6419,8 +5722,6 @@
},
"node_modules/is-string": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
- "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6436,8 +5737,6 @@
},
"node_modules/is-symbol": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
- "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6454,8 +5753,6 @@
},
"node_modules/is-typed-array": {
"version": "1.1.15",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
- "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6470,8 +5767,6 @@
},
"node_modules/is-weakmap": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
- "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6483,8 +5778,6 @@
},
"node_modules/is-weakref": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
- "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6499,8 +5792,6 @@
},
"node_modules/is-weakset": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
- "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6516,22 +5807,16 @@
},
"node_modules/isarray": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
"dev": true,
"license": "MIT"
},
"node_modules/isexe": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true,
"license": "ISC"
},
"node_modules/iterator.prototype": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz",
- "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6548,8 +5833,6 @@
},
"node_modules/jest-diff": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
- "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
"license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
@@ -6563,8 +5846,6 @@
},
"node_modules/jest-get-type": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
- "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
"license": "MIT",
"engines": {
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
@@ -6572,8 +5853,6 @@
},
"node_modules/jest-matcher-utils": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
- "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
"license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
@@ -6587,14 +5866,10 @@
},
"node_modules/js-tokens": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"license": "MIT"
},
"node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "version": "4.1.1",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6606,8 +5881,6 @@
},
"node_modules/jsdom": {
"version": "26.1.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz",
- "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6646,8 +5919,6 @@
},
"node_modules/jsesc": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
- "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
"dev": true,
"license": "MIT",
"bin": {
@@ -6659,29 +5930,21 @@
},
"node_modules/json-buffer": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true,
"license": "MIT"
},
"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,
"license": "MIT"
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true,
"license": "MIT"
},
"node_modules/json5": {
"version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -6693,8 +5956,6 @@
},
"node_modules/jsx-ast-utils": {
"version": "3.3.5",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
- "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6709,14 +5970,10 @@
},
"node_modules/keyborg": {
"version": "2.6.0",
- "resolved": "https://registry.npmjs.org/keyborg/-/keyborg-2.6.0.tgz",
- "integrity": "sha512-o5kvLbuTF+o326CMVYpjlaykxqYP9DphFQZ2ZpgrvBouyvOxyEB7oqe8nOLFpiV5VCtz0D3pt8gXQYWpLpBnmA==",
"license": "MIT"
},
"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==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6725,8 +5982,6 @@
},
"node_modules/levn": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6739,8 +5994,6 @@
},
"node_modules/locate-path": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6755,15 +6008,11 @@
},
"node_modules/lodash.merge": {
"version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true,
"license": "MIT"
},
"node_modules/longest-streak": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
- "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
"license": "MIT",
"funding": {
"type": "github",
@@ -6772,8 +6021,6 @@
},
"node_modules/loose-envify": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
@@ -6784,15 +6031,11 @@
},
"node_modules/loupe": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz",
- "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==",
"dev": true,
"license": "MIT"
},
"node_modules/lru-cache": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -6801,17 +6044,13 @@
},
"node_modules/lz-string": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
- "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
"license": "MIT",
"bin": {
"lz-string": "bin/bin.js"
}
},
"node_modules/magic-string": {
- "version": "0.30.18",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.18.tgz",
- "integrity": "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==",
+ "version": "0.30.21",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6820,8 +6059,6 @@
},
"node_modules/markdown-table": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
- "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
"license": "MIT",
"funding": {
"type": "github",
@@ -6830,8 +6067,7 @@
},
"node_modules/math-intrinsics": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -6839,8 +6075,6 @@
},
"node_modules/mdast-util-find-and-replace": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
- "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -6855,8 +6089,6 @@
},
"node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
- "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -6866,9 +6098,7 @@
}
},
"node_modules/mdast-util-from-markdown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
- "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
+ "version": "2.0.3",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -6891,8 +6121,6 @@
},
"node_modules/mdast-util-gfm": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz",
- "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==",
"license": "MIT",
"dependencies": {
"mdast-util-from-markdown": "^2.0.0",
@@ -6910,8 +6138,6 @@
},
"node_modules/mdast-util-gfm-autolink-literal": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz",
- "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -6927,8 +6153,6 @@
},
"node_modules/mdast-util-gfm-footnote": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz",
- "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -6944,8 +6168,6 @@
},
"node_modules/mdast-util-gfm-strikethrough": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
- "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -6959,8 +6181,6 @@
},
"node_modules/mdast-util-gfm-table": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
- "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -6976,8 +6196,6 @@
},
"node_modules/mdast-util-gfm-task-list-item": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
- "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -6992,8 +6210,6 @@
},
"node_modules/mdast-util-mdx-expression": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
- "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
"license": "MIT",
"dependencies": {
"@types/estree-jsx": "^1.0.0",
@@ -7010,8 +6226,6 @@
},
"node_modules/mdast-util-mdx-jsx": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
- "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
"license": "MIT",
"dependencies": {
"@types/estree-jsx": "^1.0.0",
@@ -7034,8 +6248,6 @@
},
"node_modules/mdast-util-mdxjs-esm": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
- "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
"license": "MIT",
"dependencies": {
"@types/estree-jsx": "^1.0.0",
@@ -7052,8 +6264,6 @@
},
"node_modules/mdast-util-phrasing": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
- "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -7065,9 +6275,7 @@
}
},
"node_modules/mdast-util-to-hast": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
- "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
+ "version": "13.2.1",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -7087,8 +6295,6 @@
},
"node_modules/mdast-util-to-markdown": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
- "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -7108,8 +6314,6 @@
},
"node_modules/mdast-util-to-string": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
- "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0"
@@ -7121,8 +6325,6 @@
},
"node_modules/merge2": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7131,8 +6333,6 @@
},
"node_modules/micromark": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
- "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7166,8 +6366,6 @@
},
"node_modules/micromark-core-commonmark": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
- "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7200,8 +6398,6 @@
},
"node_modules/micromark-extension-gfm": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
- "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
"license": "MIT",
"dependencies": {
"micromark-extension-gfm-autolink-literal": "^2.0.0",
@@ -7220,8 +6416,6 @@
},
"node_modules/micromark-extension-gfm-autolink-literal": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
- "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
"license": "MIT",
"dependencies": {
"micromark-util-character": "^2.0.0",
@@ -7236,8 +6430,6 @@
},
"node_modules/micromark-extension-gfm-footnote": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
- "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
"license": "MIT",
"dependencies": {
"devlop": "^1.0.0",
@@ -7256,8 +6448,6 @@
},
"node_modules/micromark-extension-gfm-strikethrough": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
- "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
"license": "MIT",
"dependencies": {
"devlop": "^1.0.0",
@@ -7274,8 +6464,6 @@
},
"node_modules/micromark-extension-gfm-table": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
- "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
"license": "MIT",
"dependencies": {
"devlop": "^1.0.0",
@@ -7291,8 +6479,6 @@
},
"node_modules/micromark-extension-gfm-tagfilter": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
- "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
"license": "MIT",
"dependencies": {
"micromark-util-types": "^2.0.0"
@@ -7304,8 +6490,6 @@
},
"node_modules/micromark-extension-gfm-task-list-item": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
- "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
"license": "MIT",
"dependencies": {
"devlop": "^1.0.0",
@@ -7321,8 +6505,6 @@
},
"node_modules/micromark-factory-destination": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
- "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7342,8 +6524,6 @@
},
"node_modules/micromark-factory-label": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
- "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7364,8 +6544,6 @@
},
"node_modules/micromark-factory-space": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
- "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7384,8 +6562,6 @@
},
"node_modules/micromark-factory-title": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
- "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7406,8 +6582,6 @@
},
"node_modules/micromark-factory-whitespace": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
- "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7428,8 +6602,6 @@
},
"node_modules/micromark-util-character": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
- "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7448,8 +6620,6 @@
},
"node_modules/micromark-util-chunked": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
- "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7467,8 +6637,6 @@
},
"node_modules/micromark-util-classify-character": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
- "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7488,8 +6656,6 @@
},
"node_modules/micromark-util-combine-extensions": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
- "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7508,8 +6674,6 @@
},
"node_modules/micromark-util-decode-numeric-character-reference": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
- "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7527,8 +6691,6 @@
},
"node_modules/micromark-util-decode-string": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
- "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7549,8 +6711,6 @@
},
"node_modules/micromark-util-encode": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
- "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7565,8 +6725,6 @@
},
"node_modules/micromark-util-html-tag-name": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
- "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7581,8 +6739,6 @@
},
"node_modules/micromark-util-normalize-identifier": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
- "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7600,8 +6756,6 @@
},
"node_modules/micromark-util-resolve-all": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
- "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7619,8 +6773,6 @@
},
"node_modules/micromark-util-sanitize-uri": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
- "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7640,8 +6792,6 @@
},
"node_modules/micromark-util-subtokenize": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
- "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7662,8 +6812,6 @@
},
"node_modules/micromark-util-symbol": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
- "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7678,8 +6826,6 @@
},
"node_modules/micromark-util-types": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
- "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -7694,8 +6840,6 @@
},
"node_modules/micromatch": {
"version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7706,31 +6850,8 @@
"node": ">=8.6"
}
},
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/min-indent": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
"license": "MIT",
"engines": {
"node": ">=4"
@@ -7738,8 +6859,6 @@
},
"node_modules/minimatch": {
"version": "3.1.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz",
- "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -7751,8 +6870,6 @@
},
"node_modules/mrmime": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
- "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7761,14 +6878,10 @@
},
"node_modules/ms": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
"node_modules/nanoid": {
"version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"dev": true,
"funding": [
{
@@ -7786,29 +6899,46 @@
},
"node_modules/natural-compare": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true,
"license": "MIT"
},
"node_modules/natural-compare-lite": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
"dev": true,
"license": "MIT"
},
+ "node_modules/node-exports-info": {
+ "version": "1.6.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array.prototype.flatmap": "^1.3.3",
+ "es-errors": "^1.3.0",
+ "object.entries": "^1.1.9",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/node-exports-info/node_modules/semver": {
+ "version": "6.3.1",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/node-releases": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.20.tgz",
- "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==",
+ "version": "2.0.37",
"dev": true,
"license": "MIT"
},
"node_modules/nth-check": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
"license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0"
@@ -7818,16 +6948,13 @@
}
},
"node_modules/nwsapi": {
- "version": "2.2.22",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz",
- "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==",
+ "version": "2.2.23",
"dev": true,
"license": "MIT"
},
"node_modules/object-assign": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -7835,8 +6962,6 @@
},
"node_modules/object-inspect": {
"version": "1.13.4",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
- "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7848,8 +6973,6 @@
},
"node_modules/object-keys": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7858,8 +6981,6 @@
},
"node_modules/object.assign": {
"version": "4.1.7",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
- "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7879,8 +7000,6 @@
},
"node_modules/object.entries": {
"version": "1.1.9",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz",
- "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7895,8 +7014,6 @@
},
"node_modules/object.fromentries": {
"version": "2.0.8",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
- "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7914,8 +7031,6 @@
},
"node_modules/object.values": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz",
- "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7933,8 +7048,6 @@
},
"node_modules/once": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -7943,8 +7056,6 @@
},
"node_modules/optionator": {
"version": "0.9.4",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
- "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7961,8 +7072,6 @@
},
"node_modules/own-keys": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
- "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7979,8 +7088,6 @@
},
"node_modules/p-limit": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7995,8 +7102,6 @@
},
"node_modules/p-locate": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8011,8 +7116,6 @@
},
"node_modules/parent-module": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8024,8 +7127,6 @@
},
"node_modules/parse-entities": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
- "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
@@ -8043,14 +7144,10 @@
},
"node_modules/parse-entities/node_modules/@types/unist": {
"version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
- "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/parse5": {
"version": "7.3.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
- "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
"license": "MIT",
"dependencies": {
"entities": "^6.0.0"
@@ -8061,8 +7158,6 @@
},
"node_modules/path-exists": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8071,8 +7166,6 @@
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8081,8 +7174,6 @@
},
"node_modules/path-key": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8091,15 +7182,11 @@
},
"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==",
"dev": true,
"license": "MIT"
},
"node_modules/path-type": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8108,15 +7195,11 @@
},
"node_modules/pathe": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
- "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
"dev": true,
"license": "MIT"
},
"node_modules/pathval": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz",
- "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8125,18 +7208,14 @@
},
"node_modules/picocolors": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "version": "4.0.4",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=8.6"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
@@ -8144,8 +7223,6 @@
},
"node_modules/possible-typed-array-names": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
- "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8153,9 +7230,7 @@
}
},
"node_modules/postcss": {
- "version": "8.5.6",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
- "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "version": "8.5.9",
"dev": true,
"funding": [
{
@@ -8183,8 +7258,6 @@
},
"node_modules/prelude-ls": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8193,8 +7266,6 @@
},
"node_modules/pretty-format": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
- "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1",
@@ -8207,8 +7278,6 @@
},
"node_modules/pretty-format/node_modules/ansi-styles": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"license": "MIT",
"engines": {
"node": ">=10"
@@ -8219,8 +7288,6 @@
},
"node_modules/prismjs": {
"version": "1.30.0",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
- "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
"license": "MIT",
"engines": {
"node": ">=6"
@@ -8228,8 +7295,7 @@
},
"node_modules/prop-types": {
"version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"loose-envify": "^1.4.0",
@@ -8239,30 +7305,19 @@
},
"node_modules/prop-types/node_modules/react-is": {
"version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true,
"license": "MIT"
},
"node_modules/property-information": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
- "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "license": "MIT"
- },
"node_modules/punycode": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8271,8 +7326,6 @@
},
"node_modules/queue-microtask": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true,
"funding": [
{
@@ -8292,8 +7345,6 @@
},
"node_modules/react": {
"version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
- "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
"license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
@@ -8304,8 +7355,6 @@
},
"node_modules/react-dom": {
"version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
- "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
"license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0",
@@ -8317,8 +7366,6 @@
},
"node_modules/react-dom/node_modules/scheduler": {
"version": "0.23.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
- "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
"license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
@@ -8326,14 +7373,10 @@
},
"node_modules/react-is": {
"version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"license": "MIT"
},
"node_modules/react-markdown": {
"version": "10.1.0",
- "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz",
- "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -8357,10 +7400,29 @@
"react": ">=18"
}
},
+ "node_modules/react-redux": {
+ "version": "9.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/use-sync-external-store": "^0.0.6",
+ "use-sync-external-store": "^1.4.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^18.2.25 || ^19",
+ "react": "^18.0 || ^19",
+ "redux": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "redux": {
+ "optional": true
+ }
+ }
+ },
"node_modules/react-refresh": {
"version": "0.17.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
- "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8368,9 +7430,7 @@
}
},
"node_modules/react-router": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.0.tgz",
- "integrity": "sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==",
+ "version": "7.14.0",
"license": "MIT",
"dependencies": {
"cookie": "^1.0.1",
@@ -8390,12 +7450,10 @@
}
},
"node_modules/react-router-dom": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.0.tgz",
- "integrity": "sha512-5CO/l5Yahi2SKC6rGZ+HDEjpjkGaG/ncEP7eWFTvFxbHP8yeeI0PxTDjimtpXYlR3b3i9/WIL4VJttPrESIf2g==",
+ "version": "7.14.0",
"license": "MIT",
"dependencies": {
- "react-router": "7.13.0"
+ "react-router": "7.14.0"
},
"engines": {
"node": ">=20.0.0"
@@ -8405,26 +7463,8 @@
"react-dom": ">=18"
}
},
- "node_modules/react-transition-group": {
- "version": "4.4.5",
- "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
- "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@babel/runtime": "^7.5.5",
- "dom-helpers": "^5.0.1",
- "loose-envify": "^1.4.0",
- "prop-types": "^15.6.2"
- },
- "peerDependencies": {
- "react": ">=16.6.0",
- "react-dom": ">=16.6.0"
- }
- },
"node_modules/redent": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
"license": "MIT",
"dependencies": {
"indent-string": "^4.0.0",
@@ -8434,10 +7474,19 @@
"node": ">=8"
}
},
+ "node_modules/redux": {
+ "version": "5.0.1",
+ "license": "MIT"
+ },
+ "node_modules/redux-thunk": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "redux": "^5.0.0"
+ }
+ },
"node_modules/reflect.getprototypeof": {
"version": "1.0.10",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
- "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8459,8 +7508,6 @@
},
"node_modules/regexp.prototype.flags": {
"version": "1.5.4",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
- "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8480,8 +7527,6 @@
},
"node_modules/rehype-parse": {
"version": "9.0.1",
- "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz",
- "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -8495,8 +7540,6 @@
},
"node_modules/rehype-prism": {
"version": "2.3.3",
- "resolved": "https://registry.npmjs.org/rehype-prism/-/rehype-prism-2.3.3.tgz",
- "integrity": "sha512-J9mhio/CwcJRDyIhsp5hgXmyGeQsFN+/1eNEKnBRxfdJAx2CqH41kV0dqn/k2OgMdjk21IoGFgar0MfVtGYTSg==",
"license": "MIT",
"dependencies": {
"hastscript": "^8.0.0",
@@ -8512,8 +7555,6 @@
},
"node_modules/remark-gfm": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz",
- "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -8530,8 +7571,6 @@
},
"node_modules/remark-parse": {
"version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
- "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -8546,8 +7585,6 @@
},
"node_modules/remark-rehype": {
"version": "11.1.2",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz",
- "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -8563,8 +7600,6 @@
},
"node_modules/remark-stringify": {
"version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
- "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -8576,28 +7611,34 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/reselect": {
+ "version": "5.1.1",
+ "license": "MIT"
+ },
"node_modules/resolve": {
- "version": "2.0.0-next.5",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
- "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "version": "2.0.0-next.6",
"dev": true,
"license": "MIT",
"dependencies": {
- "is-core-module": "^2.13.0",
+ "es-errors": "^1.3.0",
+ "is-core-module": "^2.16.1",
+ "node-exports-info": "^1.6.0",
+ "object-keys": "^1.1.1",
"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-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,
"license": "MIT",
"engines": {
@@ -8606,8 +7647,6 @@
},
"node_modules/reusify": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
- "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8617,9 +7656,6 @@
},
"node_modules/rimraf": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -8633,9 +7669,7 @@
}
},
"node_modules/rollup": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz",
- "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==",
+ "version": "4.60.1",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8649,59 +7683,41 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.59.0",
- "@rollup/rollup-android-arm64": "4.59.0",
- "@rollup/rollup-darwin-arm64": "4.59.0",
- "@rollup/rollup-darwin-x64": "4.59.0",
- "@rollup/rollup-freebsd-arm64": "4.59.0",
- "@rollup/rollup-freebsd-x64": "4.59.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.59.0",
- "@rollup/rollup-linux-arm-musleabihf": "4.59.0",
- "@rollup/rollup-linux-arm64-gnu": "4.59.0",
- "@rollup/rollup-linux-arm64-musl": "4.59.0",
- "@rollup/rollup-linux-loong64-gnu": "4.59.0",
- "@rollup/rollup-linux-loong64-musl": "4.59.0",
- "@rollup/rollup-linux-ppc64-gnu": "4.59.0",
- "@rollup/rollup-linux-ppc64-musl": "4.59.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.59.0",
- "@rollup/rollup-linux-riscv64-musl": "4.59.0",
- "@rollup/rollup-linux-s390x-gnu": "4.59.0",
- "@rollup/rollup-linux-x64-gnu": "4.59.0",
- "@rollup/rollup-linux-x64-musl": "4.59.0",
- "@rollup/rollup-openbsd-x64": "4.59.0",
- "@rollup/rollup-openharmony-arm64": "4.59.0",
- "@rollup/rollup-win32-arm64-msvc": "4.59.0",
- "@rollup/rollup-win32-ia32-msvc": "4.59.0",
- "@rollup/rollup-win32-x64-gnu": "4.59.0",
- "@rollup/rollup-win32-x64-msvc": "4.59.0",
+ "@rollup/rollup-android-arm-eabi": "4.60.1",
+ "@rollup/rollup-android-arm64": "4.60.1",
+ "@rollup/rollup-darwin-arm64": "4.60.1",
+ "@rollup/rollup-darwin-x64": "4.60.1",
+ "@rollup/rollup-freebsd-arm64": "4.60.1",
+ "@rollup/rollup-freebsd-x64": "4.60.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.60.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.60.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.60.1",
+ "@rollup/rollup-linux-arm64-musl": "4.60.1",
+ "@rollup/rollup-linux-loong64-gnu": "4.60.1",
+ "@rollup/rollup-linux-loong64-musl": "4.60.1",
+ "@rollup/rollup-linux-ppc64-gnu": "4.60.1",
+ "@rollup/rollup-linux-ppc64-musl": "4.60.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.60.1",
+ "@rollup/rollup-linux-riscv64-musl": "4.60.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.60.1",
+ "@rollup/rollup-linux-x64-gnu": "4.60.1",
+ "@rollup/rollup-linux-x64-musl": "4.60.1",
+ "@rollup/rollup-openbsd-x64": "4.60.1",
+ "@rollup/rollup-openharmony-arm64": "4.60.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.60.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.60.1",
+ "@rollup/rollup-win32-x64-gnu": "4.60.1",
+ "@rollup/rollup-win32-x64-msvc": "4.60.1",
"fsevents": "~2.3.2"
}
},
- "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz",
- "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
"node_modules/rrweb-cssom": {
"version": "0.8.0",
- "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
- "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==",
"dev": true,
"license": "MIT"
},
"node_modules/rtl-css-js": {
"version": "1.16.1",
- "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz",
- "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.1.2"
@@ -8709,8 +7725,6 @@
},
"node_modules/run-parallel": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"funding": [
{
@@ -8733,8 +7747,6 @@
},
"node_modules/safe-array-concat": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
- "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8753,8 +7765,6 @@
},
"node_modules/safe-push-apply": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
- "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8770,8 +7780,6 @@
},
"node_modules/safe-regex-test": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
- "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8788,15 +7796,11 @@
},
"node_modules/safer-buffer": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true,
"license": "MIT"
},
"node_modules/saxes": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
- "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -8807,19 +7811,12 @@
}
},
"node_modules/scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "version": "0.27.0",
"license": "MIT",
- "peer": true,
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
+ "peer": true
},
"node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.4",
"dev": true,
"license": "ISC",
"bin": {
@@ -8831,14 +7828,10 @@
},
"node_modules/set-cookie-parser": {
"version": "2.7.2",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
- "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==",
"license": "MIT"
},
"node_modules/set-function-length": {
"version": "1.2.2",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
- "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8855,8 +7848,6 @@
},
"node_modules/set-function-name": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
- "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8871,8 +7862,6 @@
},
"node_modules/set-proto": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
- "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8886,8 +7875,6 @@
},
"node_modules/shebang-command": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8899,8 +7886,6 @@
},
"node_modules/shebang-regex": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8909,8 +7894,6 @@
},
"node_modules/side-channel": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
- "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8929,8 +7912,6 @@
},
"node_modules/side-channel-list": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
- "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8946,8 +7927,6 @@
},
"node_modules/side-channel-map": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
- "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8965,8 +7944,6 @@
},
"node_modules/side-channel-weakmap": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
- "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8985,15 +7962,11 @@
},
"node_modules/siginfo": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
- "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
"dev": true,
"license": "ISC"
},
"node_modules/sirv": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz",
- "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9007,8 +7980,6 @@
},
"node_modules/slash": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9017,8 +7988,6 @@
},
"node_modules/source-map-js": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -9027,8 +7996,6 @@
},
"node_modules/space-separated-tokens": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
- "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
"license": "MIT",
"funding": {
"type": "github",
@@ -9037,22 +8004,16 @@
},
"node_modules/stackback": {
"version": "0.0.2",
- "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
- "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
"dev": true,
"license": "MIT"
},
"node_modules/std-env": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz",
- "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==",
+ "version": "3.10.0",
"dev": true,
"license": "MIT"
},
"node_modules/stop-iteration-iterator": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
- "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9065,8 +8026,6 @@
},
"node_modules/string.prototype.matchall": {
"version": "4.0.12",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz",
- "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9093,8 +8052,6 @@
},
"node_modules/string.prototype.repeat": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
- "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9104,8 +8061,6 @@
},
"node_modules/string.prototype.trim": {
"version": "1.2.10",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
- "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9126,8 +8081,6 @@
},
"node_modules/string.prototype.trimend": {
"version": "1.0.9",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
- "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9145,8 +8098,6 @@
},
"node_modules/string.prototype.trimstart": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
- "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9163,8 +8114,6 @@
},
"node_modules/stringify-entities": {
"version": "4.0.4",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
- "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
"license": "MIT",
"dependencies": {
"character-entities-html4": "^2.0.0",
@@ -9177,8 +8126,6 @@
},
"node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9190,8 +8137,6 @@
},
"node_modules/strip-indent": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
"license": "MIT",
"dependencies": {
"min-indent": "^1.0.0"
@@ -9202,8 +8147,6 @@
},
"node_modules/strip-json-comments": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9214,9 +8157,7 @@
}
},
"node_modules/strip-literal": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz",
- "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==",
+ "version": "3.1.0",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9228,39 +8169,29 @@
},
"node_modules/strip-literal/node_modules/js-tokens": {
"version": "9.0.1",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
- "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
"dev": true,
"license": "MIT"
},
"node_modules/style-to-js": {
- "version": "1.1.17",
- "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz",
- "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==",
+ "version": "1.1.21",
"license": "MIT",
"dependencies": {
- "style-to-object": "1.0.9"
+ "style-to-object": "1.0.14"
}
},
"node_modules/style-to-object": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz",
- "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==",
+ "version": "1.0.14",
"license": "MIT",
"dependencies": {
- "inline-style-parser": "0.2.4"
+ "inline-style-parser": "0.2.7"
}
},
"node_modules/stylis": {
"version": "4.3.6",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz",
- "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==",
"license": "MIT"
},
"node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -9271,8 +8202,6 @@
},
"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==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9284,54 +8213,55 @@
},
"node_modules/symbol-tree": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
"dev": true,
"license": "MIT"
},
"node_modules/tabster": {
- "version": "8.5.6",
- "resolved": "https://registry.npmjs.org/tabster/-/tabster-8.5.6.tgz",
- "integrity": "sha512-2vfrRGrx8O9BjdrtSlVA5fvpmbq5HQBRN13XFRg6LAvZ1Fr3QdBnswgT4YgFS5Bhoo5nxwgjRaRueI2Us/dv7g==",
+ "version": "8.7.0",
"license": "MIT",
"dependencies": {
"keyborg": "2.6.0",
"tslib": "^2.8.1"
},
"optionalDependencies": {
- "@rollup/rollup-linux-x64-gnu": "4.40.0"
+ "@rollup/rollup-linux-x64-gnu": "4.53.3"
}
},
+ "node_modules/tabster/node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.53.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz",
+ "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/text-table": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true,
"license": "MIT"
},
"node_modules/tinybench": {
"version": "2.9.0",
- "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
- "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
"dev": true,
"license": "MIT"
},
"node_modules/tinyexec": {
"version": "0.3.2",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
- "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
"dev": true,
"license": "MIT"
},
"node_modules/tinyglobby": {
- "version": "0.2.15",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
- "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "version": "0.2.16",
"dev": true,
"license": "MIT",
"dependencies": {
"fdir": "^6.5.0",
- "picomatch": "^4.0.3"
+ "picomatch": "^4.0.4"
},
"engines": {
"node": ">=12.0.0"
@@ -9340,41 +8270,8 @@
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
- "node_modules/tinyglobby/node_modules/fdir": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
- "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "picomatch": "^3 || ^4"
- },
- "peerDependenciesMeta": {
- "picomatch": {
- "optional": true
- }
- }
- },
- "node_modules/tinyglobby/node_modules/picomatch": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/tinypool": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz",
- "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9383,8 +8280,6 @@
},
"node_modules/tinyrainbow": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
- "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9392,9 +8287,7 @@
}
},
"node_modules/tinyspy": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz",
- "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==",
+ "version": "4.0.4",
"dev": true,
"license": "MIT",
"engines": {
@@ -9403,8 +8296,6 @@
},
"node_modules/tldts": {
"version": "6.1.86",
- "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz",
- "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9416,15 +8307,11 @@
},
"node_modules/tldts-core": {
"version": "6.1.86",
- "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz",
- "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==",
"dev": true,
"license": "MIT"
},
"node_modules/to-regex-range": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9436,8 +8323,6 @@
},
"node_modules/totalist": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
- "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9446,8 +8331,6 @@
},
"node_modules/tough-cookie": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz",
- "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -9459,8 +8342,6 @@
},
"node_modules/tr46": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
- "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9472,8 +8353,6 @@
},
"node_modules/trim-lines": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
- "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
"license": "MIT",
"funding": {
"type": "github",
@@ -9482,8 +8361,6 @@
},
"node_modules/trough": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
- "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
"license": "MIT",
"funding": {
"type": "github",
@@ -9492,14 +8369,10 @@
},
"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==",
"license": "0BSD"
},
"node_modules/tsutils": {
"version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9514,15 +8387,11 @@
},
"node_modules/tsutils/node_modules/tslib": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true,
"license": "0BSD"
},
"node_modules/type-check": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9534,8 +8403,6 @@
},
"node_modules/type-fest": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -9547,8 +8414,6 @@
},
"node_modules/typed-array-buffer": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
- "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9562,8 +8427,6 @@
},
"node_modules/typed-array-byte-length": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
- "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9582,8 +8445,6 @@
},
"node_modules/typed-array-byte-offset": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
- "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9604,8 +8465,6 @@
},
"node_modules/typed-array-length": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
- "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9624,9 +8483,7 @@
}
},
"node_modules/typescript": {
- "version": "5.9.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
- "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
+ "version": "5.9.3",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -9639,8 +8496,6 @@
},
"node_modules/unbox-primitive": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
- "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9658,15 +8513,11 @@
},
"node_modules/undici-types": {
"version": "6.21.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
"dev": true,
"license": "MIT"
},
"node_modules/unified": {
"version": "11.0.5",
- "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
- "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -9683,9 +8534,7 @@
}
},
"node_modules/unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "version": "6.0.1",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0"
@@ -9697,8 +8546,6 @@
},
"node_modules/unist-util-position": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
- "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0"
@@ -9710,8 +8557,6 @@
},
"node_modules/unist-util-select": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-5.1.0.tgz",
- "integrity": "sha512-4A5mfokSHG/rNQ4g7gSbdEs+H586xyd24sdJqF1IWamqrLHvYb+DH48fzxowyOhOfK7YSqX+XlCojAyuuyyT2A==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -9727,8 +8572,6 @@
},
"node_modules/unist-util-stringify-position": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
- "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0"
@@ -9739,9 +8582,7 @@
}
},
"node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "version": "5.1.0",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -9754,9 +8595,7 @@
}
},
"node_modules/unist-util-visit-parents": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "version": "6.0.2",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -9768,9 +8607,7 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
- "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+ "version": "1.2.3",
"dev": true,
"funding": [
{
@@ -9800,8 +8637,6 @@
},
"node_modules/uri-js": {
"version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -9809,9 +8644,7 @@
}
},
"node_modules/use-sync-external-store": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz",
- "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==",
+ "version": "1.6.0",
"license": "MIT",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -9819,8 +8652,6 @@
},
"node_modules/vfile": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
- "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -9833,8 +8664,6 @@
},
"node_modules/vfile-location": {
"version": "5.0.3",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz",
- "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -9847,8 +8676,6 @@
},
"node_modules/vfile-message": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
- "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -9860,9 +8687,7 @@
}
},
"node_modules/vite": {
- "version": "7.1.5",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz",
- "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==",
+ "version": "7.1.11",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9936,8 +8761,6 @@
},
"node_modules/vite-node": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz",
- "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9957,41 +8780,8 @@
"url": "https://opencollective.com/vitest"
}
},
- "node_modules/vite/node_modules/fdir": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
- "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "picomatch": "^3 || ^4"
- },
- "peerDependenciesMeta": {
- "picomatch": {
- "optional": true
- }
- }
- },
- "node_modules/vite/node_modules/picomatch": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/vitest": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz",
- "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10061,23 +8851,8 @@
}
}
},
- "node_modules/vitest/node_modules/picomatch": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/w3c-xmlserializer": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
- "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10089,8 +8864,6 @@
},
"node_modules/web-namespaces": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
- "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
"license": "MIT",
"funding": {
"type": "github",
@@ -10099,14 +8872,10 @@
},
"node_modules/web-vitals": {
"version": "2.1.4",
- "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz",
- "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==",
"license": "Apache-2.0"
},
"node_modules/webidl-conversions": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
- "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
@@ -10115,8 +8884,6 @@
},
"node_modules/whatwg-encoding": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
- "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10128,8 +8895,6 @@
},
"node_modules/whatwg-mimetype": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
- "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10138,8 +8903,6 @@
},
"node_modules/whatwg-url": {
"version": "14.2.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
- "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10152,8 +8915,6 @@
},
"node_modules/which": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -10168,8 +8929,6 @@
},
"node_modules/which-boxed-primitive": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
- "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10188,8 +8947,6 @@
},
"node_modules/which-builtin-type": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
- "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10216,8 +8973,6 @@
},
"node_modules/which-collection": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
- "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10234,9 +8989,7 @@
}
},
"node_modules/which-typed-array": {
- "version": "1.1.19",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
- "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
+ "version": "1.1.20",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10257,8 +9010,6 @@
},
"node_modules/why-is-node-running": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
- "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10274,8 +9025,6 @@
},
"node_modules/word-wrap": {
"version": "1.2.5",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
- "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10284,15 +9033,11 @@
},
"node_modules/wrappy": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true,
"license": "ISC"
},
"node_modules/ws": {
- "version": "8.18.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
- "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "version": "8.20.0",
"dev": true,
"license": "MIT",
"engines": {
@@ -10313,8 +9058,6 @@
},
"node_modules/xml-name-validator": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
- "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -10323,22 +9066,16 @@
},
"node_modules/xmlchars": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
"dev": true,
"license": "MIT"
},
"node_modules/yallist": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true,
"license": "ISC"
},
"node_modules/yocto-queue": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10350,8 +9087,6 @@
},
"node_modules/zwitch": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
"license": "MIT",
"funding": {
"type": "github",
diff --git a/src/frontend/package.json b/src/App/package.json
similarity index 89%
rename from src/frontend/package.json
rename to src/App/package.json
index e1b252e8e..987d18010 100644
--- a/src/frontend/package.json
+++ b/src/App/package.json
@@ -7,6 +7,7 @@
"@fluentui/merge-styles": "^8.6.14",
"@fluentui/react-components": "^9.64.0",
"@fluentui/react-icons": "^2.0.300",
+ "@reduxjs/toolkit": "^2.11.2",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.3.0",
@@ -15,10 +16,10 @@
"@types/node": "^16.18.126",
"@types/react": "^18.3.23",
"@types/react-dom": "^18.3.7",
- "axios": "^1.13.5",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-markdown": "^10.1.0",
+ "react-redux": "^9.2.0",
"react-router-dom": "^7.12.0",
"rehype-prism": "^2.3.3",
"remark-gfm": "^4.0.1",
@@ -67,10 +68,14 @@
"jsdom": "^26.1.0",
"rollup": "^4.59.0",
"typescript": "^5.8.3",
- "vite": "^7.1.2",
+ "vite": "7.1.11",
"vitest": "^3.2.4"
},
"overrides": {
- "minimatch": "3.1.3"
+ "minimatch": "3.1.3",
+ "vite": "7.1.11",
+ "mdast-util-to-hast": "13.2.1",
+ "picomatch": "4.0.4",
+ "js-yaml": "4.1.1"
}
}
diff --git a/src/frontend/public/contosoLogo.svg b/src/App/public/contosoLogo.svg
similarity index 100%
rename from src/frontend/public/contosoLogo.svg
rename to src/App/public/contosoLogo.svg
diff --git a/src/frontend/public/favicon-96x96.png b/src/App/public/favicon-96x96.png
similarity index 100%
rename from src/frontend/public/favicon-96x96.png
rename to src/App/public/favicon-96x96.png
diff --git a/src/frontend/public/favicon.ico b/src/App/public/favicon.ico
similarity index 100%
rename from src/frontend/public/favicon.ico
rename to src/App/public/favicon.ico
diff --git a/src/frontend/public/index.html b/src/App/public/index.html
similarity index 100%
rename from src/frontend/public/index.html
rename to src/App/public/index.html
diff --git a/src/frontend/public/logo192.png b/src/App/public/logo192.png
similarity index 100%
rename from src/frontend/public/logo192.png
rename to src/App/public/logo192.png
diff --git a/src/frontend/public/logo512.png b/src/App/public/logo512.png
similarity index 100%
rename from src/frontend/public/logo512.png
rename to src/App/public/logo512.png
diff --git a/src/frontend/public/manifest.json b/src/App/public/manifest.json
similarity index 100%
rename from src/frontend/public/manifest.json
rename to src/App/public/manifest.json
diff --git a/src/frontend/public/robots.txt b/src/App/public/robots.txt
similarity index 100%
rename from src/frontend/public/robots.txt
rename to src/App/public/robots.txt
diff --git a/src/frontend/pyproject.toml b/src/App/pyproject.toml
similarity index 100%
rename from src/frontend/pyproject.toml
rename to src/App/pyproject.toml
diff --git a/src/frontend/requirements.txt b/src/App/requirements.txt
similarity index 100%
rename from src/frontend/requirements.txt
rename to src/App/requirements.txt
diff --git a/src/frontend/src/App.css b/src/App/src/App.css
similarity index 100%
rename from src/frontend/src/App.css
rename to src/App/src/App.css
diff --git a/src/frontend/src/App.tsx b/src/App/src/App.tsx
similarity index 100%
rename from src/frontend/src/App.tsx
rename to src/App/src/App.tsx
diff --git a/src/App/src/api/apiClient.tsx b/src/App/src/api/apiClient.tsx
new file mode 100644
index 000000000..7eaab10f2
--- /dev/null
+++ b/src/App/src/api/apiClient.tsx
@@ -0,0 +1,52 @@
+/**
+ * API Client — thin adapter over the centralized httpClient.
+ *
+ * Auth headers (x-ms-client-principal-id, Authorization) are now injected
+ * automatically by httpClient's request interceptor, eliminating all manual
+ * headerBuilder() / localStorage.getItem('token') calls.
+ */
+import httpClient from './httpClient';
+import { getApiUrl } from './config';
+
+/**
+ * Ensure httpClient's base URL stays in sync with the runtime config.
+ * Called lazily on every request so it picks up late-initialized API_URL.
+ */
+function syncBaseUrl(): void {
+ const apiUrl = getApiUrl();
+ if (apiUrl && httpClient.getBaseUrl() !== apiUrl) {
+ httpClient.setBaseUrl(apiUrl);
+ }
+}
+
+export const apiClient = {
+ get: (url: string, config?: { params?: Record }): Promise => {
+ syncBaseUrl();
+ return httpClient.get(url, { params: config?.params });
+ },
+
+ post: (url: string, body?: unknown): Promise => {
+ syncBaseUrl();
+ return httpClient.post(url, body);
+ },
+
+ put: (url: string, body?: unknown): Promise => {
+ syncBaseUrl();
+ return httpClient.put(url, body);
+ },
+
+ delete: (url: string): Promise => {
+ syncBaseUrl();
+ return httpClient.del(url);
+ },
+
+ upload: (url: string, formData: FormData): Promise => {
+ syncBaseUrl();
+ return httpClient.upload(url, formData);
+ },
+
+ login: (url: string, body?: unknown): Promise => {
+ syncBaseUrl();
+ return httpClient.postWithoutAuth(url, body);
+ },
+};
diff --git a/src/frontend/src/api/apiService.tsx b/src/App/src/api/apiService.tsx
similarity index 95%
rename from src/frontend/src/api/apiService.tsx
rename to src/App/src/api/apiService.tsx
index 064154420..f6f6ba3d9 100644
--- a/src/frontend/src/api/apiService.tsx
+++ b/src/App/src/api/apiService.tsx
@@ -156,7 +156,6 @@ export class APIService {
if (!data) {
throw new Error(`Plan with ID ${planId} not found`);
}
- console.log('Fetched plan by ID:', data);
const results = {
plan: data.plan as Plan,
messages: data.messages as AgentMessageBE[],
@@ -190,8 +189,6 @@ export class APIService {
const requestKey = `approve-plan-${planApprovalData.m_plan_id}`;
return this._requestTracker.trackRequest(requestKey, async () => {
- console.log('📤 Approving plan via v4 API:', planApprovalData);
-
const response = await apiClient.post(API_ENDPOINTS.PLAN_APPROVAL, planApprovalData);
// Invalidate cache since plan execution will start
@@ -200,7 +197,6 @@ export class APIService {
this._cache.invalidate(new RegExp(`^plan.*_${planApprovalData.plan_id}`));
}
- console.log('✅ Plan approval successful:', response);
return response;
});
}
@@ -260,13 +256,7 @@ export class APIService {
return response;
}
async sendAgentMessage(data: AgentMessageResponse): Promise {
- const t0 = performance.now();
const result = await apiClient.post(API_ENDPOINTS.AGENT_MESSAGE, data);
- console.log('[agent_message] sent', {
- ms: +(performance.now() - t0).toFixed(1),
- agent: data.agent,
- type: data.agent_type
- });
return result;
}
}
diff --git a/src/App/src/api/apiUtils.ts b/src/App/src/api/apiUtils.ts
new file mode 100644
index 000000000..f3872025b
--- /dev/null
+++ b/src/App/src/api/apiUtils.ts
@@ -0,0 +1,149 @@
+/**
+ * API Utility Functions
+ *
+ * Centralized helpers for error response construction, retry logic,
+ * and request deduplication. Single source of truth — eliminates
+ * duplicated error patterns across API functions.
+ */
+
+/**
+ * Create a standardized error response object.
+ * Replaces repeated `{ ...new Response(), ok: false, status: 500 }` patterns.
+ */
+export function createErrorResponse(status: number, message: string): Response {
+ return new Response(JSON.stringify({ error: message }), {
+ status,
+ statusText: message,
+ headers: { 'Content-Type': 'application/json' },
+ });
+}
+
+/**
+ * Retry a request with exponential backoff.
+ * @param fn - The async function to retry
+ * @param maxRetries - Maximum number of retry attempts (default: 3)
+ * @param baseDelay - Base delay in ms before exponential increase (default: 1000)
+ */
+export async function retryRequest(
+ fn: () => Promise,
+ maxRetries = 3,
+ baseDelay = 1000
+): Promise {
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
+ try {
+ return await fn();
+ } catch (error) {
+ if (attempt === maxRetries) throw error;
+ const delay = baseDelay * Math.pow(2, attempt);
+ await new Promise((resolve) => setTimeout(resolve, delay));
+ }
+ }
+ throw new Error('Max retries exceeded');
+}
+
+/**
+ * Request cache with TTL and deduplication of in-flight requests.
+ * Prevents duplicate API calls for the same data.
+ */
+interface CacheEntry {
+ data: T;
+ timestamp: number;
+ expiresAt: number;
+}
+
+export class RequestCache {
+ private cache = new Map>();
+ private pendingRequests = new Map>();
+
+ /** Get cached data or fetch it, deduplicating concurrent identical requests */
+ async get(
+ key: string,
+ fetcher: () => Promise,
+ ttlMs = 30000
+ ): Promise {
+ // Return cached data if still fresh
+ const cached = this.cache.get(key);
+ if (cached && Date.now() < cached.expiresAt) {
+ return cached.data as T;
+ }
+
+ // Deduplicate concurrent identical requests
+ const pending = this.pendingRequests.get(key);
+ if (pending) {
+ return pending as Promise;
+ }
+
+ const request = fetcher()
+ .then((data) => {
+ this.cache.set(key, {
+ data,
+ timestamp: Date.now(),
+ expiresAt: Date.now() + ttlMs,
+ });
+ this.pendingRequests.delete(key);
+ return data;
+ })
+ .catch((error) => {
+ this.pendingRequests.delete(key);
+ throw error;
+ });
+
+ this.pendingRequests.set(key, request);
+ return request;
+ }
+
+ /** Invalidate cached entries matching a key pattern */
+ invalidate(pattern?: string | RegExp): void {
+ if (!pattern) {
+ this.cache.clear();
+ return;
+ }
+ for (const key of this.cache.keys()) {
+ const matches = typeof pattern === 'string'
+ ? key.includes(pattern)
+ : pattern.test(key);
+ if (matches) this.cache.delete(key);
+ }
+ }
+
+ /** Clear all cached data */
+ clear(): void {
+ this.cache.clear();
+ this.pendingRequests.clear();
+ }
+}
+
+/** Shared request cache singleton */
+export const requestCache = new RequestCache();
+
+/**
+ * Debounce utility — delays calling `fn` until `delayMs` has elapsed
+ * since the last invocation.
+ */
+export function debounce void>(
+ fn: T,
+ delayMs: number
+): (...args: Parameters) => void {
+ let timer: ReturnType;
+ return (...args: Parameters) => {
+ clearTimeout(timer);
+ timer = setTimeout(() => fn(...args), delayMs);
+ };
+}
+
+/**
+ * Throttle utility — ensures `fn` is called at most once per `limitMs`.
+ */
+export function throttle void>(
+ fn: T,
+ limitMs: number
+): (...args: Parameters) => void {
+ let lastCall = 0;
+ return (...args: Parameters) => {
+ const now = Date.now();
+ if (now - lastCall >= limitMs) {
+ lastCall = now;
+ fn(...args);
+ }
+ };
+}
diff --git a/src/frontend/src/api/config.tsx b/src/App/src/api/config.tsx
similarity index 79%
rename from src/frontend/src/api/config.tsx
rename to src/App/src/api/config.tsx
index b7609e7ee..d3b216eec 100644
--- a/src/frontend/src/api/config.tsx
+++ b/src/App/src/api/config.tsx
@@ -52,9 +52,6 @@ export async function getUserInfo(): Promise {
try {
const response = await fetch("/.auth/me");
if (!response.ok) {
- console.log(
- "No identity provider found. Access to chat will be blocked."
- );
return {} as UserInfo;
}
const payload = await response.json();
@@ -97,7 +94,6 @@ export function getUserInfoGlobal() {
}
if (!USER_INFO) {
- // console.info('User info not yet configured');
return null;
}
@@ -105,7 +101,6 @@ export function getUserInfoGlobal() {
}
export function getUserId(): string {
- // USER_ID = getUserInfoGlobal()?.user_id || null;
if (!USER_ID) {
USER_ID = getUserInfoGlobal()?.user_id || null;
}
@@ -113,24 +108,6 @@ export function getUserId(): string {
return userId;
}
-/**
- * Build headers with authentication information
- * @param headers Optional additional headers to merge
- * @returns Combined headers object with authentication
- */
-export function headerBuilder(headers?: Record): Record {
- let userId = getUserId();
- //console.log('headerBuilder: Using user ID:', userId);
- let defaultHeaders = {
- "x-ms-client-principal-id": String(userId) || "", // Custom header
- };
- //console.log('headerBuilder: Created headers:', defaultHeaders);
- return {
- ...defaultHeaders,
- ...(headers ? headers : {})
- };
-}
-
export const toBoolean = (value: any): boolean => {
if (typeof value !== 'string') {
return false;
diff --git a/src/App/src/api/httpClient.ts b/src/App/src/api/httpClient.ts
new file mode 100644
index 000000000..866709c34
--- /dev/null
+++ b/src/App/src/api/httpClient.ts
@@ -0,0 +1,246 @@
+/**
+ * Centralized HTTP Client with Interceptors
+ *
+ * Singleton class that wraps all API calls with:
+ * - Automatic auth header injection via request interceptors
+ * - Uniform error handling via response interceptors
+ * - Built-in timeout, configurable base URL, and params serialization
+ *
+ * Eliminates duplicated localStorage/header logic across API functions.
+ */
+import { getUserId } from './config';
+
+type RequestConfig = RequestInit & { url: string };
+type RequestInterceptor = (config: RequestConfig) => RequestConfig;
+type ResponseInterceptor = (response: Response) => Response | Promise;
+
+class HttpClient {
+ private baseUrl: string;
+ private requestInterceptors: RequestInterceptor[] = [];
+ private responseInterceptors: ResponseInterceptor[] = [];
+ private timeout: number;
+
+ constructor(baseUrl = '', timeout = 30000) {
+ this.baseUrl = baseUrl;
+ this.timeout = timeout;
+ }
+
+ /** Set or update the base URL at runtime (after config is loaded) */
+ setBaseUrl(url: string): void {
+ this.baseUrl = url;
+ }
+
+ getBaseUrl(): string {
+ return this.baseUrl;
+ }
+
+ /** Register a request interceptor (runs before every request) */
+ addRequestInterceptor(interceptor: RequestInterceptor): void {
+ this.requestInterceptors.push(interceptor);
+ }
+
+ /** Register a response interceptor (runs after every response) */
+ addResponseInterceptor(interceptor: ResponseInterceptor): void {
+ this.responseInterceptors.push(interceptor);
+ }
+
+ /** Build URL with query parameters */
+ private buildUrl(path: string, params?: Record): string {
+ const base = this.baseUrl ? `${this.baseUrl}${path}` : path;
+ if (!params) return base;
+
+ const searchParams = new URLSearchParams();
+ Object.entries(params).forEach(([key, value]) => {
+ if (value !== undefined && value !== null) {
+ searchParams.append(key, String(value));
+ }
+ });
+
+ const queryString = searchParams.toString();
+ return queryString ? `${base}?${queryString}` : base;
+ }
+
+ /** Core request method — applies interceptors, timeout, and error handling */
+ private async request(
+ path: string,
+ options: RequestInit & { params?: Record } = {}
+ ): Promise {
+ const { params, ...fetchOptions } = options;
+ const url = this.buildUrl(path, params);
+
+ // Build initial config
+ let config: RequestConfig = { url, ...fetchOptions };
+
+ // Run request interceptors
+ for (const interceptor of this.requestInterceptors) {
+ config = interceptor(config);
+ }
+
+ const { url: finalUrl, ...rest } = config;
+
+ // Timeout via AbortController
+ const controller = new AbortController();
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
+
+ try {
+ let response = await fetch(finalUrl, {
+ ...rest,
+ signal: controller.signal,
+ });
+
+ // Run response interceptors
+ for (const interceptor of this.responseInterceptors) {
+ response = await interceptor(response);
+ }
+
+ return response;
+ } finally {
+ clearTimeout(timeoutId);
+ }
+ }
+
+ /** HTTP GET */
+ async get(
+ path: string,
+ config?: { params?: Record; headers?: Record }
+ ): Promise {
+ const response = await this.request(path, {
+ method: 'GET',
+ params: config?.params,
+ headers: config?.headers,
+ });
+
+ if (!response.ok) {
+ const errorText = await response.text();
+ throw new Error(errorText || 'Request failed');
+ }
+
+ const isJson = response.headers.get('content-type')?.includes('application/json');
+ return isJson ? response.json() : (null as T);
+ }
+
+ /** HTTP POST */
+ async post(
+ path: string,
+ body?: unknown,
+ config?: { headers?: Record }
+ ): Promise {
+ const response = await this.request(path, {
+ method: 'POST',
+ body: JSON.stringify(body),
+ headers: {
+ 'Content-Type': 'application/json',
+ ...config?.headers,
+ },
+ });
+
+ if (!response.ok) {
+ const errorText = await response.text();
+ throw new Error(errorText || 'Request failed');
+ }
+
+ const isJson = response.headers.get('content-type')?.includes('application/json');
+ return isJson ? response.json() : (null as T);
+ }
+
+ /** HTTP PUT */
+ async put(
+ path: string,
+ body?: unknown,
+ config?: { headers?: Record }
+ ): Promise {
+ const response = await this.request(path, {
+ method: 'PUT',
+ body: JSON.stringify(body),
+ headers: {
+ 'Content-Type': 'application/json',
+ ...config?.headers,
+ },
+ });
+
+ if (!response.ok) {
+ const errorText = await response.text();
+ throw new Error(errorText || 'Request failed');
+ }
+
+ const isJson = response.headers.get('content-type')?.includes('application/json');
+ return isJson ? response.json() : (null as T);
+ }
+
+ /** HTTP DELETE */
+ async del(path: string): Promise {
+ const response = await this.request(path, { method: 'DELETE' });
+
+ if (!response.ok) {
+ const errorText = await response.text();
+ throw new Error(errorText || 'Request failed');
+ }
+
+ const isJson = response.headers.get('content-type')?.includes('application/json');
+ return isJson ? response.json() : (null as T);
+ }
+
+ /** Upload a FormData payload (multipart/form-data) */
+ async upload(path: string, formData: FormData): Promise {
+ // Don't set Content-Type — browser sets multipart boundary automatically
+ const response = await this.request(path, {
+ method: 'POST',
+ body: formData,
+ });
+
+ if (!response.ok) {
+ const errorText = await response.text();
+ throw new Error(errorText || 'Upload failed');
+ }
+
+ const isJson = response.headers.get('content-type')?.includes('application/json');
+ return isJson ? response.json() : (null as T);
+ }
+
+ /** HTTP POST without auth (used for login) */
+ async postWithoutAuth(path: string, body?: unknown): Promise {
+ const url = this.baseUrl ? `${this.baseUrl}${path}` : path;
+
+ const response = await fetch(url, {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: body ? JSON.stringify(body) : undefined,
+ });
+
+ if (!response.ok) {
+ const errorText = await response.text();
+ throw new Error(errorText || 'Request failed');
+ }
+
+ const isJson = response.headers.get('content-type')?.includes('application/json');
+ return isJson ? response.json() : (null as T);
+ }
+}
+
+// ──────────────────────────────────────────────
+// Singleton instance with interceptors
+// ──────────────────────────────────────────────
+
+const httpClient = new HttpClient();
+
+/**
+ * Auth interceptor — single source of truth for userId header.
+ * Eliminates repeated localStorage.getItem("userId") and manual headerBuilder() calls.
+ */
+httpClient.addRequestInterceptor((config) => {
+ const userId = getUserId();
+ const token = localStorage.getItem('token');
+
+ const headers = new Headers(config.headers as HeadersInit);
+
+ if (userId) {
+ headers.set('x-ms-client-principal-id', String(userId));
+ }
+ if (token) {
+ headers.set('Authorization', `Bearer ${token}`);
+ }
+
+ return { ...config, headers };
+});
+
+export default httpClient;
diff --git a/src/App/src/api/index.tsx b/src/App/src/api/index.tsx
new file mode 100644
index 000000000..c88cde5fd
--- /dev/null
+++ b/src/App/src/api/index.tsx
@@ -0,0 +1,11 @@
+// Export our API services and utilities
+export * from './apiClient';
+
+// Centralized HTTP client with interceptors (Point 2)
+export { default as httpClient } from './httpClient';
+
+// API utilities: createErrorResponse, retryRequest, RequestCache (Points 6, 8)
+export * from './apiUtils';
+
+// Unified API service - recommended for all new code
+export { apiService } from './apiService';
diff --git a/src/frontend/src/assets/WebWarning.svg b/src/App/src/assets/WebWarning.svg
similarity index 100%
rename from src/frontend/src/assets/WebWarning.svg
rename to src/App/src/assets/WebWarning.svg
diff --git a/src/frontend/src/coral/SYSTEM_OVERVIEW.md b/src/App/src/commonComponents/SYSTEM_OVERVIEW.md
similarity index 100%
rename from src/frontend/src/coral/SYSTEM_OVERVIEW.md
rename to src/App/src/commonComponents/SYSTEM_OVERVIEW.md
diff --git a/src/frontend/src/coral/components/Content/Chat.css b/src/App/src/commonComponents/components/Content/Chat.css
similarity index 100%
rename from src/frontend/src/coral/components/Content/Chat.css
rename to src/App/src/commonComponents/components/Content/Chat.css
diff --git a/src/frontend/src/coral/components/Content/Content.tsx b/src/App/src/commonComponents/components/Content/Content.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Content/Content.tsx
rename to src/App/src/commonComponents/components/Content/Content.tsx
diff --git a/src/frontend/src/coral/components/Content/ContentToolbar.tsx b/src/App/src/commonComponents/components/Content/ContentToolbar.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Content/ContentToolbar.tsx
rename to src/App/src/commonComponents/components/Content/ContentToolbar.tsx
diff --git a/src/frontend/src/coral/components/Content/README.md b/src/App/src/commonComponents/components/Content/README.md
similarity index 100%
rename from src/frontend/src/coral/components/Content/README.md
rename to src/App/src/commonComponents/components/Content/README.md
diff --git a/src/frontend/src/coral/components/CoralAccordion/CoralAccordion.tsx b/src/App/src/commonComponents/components/CoralAccordion/CoralAccordion.tsx
similarity index 100%
rename from src/frontend/src/coral/components/CoralAccordion/CoralAccordion.tsx
rename to src/App/src/commonComponents/components/CoralAccordion/CoralAccordion.tsx
diff --git a/src/frontend/src/coral/components/CoralAccordion/CoralAccordionContext.tsx b/src/App/src/commonComponents/components/CoralAccordion/CoralAccordionContext.tsx
similarity index 100%
rename from src/frontend/src/coral/components/CoralAccordion/CoralAccordionContext.tsx
rename to src/App/src/commonComponents/components/CoralAccordion/CoralAccordionContext.tsx
diff --git a/src/frontend/src/coral/components/CoralAccordion/CoralAccordionHeader.tsx b/src/App/src/commonComponents/components/CoralAccordion/CoralAccordionHeader.tsx
similarity index 100%
rename from src/frontend/src/coral/components/CoralAccordion/CoralAccordionHeader.tsx
rename to src/App/src/commonComponents/components/CoralAccordion/CoralAccordionHeader.tsx
diff --git a/src/frontend/src/coral/components/CoralAccordion/CoralAccordionItem.tsx b/src/App/src/commonComponents/components/CoralAccordion/CoralAccordionItem.tsx
similarity index 100%
rename from src/frontend/src/coral/components/CoralAccordion/CoralAccordionItem.tsx
rename to src/App/src/commonComponents/components/CoralAccordion/CoralAccordionItem.tsx
diff --git a/src/frontend/src/coral/components/CoralAccordion/CoralAccordionPanel.tsx b/src/App/src/commonComponents/components/CoralAccordion/CoralAccordionPanel.tsx
similarity index 100%
rename from src/frontend/src/coral/components/CoralAccordion/CoralAccordionPanel.tsx
rename to src/App/src/commonComponents/components/CoralAccordion/CoralAccordionPanel.tsx
diff --git a/src/frontend/src/coral/components/Header/Header.tsx b/src/App/src/commonComponents/components/Header/Header.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Header/Header.tsx
rename to src/App/src/commonComponents/components/Header/Header.tsx
diff --git a/src/frontend/src/coral/components/Header/HeaderTools.tsx b/src/App/src/commonComponents/components/Header/HeaderTools.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Header/HeaderTools.tsx
rename to src/App/src/commonComponents/components/Header/HeaderTools.tsx
diff --git a/src/frontend/src/coral/components/Header/PanelRightToggles.tsx b/src/App/src/commonComponents/components/Header/PanelRightToggles.tsx
similarity index 96%
rename from src/frontend/src/coral/components/Header/PanelRightToggles.tsx
rename to src/App/src/commonComponents/components/Header/PanelRightToggles.tsx
index 938777226..2c0c0f4c5 100644
--- a/src/frontend/src/coral/components/Header/PanelRightToggles.tsx
+++ b/src/App/src/commonComponents/components/Header/PanelRightToggles.tsx
@@ -12,7 +12,7 @@ import {
Button,
ButtonProps
} from "@fluentui/react-components";
-import { PanelRightContract, PanelRightExpand } from "@/coral/imports/bundleicons";
+import { PanelRightContract, PanelRightExpand } from "@/commonComponents/imports/bundleicons";
import eventBus from "../eventbus.js";
type PanelRightTogglesProps = {
diff --git a/src/frontend/src/coral/components/Header/README.md b/src/App/src/commonComponents/components/Header/README.md
similarity index 100%
rename from src/frontend/src/coral/components/Header/README.md
rename to src/App/src/commonComponents/components/Header/README.md
diff --git a/src/frontend/src/coral/components/Layout/CoralShellColumn.tsx b/src/App/src/commonComponents/components/Layout/CoralShellColumn.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Layout/CoralShellColumn.tsx
rename to src/App/src/commonComponents/components/Layout/CoralShellColumn.tsx
diff --git a/src/frontend/src/coral/components/Layout/CoralShellRow.tsx b/src/App/src/commonComponents/components/Layout/CoralShellRow.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Layout/CoralShellRow.tsx
rename to src/App/src/commonComponents/components/Layout/CoralShellRow.tsx
diff --git a/src/frontend/src/coral/components/Layout/README.md b/src/App/src/commonComponents/components/Layout/README.md
similarity index 100%
rename from src/frontend/src/coral/components/Layout/README.md
rename to src/App/src/commonComponents/components/Layout/README.md
diff --git a/src/frontend/src/coral/components/LoadingMessage.tsx b/src/App/src/commonComponents/components/LoadingMessage.tsx
similarity index 100%
rename from src/frontend/src/coral/components/LoadingMessage.tsx
rename to src/App/src/commonComponents/components/LoadingMessage.tsx
diff --git a/src/frontend/src/coral/components/Panels/PanelFooter.tsx b/src/App/src/commonComponents/components/Panels/PanelFooter.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Panels/PanelFooter.tsx
rename to src/App/src/commonComponents/components/Panels/PanelFooter.tsx
diff --git a/src/frontend/src/coral/components/Panels/PanelLeft.tsx b/src/App/src/commonComponents/components/Panels/PanelLeft.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Panels/PanelLeft.tsx
rename to src/App/src/commonComponents/components/Panels/PanelLeft.tsx
diff --git a/src/frontend/src/coral/components/Panels/PanelLeftToolbar.tsx b/src/App/src/commonComponents/components/Panels/PanelLeftToolbar.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Panels/PanelLeftToolbar.tsx
rename to src/App/src/commonComponents/components/Panels/PanelLeftToolbar.tsx
diff --git a/src/frontend/src/coral/components/Panels/PanelRight.tsx b/src/App/src/commonComponents/components/Panels/PanelRight.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Panels/PanelRight.tsx
rename to src/App/src/commonComponents/components/Panels/PanelRight.tsx
diff --git a/src/frontend/src/coral/components/Panels/PanelRightToolbar.tsx b/src/App/src/commonComponents/components/Panels/PanelRightToolbar.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Panels/PanelRightToolbar.tsx
rename to src/App/src/commonComponents/components/Panels/PanelRightToolbar.tsx
diff --git a/src/frontend/src/coral/components/Panels/README.md b/src/App/src/commonComponents/components/Panels/README.md
similarity index 100%
rename from src/frontend/src/coral/components/Panels/README.md
rename to src/App/src/commonComponents/components/Panels/README.md
diff --git a/src/frontend/src/coral/components/Panels/UserCard.tsx b/src/App/src/commonComponents/components/Panels/UserCard.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Panels/UserCard.tsx
rename to src/App/src/commonComponents/components/Panels/UserCard.tsx
diff --git a/src/frontend/src/coral/components/Progress/ProgressCircle.tsx b/src/App/src/commonComponents/components/Progress/ProgressCircle.tsx
similarity index 100%
rename from src/frontend/src/coral/components/Progress/ProgressCircle.tsx
rename to src/App/src/commonComponents/components/Progress/ProgressCircle.tsx
diff --git a/src/frontend/src/coral/components/PromptCard.tsx b/src/App/src/commonComponents/components/PromptCard.tsx
similarity index 100%
rename from src/frontend/src/coral/components/PromptCard.tsx
rename to src/App/src/commonComponents/components/PromptCard.tsx
diff --git a/src/frontend/src/coral/components/eventbus.README.md b/src/App/src/commonComponents/components/eventbus.README.md
similarity index 100%
rename from src/frontend/src/coral/components/eventbus.README.md
rename to src/App/src/commonComponents/components/eventbus.README.md
diff --git a/src/frontend/src/coral/components/eventbus.tsx b/src/App/src/commonComponents/components/eventbus.tsx
similarity index 100%
rename from src/frontend/src/coral/components/eventbus.tsx
rename to src/App/src/commonComponents/components/eventbus.tsx
diff --git a/src/frontend/src/coral/imports/ContosoLogo.tsx b/src/App/src/commonComponents/imports/ContosoLogo.tsx
similarity index 100%
rename from src/frontend/src/coral/imports/ContosoLogo.tsx
rename to src/App/src/commonComponents/imports/ContosoLogo.tsx
diff --git a/src/frontend/src/coral/imports/MsftColor.tsx b/src/App/src/commonComponents/imports/MsftColor.tsx
similarity index 100%
rename from src/frontend/src/coral/imports/MsftColor.tsx
rename to src/App/src/commonComponents/imports/MsftColor.tsx
diff --git a/src/frontend/src/coral/imports/Octopus.png b/src/App/src/commonComponents/imports/Octopus.png
similarity index 100%
rename from src/frontend/src/coral/imports/Octopus.png
rename to src/App/src/commonComponents/imports/Octopus.png
diff --git a/src/frontend/src/coral/imports/bundleicons.tsx b/src/App/src/commonComponents/imports/bundleicons.tsx
similarity index 100%
rename from src/frontend/src/coral/imports/bundleicons.tsx
rename to src/App/src/commonComponents/imports/bundleicons.tsx
diff --git a/src/frontend/src/coral/imports/human.png b/src/App/src/commonComponents/imports/human.png
similarity index 100%
rename from src/frontend/src/coral/imports/human.png
rename to src/App/src/commonComponents/imports/human.png
diff --git a/src/frontend/src/coral/modules/Chat.css b/src/App/src/commonComponents/modules/Chat.css
similarity index 100%
rename from src/frontend/src/coral/modules/Chat.css
rename to src/App/src/commonComponents/modules/Chat.css
diff --git a/src/frontend/src/coral/modules/Chat.tsx b/src/App/src/commonComponents/modules/Chat.tsx
similarity index 95%
rename from src/frontend/src/coral/modules/Chat.tsx
rename to src/App/src/commonComponents/modules/Chat.tsx
index e178cc105..c5617b8d4 100644
--- a/src/frontend/src/coral/modules/Chat.tsx
+++ b/src/App/src/commonComponents/modules/Chat.tsx
@@ -62,8 +62,9 @@ const Chat: React.FC = ({
}
// const chatMessages = await chatService.getUserHistory(userId);
// setMessages(chatMessages);
- } catch (err) {
- console.log("Failed to load chat history.", err);
+ } catch {
+ // Failed to load history — silent fail
+ console.log("Failed to load chat history for user");
}
};
loadHistory();
@@ -102,8 +103,8 @@ const Chat: React.FC = ({
};
const handleCopy = (text: string) => {
- navigator.clipboard.writeText(text).catch((err) => {
- console.log("Failed to copy text:", err);
+ navigator.clipboard.writeText(text).catch(() => {
+ // clipboard copy failed — silent
});
};
@@ -150,8 +151,7 @@ const Chat: React.FC = ({
// const assistantMessage = { role: "assistant", content: response.assistant_response };
// setMessages([...updatedMessages, assistantMessage]);
}
- } catch (err) {
- console.log("Send Message Error:", err);
+ } catch {
setMessages([
...updatedMessages,
{ role: "assistant", content: "Oops! Something went wrong sending your message." },
@@ -169,8 +169,9 @@ const Chat: React.FC = ({
// await chatService.clearChatHistory(userId);
}
setMessages([]);
- } catch (err) {
- console.log("Failed to clear chat history:", err);
+ } catch {
+ // clear history failed — silent
+ console.log("Failed to clear chat history for user");
}
};
@@ -195,7 +196,7 @@ const Chat: React.FC = ({
icon={}
/>