From 44f649723da57e9cd63c6dd5b4814f3f718063fa Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:20:27 -0700 Subject: [PATCH 01/43] Updated Dockerfiles to use Python 3.11 and NodeJS 22.x images --- Dockerfile.deb | 4 ++-- Dockerfile.func | 4 ++-- Dockerfile.rhel | 4 ++-- engine/Dockerfile.deb | 2 +- engine/Dockerfile.dev | 2 +- engine/Dockerfile.func | 2 +- engine/Dockerfile.rhel | 2 +- ui/Dockerfile.deb | 2 +- ui/Dockerfile.dev | 2 +- ui/Dockerfile.rhel | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Dockerfile.deb b/Dockerfile.deb index 6a6976f8..f53f2722 100644 --- a/Dockerfile.deb +++ b/Dockerfile.deb @@ -1,5 +1,5 @@ -ARG BUILD_IMAGE=node:18-slim -ARG SERVE_IMAGE=python:3.9-slim +ARG BUILD_IMAGE=node:22-slim +ARG SERVE_IMAGE=python:3.11-slim ARG PORT=8080 diff --git a/Dockerfile.func b/Dockerfile.func index 360f0a5d..ef317e47 100644 --- a/Dockerfile.func +++ b/Dockerfile.func @@ -1,5 +1,5 @@ -ARG BUILD_IMAGE=mcr.microsoft.com/azure-functions/node:4-node18-appservice -ARG SERVE_IMAGE=mcr.microsoft.com/azure-functions/python:4-python3.9-appservice +ARG BUILD_IMAGE=mcr.microsoft.com/azure-functions/node:4-node22-appservice +ARG SERVE_IMAGE=mcr.microsoft.com/azure-functions/python:4-python3.11-appservice FROM $BUILD_IMAGE AS builder diff --git a/Dockerfile.rhel b/Dockerfile.rhel index 4a14fa9e..a7a5f02b 100644 --- a/Dockerfile.rhel +++ b/Dockerfile.rhel @@ -1,5 +1,5 @@ -ARG BUILD_IMAGE=registry.access.redhat.com/ubi8/nodejs-18 -ARG SERVE_IMAGE=registry.access.redhat.com/ubi8/python-39 +ARG BUILD_IMAGE=registry.access.redhat.com/ubi8/nodejs-22 +ARG SERVE_IMAGE=registry.access.redhat.com/ubi8/python-311 ARG PORT=8080 diff --git a/engine/Dockerfile.deb b/engine/Dockerfile.deb index 53267a0c..d230f055 100644 --- a/engine/Dockerfile.deb +++ b/engine/Dockerfile.deb @@ -1,4 +1,4 @@ -ARG BASE_IMAGE=python:3.9-slim +ARG BASE_IMAGE=python:3.11-slim FROM $BASE_IMAGE ARG PORT=80 diff --git a/engine/Dockerfile.dev b/engine/Dockerfile.dev index 91bd9a44..7b544226 100644 --- a/engine/Dockerfile.dev +++ b/engine/Dockerfile.dev @@ -1,4 +1,4 @@ -ARG VARIANT=3.9-bullseye +ARG VARIANT=3.11-bullseye FROM mcr.microsoft.com/vscode/devcontainers/python:${VARIANT} ARG PORT=8000 diff --git a/engine/Dockerfile.func b/engine/Dockerfile.func index 64fcda87..f6ccb8f9 100644 --- a/engine/Dockerfile.func +++ b/engine/Dockerfile.func @@ -1,6 +1,6 @@ # To enable ssh & remote debugging on app service change the base image to the one below # FROM mcr.microsoft.com/azure-functions/python:3.0-python3.9-appservice -FROM mcr.microsoft.com/azure-functions/python:4-python3.9-appservice +FROM mcr.microsoft.com/azure-functions/python:4-python3.11-appservice ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true diff --git a/engine/Dockerfile.rhel b/engine/Dockerfile.rhel index 47de00ef..f989ac45 100644 --- a/engine/Dockerfile.rhel +++ b/engine/Dockerfile.rhel @@ -1,4 +1,4 @@ -ARG BASE_IMAGE=registry.access.redhat.com/ubi8/python-39 +ARG BASE_IMAGE=registry.access.redhat.com/ubi8/python-311 FROM $BASE_IMAGE ARG PORT=8080 diff --git a/ui/Dockerfile.deb b/ui/Dockerfile.deb index 6d22c7c1..0ab6d999 100644 --- a/ui/Dockerfile.deb +++ b/ui/Dockerfile.deb @@ -1,4 +1,4 @@ -ARG BASE_IMAGE=node:18-slim +ARG BASE_IMAGE=node:22-slim FROM $BASE_IMAGE ARG PORT=80 diff --git a/ui/Dockerfile.dev b/ui/Dockerfile.dev index 79a94a85..c8f0bae0 100644 --- a/ui/Dockerfile.dev +++ b/ui/Dockerfile.dev @@ -1,4 +1,4 @@ -ARG VARIANT=18-bullseye +ARG VARIANT=22-bullseye FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:${VARIANT} ARG PORT=3000 diff --git a/ui/Dockerfile.rhel b/ui/Dockerfile.rhel index 54a2078b..ea0f5ca4 100644 --- a/ui/Dockerfile.rhel +++ b/ui/Dockerfile.rhel @@ -1,4 +1,4 @@ -ARG BASE_IMAGE=registry.access.redhat.com/ubi8/nodejs-18 +ARG BASE_IMAGE=registry.access.redhat.com/ubi8/nodejs-22 FROM $BASE_IMAGE ARG PORT=8080 From cfaeb9dcc45f2f063a6992863fe4947d67ad079e Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:21:48 -0700 Subject: [PATCH 02/43] Updated Deployment & Update scripts to reference Python 3.11 and NodeJS 22.x images --- deploy/deploy.ps1 | 8 ++++---- deploy/update.ps1 | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/deploy/deploy.ps1 b/deploy/deploy.ps1 index 98202582..02368e3a 100644 --- a/deploy/deploy.ps1 +++ b/deploy/deploy.ps1 @@ -1232,16 +1232,16 @@ process { Extension = 'deb' Port = 8080 Images = @{ - Build = 'node:18-slim' - Serve = 'python:3.9-slim' + Build = 'node:22-slim' + Serve = 'python:3.11-slim' } } RHEL = @{ Extension = 'rhel' Port = 8080 Images = @{ - Build = 'registry.access.redhat.com/ubi8/nodejs-18' - Serve = 'registry.access.redhat.com/ubi8/python-39' + Build = 'registry.access.redhat.com/ubi8/nodejs-22' + Serve = 'registry.access.redhat.com/ubi8/python-311' } } } diff --git a/deploy/update.ps1 b/deploy/update.ps1 index 6e1fbf7c..462dfd10 100644 --- a/deploy/update.ps1 +++ b/deploy/update.ps1 @@ -426,16 +426,16 @@ try { Extension = 'deb' Port = 80 Images = @{ - Build = 'node:18-slim' - Serve = 'python:3.9-slim' + Build = 'node:22-slim' + Serve = 'python:3.11-slim' } } rhel = @{ Extension = 'rhel' Port = 8080 Images = @{ - Build = 'registry.access.redhat.com/ubi8/nodejs-18' - Serve = 'registry.access.redhat.com/ubi8/python-39' + Build = 'registry.access.redhat.com/ubi8/nodejs-22' + Serve = 'registry.access.redhat.com/ubi8/python-311' } } } From c2f4e60f6de07725d2a7826c21519fe0b51a607f Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:22:34 -0700 Subject: [PATCH 03/43] Updated Build script with new minimum version of NodeJS required --- tools/build.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/build.ps1 b/tools/build.ps1 index 80bd2436..57ce1225 100644 --- a/tools/build.ps1 +++ b/tools/build.ps1 @@ -39,8 +39,8 @@ param( $ROOT_DIR = (Get-Item $($MyInvocation.MyCommand.Path)).Directory.Parent.FullName # Define minimum NodeJS and NPM versions required to build the Azure IPAM UI solution -$MIN_NODE_VERSION = [version]'18.0.0' -$MIN_NPM_VERSION = [version]'8.6.0' +$MIN_NODE_VERSION = [version]'22.12.0' +$MIN_NPM_VERSION = [version]'10.9.2' # Load Python version required to build the Azure IPAM UI solution $engineAppDir = Join-Path -Path $ROOT_DIR -ChildPath "engine" -AdditionalChildPath "app" From 8a8e189494f5488ce480cc58baf4d2dc7de4a598 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:23:29 -0700 Subject: [PATCH 04/43] Updated required Python version to 3.11 --- engine/app/version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/app/version.json b/engine/app/version.json index fe4560ae..13097fed 100644 --- a/engine/app/version.json +++ b/engine/app/version.json @@ -1,4 +1,4 @@ { "app": "3.5.0", - "python": "3.9" + "python": "3.11" } From b7c3114db1ac8e8a8edb6c873b6f1095eb621131 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:24:18 -0700 Subject: [PATCH 05/43] Updated NPM packages to latest versions --- ui/package-lock.json | 2857 +++++++++++++++++++++++++----------------- ui/package.json | 54 +- 2 files changed, 1751 insertions(+), 1160 deletions(-) diff --git a/ui/package-lock.json b/ui/package-lock.json index f2c2cec5..c7ec0198 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -1,52 +1,52 @@ { "name": "azure-ipam-ui", - "version": "3.4.0", + "version": "3.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "azure-ipam-ui", - "version": "3.4.0", + "version": "3.5.0", "dependencies": { - "@azure/msal-browser": "^3.27.0", - "@azure/msal-react": "^2.2.0", - "@emotion/react": "^11.13.5", - "@emotion/styled": "^11.13.5", + "@azure/msal-browser": "^4.15.0", + "@azure/msal-react": "^3.0.15", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", "@inovua/reactdatagrid-community": "^5.10.2", - "@mui/icons-material": "^6.1.8", - "@mui/lab": "^6.0.0-beta.16", - "@mui/material": "^6.1.8", - "@reduxjs/toolkit": "^2.3.0", + "@mui/icons-material": "^7.2.0", + "@mui/lab": "^7.0.0-beta.14", + "@mui/material": "^7.2.0", + "@reduxjs/toolkit": "^2.8.2", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.0.1", - "@testing-library/user-event": "^14.5.2", - "axios": "^1.7.7", - "echarts": "^5.5.1", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "axios": "^1.10.0", + "echarts": "^5.6.0", "echarts-for-react": "^3.0.2", - "globals": "^15.12.0", + "globals": "^16.3.0", "lodash": "^4.17.21", "md5": "^2.3.0", "moment": "^2.30.1", - "notistack": "^3.0.1", + "notistack": "^3.0.2", "pluralize": "^8.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-draggable": "^4.4.6", - "react-redux": "^9.1.2", - "react-router-dom": "^6.28.0", - "spinners-react": "^1.0.10", - "web-vitals": "^4.2.4" + "react-draggable": "^4.5.0", + "react-redux": "^9.2.0", + "react-router": "^7.6.3", + "spinners-react": "^1.0.11", + "web-vitals": "^5.0.3" }, "devDependencies": { - "@eslint/js": "^9.15.0", - "@vitejs/plugin-react": "^4.3.3", - "eslint": "^9.15.0", - "eslint-plugin-jest": "^28.9.0", - "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-hooks": "^5.0.0", + "@eslint/js": "^9.31.0", + "@vitejs/plugin-react": "^4.6.0", + "eslint": "^9.31.0", + "eslint-plugin-jest": "^29.0.1", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", "serve": "^14.2.4", - "vite": "^5.4.11", - "vite-plugin-eslint2": "^5.0.2" + "vite": "^7.0.4", + "vite-plugin-eslint2": "^5.0.4" } }, "node_modules/@adobe/css-tools": { @@ -59,6 +59,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -68,74 +69,80 @@ } }, "node_modules/@azure/msal-browser": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.27.0.tgz", - "integrity": "sha512-+b4ZKSD8+vslCtVRVetkegEhOFMLP3rxDWJY212ct+2r6jVg6OSQKc1Qz3kCoXo0FgwaXkb+76TMZfpHp8QtgA==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.15.0.tgz", + "integrity": "sha512-+AIGTvpVz+FIx5CsM1y+nW0r/qOb/ChRdM8/Cbp+jKWC0Wdw4ldnwPdYOBi5NaALUQnYITirD9XMZX7LdklEzQ==", + "license": "MIT", "dependencies": { - "@azure/msal-common": "14.16.0" + "@azure/msal-common": "15.8.1" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "14.16.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.0.tgz", - "integrity": "sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.8.1.tgz", + "integrity": "sha512-ltIlFK5VxeJ5BurE25OsJIfcx1Q3H/IZg2LjV9d4vmH+5t4c1UCyRQ/HgKLgXuCZShs7qfc/TC95GYZfsUsJUQ==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-react": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@azure/msal-react/-/msal-react-2.2.0.tgz", - "integrity": "sha512-2V+9JXeXyyjYNF92y5u0tU4el9px/V1+vkRuN+DtoxyiMHCtYQpJoaFdGWArh43zhz5aqQqiGW/iajPDSu3QsQ==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@azure/msal-react/-/msal-react-3.0.15.tgz", + "integrity": "sha512-nVOWlPrhemKya7GZyEONISQk4MDV2vOoV3638dqFmIPd+3WIi98ZS1HSpQsOw1YL9nBEImhwqrXKnC/MFWrKoA==", + "license": "MIT", "engines": { "node": ">=10" }, "peerDependencies": { - "@azure/msal-browser": "^3.27.0", - "react": "^16.8.0 || ^17 || ^18" + "@azure/msal-browser": "^4.15.0", + "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", - "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -154,17 +161,19 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/@babel/generator": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", - "dependencies": { - "@babel/parser": "^7.26.2", - "@babel/types": "^7.26.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -172,13 +181,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -187,27 +197,38 @@ "node": ">=6.9.0" } }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -217,58 +238,64 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "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==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "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": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.28.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -278,12 +305,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", - "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -293,12 +321,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", - "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "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": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -308,61 +337,54 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", - "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", - "debug": "^4.3.1", - "globals": "^11.1.0" + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz", + "integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -387,9 +409,10 @@ } }, "node_modules/@emotion/cache": { - "version": "11.13.5", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.5.tgz", - "integrity": "sha512-Z3xbtJ+UcK76eWkagZ1onvn/wAVb1GOMuR15s30Fm2wrMgC7jzpnO2JZXr4eujTTqoQFUrZIw/rT0c6Zzjca1g==", + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", @@ -417,15 +440,16 @@ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.13.5", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.5.tgz", - "integrity": "sha512-6zeCUxUH+EPF1s+YF/2hPVODeV/7V07YU5x+2tfuRL8MdW6rv5vb2+CBEGTGwBdux0OIERcOS+RzxeK80k2DsQ==", + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", - "@emotion/cache": "^11.13.5", + "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" @@ -454,18 +478,20 @@ "node_modules/@emotion/sheet": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", - "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" }, "node_modules/@emotion/styled": { - "version": "11.13.5", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.5.tgz", - "integrity": "sha512-gnOQ+nGLPvDXgIx119JqGalys64lhMdnNQA9TMxhDA4K0Hq5+++OE20Zs5GxiCV9r814xQ2K5WmtofSpHVW6BQ==", + "version": "11.14.1", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", + "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", "@emotion/is-prop-valid": "^1.3.0", "@emotion/serialize": "^1.3.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2" }, "peerDependencies": { @@ -484,9 +510,10 @@ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", - "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", "peerDependencies": { "react": ">=16.8.0" } @@ -502,371 +529,428 @@ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -909,12 +993,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", - "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -922,20 +1007,35 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", - "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -959,6 +1059,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -967,69 +1068,42 @@ } }, "node_modules/@eslint/js": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", - "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", + "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", + "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", "dev": true, + "license": "Apache-2.0", "dependencies": { + "@eslint/core": "^0.14.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@floating-ui/core": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", - "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", - "dependencies": { - "@floating-ui/utils": "^0.2.8" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.6.12", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", - "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", - "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.8" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", - "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", - "dependencies": { - "@floating-ui/dom": "^1.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1079,10 +1153,11 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -1113,16 +1188,13 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -1133,74 +1205,38 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@mui/base": { - "version": "5.0.0-beta.62", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.62.tgz", - "integrity": "sha512-TzJLCNlrMkSU4bTCdTT+TVUiGx4sjZLhH673UV6YN+rNNP8wJpkWfRSvjDB5HcbH2T0lUamnz643ZnV+8IiMjw==", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@floating-ui/react-dom": "^2.1.1", - "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.8", - "@popperjs/core": "^2.11.8", - "clsx": "^2.1.1", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@mui/core-downloads-tracker": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.8.tgz", - "integrity": "sha512-TGAvzwUg9hybDacwfIGFjI2bXYXrIqky+vMfaeay8rvT56/PNAlvIDUJ54kpT5KRc9AWAihOvtDI7/LJOThOmQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.2.0.tgz", + "integrity": "sha512-d49s7kEgI5iX40xb2YPazANvo7Bx0BLg/MNRwv+7BVpZUzXj1DaVCKlQTDex3gy/0jsCb4w7AY2uH4t4AJvSog==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/icons-material": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.8.tgz", - "integrity": "sha512-6frsXcf1TcJKWevWwRup6V4L8lzI33cbHcAjT83YLgKw0vYRZKY0kjMI9fhrJZdRWXgFFgKKvEv3GjoxbqFF7A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.2.0.tgz", + "integrity": "sha512-gRCspp3pfjHQyTmSOmYw7kUQTd9Udpdan4R8EnZvqPeoAtHnPzkvjBrBqzKaoAbbBp5bGF7BcD18zZJh4nwu0A==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.26.0" + "@babel/runtime": "^7.27.6" }, "engines": { "node": ">=14.0.0" @@ -1210,7 +1246,7 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@mui/material": "^6.1.8", + "@mui/material": "^7.2.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, @@ -1221,15 +1257,15 @@ } }, "node_modules/@mui/lab": { - "version": "6.0.0-beta.16", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-6.0.0-beta.16.tgz", - "integrity": "sha512-YFeKREMMCiUhp4dGXd6Y/7N3BLepys9bM6xi4aF0WTZOvfl1ksDXPzuXPGiiiIuMgQFJeyN5iUnS1iPu3wH+kQ==", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@mui/base": "5.0.0-beta.62", - "@mui/system": "^6.1.8", - "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.8", + "version": "7.0.0-beta.14", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-7.0.0-beta.14.tgz", + "integrity": "sha512-pn+ZvylDcBKQOo17oa/PhtIA/UFQFq8RvpN+r/jHrztz/CjMDju2CWBne0txvQ5JIS8uTIGp2/IsTa7II1g5wg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.1", + "@mui/system": "^7.1.1", + "@mui/types": "^7.4.3", + "@mui/utils": "^7.1.1", "clsx": "^2.1.1", "prop-types": "^15.8.1" }, @@ -1243,8 +1279,8 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material": "^6.1.8", - "@mui/material-pigment-css": "^6.1.8", + "@mui/material": "^7.1.2", + "@mui/material-pigment-css": "^7.1.1", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -1265,21 +1301,22 @@ } }, "node_modules/@mui/material": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.8.tgz", - "integrity": "sha512-QZdQFnXct+7NXIzHgT3qt+sQiO7HYGZU2vymP9Xl9tUMXEOA/S1mZMMb7+WGZrk5TzNlU/kP/85K0da5V1jXoQ==", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@mui/core-downloads-tracker": "^6.1.8", - "@mui/system": "^6.1.8", - "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.8", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.2.0.tgz", + "integrity": "sha512-NTuyFNen5Z2QY+I242MDZzXnFIVIR6ERxo7vntFi9K1wCgSwvIl0HcAO2OOydKqqKApE6omRiYhpny1ZhGuH7Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.6", + "@mui/core-downloads-tracker": "^7.2.0", + "@mui/system": "^7.2.0", + "@mui/types": "^7.4.4", + "@mui/utils": "^7.2.0", "@popperjs/core": "^2.11.8", - "@types/react-transition-group": "^4.4.11", + "@types/react-transition-group": "^4.4.12", "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1", - "react-is": "^18.3.1", + "react-is": "^19.1.0", "react-transition-group": "^4.4.5" }, "engines": { @@ -1292,7 +1329,7 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material-pigment-css": "^6.1.8", + "@mui/material-pigment-css": "^7.2.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -1313,12 +1350,13 @@ } }, "node_modules/@mui/private-theming": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.8.tgz", - "integrity": "sha512-TuKl7msynCNCVvhX3c0ef1sF0Qb3VHcPs8XOGB/8bdOGBr/ynmIG1yTMjZeiFQXk8yN9fzK/FDEKMFxILNn3wg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.2.0.tgz", + "integrity": "sha512-y6N1Yt3T5RMxVFnCh6+zeSWBuQdNDm5/UlM0EAYZzZR/1u+XKJWYQmbpx4e+F+1EpkYi3Nk8KhPiQDi83M3zIw==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.26.0", - "@mui/utils": "^6.1.8", + "@babel/runtime": "^7.27.6", + "@mui/utils": "^7.2.0", "prop-types": "^15.8.1" }, "engines": { @@ -1339,13 +1377,14 @@ } }, "node_modules/@mui/styled-engine": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.8.tgz", - "integrity": "sha512-ZvEoT0U2nPLSLI+B4by4cVjaZnPT2f20f4JUPkyHdwLv65ZzuoHiTlwyhqX1Ch63p8bcJzKTHQVGisEoMK6PGA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.2.0.tgz", + "integrity": "sha512-yq08xynbrNYcB1nBcW9Fn8/h/iniM3ewRguGJXPIAbHvxEF7Pz95kbEEOAAhwzxMX4okhzvHmk0DFuC5ayvgIQ==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.26.0", - "@emotion/cache": "^11.13.1", - "@emotion/serialize": "^1.3.2", + "@babel/runtime": "^7.27.6", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", "@emotion/sheet": "^1.4.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -1372,15 +1411,16 @@ } }, "node_modules/@mui/system": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.8.tgz", - "integrity": "sha512-i1kLfQoWxzFpXTBQIuPoA3xKnAnP3en4I2T8xIolovSolGQX5k8vGjw1JaydQS40td++cFsgCdEU458HDNTGUA==", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@mui/private-theming": "^6.1.8", - "@mui/styled-engine": "^6.1.8", - "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.8", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.2.0.tgz", + "integrity": "sha512-PG7cm/WluU6RAs+gNND2R9vDwNh+ERWxPkqTaiXQJGIFAyJ+VxhyKfzpdZNk0z0XdmBxxi9KhFOpgxjehf/O0A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.6", + "@mui/private-theming": "^7.2.0", + "@mui/styled-engine": "^7.2.0", + "@mui/types": "^7.4.4", + "@mui/utils": "^7.2.0", "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -1411,9 +1451,13 @@ } }, "node_modules/@mui/types": { - "version": "7.2.19", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.19.tgz", - "integrity": "sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.4.tgz", + "integrity": "sha512-p63yhbX52MO/ajXC7hDHJA5yjzJekvWD3q4YDLl1rSg+OXLczMYPvTuSuviPRCgRX8+E42RXz1D/dz9SxPSlWg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.6" + }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, @@ -1424,16 +1468,17 @@ } }, "node_modules/@mui/utils": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.8.tgz", - "integrity": "sha512-O2DWb1kz8hiANVcR7Z4gOB3SvPPsSQGUmStpyBDzde6dJIfBzgV9PbEQOBZd3EBsd1pB+Uv1z5LAJAbymmawrA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.2.0.tgz", + "integrity": "sha512-O0i1GQL6MDzhKdy9iAu5Yr0Sz1wZjROH1o3aoztuivdCXqEeQYnEjTDiRLGuFxI9zrUbTHBwobMyQH5sNtyacw==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.26.0", - "@mui/types": "^7.2.19", - "@types/prop-types": "^15.7.13", + "@babel/runtime": "^7.27.6", + "@mui/types": "^7.4.4", + "@types/prop-types": "^15.7.15", "clsx": "^2.1.1", "prop-types": "^15.8.1", - "react-is": "^18.3.1" + "react-is": "^19.1.0" }, "engines": { "node": ">=14.0.0" @@ -1497,17 +1542,20 @@ } }, "node_modules/@reduxjs/toolkit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.3.0.tgz", - "integrity": "sha512-WC7Yd6cNGfHx8zf+iu+Q1UPTfEcXhQ+ATi7CV1hlrSAaQBdlPzg7Ww/wJHNQem7qG9rxmWoFCDCPubSvFObGzA==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.8.2.tgz", + "integrity": "sha512-MYlOhQ0sLdw4ud48FoC5w0dH9VfWQjtCjreKwYTT3l+r427qYC5Y8PihNutepr8XrNaBUDQo9khWUwQxZaqt5A==", + "license": "MIT", "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", "immer": "^10.0.3", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.1.0" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18", + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "peerDependenciesMeta": { @@ -1519,19 +1567,19 @@ } } }, - "node_modules/@remix-run/router": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz", - "integrity": "sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==", - "engines": { - "node": ">=14.0.0" - } + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.19", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz", + "integrity": "sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==", + "dev": true, + "license": "MIT" }, "node_modules/@rollup/pluginutils": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", - "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", + "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -1550,239 +1598,297 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.3.tgz", - "integrity": "sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", + "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.3.tgz", - "integrity": "sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", + "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.3.tgz", - "integrity": "sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", + "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.3.tgz", - "integrity": "sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", + "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.3.tgz", - "integrity": "sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", + "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.3.tgz", - "integrity": "sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", + "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.3.tgz", - "integrity": "sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", + "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.3.tgz", - "integrity": "sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", + "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.3.tgz", - "integrity": "sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", + "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.3.tgz", - "integrity": "sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", + "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", + "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.3.tgz", - "integrity": "sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", + "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.3.tgz", - "integrity": "sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", + "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", + "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.3.tgz", - "integrity": "sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", + "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.3.tgz", - "integrity": "sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", + "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.3.tgz", - "integrity": "sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", + "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.3.tgz", - "integrity": "sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", + "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.3.tgz", - "integrity": "sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", + "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.3.tgz", - "integrity": "sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", + "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, "node_modules/@testing-library/dom": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", @@ -1839,9 +1945,10 @@ "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==" }, "node_modules/@testing-library/react": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz", - "integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", + "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -1850,10 +1957,10 @@ }, "peerDependencies": { "@testing-library/dom": "^10.0.0", - "@types/react": "^18.0.0", - "@types/react-dom": "^18.0.0", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -1865,9 +1972,10 @@ } }, "node_modules/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", + "license": "MIT", "engines": { "node": ">=12", "npm": ">=6" @@ -1924,10 +2032,11 @@ } }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -1962,14 +2071,16 @@ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, "node_modules/@types/prop-types": { - "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" + "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.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -1985,17 +2096,19 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", - "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", - "dependencies": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { "@types/react": "*" } }, "node_modules/@types/use-sync-external-store": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" }, "node_modules/@typescript-eslint/scope-manager": { "version": "8.15.0", @@ -2056,10 +2169,11 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -2136,22 +2250,24 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz", - "integrity": "sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz", + "integrity": "sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-transform-react-jsx-self": "^7.24.7", - "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/core": "^7.27.4", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.19", "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.2" + "react-refresh": "^0.17.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" } }, "node_modules/@zeit/schemas": { @@ -2174,10 +2290,11 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2190,6 +2307,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -2199,6 +2317,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2303,7 +2422,8 @@ "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 + "dev": true, + "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.0", @@ -2314,13 +2434,14 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "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": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -2388,15 +2509,16 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "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": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2422,19 +2544,19 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "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": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -2443,6 +2565,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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", @@ -2453,6 +2585,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": { "possible-typed-array-names": "^1.0.0" }, @@ -2464,9 +2597,10 @@ } }, "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", + "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -2528,10 +2662,11 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2550,9 +2685,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "dev": true, "funding": [ { @@ -2568,11 +2703,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -2591,16 +2727,47 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "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": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -2630,9 +2797,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001680", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", - "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", "dev": true, "funding": [ { @@ -2647,7 +2814,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "4.1.2", @@ -2816,6 +2984,15 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -2831,12 +3008,21 @@ "node": ">=10" } }, - "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, - "dependencies": { + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 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, + "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" @@ -2864,14 +3050,15 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "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": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2881,29 +3068,31 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "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": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "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": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -2915,9 +3104,10 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -3017,11 +3207,27 @@ "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", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -3029,12 +3235,13 @@ "dev": true }, "node_modules/echarts": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.1.tgz", - "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.6.0.tgz", + "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", + "license": "Apache-2.0", "dependencies": { "tslib": "2.3.0", - "zrender": "5.6.0" + "zrender": "5.6.1" } }, "node_modules/echarts-for-react": { @@ -3051,10 +3258,11 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.63", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.63.tgz", - "integrity": "sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==", - "dev": true + "version": "1.5.182", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.182.tgz", + "integrity": "sha512-Lv65Btwv9W4J9pyODI6EWpdnhfvrve/us5h1WspW8B2Fb0366REPtY3hX7ounk1CkV/TBjWCEvCBBbYbmV0qCA==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -3071,57 +3279,66 @@ } }, "node_modules/es-abstract": { - "version": "1.23.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", - "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, + "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", + "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -3131,13 +3348,11 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "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, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -3152,36 +3367,39 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz", - "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==", + "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==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", + "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.3", - "safe-array-concat": "^1.1.2" + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "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" }, @@ -3190,14 +3408,16 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "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": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -3213,14 +3433,15 @@ } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "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": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -3230,41 +3451,44 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" } }, "node_modules/escalade": { @@ -3272,6 +3496,7 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3288,31 +3513,33 @@ } }, "node_modules/eslint": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", - "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz", + "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.15.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.15.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.31.0", + "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.5", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -3347,19 +3574,20 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.9.0.tgz", - "integrity": "sha512-rLu1s1Wf96TgUUxSw6loVIkNtUjq1Re7A9QdCCHSohnvXEBAjuL420h0T/fMmkQlNsQP2GhQzEUpYHPfxBkvYQ==", + "version": "29.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.0.1.tgz", + "integrity": "sha512-EE44T0OSMCeXhDrrdsbKAhprobKkPtJTbQz5yEktysNpHeDZTAL1SfDTNKmcFfJkY6yrQLtTKZALrD3j/Gpmiw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/utils": "^8.0.0" }, "engines": { - "node": "^16.10.0 || ^18.12.0 || >=20.0.0" + "node": "^20.12.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", "jest": "*" }, "peerDependenciesMeta": { @@ -3372,28 +3600,29 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", - "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", + "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": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", + "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.1.0", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.8", + "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", + "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "engines": { @@ -3404,10 +3633,11 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", - "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3433,10 +3663,11 @@ } }, "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -3449,10 +3680,11 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -3460,15 +3692,29 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3494,6 +3740,7 @@ "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": { "estraverse": "^5.2.0" }, @@ -3514,7 +3761,8 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", @@ -3590,7 +3838,8 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -3607,6 +3856,21 @@ "reusify": "^1.0.4" } }, + "node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -3691,12 +3955,19 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "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": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/form-data": { @@ -3735,15 +4006,18 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "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": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -3766,21 +4040,28 @@ "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": { "node": ">=6.9.0" } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "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", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3789,6 +4070,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -3802,14 +4097,15 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "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": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -3831,9 +4127,10 @@ } }, "node_modules/globals": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", - "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", + "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -3866,22 +4163,27 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "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": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3907,10 +4209,14 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "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": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3919,10 +4225,11 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "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" }, @@ -3983,6 +4290,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -4035,27 +4343,30 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "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": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "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": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -4070,12 +4381,17 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "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": { - "has-tostringtag": "^1.0.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4085,25 +4401,30 @@ } }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "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": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "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": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4122,6 +4443,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": { "node": ">= 0.4" }, @@ -4144,11 +4466,14 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "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": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -4159,12 +4484,14 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "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": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4198,12 +4525,16 @@ } }, "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "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": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4219,12 +4550,16 @@ } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4250,6 +4585,7 @@ "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": { "node": ">= 0.4" }, @@ -4279,12 +4615,14 @@ } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "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": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4306,13 +4644,16 @@ } }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "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": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -4326,6 +4667,7 @@ "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": { "node": ">= 0.4" }, @@ -4334,12 +4676,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "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": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -4361,12 +4704,14 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "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": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4376,12 +4721,15 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "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": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4391,12 +4739,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "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": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -4410,6 +4759,7 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4418,25 +4768,30 @@ } }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "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": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "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": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -4461,7 +4816,8 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", @@ -4470,16 +4826,18 @@ "dev": true }, "node_modules/iterator.prototype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", - "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "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": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -4495,6 +4853,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4528,7 +4887,8 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -4541,6 +4901,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -4667,6 +5028,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -4680,6 +5042,16 @@ "lz-string": "bin/bin.js" } }, + "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" + } + }, "node_modules/md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -4801,9 +5173,9 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -4811,6 +5183,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -4834,15 +5207,17 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" }, "node_modules/notistack": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/notistack/-/notistack-3.0.1.tgz", - "integrity": "sha512-ntVZXXgSQH5WYfyU+3HfcXuKaapzAJ8fBLQ/G618rn3yvSzEbnOB8ZSOwhX+dAORy/lw+GC2N061JA0+gYWTVA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/notistack/-/notistack-3.0.2.tgz", + "integrity": "sha512-0R+/arLYbK5Hh7mEfR2adt0tyXJcCC9KkA2hc56FeWik2QN6Bm/S4uW+BjzDARsJth5u06nTjelSw/VSnB1YEA==", + "license": "MIT", "dependencies": { "clsx": "^1.1.0", "goober": "^2.0.33" @@ -4856,8 +5231,8 @@ "url": "https://opencollective.com/notistack" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/notistack/node_modules/clsx": { @@ -4889,10 +5264,11 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "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": { "node": ">= 0.4" }, @@ -4910,14 +5286,17 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "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": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -4928,14 +5307,16 @@ } }, "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "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": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -4960,12 +5341,14 @@ } }, "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "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": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -5017,6 +5400,24 @@ "node": ">= 0.8.0" } }, + "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": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5144,18 +5545,19 @@ } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "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": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -5171,8 +5573,9 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -5307,6 +5710,7 @@ "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" }, @@ -5318,6 +5722,7 @@ "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", "scheduler": "^0.23.2" @@ -5327,11 +5732,12 @@ } }, "node_modules/react-draggable": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.6.tgz", - "integrity": "sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.5.0.tgz", + "integrity": "sha512-VC+HBLEZ0XJxnOxVAZsdRi8rD04Iz3SiiKOoYzamjylUcju/hP9np/aZdLHf/7WOD268WMoNJMvYfB5yAK45cw==", + "license": "MIT", "dependencies": { - "clsx": "^1.1.1", + "clsx": "^2.1.1", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -5339,30 +5745,24 @@ "react-dom": ">= 16.3.0" } }, - "node_modules/react-draggable/node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" - } - }, "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", + "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", + "license": "MIT" }, "node_modules/react-redux": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", - "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", "dependencies": { - "@types/use-sync-external-store": "^0.0.3", - "use-sync-external-store": "^1.0.0" + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" }, "peerDependencies": { - "@types/react": "^18.2.25", - "react": "^18.0", + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", "redux": "^5.0.0" }, "peerDependenciesMeta": { @@ -5375,48 +5775,42 @@ } }, "node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "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": { "node": ">=0.10.0" } }, "node_modules/react-router": { - "version": "6.28.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.0.tgz", - "integrity": "sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.3.tgz", + "integrity": "sha512-zf45LZp5skDC6I3jDLXQUu0u26jtuP4lEGbc7BbdyxenBN1vJSTA18czM2D+h5qyMBuMrD+9uB+mU37HIoKGRA==", + "license": "MIT", "dependencies": { - "@remix-run/router": "1.21.0" + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=20.0.0" }, "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/react-router-dom": { - "version": "6.28.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.28.0.tgz", - "integrity": "sha512-kQ7Unsl5YdyOltsPGl31zOjLrDv+m2VcIEcIHqYYD3Lp0UppLjrzcfJqDJwXxFw3TH/yvapbnUvPlAj7Kx5nbg==", - "dependencies": { - "@remix-run/router": "1.21.0", - "react-router": "6.28.0" + "react": ">=18", + "react-dom": ">=18" }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } } }, "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", @@ -5454,18 +5848,20 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "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": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -5474,20 +5870,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "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": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -5573,12 +5967,13 @@ } }, "node_modules/rollup": { - "version": "4.27.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.3.tgz", - "integrity": "sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", + "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -5588,24 +5983,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.27.3", - "@rollup/rollup-android-arm64": "4.27.3", - "@rollup/rollup-darwin-arm64": "4.27.3", - "@rollup/rollup-darwin-x64": "4.27.3", - "@rollup/rollup-freebsd-arm64": "4.27.3", - "@rollup/rollup-freebsd-x64": "4.27.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.27.3", - "@rollup/rollup-linux-arm-musleabihf": "4.27.3", - "@rollup/rollup-linux-arm64-gnu": "4.27.3", - "@rollup/rollup-linux-arm64-musl": "4.27.3", - "@rollup/rollup-linux-powerpc64le-gnu": "4.27.3", - "@rollup/rollup-linux-riscv64-gnu": "4.27.3", - "@rollup/rollup-linux-s390x-gnu": "4.27.3", - "@rollup/rollup-linux-x64-gnu": "4.27.3", - "@rollup/rollup-linux-x64-musl": "4.27.3", - "@rollup/rollup-win32-arm64-msvc": "4.27.3", - "@rollup/rollup-win32-ia32-msvc": "4.27.3", - "@rollup/rollup-win32-x64-msvc": "4.27.3", + "@rollup/rollup-android-arm-eabi": "4.41.1", + "@rollup/rollup-android-arm64": "4.41.1", + "@rollup/rollup-darwin-arm64": "4.41.1", + "@rollup/rollup-darwin-x64": "4.41.1", + "@rollup/rollup-freebsd-arm64": "4.41.1", + "@rollup/rollup-freebsd-x64": "4.41.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", + "@rollup/rollup-linux-arm-musleabihf": "4.41.1", + "@rollup/rollup-linux-arm64-gnu": "4.41.1", + "@rollup/rollup-linux-arm64-musl": "4.41.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-musl": "4.41.1", + "@rollup/rollup-linux-s390x-gnu": "4.41.1", + "@rollup/rollup-linux-x64-gnu": "4.41.1", + "@rollup/rollup-linux-x64-musl": "4.41.1", + "@rollup/rollup-win32-arm64-msvc": "4.41.1", + "@rollup/rollup-win32-ia32-msvc": "4.41.1", + "@rollup/rollup-win32-x64-msvc": "4.41.1", "fsevents": "~2.3.2" } }, @@ -5633,14 +6030,16 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "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": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -5656,15 +6055,33 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "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": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "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": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -5677,6 +6094,7 @@ "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" } @@ -5785,6 +6203,12 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "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", @@ -5817,6 +6241,21 @@ "node": ">= 0.4" } }, + "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": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shallowequal": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-0.2.2.tgz", @@ -5847,15 +6286,73 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "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": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -5888,19 +6385,35 @@ "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": { "node": ">=0.10.0" } }, "node_modules/spinners-react": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/spinners-react/-/spinners-react-1.0.10.tgz", - "integrity": "sha512-VZy4IhnIVTw8tcsuWtUGz1VfRK4EDnnlIVd88ezkfiDQyYlmo+QbIAjJD1BRghTBr5RJBULuJ4MIPsJapTp1xw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/spinners-react/-/spinners-react-1.0.11.tgz", + "integrity": "sha512-CpQZixAI3dW+nLuJSrOTz4bDroSwLoIO5ljFt8wc1qy39yhK6MUubKnPD3z9/xIwNWFqy3mMRlW1mik/Fgqjow==", + "license": "MIT", "peerDependencies": { - "@types/react": "^16.x || ^17.x || ^18.x", - "@types/react-dom": "^16.x || ^17.x || ^18.x", - "react": "^16.x || ^17.x || ^18.x", - "react-dom": "^16.x || ^17.x || ^18.x" + "@types/react": "^16.x || ^17.x || ^18.x || ^19.x", + "@types/react-dom": "^16.x || ^17.x || ^18.x || ^19.x", + "react": "^16.x || ^17.x || ^18.x || ^19.x", + "react-dom": "^16.x || ^17.x || ^18.x || ^19.x" + } + }, + "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": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/string-width": { @@ -5921,23 +6434,25 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "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": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5957,15 +6472,19 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "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": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5975,15 +6494,20 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "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": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6057,6 +6581,7 @@ "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": { "node": ">=8" }, @@ -6091,6 +6616,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6118,7 +6660,8 @@ "node_modules/tslib": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", @@ -6145,30 +6688,32 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "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": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "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": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -6178,17 +6723,19 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "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": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -6198,17 +6745,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "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": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -6232,24 +6780,28 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "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": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -6265,9 +6817,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -6296,11 +6849,12 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", - "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "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==", + "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/vary": { @@ -6313,20 +6867,24 @@ } }, "node_modules/vite": { - "version": "5.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", - "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz", + "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==", "dev": true, + "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "fdir": "^6.4.6", + "picomatch": "^4.0.2", + "postcss": "^8.5.6", + "rollup": "^4.40.0", + "tinyglobby": "^0.2.14" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -6335,19 +6893,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -6368,17 +6932,24 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, "node_modules/vite-plugin-eslint2": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vite-plugin-eslint2/-/vite-plugin-eslint2-5.0.2.tgz", - "integrity": "sha512-2szmNvCsve7AfdPBPQ5JVMx5kOZXXt+S6derNfoNu7+EKa8qnDiMGOkQeSd/I62zIiS1wfvQW+QsGODbCFTGeQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/vite-plugin-eslint2/-/vite-plugin-eslint2-5.0.4.tgz", + "integrity": "sha512-3Yc7K2R/RrONB9JtwEh2Y40YP3tQi/3UiNHrwcYDsDBKDKnEu7B8PwmXLm7piDFRbxcnTPvgrV2LZnBpKP8JUw==", "dev": true, + "license": "MIT", "dependencies": { - "@rollup/pluginutils": "^5.1.3", - "debug": "^4.3.7" + "@rollup/pluginutils": "^5.2.0", + "debug": "^4.4.1" }, "engines": { "node": ">=18" @@ -6387,10 +6958,10 @@ "url": "https://github.com/sponsors/modyqyw" }, "peerDependencies": { - "@types/eslint": "^7.0.0 || ^8.0.0 || ^9.0.0-0", - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0-0", + "@types/eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", "rollup": "^2.0.0 || ^3.0.0 || ^4.0.0", - "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "peerDependenciesMeta": { "@types/eslint": { @@ -6402,9 +6973,10 @@ } }, "node_modules/web-vitals": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz", - "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==" + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.0.3.tgz", + "integrity": "sha512-4KmOFYxj7qT6RAdCH0SWwq8eKeXNhAFXR4PmgF6nrWFmrJ41n7lq3UCA6UK0GebQ4uu+XP8e8zGjaDO3wZlqTg==", + "license": "Apache-2.0" }, "node_modules/which": { "version": "2.0.2", @@ -6422,39 +6994,45 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "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": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "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": { + "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", + "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -6468,6 +7046,7 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -6482,15 +7061,18 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -6557,14 +7139,22 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 6" + "node": ">= 14.6" } }, "node_modules/yocto-queue": { @@ -6580,9 +7170,10 @@ } }, "node_modules/zrender": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.0.tgz", - "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz", + "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", + "license": "BSD-3-Clause", "dependencies": { "tslib": "2.3.0" } diff --git a/ui/package.json b/ui/package.json index 36b998a9..626a1560 100644 --- a/ui/package.json +++ b/ui/package.json @@ -4,34 +4,34 @@ "type": "module", "private": true, "dependencies": { - "@azure/msal-browser": "^3.27.0", - "@azure/msal-react": "^2.2.0", - "@emotion/react": "^11.13.5", - "@emotion/styled": "^11.13.5", + "@azure/msal-browser": "^4.15.0", + "@azure/msal-react": "^3.0.15", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", "@inovua/reactdatagrid-community": "^5.10.2", - "@mui/icons-material": "^6.1.8", - "@mui/lab": "^6.0.0-beta.16", - "@mui/material": "^6.1.8", - "@reduxjs/toolkit": "^2.3.0", + "@mui/icons-material": "^7.2.0", + "@mui/lab": "^7.0.0-beta.14", + "@mui/material": "^7.2.0", + "@reduxjs/toolkit": "^2.8.2", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.0.1", - "@testing-library/user-event": "^14.5.2", - "axios": "^1.7.7", - "echarts": "^5.5.1", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "axios": "^1.10.0", + "echarts": "^5.6.0", "echarts-for-react": "^3.0.2", - "globals": "^15.12.0", + "globals": "^16.3.0", "lodash": "^4.17.21", "md5": "^2.3.0", "moment": "^2.30.1", - "notistack": "^3.0.1", + "notistack": "^3.0.2", "pluralize": "^8.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-draggable": "^4.4.6", - "react-redux": "^9.1.2", - "react-router-dom": "^6.28.0", - "spinners-react": "^1.0.10", - "web-vitals": "^4.2.4" + "react-draggable": "^4.5.0", + "react-redux": "^9.2.0", + "react-router": "^7.6.3", + "spinners-react": "^1.0.11", + "web-vitals": "^5.0.3" }, "scripts": { "start": "vite", @@ -50,14 +50,14 @@ ] }, "devDependencies": { - "@eslint/js": "^9.15.0", - "@vitejs/plugin-react": "^4.3.3", - "eslint": "^9.15.0", - "eslint-plugin-jest": "^28.9.0", - "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-hooks": "^5.0.0", + "@eslint/js": "^9.31.0", + "@vitejs/plugin-react": "^4.6.0", + "eslint": "^9.31.0", + "eslint-plugin-jest": "^29.0.1", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", "serve": "^14.2.4", - "vite": "^5.4.11", - "vite-plugin-eslint2": "^5.0.2" + "vite": "^7.0.4", + "vite-plugin-eslint2": "^5.0.4" } } From 5e27fa7cb5448735557cb6909392e812616a51ce Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:24:40 -0700 Subject: [PATCH 06/43] Removed deprecated Vite build plugins --- ui/vite.config.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ui/vite.config.js b/ui/vite.config.js index 17046bd9..038051a0 100644 --- a/ui/vite.config.js +++ b/ui/vite.config.js @@ -1,4 +1,4 @@ -import { defineConfig, splitVendorChunkPlugin } from "vite"; +import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import eslint from 'vite-plugin-eslint2'; @@ -15,7 +15,6 @@ export default () => { exclude: [] } ), - splitVendorChunkPlugin(), { name: 'build-ui-html', apply: 'build', From 48607720a9db48fd77e2652822cc83f6c2312088 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:27:14 -0700 Subject: [PATCH 07/43] Fixed React Router imports per changes in v7 --- ui/src/App.jsx | 2 +- ui/src/features/DiscoverTable/Table.jsx | 2 +- ui/src/features/configure/associations/associations.jsx | 2 +- ui/src/features/configure/basics/block/block.jsx | 2 +- ui/src/features/configure/externals/externals.jsx | 2 +- ui/src/features/configure/reservations/reservations.jsx | 2 +- .../features/configure/reservations/utils/newReservation.jsx | 2 +- ui/src/features/drawer/drawer.jsx | 2 +- ui/src/features/tabs/adminTabs.jsx | 2 +- ui/src/features/tabs/analyzeTabs.jsx | 2 +- ui/src/features/tabs/configTabs.jsx | 2 +- ui/src/features/tabs/discoverTabs.jsx | 2 +- ui/src/features/tabs/toolsTabs.jsx | 2 +- ui/src/features/tools/generator/generator.jsx | 4 ++-- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/ui/src/App.jsx b/ui/src/App.jsx index f549ac48..b0366777 100644 --- a/ui/src/App.jsx +++ b/ui/src/App.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import { BrowserRouter as Router} from "react-router-dom"; +import { BrowserRouter as Router} from "react-router"; import { useSelector } from 'react-redux'; import { diff --git a/ui/src/features/DiscoverTable/Table.jsx b/ui/src/features/DiscoverTable/Table.jsx index 916eb282..0aa8c86f 100644 --- a/ui/src/features/DiscoverTable/Table.jsx +++ b/ui/src/features/DiscoverTable/Table.jsx @@ -1,6 +1,6 @@ import * as React from "react"; import { useSelector, useDispatch } from 'react-redux'; -import { useLocation } from "react-router-dom"; +import { useLocation } from "react-router"; import { cloneDeep, pickBy, orderBy, isEmpty, merge } from 'lodash'; diff --git a/ui/src/features/configure/associations/associations.jsx b/ui/src/features/configure/associations/associations.jsx index 14b9c116..20dc1136 100644 --- a/ui/src/features/configure/associations/associations.jsx +++ b/ui/src/features/configure/associations/associations.jsx @@ -1,6 +1,6 @@ import * as React from "react"; import { useSelector, useDispatch } from "react-redux"; -import { useLocation } from "react-router-dom"; +import { useLocation } from "react-router"; import { styled } from "@mui/material/styles"; import { useTheme } from "@mui/material/styles"; diff --git a/ui/src/features/configure/basics/block/block.jsx b/ui/src/features/configure/basics/block/block.jsx index 9bf58206..0afd07d1 100644 --- a/ui/src/features/configure/basics/block/block.jsx +++ b/ui/src/features/configure/basics/block/block.jsx @@ -2,7 +2,7 @@ import * as React from "react"; import { useSelector } from "react-redux"; import { styled } from "@mui/material/styles"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "react-router"; import { isEmpty} from "lodash"; diff --git a/ui/src/features/configure/externals/externals.jsx b/ui/src/features/configure/externals/externals.jsx index 7ad3b237..35e9733a 100644 --- a/ui/src/features/configure/externals/externals.jsx +++ b/ui/src/features/configure/externals/externals.jsx @@ -1,6 +1,6 @@ import * as React from "react"; import { useSelector, useDispatch } from "react-redux"; -import { useLocation } from "react-router-dom"; +import { useLocation } from "react-router"; import { styled } from "@mui/material/styles"; import { isEqual, sortBy, pick } from "lodash"; diff --git a/ui/src/features/configure/reservations/reservations.jsx b/ui/src/features/configure/reservations/reservations.jsx index 20088d39..d9021ec6 100644 --- a/ui/src/features/configure/reservations/reservations.jsx +++ b/ui/src/features/configure/reservations/reservations.jsx @@ -1,6 +1,6 @@ import * as React from "react"; import { useSelector, useDispatch } from "react-redux"; -import { useLocation } from "react-router-dom"; +import { useLocation } from "react-router"; import { styled } from "@mui/material/styles"; import { useTheme } from '@mui/material/styles'; diff --git a/ui/src/features/configure/reservations/utils/newReservation.jsx b/ui/src/features/configure/reservations/utils/newReservation.jsx index d3a1d83c..d15adf76 100644 --- a/ui/src/features/configure/reservations/utils/newReservation.jsx +++ b/ui/src/features/configure/reservations/utils/newReservation.jsx @@ -1,6 +1,6 @@ import * as React from "react"; import { useDispatch } from "react-redux"; -import { useLocation } from "react-router-dom"; +import { useLocation } from "react-router"; import { useSnackbar } from "notistack"; diff --git a/ui/src/features/drawer/drawer.jsx b/ui/src/features/drawer/drawer.jsx index f280d2eb..d96b9ed2 100644 --- a/ui/src/features/drawer/drawer.jsx +++ b/ui/src/features/drawer/drawer.jsx @@ -12,7 +12,7 @@ import { SvgIcon } from "@mui/material"; import { orderBy } from 'lodash'; import { plural, singular } from 'pluralize'; -import { Routes, Route, Link, Navigate, useNavigate } from "react-router-dom"; +import { Routes, Route, Link, Navigate, useNavigate } from "react-router"; import { callMsGraph, callMsGraphPhoto } from "../../msal/graph"; diff --git a/ui/src/features/tabs/adminTabs.jsx b/ui/src/features/tabs/adminTabs.jsx index bf9a16c2..0ecf808b 100644 --- a/ui/src/features/tabs/adminTabs.jsx +++ b/ui/src/features/tabs/adminTabs.jsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link, useLocation } from "react-router-dom"; +import { Link, useLocation } from "react-router"; import PropTypes from 'prop-types'; import Tabs from '@mui/material/Tabs'; diff --git a/ui/src/features/tabs/analyzeTabs.jsx b/ui/src/features/tabs/analyzeTabs.jsx index 8113d978..32f6ec32 100644 --- a/ui/src/features/tabs/analyzeTabs.jsx +++ b/ui/src/features/tabs/analyzeTabs.jsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link, useLocation } from "react-router-dom"; +import { Link, useLocation } from "react-router"; import PropTypes from 'prop-types'; import Tabs from '@mui/material/Tabs'; diff --git a/ui/src/features/tabs/configTabs.jsx b/ui/src/features/tabs/configTabs.jsx index 9e4604e9..6e8a3d4f 100644 --- a/ui/src/features/tabs/configTabs.jsx +++ b/ui/src/features/tabs/configTabs.jsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link, useLocation } from "react-router-dom"; +import { Link, useLocation } from "react-router"; import PropTypes from 'prop-types'; import Tabs from '@mui/material/Tabs'; diff --git a/ui/src/features/tabs/discoverTabs.jsx b/ui/src/features/tabs/discoverTabs.jsx index 74a113fb..8d033831 100644 --- a/ui/src/features/tabs/discoverTabs.jsx +++ b/ui/src/features/tabs/discoverTabs.jsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link, useLocation } from "react-router-dom"; +import { Link, useLocation } from "react-router"; import PropTypes from 'prop-types'; import Tabs from '@mui/material/Tabs'; diff --git a/ui/src/features/tabs/toolsTabs.jsx b/ui/src/features/tabs/toolsTabs.jsx index f666c4c4..50d812b9 100644 --- a/ui/src/features/tabs/toolsTabs.jsx +++ b/ui/src/features/tabs/toolsTabs.jsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link, useLocation } from "react-router-dom"; +import { Link, useLocation } from "react-router"; import PropTypes from 'prop-types'; import Tabs from '@mui/material/Tabs'; diff --git a/ui/src/features/tools/generator/generator.jsx b/ui/src/features/tools/generator/generator.jsx index 4fd53598..eb6f178a 100644 --- a/ui/src/features/tools/generator/generator.jsx +++ b/ui/src/features/tools/generator/generator.jsx @@ -1,7 +1,7 @@ import * as React from "react"; import { useSelector } from "react-redux"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "react-router"; import { useSnackbar } from "notistack"; @@ -264,7 +264,7 @@ const Generator = () => { return prefixMask; }); - let availableMasks = cidrMasks.filter((opt) => opt.value >= Math.max(...maskList) && opt.value <= 29); + let availableMasks = cidrMasks.filter((opt) => opt.value >= Math.min(...maskList) && opt.value <= 29); setMaskOptions(availableMasks); setSelectedMask(availableMasks[0]); From c46d653070ff3baeadc2b9a174a1bf5c1dbfdec9 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:28:04 -0700 Subject: [PATCH 08/43] Minor updates to accomodate latest MSAL libraries --- ui/src/msal/authConfig.jsx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/ui/src/msal/authConfig.jsx b/ui/src/msal/authConfig.jsx index c9dcd1cd..cb8cb741 100644 --- a/ui/src/msal/authConfig.jsx +++ b/ui/src/msal/authConfig.jsx @@ -1,3 +1,5 @@ +// import { LogLevel } from '@azure/msal-browser'; + import { ENGINE_APP_ID, UI_APP_ID, @@ -16,9 +18,24 @@ export const msalConfig = { redirectUri: window.location.origin, }, cache: { - cacheLocation: "sessionStorage", // This configures where your cache will be stored + cacheLocation: "localStorage", // This configures where your cache will be stored storeAuthStateInCookie: false, // Set this to "true" if you are having issues on IE11 or Edge }, + system: { + allowRedirectInIframe: false, + preventCorsPreflight: true, + /** + * Below you can configure MSAL.js logs. For more information, visit: + * https://docs.microsoft.com/azure/active-directory/develop/msal-logging-js + */ + // loggerOptions: { + // loggerCallback(logLevel, message) { + // console.log(message); + // }, + // logLevel: LogLevel.Trace, + // piiLoggingEnabled: true // Set to true to enable PII logging. This is not recommended in production. + // } + } }; export const loginRequest = { From 180c8d4ff2417657b1379b16d23d3dea6a9b0197 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:28:31 -0700 Subject: [PATCH 09/43] Fixed useEffect to be more compatible with StrictMode in development --- ui/src/features/login/login.jsx | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/ui/src/features/login/login.jsx b/ui/src/features/login/login.jsx index e8abecb6..ac023d47 100644 --- a/ui/src/features/login/login.jsx +++ b/ui/src/features/login/login.jsx @@ -7,16 +7,23 @@ import { loginRequest } from "../../msal/authConfig"; const Login = () => { const { instance, inProgress } = useMsal(); const isAuthenticated = useIsAuthenticated(); + const loginAttempted = React.useRef(false); React.useEffect(() => { - if (!isAuthenticated && inProgress === InteractionStatus.None) { - instance.loginRedirect(loginRequest).catch((e) => { - console.log("LOGIN ERROR:"); - console.log("--------------"); - console.error(e); - console.log("--------------"); - }); - } + (async () => { + if (!isAuthenticated && inProgress === InteractionStatus.None && !loginAttempted.current) { + loginAttempted.current = true; + + await instance.loginRedirect(loginRequest).catch((e) => { + console.log("LOGIN ERROR:"); + console.log("--------------"); + console.error(e); + console.log("--------------"); + + loginAttempted.current = false; // Reset on failure + }); + } + })(); }, [isAuthenticated, inProgress, instance]); return(null) From 1a0e811c4b3b1c3bfc3c8285371777f14a418313 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:28:51 -0700 Subject: [PATCH 10/43] Fixed Grid import to align with latest MUI version --- ui/src/features/tools/planner/planner.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/features/tools/planner/planner.jsx b/ui/src/features/tools/planner/planner.jsx index b2b37fc9..3c0d108c 100644 --- a/ui/src/features/tools/planner/planner.jsx +++ b/ui/src/features/tools/planner/planner.jsx @@ -20,7 +20,7 @@ import { CircularProgress } from "@mui/material"; -import Grid from "@mui/material/Grid2"; +import Grid from "@mui/material/Grid"; import { FilterList as FilterListIcon, From 855740ab5f4cd30a257104feedc3371ea54b8a25 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 15 Jul 2025 07:29:26 -0700 Subject: [PATCH 11/43] Fixed logic for nextAvailableSubnet --- engine/app/routers/tool.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/engine/app/routers/tool.py b/engine/app/routers/tool.py index d7fe4421..7027023c 100644 --- a/engine/app/routers/tool.py +++ b/engine/app/routers/tool.py @@ -83,19 +83,24 @@ async def next_available_subnet( for subnet in target['subnets']: vnet_all_cidrs.append(subnet['prefix']) - vnet_set = IPSet(target['prefixes']) + # vnet_set = IPSet(target['prefixes']) + vnet_set = [IPNetwork(x) for x in target['prefixes']] + # reserved_set = IPSet(vnet_all_cidrs) reserved_set = IPSet(vnet_all_cidrs) - available_set = vnet_set ^ reserved_set + # available_set = vnet_set ^ reserved_set + available_set = [item for sublist in [x.iter_cidrs() for x in list(filter(None, [(IPSet(x) - reserved_set) for x in vnet_set]))] for item in sublist] available_slicer = slice(None, None, -1) if req.reverse_search else slice(None) next_selector = -1 if req.reverse_search else 0 if req.smallest_cidr: - cidr_list = list(filter(lambda x: x.prefixlen <= req.size, available_set.iter_cidrs()[available_slicer])) + # cidr_list = list(filter(lambda x: x.prefixlen <= req.size, available_set.iter_cidrs()[available_slicer])) + cidr_list = list(filter(lambda x: x.prefixlen <= req.size, available_set[available_slicer])) min_mask = max(map(lambda x: x.prefixlen, cidr_list)) available_block = next((net for net in list(filter(lambda network: network.prefixlen == min_mask, cidr_list))), None) else: - available_block = next((net for net in list(available_set.iter_cidrs())[available_slicer] if net.prefixlen <= req.size), None) + # available_block = next((net for net in list(available_set.iter_cidrs())[available_slicer] if net.prefixlen <= req.size), None) + available_block = next((net for net in available_set[available_slicer] if net.prefixlen <= req.size), None) if not available_block: raise HTTPException(status_code=500, detail="Subnet of requested size unavailable in target virtual network.") From b8f5625bdc2b9de099bc7650e6e2fdc2e6639635 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 17 Jul 2025 19:36:03 -0700 Subject: [PATCH 12/43] Update NPM modules --- ui/package-lock.json | 16 ++++++++-------- ui/package.json | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ui/package-lock.json b/ui/package-lock.json index c7ec0198..05b0dc61 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -33,7 +33,7 @@ "react-dom": "^18.3.1", "react-draggable": "^4.5.0", "react-redux": "^9.2.0", - "react-router": "^7.6.3", + "react-router": "^7.7.0", "spinners-react": "^1.0.11", "web-vitals": "^5.0.3" }, @@ -45,7 +45,7 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "serve": "^14.2.4", - "vite": "^7.0.4", + "vite": "^7.0.5", "vite-plugin-eslint2": "^5.0.4" } }, @@ -5785,9 +5785,9 @@ } }, "node_modules/react-router": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.3.tgz", - "integrity": "sha512-zf45LZp5skDC6I3jDLXQUu0u26jtuP4lEGbc7BbdyxenBN1vJSTA18czM2D+h5qyMBuMrD+9uB+mU37HIoKGRA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.7.0.tgz", + "integrity": "sha512-3FUYSwlvB/5wRJVTL/aavqHmfUKe0+Xm9MllkYgGo9eDwNdkvwlJGjpPxono1kCycLt6AnDTgjmXvK3/B4QGuw==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -6867,9 +6867,9 @@ } }, "node_modules/vite": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz", - "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.5.tgz", + "integrity": "sha512-1mncVwJxy2C9ThLwz0+2GKZyEXuC3MyWtAAlNftlZZXZDP3AJt5FmwcMit/IGGaNZ8ZOB2BNO/HFUB+CpN0NQw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/ui/package.json b/ui/package.json index 626a1560..9478734d 100644 --- a/ui/package.json +++ b/ui/package.json @@ -29,7 +29,7 @@ "react-dom": "^18.3.1", "react-draggable": "^4.5.0", "react-redux": "^9.2.0", - "react-router": "^7.6.3", + "react-router": "^7.7.0", "spinners-react": "^1.0.11", "web-vitals": "^5.0.3" }, @@ -57,7 +57,7 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "serve": "^14.2.4", - "vite": "^7.0.4", + "vite": "^7.0.5", "vite-plugin-eslint2": "^5.0.4" } } From f3fa6bc3af12167711648edeb8c5d59a9a765b7a Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 17 Jul 2025 19:36:35 -0700 Subject: [PATCH 13/43] Added id field to all job steps and switched PAT token for Git'Hub App token --- .github/workflows/azure-ipam-assets.yml | 1 + .github/workflows/azure-ipam-build.yml | 6 ++++++ .github/workflows/azure-ipam-testing.yml | 20 ++++++++++++++++++-- .github/workflows/azure-ipam-version.yml | 20 ++++++++++++++++++-- 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/.github/workflows/azure-ipam-assets.yml b/.github/workflows/azure-ipam-assets.yml index 83c6d055..64a2bee3 100644 --- a/.github/workflows/azure-ipam-assets.yml +++ b/.github/workflows/azure-ipam-assets.yml @@ -30,6 +30,7 @@ jobs: python-version: '3.9' - name: Checkout Azure IPAM Code + id: checkoutRepo uses: actions/checkout@v4 - name: Install NPM Packages diff --git a/.github/workflows/azure-ipam-build.yml b/.github/workflows/azure-ipam-build.yml index fad38e7e..e006ec68 100644 --- a/.github/workflows/azure-ipam-build.yml +++ b/.github/workflows/azure-ipam-build.yml @@ -39,6 +39,7 @@ jobs: needs: [ init ] steps: - name: Azure Login + id: azureLogin uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} @@ -47,6 +48,7 @@ jobs: enable-AzPSSession: true - name: Checkout Azure IPAM Code + id: checkoutRepo uses: actions/checkout@v4 with: sparse-checkout: | @@ -54,6 +56,7 @@ jobs: ui - name: Build Azure IPAM Containers + id: buildContainers env: IPAM_VERSION: ${{ needs.init.outputs.ipamVersion }} run: | @@ -67,6 +70,7 @@ jobs: needs: [ init ] steps: - name: Azure Login + id: azureLogin uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} @@ -75,6 +79,7 @@ jobs: enable-AzPSSession: true - name: Checkout Azure IPAM Code + id: checkoutRepo uses: actions/checkout@v4 with: sparse-checkout: | @@ -83,6 +88,7 @@ jobs: lb - name: Build Legacy Azure IPAM Containers + id: buildLegacyContainers env: IPAM_VERSION: ${{ needs.init.outputs.ipamVersion }} run: | diff --git a/.github/workflows/azure-ipam-testing.yml b/.github/workflows/azure-ipam-testing.yml index 02ea4b79..396283ad 100644 --- a/.github/workflows/azure-ipam-testing.yml +++ b/.github/workflows/azure-ipam-testing.yml @@ -24,18 +24,21 @@ jobs: ipamResourceGroup: ${{ steps.deployScript.outputs.ipamResourceGroup }} steps: - name: Install Deployment Prerequisites + id: installPrerequisites shell: pwsh run: | Set-PSRepository PSGallery -InstallationPolicy Trusted Install-Module Az, Microsoft.Graph -AllowClobber -Force - name: Azure Login + id: azureLogin uses: azure/login@v2 with: creds: ${{ secrets.AZURE_CREDENTIALS }} enable-AzPSSession: true - name: Checkout Azure IPAM Code + id: checkoutRepo uses: actions/checkout@v4 with: sparse-checkout: | @@ -44,10 +47,12 @@ jobs: ui - name: Build Azure IPAM Container + id: buildContainer run: | az acr build -r $ACR_NAME -t ipam:${{ github.run_id }}-${{ github.run_attempt }} -f ./Dockerfile.deb . - name: Update Bicep File + id: updateBicep working-directory: deploy shell: pwsh run: | @@ -62,14 +67,14 @@ jobs: $bicepFile | Out-File -FilePath ./modules/appService.bicep -Force - name: Deploy Azure IPAM - working-directory: deploy id: deployScript + working-directory: deploy shell: pwsh run: ./deploy.ps1 -Location "westus3" -UIAppName $env:IPAM_UI_NAME -EngineAppName $env:IPAM_ENGINE_NAME - name: "Upload Logs" - working-directory: logs id: uploadLogs + working-directory: logs env: AZURE_IPAM_SUFFIX: ${{ steps.deployScript.outputs.ipamSuffix }} STORAGE_ACCT_RG: ${{ vars.LOGGING_STORAGE_RG }} @@ -97,6 +102,7 @@ jobs: Write-Output "logFile=$archiveName" >> $Env:GITHUB_OUTPUT - name: "Output Azure IPAM Deployment Details" + id: deploymentDetails env: DEPLOYMENT_DETAILS: ${{ steps.uploadLogs.outputs.deployDetails }} shell: pwsh @@ -117,6 +123,7 @@ jobs: Write-Host "-------------------" - name: "Sleep for 5 Minutes" + id: sleep shell: pwsh run: Start-Sleep -s 300 @@ -126,24 +133,28 @@ jobs: needs: [ deploy ] steps: - name: Install Testing Prerequisites + id: installPrerequisites shell: pwsh run: | Set-PSRepository PSGallery -InstallationPolicy Trusted Install-Module Az, Pester -AllowClobber -Force - name: Azure Login + id: azureLogin uses: azure/login@v2 with: creds: ${{ secrets.AZURE_CREDENTIALS }} enable-AzPSSession: true - name: Checkout Azure IPAM Code + id: checkoutRepo uses: actions/checkout@v4 with: sparse-checkout: | tests - name: Test Azure IPAM w/ Pester + id: ipamTesting working-directory: tests env: IPAM_RESOURCE_GROUP: ${{ needs.deploy.outputs.ipamResourceGroup }} @@ -174,23 +185,27 @@ jobs: needs: [ deploy, test ] steps: - name: Install Cleanup Prerequisites + id: installPrerequisites shell: pwsh run: | Set-PSRepository PSGallery -InstallationPolicy Trusted Install-Module Az -AllowClobber -Force - name: Azure Login + id: azureLogin uses: azure/login@v2 with: creds: ${{ secrets.AZURE_CREDENTIALS }} enable-AzPSSession: true - name : Remove Azure IPAM Resources + id: cleanupResources shell: pwsh run: | Remove-AzResourceGroup -Name ${{ needs.deploy.outputs.ipamResourceGroup }} -Force - name : Remove Azure IPAM Identities + id: cleanupIdentities shell: pwsh run: | $tenantId = (Get-AzContext).Tenant.Id @@ -207,5 +222,6 @@ jobs: $engineApp | Remove-AzADApplication - name: "Remove Azure IPAM Container" + id: cleanupContainer run: | az acr repository delete --name $ACR_NAME --repository ipam --yes diff --git a/.github/workflows/azure-ipam-version.yml b/.github/workflows/azure-ipam-version.yml index 346d1a5a..552803c7 100644 --- a/.github/workflows/azure-ipam-version.yml +++ b/.github/workflows/azure-ipam-version.yml @@ -48,10 +48,19 @@ jobs: }) ).data[0]; + - name: "Create GitHub App Token" + id: appToken + uses: actions/create-github-app-token@v2 + with: + app-id: ${{ vars.IPAM_GITHUB_APP_ID }} + private-key: ${{ secrets.IPAM_GITHUB_APP_KEY }} + - name: Checkout Azure IPAM Code + id: checkoutRepo uses: actions/checkout@v4 with: - token: ${{ secrets.PAT_TOKEN }} + token: ${{ steps.appToken.outputs.token }} + persist-credentials: false - name: Configure Git id: configureGit @@ -116,10 +125,17 @@ jobs: runs-on: ubuntu-latest needs: [ version ] steps: + - name: "Create GitHub App Token" + id: appToken + uses: actions/create-github-app-token@v2 + with: + app-id: ${{ vars.IPAM_GITHUB_APP_ID }} + private-key: ${{ secrets.IPAM_GITHUB_APP_KEY }} + - name: Publish Azure IPAM Release id: publishRelease env: - GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }} + GITHUB_TOKEN: ${{ steps.appToken.outputs.token }} tagName: v${{ needs.version.outputs.ipamVersion }} run: | gh release create "$tagName" \ From 22b157b52173c0d37489d96d2130efab43bcfbae Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 17 Jul 2025 19:36:54 -0700 Subject: [PATCH 14/43] Fixed exclusions --- .dockerignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 92c206a7..98c2a244 100644 --- a/.dockerignore +++ b/.dockerignore @@ -19,7 +19,7 @@ tools/ LICENSE # IPAM UI -node_modules +**/node_modules build dist From e916e3f39569e6f9b38f641d0ea89f1bebe882b4 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 21 Jul 2025 14:47:30 -0700 Subject: [PATCH 15/43] Updated Python and NodeJS versions in GitHub Actions pipelines --- .github/workflows/azure-ipam-assets.yml | 8 ++++---- .github/workflows/azure-ipam-version.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/azure-ipam-assets.yml b/.github/workflows/azure-ipam-assets.yml index 64a2bee3..19d2272e 100644 --- a/.github/workflows/azure-ipam-assets.yml +++ b/.github/workflows/azure-ipam-assets.yml @@ -17,17 +17,17 @@ jobs: - run: echo "Job triggered by a ${{ github.event_name }} event." - run: echo "Release Tag - ${{ github.event.release.tag_name }}." - - name: "Setup NodeJS v18" + - name: "Setup NodeJS v22" id: setupNode uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 22 - - name: "Setup Python v3.9" + - name: "Setup Python v3.11" id: setupPython uses: actions/setup-python@v5 with: - python-version: '3.9' + python-version: '3.11' - name: Checkout Azure IPAM Code id: checkoutRepo diff --git a/.github/workflows/azure-ipam-version.yml b/.github/workflows/azure-ipam-version.yml index 552803c7..ca36d953 100644 --- a/.github/workflows/azure-ipam-version.yml +++ b/.github/workflows/azure-ipam-version.yml @@ -23,17 +23,17 @@ jobs: steps: - run: echo "Job triggered by a ${{ github.event_name }} event to main." - - name: "Setup NodeJS v18" + - name: "Setup NodeJS v22" id: setupNode uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 22 - - name: "Setup Python v3.9" + - name: "Setup Python v3.11" id: setupPython uses: actions/setup-python@v5 with: - python-version: '3.9' + python-version: '3.11' - name: "Extract Pull Request Details" id: getPullRequestData From 2d064d2fcf2d5d5ccbe289b67cbed6cb4705dc22 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 4 Aug 2025 17:01:40 -0700 Subject: [PATCH 16/43] Migrated away from Preview APIs --- deploy/modules/containerRegistry.bicep | 4 ++-- deploy/modules/keyVault.bicep | 14 +++++++------- deploy/modules/managedIdentity.bicep | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/deploy/modules/containerRegistry.bicep b/deploy/modules/containerRegistry.bicep index 5b786372..f9960585 100644 --- a/deploy/modules/containerRegistry.bicep +++ b/deploy/modules/containerRegistry.bicep @@ -11,7 +11,7 @@ var acrPull = '7f951dda-4ed3-4680-a7ca-43fe172d538d' var acrPullId = subscriptionResourceId('Microsoft.Authorization/roleDefinitions', acrPull) var acrPullRoleAssignmentId = guid(subscription().id, acrPull, principalId) -resource containerRegistry 'Microsoft.ContainerRegistry/registries@2021-12-01-preview' = { +resource containerRegistry 'Microsoft.ContainerRegistry/registries@2022-12-01' = { name: containerRegistryName location: location sku: { @@ -19,7 +19,7 @@ resource containerRegistry 'Microsoft.ContainerRegistry/registries@2021-12-01-pr } } -resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { +resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = { name: acrPullRoleAssignmentId scope: containerRegistry properties: { diff --git a/deploy/modules/keyVault.bicep b/deploy/modules/keyVault.bicep index caba1330..078ba583 100644 --- a/deploy/modules/keyVault.bicep +++ b/deploy/modules/keyVault.bicep @@ -30,7 +30,7 @@ var keyVaultUser = '4633458b-17de-408a-b874-0445c86b69e6' var keyVaultUserId = subscriptionResourceId('Microsoft.Authorization/roleDefinitions', keyVaultUser) var keyVaultUserRoleAssignmentId = guid(keyVaultUser, identityPrincipalId, keyVault.id) -resource keyVault 'Microsoft.KeyVault/vaults@2021-11-01-preview' = { +resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' = { name: keyVaultName location: location properties: { @@ -48,7 +48,7 @@ resource keyVault 'Microsoft.KeyVault/vaults@2021-11-01-preview' = { } } -resource identityId 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = { +resource identityId 'Microsoft.KeyVault/vaults/secrets@2022-07-01' = { parent: keyVault name: 'IDENTITY-ID' properties: { @@ -56,7 +56,7 @@ resource identityId 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = { } } -resource uiId 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = { +resource uiId 'Microsoft.KeyVault/vaults/secrets@2022-07-01' = { parent: keyVault name: 'UI-ID' properties: { @@ -64,7 +64,7 @@ resource uiId 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = { } } -resource engineId 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = { +resource engineId 'Microsoft.KeyVault/vaults/secrets@2022-07-01' = { parent: keyVault name: 'ENGINE-ID' properties: { @@ -72,7 +72,7 @@ resource engineId 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = { } } -resource engineSecret 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = { +resource engineSecret 'Microsoft.KeyVault/vaults/secrets@2022-07-01' = { parent: keyVault name: 'ENGINE-SECRET' properties: { @@ -80,7 +80,7 @@ resource engineSecret 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = { } } -resource appTenant 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = { +resource appTenant 'Microsoft.KeyVault/vaults/secrets@2022-07-01' = { parent: keyVault name: 'TENANT-ID' properties: { @@ -116,7 +116,7 @@ resource diagnosticSettings 'Microsoft.Insights/diagnosticSettings@2021-05-01-pr } } -resource keyVaultUserAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { +resource keyVaultUserAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = { name: keyVaultUserRoleAssignmentId scope: keyVault properties: { diff --git a/deploy/modules/managedIdentity.bicep b/deploy/modules/managedIdentity.bicep index 2e669269..bedf2ea5 100644 --- a/deploy/modules/managedIdentity.bicep +++ b/deploy/modules/managedIdentity.bicep @@ -16,7 +16,7 @@ resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018- location: location } -resource contributorAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { +resource contributorAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = { name: contributorRoleAssignmentId properties: { principalType: 'ServicePrincipal' @@ -25,7 +25,7 @@ resource contributorAssignment 'Microsoft.Authorization/roleAssignments@2020-04- } } -resource managedIdentityOperatorAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { +resource managedIdentityOperatorAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = { name: managedIdentityOperatorRoleAssignmentId properties: { principalType: 'ServicePrincipal' From fa889f3d0e26e60d01747931be5bb3aa73da48a9 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 4 Aug 2025 17:02:31 -0700 Subject: [PATCH 17/43] Fix bug where target app folder name was incorrect --- engine/Dockerfile.rhel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/Dockerfile.rhel b/engine/Dockerfile.rhel index f989ac45..db6ed596 100644 --- a/engine/Dockerfile.rhel +++ b/engine/Dockerfile.rhel @@ -25,7 +25,7 @@ RUN pip install --upgrade pip --progress-bar off RUN pip install --no-cache-dir -r ./requirements.lock.txt --progress-bar off # Copy Application Scripts & Sources -ADD ./app ./appDockerfile +ADD ./app ./app ADD ./init.sh . # Set Script Execute Permissions From 75acd21b2b9559a57afe170fccae781bcdc6c6b3 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Sun, 17 Aug 2025 18:17:06 -0700 Subject: [PATCH 18/43] Prepare for latest version of @vitejs/react-plugin --- ui/vite.config.js | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/ui/vite.config.js b/ui/vite.config.js index 038051a0..cef7cf8a 100644 --- a/ui/vite.config.js +++ b/ui/vite.config.js @@ -1,52 +1,53 @@ import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; -import eslint from 'vite-plugin-eslint2'; +import eslint from "vite-plugin-eslint2"; export default () => { return defineConfig({ + // resolve: { + // dedupe: ['react', 'react-dom'] + // }, plugins: [ react(), - eslint( - { - // cache: false, - lintOnStart: true, - lintInWorker: true, - include: ['src/**/*.js', 'src/**/*.jsx', 'src/**/*.ts', 'src/**/*.tsx'], - exclude: [] - } - ), + eslint({ + // cache: false, + lintOnStart: true, + lintInWorker: true, + include: ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"], + exclude: [], + }), { - name: 'build-ui-html', - apply: 'build', + name: "build-ui-html", + apply: "build", transformIndexHtml: (html) => { return { html, tags: [ { - tag: 'script', + tag: "script", attrs: { - type: 'text/javascript', - src: '/env.js', + type: "text/javascript", + src: "/env.js", }, - injectTo: 'head', + injectTo: "head", }, ], }; }, - } + }, ], server: { hmr: { protocol: "ws", - path: "/ws" - } + path: "/ws", + }, }, define: { IPAM_VERSION: JSON.stringify(process.env.npm_package_version), }, build: { - chunkSizeWarningLimit: 5120 + chunkSizeWarningLimit: 5120, }, - logLevel: 'warn' - }) -} + logLevel: "warn", + }); +}; From 8c72d551dd9fa6d7fd99ec094f6a6486a1bc3b7e Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Sun, 17 Aug 2025 18:17:29 -0700 Subject: [PATCH 19/43] Include files in UI root directory --- ui/eslint.config.js | 96 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/ui/eslint.config.js b/ui/eslint.config.js index 82b33a84..98ccad66 100644 --- a/ui/eslint.config.js +++ b/ui/eslint.config.js @@ -7,6 +7,45 @@ import jest from "eslint-plugin-jest"; export default [ js.configs.recommended, + { + files: ["*.js", "*.mjs", "*.cjs"], + languageOptions: { + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + }, + globals: { + ...globals.node, + } + }, + rules: { + "no-unused-vars": "off", + "no-prototype-builtins": "off", + "no-constant-binary-expression": "off" + }, + }, + { + files: ["src/**/*.js"], + plugins: { + jest + }, + languageOptions: { + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + }, + globals: { + ...globals.node, + ...globals.browser, + ...globals.jest + } + }, + rules: { + "no-unused-vars": "off", + "no-prototype-builtins": "off", + "no-constant-binary-expression": "off" + }, + }, { files: ["src/**/*.jsx"], plugins: { @@ -42,4 +81,61 @@ export default [ "no-constant-binary-expression": "off" }, }, + { + files: ["src/**/*.ts"], + plugins: { + jest + }, + languageOptions: { + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + }, + globals: { + ...globals.node, + ...globals.browser, + ...globals.jest + } + }, + rules: { + "no-unused-vars": "off", + "no-prototype-builtins": "off", + "no-constant-binary-expression": "off" + }, + }, + { + files: ["src/**/*.tsx"], + plugins: { + react, + "react-hooks": hooks, + jest + }, + settings: { + react: { + version: "detect", + } + }, + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 'latest', + sourceType: 'module', + }, + globals: { + ...globals.node, + ...globals.browser, + ...globals.jest + } + }, + rules: { + "no-unused-vars": "off", + "no-prototype-builtins": "off", + "react/prop-types": "off", + "react/display-name": "off", + "react/no-unescaped-entities": "off", + "no-constant-binary-expression": "off" + }, + }, ]; From 1bd21526fb114d609f74a3ca6bb04997e69e8927 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Sun, 17 Aug 2025 18:17:58 -0700 Subject: [PATCH 20/43] Update dev container to latest versions of Python and NodeJS --- engine/.devcontainer/devcontainer.json | 8 ++++---- ui/.devcontainer/devcontainer.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/engine/.devcontainer/devcontainer.json b/engine/.devcontainer/devcontainer.json index 24997ed8..4331c2e2 100644 --- a/engine/.devcontainer/devcontainer.json +++ b/engine/.devcontainer/devcontainer.json @@ -5,9 +5,9 @@ "build": { "dockerfile": "Dockerfile", "context": "..", - "args": { - // Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9 - "VARIANT": "3.9", + "args": { + // Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11 + "VARIANT": "3.11", // Options "INSTALL_NODE": "true", "NODE_VERSION": "lts/*" @@ -15,7 +15,7 @@ }, // Set *default* container specific settings.json values on container create. - "settings": { + "settings": { "terminal.integrated.shell.linux": "/bin/bash", "python.pythonPath": "/usr/local/bin/python", "python.languageServer": "Pylance", diff --git a/ui/.devcontainer/devcontainer.json b/ui/.devcontainer/devcontainer.json index 3ff80516..710f16eb 100644 --- a/ui/.devcontainer/devcontainer.json +++ b/ui/.devcontainer/devcontainer.json @@ -3,10 +3,10 @@ "build": { // "context": "..", "dockerfile": "Dockerfile", - // Update 'VARIANT' to pick a Node version: 18, 16, 14. + // Update 'VARIANT' to pick a Node version: 22, 20, 18, 16, 14. // Append -bullseye or -buster to pin to an OS version. // Use -bullseye variants on local arm64/Apple Silicon. - "args": { "VARIANT": "18-bullseye" }, + "args": { "VARIANT": "22-bullseye" }, }, // Remove container when terminated From f69722129939d91707331e174e167de20ec7ecb3 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Sun, 17 Aug 2025 18:18:28 -0700 Subject: [PATCH 21/43] Enable VSCode to trim trailing whitespace when saving --- .vscode/settings.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index c686e252..392c3a89 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,6 +11,8 @@ "markdownlint.config": { "default": true, "MD024": { "siblings_only": true }, + "MD028": false, "MD033": false - } -} \ No newline at end of file + }, + "files.trimTrailingWhitespace": true +} From 05989d36a3132e07851ccb0a88b45c719c3a332b Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 4 Sep 2025 20:51:20 -0700 Subject: [PATCH 22/43] Updated Dockerfiles with missing comments, missing build arguments and flag to allow for development builds --- Dockerfile.deb | 35 +++++++++++++++++++++++++++++++---- Dockerfile.func | 29 +++++++++++++++++++++++++++-- Dockerfile.rhel | 24 ++++++++++++++++++++++-- engine/Dockerfile.deb | 4 ++++ engine/Dockerfile.dev | 9 +++++++++ engine/Dockerfile.func | 1 + engine/Dockerfile.rhel | 1 + lb/Dockerfile | 3 ++- lb/Dockerfile.deb | 12 ++++++++++++ lb/Dockerfile.dev | 3 ++- lb/Dockerfile.rhel | 12 ++++++++++++ ui/Dockerfile.deb | 4 ++++ ui/Dockerfile.dev | 1 + ui/Dockerfile.rhel | 1 + 14 files changed, 129 insertions(+), 10 deletions(-) create mode 100644 lb/Dockerfile.deb create mode 100644 lb/Dockerfile.rhel diff --git a/Dockerfile.deb b/Dockerfile.deb index f53f2722..83f4990e 100644 --- a/Dockerfile.deb +++ b/Dockerfile.deb @@ -1,10 +1,20 @@ ARG BUILD_IMAGE=node:22-slim ARG SERVE_IMAGE=python:3.11-slim +# Set Production Build Flag +ARG PROD_BUILD=true + +# Set Default Port ARG PORT=8080 FROM $BUILD_IMAGE AS builder +# Production Build Flag +ARG PROD_BUILD + +# Set Debian Frontend Flag +ARG DEBIAN_FRONTEND=noninteractive + # Disable NPM Update Notifications ENV NPM_CONFIG_UPDATE_NOTIFIER=false @@ -15,7 +25,11 @@ WORKDIR /tmp COPY ./ui/. ./ # Install UI Dependencies -RUN npm ci +RUN if [ "${PROD_BUILD}" = true ]; then \ + npm ci; \ +else \ + npm install; \ +fi RUN chmod 777 -R node_modules # Build IPAM UI @@ -23,8 +37,15 @@ RUN npm run build FROM $SERVE_IMAGE +# Set Production Build Flag +ARG PROD_BUILD + +# Port to Listen On ARG PORT +# Set Debian Frontend to Non-Interactive +ARG DEBIAN_FRONTEND=noninteractive + # Set Environment Variable ENV PORT=${PORT} @@ -37,7 +58,7 @@ WORKDIR /tmp # Install OpenSSH and set the password for root to "Docker!" RUN apt-get update RUN apt-get install -qq openssh-server -y \ - && echo "root:Docker!" | chpasswd + && echo "root:Docker!" | chpasswd # Enable SSH root login with Password Authentication # RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config @@ -45,20 +66,26 @@ RUN apt-get install -qq openssh-server -y \ # Copy 'sshd_config File' to /etc/ssh/ COPY sshd_config /etc/ssh/ +# Set SSH Key Permissions RUN ssh-keygen -A -RUN mkdir /var/run/sshd +RUN mkdir -p /var/run/sshd # Set Working Directory WORKDIR /ipam # Install Engine Dependencies +COPY ./engine/requirements.txt /code/requirements.txt COPY ./engine/requirements.lock.txt /code/requirements.lock.txt # Upgrade PIP RUN pip install --upgrade pip --progress-bar off # Install Dependencies -RUN pip install --no-cache-dir -r /code/requirements.lock.txt --progress-bar off +RUN if [ "${PROD_BUILD}" = true ]; then \ + pip install --no-cache-dir -r /code/requirements.lock.txt --progress-bar off; \ +else \ + pip install --no-cache-dir -r /code/requirements.txt --progress-bar off; \ +fi # Copy Engine Code COPY ./engine/app ./app diff --git a/Dockerfile.func b/Dockerfile.func index ef317e47..e1f86404 100644 --- a/Dockerfile.func +++ b/Dockerfile.func @@ -1,8 +1,17 @@ ARG BUILD_IMAGE=mcr.microsoft.com/azure-functions/node:4-node22-appservice ARG SERVE_IMAGE=mcr.microsoft.com/azure-functions/python:4-python3.11-appservice +# Set Production Build Flag +ARG PROD_BUILD=true + FROM $BUILD_IMAGE AS builder +# Production Build Flag +ARG PROD_BUILD + +# Set Debian Frontend Flag +ARG DEBIAN_FRONTEND=noninteractive + # Disable NPM Update Notifications ENV NPM_CONFIG_UPDATE_NOTIFIER=false @@ -13,7 +22,11 @@ WORKDIR /tmp COPY ./ui/. ./ # Install UI Dependencies -RUN npm ci +RUN if [ "${PROD_BUILD}" = true ]; then \ + npm ci; \ +else \ + npm install; \ +fi RUN chmod 777 -R node_modules # Build IPAM UI @@ -21,6 +34,13 @@ RUN npm run build FROM $SERVE_IMAGE +# Set Production Build Flag +ARG PROD_BUILD + +# Set Debian Frontend to Non-Interactive +ARG DEBIAN_FRONTEND=noninteractive + +# Set Azure Function Root Directory & Enable Console Logging ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true @@ -31,13 +51,18 @@ ENV PIP_ROOT_USER_ACTION=ignore WORKDIR /tmp # Copy Requirements File +COPY ./engine/requirements.txt . COPY ./engine/requirements.lock.txt . # Upgrade PIP RUN pip install --upgrade pip --progress-bar off # Install Dependencies -RUN pip install --no-cache-dir -r ./requirements.lock.txt --progress-bar off +RUN if [ "${PROD_BUILD}" = true ]; then \ + pip install --no-cache-dir -r ./requirements.lock.txt --progress-bar off; \ +else \ + pip install --no-cache-dir -r ./requirements.txt --progress-bar off; \ +fi # Copy Application Code to Function App Root Directory COPY ./engine/. /home/site/wwwroot diff --git a/Dockerfile.rhel b/Dockerfile.rhel index a7a5f02b..50b85608 100644 --- a/Dockerfile.rhel +++ b/Dockerfile.rhel @@ -1,10 +1,17 @@ ARG BUILD_IMAGE=registry.access.redhat.com/ubi8/nodejs-22 ARG SERVE_IMAGE=registry.access.redhat.com/ubi8/python-311 +# Set Production Build Flag +ARG PROD_BUILD=true + +# Set Default Port ARG PORT=8080 FROM $BUILD_IMAGE AS builder +# Production Build Flag +ARG PROD_BUILD + # Disable NPM Update Notifications ENV NPM_CONFIG_UPDATE_NOTIFIER=false @@ -18,7 +25,11 @@ USER root COPY ./ui/. ./ # Install UI Dependencies -RUN npm ci +RUN if [ "${PROD_BUILD}" = true ]; then \ + npm ci; \ +else \ + npm install; \ +fi RUN chmod 777 -R node_modules # Build IPAM UI @@ -26,6 +37,10 @@ RUN npm run build FROM $SERVE_IMAGE +# Set Production Build Flag +ARG PROD_BUILD + +# Port to Listen On ARG PORT # Set Environment Variable @@ -62,13 +77,18 @@ RUN mkdir /var/run/sshd WORKDIR /ipam # Install Engine Dependencies +COPY ./engine/requirements.txt /code/requirements.txt COPY ./engine/requirements.lock.txt /code/requirements.lock.txt # Upgrade PIP RUN pip install --upgrade pip --progress-bar off # Install Dependencies -RUN pip install --no-cache-dir -r /code/requirements.lock.txt --progress-bar off +RUN if [ "${PROD_BUILD}" = true ]; then \ + pip install --no-cache-dir -r /code/requirements.lock.txt --progress-bar off; \ +else \ + pip install --no-cache-dir -r /code/requirements.txt --progress-bar off; \ +fi # Copy Engine Code COPY ./engine/app ./app diff --git a/engine/Dockerfile.deb b/engine/Dockerfile.deb index d230f055..c6a11f7c 100644 --- a/engine/Dockerfile.deb +++ b/engine/Dockerfile.deb @@ -1,8 +1,12 @@ ARG BASE_IMAGE=python:3.11-slim FROM $BASE_IMAGE +# Set Default Port ARG PORT=80 +# Set Debian Frontend to Non-Interactive +ARG DEBIAN_FRONTEND=noninteractive + # Set Environment Variable ENV PORT=${PORT} diff --git a/engine/Dockerfile.dev b/engine/Dockerfile.dev index 7b544226..978a4977 100644 --- a/engine/Dockerfile.dev +++ b/engine/Dockerfile.dev @@ -1,20 +1,29 @@ ARG VARIANT=3.11-bullseye FROM mcr.microsoft.com/vscode/devcontainers/python:${VARIANT} +# Set Default Port ARG PORT=8000 +# Set the Working Directory WORKDIR /code +# Set Environment Variable ENV PORT=$PORT +# Copy Requirements File COPY ./requirements.txt /code/requirements.txt +# Upgrade PIP RUN pip install --upgrade pip --progress-bar off +# Install Dependencies RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt +# Copy Application Sources COPY ./app /code/app +# Expose Port EXPOSE $PORT +# Execute Startup Script CMD uvicorn "app.main:app" --reload --host "0.0.0.0" --port $PORT diff --git a/engine/Dockerfile.func b/engine/Dockerfile.func index f6ccb8f9..1cabef95 100644 --- a/engine/Dockerfile.func +++ b/engine/Dockerfile.func @@ -2,6 +2,7 @@ # FROM mcr.microsoft.com/azure-functions/python:3.0-python3.9-appservice FROM mcr.microsoft.com/azure-functions/python:4-python3.11-appservice +# Set Azure Function Root Directory & Enable Console Logging ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true diff --git a/engine/Dockerfile.rhel b/engine/Dockerfile.rhel index db6ed596..4bcdcbd1 100644 --- a/engine/Dockerfile.rhel +++ b/engine/Dockerfile.rhel @@ -1,6 +1,7 @@ ARG BASE_IMAGE=registry.access.redhat.com/ubi8/python-311 FROM $BASE_IMAGE +# Set Default Port ARG PORT=8080 # Set Environment Variable diff --git a/lb/Dockerfile b/lb/Dockerfile index 7358e7ce..2ef4c54b 100644 --- a/lb/Dockerfile +++ b/lb/Dockerfile @@ -1,10 +1,11 @@ -# registry.access.redhat.com/ubi8/nginx-122 ARG BASE_IMAGE=nginx:alpine FROM $BASE_IMAGE +# Create File Links RUN ln -sf /dev/stdout /var/log/nginx/access.log RUN ln -sf /dev/stderr /var/log/nginx/error.log +# Copy NGINX Config COPY nginx.conf /etc/nginx/nginx.conf # Run script uses standard ways to run the application diff --git a/lb/Dockerfile.deb b/lb/Dockerfile.deb new file mode 100644 index 00000000..8cb034c5 --- /dev/null +++ b/lb/Dockerfile.deb @@ -0,0 +1,12 @@ +ARG BASE_IMAGE=nginx:bookworm +FROM $BASE_IMAGE + +# Create File Links +RUN ln -sf /dev/stdout /var/log/nginx/access.log +RUN ln -sf /dev/stderr /var/log/nginx/error.log + +# Copy NGINX Config +COPY nginx.conf /etc/nginx/nginx.conf + +# Run script uses standard ways to run the application +CMD nginx -g "daemon off;" diff --git a/lb/Dockerfile.dev b/lb/Dockerfile.dev index e405144f..b633cc9c 100644 --- a/lb/Dockerfile.dev +++ b/lb/Dockerfile.dev @@ -1,10 +1,11 @@ -# registry.access.redhat.com/ubi8/nginx-120 ARG BASE_IMAGE=nginx:alpine FROM $BASE_IMAGE +# Create File Links RUN ln -sf /dev/stdout /var/log/nginx/access.log RUN ln -sf /dev/stderr /var/log/nginx/error.log +# Copy NGINX Config COPY nginx.dev.conf /etc/nginx/nginx.conf # Run script uses standard ways to run the application diff --git a/lb/Dockerfile.rhel b/lb/Dockerfile.rhel new file mode 100644 index 00000000..529ea07a --- /dev/null +++ b/lb/Dockerfile.rhel @@ -0,0 +1,12 @@ +ARG BASE_IMAGE=registry.access.redhat.com/ubi8/nginx-124 +FROM $BASE_IMAGE + +# Create File Links +RUN ln -sf /dev/stdout /var/log/nginx/access.log +RUN ln -sf /dev/stderr /var/log/nginx/error.log + +# Copy NGINX Config +COPY nginx.conf /etc/nginx/nginx.conf + +# Run script uses standard ways to run the application +CMD nginx -g "daemon off;" diff --git a/ui/Dockerfile.deb b/ui/Dockerfile.deb index 0ab6d999..b71a3f2e 100644 --- a/ui/Dockerfile.deb +++ b/ui/Dockerfile.deb @@ -1,8 +1,12 @@ ARG BASE_IMAGE=node:22-slim FROM $BASE_IMAGE +# Set Default Port ARG PORT=80 +# Set Debian Frontend to Non-Interactive +ARG DEBIAN_FRONTEND=noninteractive + # Set Environment Variable ENV PORT=${PORT} diff --git a/ui/Dockerfile.dev b/ui/Dockerfile.dev index c8f0bae0..b5b9e29e 100644 --- a/ui/Dockerfile.dev +++ b/ui/Dockerfile.dev @@ -1,6 +1,7 @@ ARG VARIANT=22-bullseye FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:${VARIANT} +# Set Default Port ARG PORT=3000 # Set Working Directory diff --git a/ui/Dockerfile.rhel b/ui/Dockerfile.rhel index ea0f5ca4..15b0025a 100644 --- a/ui/Dockerfile.rhel +++ b/ui/Dockerfile.rhel @@ -1,6 +1,7 @@ ARG BASE_IMAGE=registry.access.redhat.com/ubi8/nodejs-22 FROM $BASE_IMAGE +# Set Default Port ARG PORT=8080 # Set Environment Variable From e862fc11a0a9f6a1915cb3c77b95204f99ef1391 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 4 Sep 2025 20:55:19 -0700 Subject: [PATCH 23/43] Fixed MSAL authentication issues --- ui/src/features/drawer/drawer.jsx | 73 +++++++++++++++++++++---------- ui/src/features/ipam/ipamAPI.jsx | 38 ++++++---------- ui/src/features/login/login.jsx | 34 +++++++++++--- ui/src/msal/authConfig.jsx | 3 ++ ui/src/msal/graph.jsx | 49 +++++++++++++-------- 5 files changed, 123 insertions(+), 74 deletions(-) diff --git a/ui/src/features/drawer/drawer.jsx b/ui/src/features/drawer/drawer.jsx index d96b9ed2..226ef66c 100644 --- a/ui/src/features/drawer/drawer.jsx +++ b/ui/src/features/drawer/drawer.jsx @@ -2,7 +2,7 @@ import * as React from "react"; import { useSelector, useDispatch } from 'react-redux'; import { useMsal } from "@azure/msal-react"; -import { InteractionRequiredAuthError } from "@azure/msal-browser"; +import { InteractionStatus, InteractionRequiredAuthError, BrowserAuthError } from "@azure/msal-browser"; import { useSnackbar } from "notistack"; @@ -15,6 +15,7 @@ import { plural, singular } from 'pluralize'; import { Routes, Route, Link, Navigate, useNavigate } from "react-router"; import { callMsGraph, callMsGraphPhoto } from "../../msal/graph"; +import { msalInstance } from "../../index"; import { AppBar, @@ -172,7 +173,7 @@ const Search = styled("div")(({ theme }) => ({ // })); export default function NavDrawer() { - const { instance, accounts } = useMsal(); + const { instance, accounts, inProgress } = useMsal(); const { enqueueSnackbar, closeSnackbar } = useSnackbar(); const [menuAnchorEl, setMenuAnchorEl] = React.useState(null); @@ -421,17 +422,17 @@ export default function NavDrawer() { return word.charAt(0).toUpperCase() + word.slice(1); }) .join(' '); - + return titleCase; } function GetInstanceType(target) { var instanceType = typeof target; - + if(instanceType === 'object') { instanceType = Array.isArray(target) ? 'array': 'object'; } - + return instanceType; } @@ -543,7 +544,7 @@ export default function NavDrawer() { {navItem.map((item, itemIndex) => { - return item.hasOwnProperty('children') + return item.hasOwnProperty('children') ? ((item.admin && isAdmin) || !item.admin) && { try { - const response = await instance.acquireTokenSilent(request); - navigator.clipboard.writeText(response.accessToken); - handleMenuClose(); - enqueueSnackbar('Token copied to clipboard!', { variant: 'success' }); - } catch (e) { - if (e instanceof InteractionRequiredAuthError) { - instance.acquireTokenRedirect(request); - } else { - console.log("ERROR"); - console.log("------------------"); - console.log(e); - console.log("------------------"); - enqueueSnackbar("Error fetching access token", { variant: "error" }); + const accounts = msalInstance.getAllAccounts(); + + if (accounts.length === 0) { + throw new Error("No user accounts found. Please login first."); } + + const tokenRequest = { + ...apiRequest, + account: accounts[0] + }; + + let token; + try { + const response = await msalInstance.acquireTokenSilent(tokenRequest); + token = response.accessToken; + } catch (e) { + if (e instanceof InteractionRequiredAuthError || + (e instanceof BrowserAuthError && e.errorCode === "monitor_window_timeout")) { + + await msalInstance.acquireTokenRedirect(tokenRequest); + return; // Exit since redirect will happen + } else { + throw e; + } + } + + if (token) { + navigator.clipboard.writeText(token); + handleMenuClose(); + enqueueSnackbar('Token copied to clipboard!', { variant: 'success' }); + } + } catch (e) { + console.log("ERROR REQUESTING TOKEN"); + console.log("------------------"); + console.log(e); + console.log("------------------"); + enqueueSnackbar("Error fetching access token", { variant: "error" }); } })(); } @@ -927,7 +952,7 @@ export default function NavDrawer() { anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }} variant="dot" > */} - { graphData ? + { graphData ? graphPhoto ? : : diff --git a/ui/src/features/ipam/ipamAPI.jsx b/ui/src/features/ipam/ipamAPI.jsx index 84498d86..d2c42bdc 100644 --- a/ui/src/features/ipam/ipamAPI.jsx +++ b/ui/src/features/ipam/ipamAPI.jsx @@ -1,45 +1,35 @@ import axios from 'axios'; - import { InteractionRequiredAuthError, BrowserAuthError } from "@azure/msal-browser"; -import { - apiRequest -} from '../../msal/authConfig'; - import { msalInstance } from '../../index'; +import { apiRequest } from '../../msal/authConfig'; import { getEngineURL } from '../../global/globals'; const ENGINE_URL = getEngineURL(); async function generateToken() { - // const activeAccount = msalInstance.getActiveAccount(); const accounts = msalInstance.getAllAccounts(); - // if (!activeAccount && accounts.length === 0) { - // } + if (accounts.length === 0) { + throw new Error("No user accounts found. Please login first."); + } - const request = { - scopes: apiRequest.scopes, + const tokenRequest = { + ...apiRequest, account: accounts[0] }; - await msalInstance.handleRedirectPromise(); - try { - const response = await msalInstance.acquireTokenSilent(request); - + const response = await msalInstance.acquireTokenSilent(tokenRequest); return response.accessToken; } catch (e) { - if (e instanceof InteractionRequiredAuthError || e instanceof BrowserAuthError) { - const response = await msalInstance.acquireTokenRedirect(request); - - return response.accessToken; + if (e instanceof InteractionRequiredAuthError || + (e instanceof BrowserAuthError && e.errorCode === "monitor_window_timeout")) { + + await msalInstance.acquireTokenRedirect(tokenRequest); + return null; } else { - console.log("ERROR FETCHING API TOKEN"); - console.log("------------------"); - console.log(e); - console.log("------------------"); - throw(e); + throw e; } } } @@ -51,7 +41,7 @@ api.interceptors.request.use( const token = await generateToken(); config.headers['Authorization'] = `Bearer ${token}`; - + return config; }, error => { diff --git a/ui/src/features/login/login.jsx b/ui/src/features/login/login.jsx index ac023d47..a6c4edd8 100644 --- a/ui/src/features/login/login.jsx +++ b/ui/src/features/login/login.jsx @@ -10,22 +10,42 @@ const Login = () => { const loginAttempted = React.useRef(false); React.useEffect(() => { - (async () => { - if (!isAuthenticated && inProgress === InteractionStatus.None && !loginAttempted.current) { + const handleAuthentication = async () => { + // Only attempt login if: + // 1. User is not authenticated + // 2. No interaction is currently in progress (this is the key check per MSAL docs) + // 3. We haven't already attempted login + if ( + !isAuthenticated && + inProgress === InteractionStatus.None && + !loginAttempted.current + ) { loginAttempted.current = true; - await instance.loginRedirect(loginRequest).catch((e) => { + try { + await instance.loginRedirect(loginRequest); + } catch (error) { console.log("LOGIN ERROR:"); console.log("--------------"); - console.error(e); + console.error(error); console.log("--------------"); - loginAttempted.current = false; // Reset on failure - }); + // Reset the attempt flag on any error to allow retry + loginAttempted.current = false; + } } - })(); + }; + + handleAuthentication(); }, [isAuthenticated, inProgress, instance]); + // Reset login attempt flag when authentication state changes + React.useEffect(() => { + if (isAuthenticated) { + loginAttempted.current = false; + } + }, [isAuthenticated]); + return(null) }; diff --git a/ui/src/msal/authConfig.jsx b/ui/src/msal/authConfig.jsx index cb8cb741..c2a4efde 100644 --- a/ui/src/msal/authConfig.jsx +++ b/ui/src/msal/authConfig.jsx @@ -24,6 +24,9 @@ export const msalConfig = { system: { allowRedirectInIframe: false, preventCorsPreflight: true, + iframeHashTimeout: 10000, // Increase iframe timeout to 10 seconds + loadFrameTimeout: 10000, // Increase frame loading timeout + windowHashTimeout: 60000, // Increase overall timeout for redirect flows /** * Below you can configure MSAL.js logs. For more information, visit: * https://docs.microsoft.com/azure/active-directory/develop/msal-logging-js diff --git a/ui/src/msal/graph.jsx b/ui/src/msal/graph.jsx index 200f9290..31ec48d5 100644 --- a/ui/src/msal/graph.jsx +++ b/ui/src/msal/graph.jsx @@ -1,40 +1,37 @@ import axios from 'axios'; - import { InteractionRequiredAuthError, BrowserAuthError } from "@azure/msal-browser"; import { msalInstance } from '../index'; import { graphConfig } from "./authConfig"; async function generateToken() { - // const activeAccount = msalInstance.getActiveAccount(); const accounts = msalInstance.getAllAccounts(); - // if (!activeAccount && accounts.length === 0) { - // } + if (accounts.length === 0) { + throw new Error("No user accounts found. Please login first."); + } const request = { scopes: ["User.Read", "Directory.Read.All"], - account: accounts[0], forceRefresh: true, }; - await msalInstance.handleRedirectPromise(); + const tokenRequest = { + ...request, + account: accounts[0] + }; try { - const response = await msalInstance.acquireTokenSilent(request); - + const response = await msalInstance.acquireTokenSilent(tokenRequest); return response.accessToken; } catch (e) { - if (e instanceof InteractionRequiredAuthError || e instanceof BrowserAuthError) { - const response = await msalInstance.acquireTokenRedirect(request); - - return response.accessToken; + if (e instanceof InteractionRequiredAuthError || + (e instanceof BrowserAuthError && e.errorCode === "monitor_window_timeout")) { + + await msalInstance.acquireTokenRedirect(tokenRequest); + return null; } else { - console.log("ERROR FETCHING GRAPH TOKEN"); - console.log("------------------"); - console.log(e); - console.log("------------------"); - throw(e); + throw e; } } } @@ -46,7 +43,7 @@ graph.interceptors.request.use( const token = await generateToken(); config.headers['Authorization'] = `Bearer ${token}`; - + return config; }, error => { @@ -59,9 +56,23 @@ export function callMsGraph() { return graph .get(url) .then(response => response.data) - .catch(error => { + .catch(async error => { console.log("ERROR CALLING MSGRAPH"); console.log(error); + + // If we get a 401, the token might be invalid - try to get a fresh token + if (error.response?.status === 401) { + console.log("401 error - attempting to refresh Graph token"); + try { + // Force a fresh token acquisition for Graph API + await generateToken(); + // The generateToken function will trigger a redirect if needed + } catch (tokenError) { + console.log("Token refresh failed:", tokenError); + throw tokenError; + } + } + throw error; }); } From 66ddfb0dd1f47342886d0a133f83909662593f04 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 4 Sep 2025 20:56:19 -0700 Subject: [PATCH 24/43] Fixed access token acquisition to account for new SecureString by default --- deploy/deploy.ps1 | 47 +++++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/deploy/deploy.ps1 b/deploy/deploy.ps1 index 02368e3a..0bc741dd 100644 --- a/deploy/deploy.ps1 +++ b/deploy/deploy.ps1 @@ -1,7 +1,7 @@ ############################################################################################################### ## ## Azure IPAM Solution Deployment Script -## +## ############################################################################################################### # Set minimum version requirements @@ -207,7 +207,7 @@ param( if ($_ -notmatch "(\.json)") { throw [System.ArgumentException]::New("The file specified in the 'ParameterFile' argument must be of type json.") } - return $true + return $true })] [System.IO.FileInfo] $ParameterFile, @@ -228,7 +228,7 @@ param( if ($_ -notmatch "(\.zip)") { throw [System.ArgumentException]::New("The file specified in the 'ZipFilePath' argument must be of type zip.") } - return $true + return $true })] [System.IO.FileInfo] $ZipFilePath @@ -420,20 +420,24 @@ process { AZURE_CHINA = "management.chinacloudapi.cn" } - $accessToken = (Get-AzAccessToken).Token | ConvertTo-SecureString -AsPlainText + $accessToken = (Get-AzAccessToken).Token + + if ($accessToken -isnot [System.Security.SecureString]) { + $accessToken = ConvertTo-SecureString $accessToken -AsPlainText -Force + } $response = Invoke-RestMethod ` -Method POST ` -Uri "https://$($msArmMap[$AzureCloud])/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.ContainerRegistry/registries/$RegistryName/runs/$BuildId/listLogSasUrl?api-version=2019-04-01" ` -Authentication Bearer ` -Token $accessToken - + $logLink = $response.logLink $logs = Invoke-RestMethod ` -Method GET ` -Uri $logLink - + return $logs } @@ -538,7 +542,7 @@ process { $engineApiSettings = @{ Oauth2PermissionScope = @( - @{ + @{ AdminConsentDescription = "Allows the IPAM UI to access IPAM Engine API as the signed-in user." AdminConsentDisplayName = "Access IPAM Engine API" Id = $engineApiGuid @@ -601,7 +605,7 @@ process { $uiObject = Get-AzADApplication -ApplicationId $uiApp.AppId } - + $engineObject = Get-AzADApplication -ApplicationId $engineApp.AppId # Create IPAM UI Service Principal (If DisableUI not specified) @@ -705,7 +709,9 @@ process { ?? [System.Version]([array](Get-InstalledModule | Where-Object { $_.Name -like "Microsoft.Graph.*" } | Select-Object -ExpandProperty Version | Sort-Object | Get-Unique))[0] if ($graphVersion.Major -gt 1) { - $accesstoken = ConvertTo-SecureString $accesstoken -AsPlainText -Force + if ($accesstoken -isnot [System.Security.SecureString]) { + $accesstoken = ConvertTo-SecureString $accesstoken -AsPlainText -Force + } } Write-Host "INFO: Logging in to Microsoft Graph" -ForegroundColor Green @@ -730,7 +736,7 @@ process { foreach ($scope in $uiGraphScopes) { $msGraphId = Get-AzADServicePrincipal ` -ApplicationId $scope.scopeId - + New-MgOauth2PermissionGrant ` -ResourceId $msGraphId.Id ` -Scope $scope.scopes ` @@ -943,25 +949,25 @@ process { [Parameter(Mandatory = $true)] [System.IO.DirectoryInfo]$AssetFolder ) - + $ZipFilePath = Join-Path -Path $AssetFolder.FullName -ChildPath $ZipFileName - + try { $GitHubURL = "https://api.github.com/repos/$GitHubUserName/$GitHubRepoName/releases/latest" - + Write-Host "INFO: Target GitHub Repo is " -ForegroundColor Green -NoNewline Write-Host "$GitHubUserName/$GitHubRepoName" -ForegroundColor Cyan Write-Host "INFO: Fetching download URL..." -ForegroundColor Green - + $GHResponse = Invoke-WebRequest -Method GET -Uri $GitHubURL $JSONResponse = $GHResponse.Content | ConvertFrom-Json $AssetList = $JSONResponse.assets $Asset = $AssetList | Where-Object { $_.name -eq $ZipFileName } $DownloadURL = $Asset.browser_download_url - + Write-Host "INFO: Downloading ZIP Archive to " -ForegroundColor Green -NoNewline Write-Host $ZipFilePath -ForegroundColor Cyan - + Invoke-WebRequest -Uri $DownloadURL -OutFile $ZipFilePath } catch { @@ -991,6 +997,11 @@ process { if ($UseAPI) { $accessToken = (Get-AzAccessToken).Token + + if ($accessToken -is [System.Security.SecureString]) { + $accessToken = ConvertFrom-SecureString $accessToken -AsPlainText -Force + } + $zipContents = Get-Item -Path $ZipFilePath $publishProfile = Get-AzWebAppPublishingProfile -Name $AppName -ResourceGroupName $ResourceGroupName @@ -1052,7 +1063,7 @@ process { $appServiceEndpoint = "https://$Endpoint" # Update UI Application with single-page application configuration - Update-AzADApplication -ApplicationId $UIAppId -SPARedirectUri $appServiceEndpoint + Update-AzADApplication -ApplicationId $UIAppId -SPARedirectUri $appServiceEndpoint Write-Host "INFO: UI Application SPA configuration update complete" -ForegroundColor Green } @@ -1369,7 +1380,7 @@ process { if ($env:CI) { Write-Host $_.ToString() - } + } exit 1 } From e6e2c36fa85cfc622d4cfc470d86325d1ae7ec09 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 4 Sep 2025 20:58:30 -0700 Subject: [PATCH 25/43] Rearranged script to more effectively us the Status API data during updates --- deploy/update.ps1 | 62 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/deploy/update.ps1 b/deploy/update.ps1 index 462dfd10..d4f901ee 100644 --- a/deploy/update.ps1 +++ b/deploy/update.ps1 @@ -1,7 +1,7 @@ ############################################################################################################### ## ## Azure IPAM ZIP Deploy Updater Script -## +## ############################################################################################################### # Set minimum version requirements @@ -53,7 +53,7 @@ param( if(-Not ($_ | Get-Item) ) { throw [System.ArgumentException]::New("AssetFolder does not exist, please provide a pre-existing folder.") } - return $true + return $true })] [System.IO.DirectoryInfo] $AssetFolder, @@ -70,7 +70,7 @@ param( if($_ -notmatch "(\.zip)") { throw [System.ArgumentException]::New("The file specified in the 'ZipFilePath' argument must be of type zip.") } - return $true + return $true })] [System.IO.FileInfo] $ZipFilePath @@ -126,13 +126,13 @@ Function Get-BuildLogs { -Uri "https://$($msArmMap[$AzureCloud])/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.ContainerRegistry/registries/$RegistryName/runs/$BuildId/listLogSasUrl?api-version=2019-04-01" ` -Authentication Bearer ` -Token $accessToken - + $logLink = $response.logLink $logs = Invoke-RestMethod ` -Method GET ` -Uri $logLink - + return $logs } @@ -293,7 +293,7 @@ Start-Transcript -Path $updateLog | Out-Null try { Write-Host - Write-Host "INFO: Verifying application exists" -ForegroundColor Green + Write-Host "INFO: Verifying application exists..." -ForegroundColor Green $appType = "" $isFunction = $false @@ -308,19 +308,41 @@ try { } else { $appKind = $existingApp.Kind $appType = $($appKind.Split(",") -contains 'functionapp') ? 'Function' : 'App' - $isFunction = $appType -eq 'Function' ? $true : $false + $isFunction = $appType -eq 'Function' ? $true : $false } - $appContainer = $existingApp.Kind.Split(",") -contains 'container' - - if ($appContainer) { + $isContainer = $appKind.Split(",") -contains 'container' + + if ($isContainer) { $appType += "Container" } Write-Host "INFO: Application exists, detected type is " -ForegroundColor Green -NoNewline Write-Host $appType -ForegroundColor Cyan - if ($appContainer) { + Write-Host "INFO: Probing Status API for deployment details..." -ForegroundColor Green + + $appUri = $existingApp.HostNames[0] + $statusUri = "https://${appUri}/api/status" + $status = Invoke-RestMethod -Method Get -Uri $statusUri -ErrorVariable statusErr -ErrorAction SilentlyContinue + + if ($statusErr) { + Write-Host "ERROR: Unable to reach IPAM Status API!" -ForegroundColor Red + throw $statusErr + } + + $stackType = $status.stack + + if($stackType -eq 'LegacyCompose') { + Write-Host "WARNING: Legacy Docker Compose detected!" -ForegroundColor Yellow + Write-Host + Write-Host "Please follow the migration guide at " -ForegroundColor Blue -NoNewline + Write-Host "https://azure.github.io/ipam/#/migration/README" -ForegroundColor Cyan -NoNewline + Write-Host " for complete instructions." -ForegroundColor Blue + exit + } + + if ($isContainer) { $appAcr = $existingApp.SiteConfig.LinuxFxVersion.Split('|')[1].Split('/')[0] $privateAcr = $appAcr -eq $IPAM_PUBLIC_ACR ? $false : $true @@ -381,7 +403,7 @@ try { } } - if (-not $appContainer) { + if (-not $isContainer) { Write-Host "INFO: Verifying application Python version" -ForegroundColor Green $engineFolder = Join-Path -Path $ROOT_DIR -ChildPath 'engine' @@ -403,18 +425,18 @@ try { } } - if ($appContainer) { + if ($isContainer) { if (-not $isFunction) { Write-Host "INFO: Detecting container distro..." -ForegroundColor Green - $appUri = $existingApp.HostNames[0] - $statusUri = "https://${appUri}/api/status" - $status = Invoke-RestMethod -Method Get -Uri $statusUri -ErrorVariable statusErr -ErrorAction SilentlyContinue + # $appUri = $existingApp.HostNames[0] + # $statusUri = "https://${appUri}/api/status" + # $status = Invoke-RestMethod -Method Get -Uri $statusUri -ErrorVariable statusErr -ErrorAction SilentlyContinue - if ($statusErr) { - Write-Host "ERROR: Unable to detect container distro!" -ForegroundColor Red - throw $statusErr - } + # if ($statusErr) { + # Write-Host "ERROR: Unable to detect container distro!" -ForegroundColor Red + # throw $statusErr + # } $containerType = $status.container.image_id } From 0a9dd2820ca148c200534ca983b4e9afb0462042 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 4 Sep 2025 20:59:38 -0700 Subject: [PATCH 26/43] Created documentation for the process to migrate away from legacy IPAM deployments --- docs/_sidebar.md | 1 + docs/migration/README.md | 464 ++++++++++++++++++ .../images/app_service_container_model.png | Bin 0 -> 59468 bytes docs/migration/images/app_service_health.png | Bin 0 -> 48182 bytes docs/migration/images/check_backup_status.png | Bin 0 -> 82865 bytes .../migration/images/check_recent_backups.png | Bin 0 -> 106472 bytes .../images/configure_custom_backups.png | Bin 0 -> 176924 bytes .../images/create_on_demand_backup.png | Bin 0 -> 87056 bytes docs/migration/images/restore_from_backup.png | Bin 0 -> 166201 bytes .../images/verify_docker_compose.png | Bin 0 -> 78141 bytes 10 files changed, 465 insertions(+) create mode 100644 docs/migration/README.md create mode 100644 docs/migration/images/app_service_container_model.png create mode 100644 docs/migration/images/app_service_health.png create mode 100644 docs/migration/images/check_backup_status.png create mode 100644 docs/migration/images/check_recent_backups.png create mode 100644 docs/migration/images/configure_custom_backups.png create mode 100644 docs/migration/images/create_on_demand_backup.png create mode 100644 docs/migration/images/restore_from_backup.png create mode 100644 docs/migration/images/verify_docker_compose.png diff --git a/docs/_sidebar.md b/docs/_sidebar.md index e8fd818b..1c487bb6 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -4,6 +4,7 @@ * [Welcome](/README.md) * [Deployment](/deployment/README.md) +* [Migration](/migration/README.md) * [Troubleshooting](/troubleshooting/README.md) * [How-To](/how-to/README.md) * [API](/api/README.md) diff --git a/docs/migration/README.md b/docs/migration/README.md new file mode 100644 index 00000000..7add38b4 --- /dev/null +++ b/docs/migration/README.md @@ -0,0 +1,464 @@ +# Azure IPAM Legacy Migration Guide + +## Overview + +This guide provides comprehensive instructions for migrating existing Azure IPAM deployments from Docker Compose-based App Services to modern Azure infrastructure. The migration process preserves your existing data and configuration while updating your deployment to use current Azure best practices. + +**Migration is required immediately** due to Microsoft's announcement of the deprecation and eventual removal of Docker Compose support for Azure App Service. Docker Compose support is deprecated and will be removed in future App Service versions, making migration essential for continued operation and security updates. The retirement date for Docker Compose capability is **March 31, 2027**. For additional details, refer to the [Docker Compose Migration announcement](https://azure.github.io/AppService/2025/04/01/Docker-compose-migration.html). + +## Who Should Migrate? + +All Azure IPAM users currently running Docker Compose-based deployments should migrate ***as soon as possible***. + +### Check If You Need to Migrate + +To determine if your deployment requires migration, check your App Service configuration: + +1. Navigate to your Azure IPAM App Service in the Azure Portal +2. Go to **Deployment** → **Deployment Center** +3. Look for the **Container Type** field +4. If it shows **Docker Compose (Preview)**, you need to migrate + +![Docker Compose (Preview)](./images/verify_docker_compose.png) + +Alternatively, you can check via PowerShell: + +```powershell +$webApp = Get-AzWebApp -ResourceGroupName "your-resource-group" -Name "your-app-name" +$webApp.SiteConfig.LinuxFxVersion +``` + +If this returns a value containing `COMPOSE|` followed by Base64 content, you need to migrate. + +## Prerequisites + +To successfully migrate your Azure IPAM deployment, the following prerequisites must be met: + +- An Azure Subscription containing your existing Azure IPAM deployment +- The following Azure RBAC Roles: + - [Contributor](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#contributor) or [Owner](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#owner) at the Resource Group scope containing your Azure IPAM resources + - [Reader](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#reader) at the Subscription scope for resource discovery +- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) installed + - Required to clone the Azure IPAM GitHub repository +- [PowerShell](https://learn.microsoft.com/powershell/scripting/install/installing-powershell) version 7.2.0 or later installed +- [Azure PowerShell](https://learn.microsoft.com/powershell/azure/install-az-ps) version 11.4.0 or later installed +- [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli) version 2.35.0 or later installed (optional) + - Required only if your deployment uses a private Azure Container Registry (Private ACR) + +> **NOTE:** The migration script requires access to your existing Azure IPAM resources. Ensure you have the necessary permissions to both read the current configuration and modify the App Service deployment. + +## Pre-Migration Backup + +**Before proceeding with the migration, it is strongly recommended to back up your Azure IPAM App Service.** While the migration process is designed to preserve your existing data and configuration, having a backup ensures you can restore your App Service if any issues occur during migration. + +> **Important**: App Service backups are only available in **Basic, Standard, Premium, and Isolated** pricing tiers. If your App Service is running on a Free or Shared tier, you cannot create backups and should consider upgrading your pricing tier before migration. + +### Check App Service Backup Status + +First, verify the backup configuration for your App Service: + +1. **Navigate to your App Service** in the Azure Portal +2. Go to **Settings** → **Backups** +3. Check the backup status: + - **Automatic backups** are always enabled for supported pricing tiers and cannot be disabled + - If **custom backups** are configured, you'll see backup configuration details including frequency and retention + - If **custom backups** are not configured, you'll see "Backups are not configured for this app" + - If your App Service is on an unsupported tier, you'll see "Backups are not available for this pricing tier" + +![Backup Status](./images/check_backup_status.png) + +### Check Recent Backups + +Verify recent backup history (both automatic and custom backups will appear here): + +1. In the **Backups** section, scroll down to view **Backup History** +2. Review recent backups and verify: + - **Status**: Ensure recent backups show "Succeeded" + - **Date**: Confirm backups are recent + - **Size**: Note the backup file sizes + - **Type**: Distinguish between automatic backups and custom backups (if configured) + +![Recent Backups](./images/check_recent_backups.png) + +> **Note**: App Services automatically perform backups that cannot be disabled. With automatic backups configured, you cannot perform on-demand backups. You should verify that a recent backup was successfully completed before proceeding with migration. + +### Configure Custom Backups (Optional) + +If you want to configure custom backups with your own storage account and schedule, you can set them up before migration: + +1. **Navigate to your App Service** in the Azure Portal +2. Go to **Settings** → **Backups** +3. Click **Configure Custom Backups** to set up custom backup settings +4. **Configure custom backup settings**: + - **Storage Account**: Select or create a storage account (required) + - **Container**: Select or create a container (e.g., "app-backups") +5. Optionally you can setup a custom back schedule by selecting the **Set Schedule** checkbox + - **Repeats Every**: Set frequency (at least Daily recommended) + - **Start Time**: Start time of the backup schedule + - **Time Zone**: UTC or local (poral) time zone + - **Retention**: Set retention period (at least 30 days recommended) +6. Click **Configure** to enable custom backups + +![Configure Custom Backups](./images/configure_custom_backups.png) + +### Create an On-Demand Backup + +If you want to run an on-demand backup, you must first configure **Custom Backups** (see above) then proceed as follows: + +1. **Navigate to your App Service** in the Azure Portal +2. Go to **Settings** → **Backups** +3. Click **Backup Now** to create an immediate backupstart the backup process +4. Monitor the backup status until it shows **Succeeded** + +![Create On-Demand Backup](./images/create_on_demand_backup.png) + +> **Important**: +> +> - If automatic backups are enabled, the "Backup Now" option is not available +> - Ensure you have at least one successful backup before proceeding with migration +> - If backup creation fails, resolve the issue before continuing with migration + +For detailed information about App Service backups, including limitations and requirements, see the [Azure App Service backup documentation](https://learn.microsoft.com/azure/app-service/manage-backup). + +## Authenticate to Azure PowerShell + +Before executing the Azure IPAM migration script, you'll need to authenticate to [Azure PowerShell](https://learn.microsoft.com/powershell/azure/install-az-ps) and set the context to the subscription containing your Azure IPAM deployment. + +### Connect to Azure PowerShell + +```powershell +# Sign in Interactively +Connect-AzAccount + +# Sign in with Device Code +Connect-AzAccount -UseDeviceAuthentication +``` + +> **NOTE:** If you're connecting to an Azure Cloud besides Azure Public (such as Gov, China, etc.), you may need to specify the `-Environment` flag as described in the [Azure PowerShell](https://learn.microsoft.com/powershell/module/az.accounts/connect-azaccount) documentation when using `Connect-AzAccount` + +### Set the Active Subscription for Azure PowerShell + +```powershell +# Set Azure PowerShell Context +Set-AzContext -Subscription "" + +# Example with Subscription ID +Set-AzContext -Subscription "28b502e2-323f-4e57-98db-743459176557" + +# Example with Subscription Name +Set-AzContext -Subscription "Contoso IPAM Subscription" +``` + +For additional information on authenticating with Azure PowerShell, refer to the [Azure PowerShell](https://learn.microsoft.com/powershell/azure/authenticate-azureps) documentation. + +## Authenticate to Azure CLI (Optional) + +If your Azure IPAM deployment uses a private Azure Container Registry, you will need to be authenticated to the [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli) *in addition to* Azure PowerShell. This is because the migration script will use the `az acr build` feature to build updated application containers and push them into your private Azure Container Registry. + +### Connect to Azure CLI + +```bash +# Sign in Interactively +az login + +# Sign in with Device Code +az login --use-device-code +``` + +### Set the Active Subscription for Azure CLI + +```bash +# Set Azure CLI Active Subscription +az account set --subscription "" +``` + +> **Important**: Ensure both Azure PowerShell and Azure CLI are authenticated to the **same subscription**. Mismatched subscription contexts can cause deployment failures during the migration process. + +## Clone the Github Repo + +```powershell +# Example using PowerShell for Windows +PS C:\> git clone https://github.com/Azure/ipam.git +PS C:\> cd .\ipam\migrate +PS C:\ipam\migrate> .\migrate.ps1 + +# Example using PowerShell for Linux +PS /> git clone https://github.com/Azure/ipam.git +PS /> cd /ipam/migrate +PS /ipam/migrate> .\migrate.ps1 +``` + +## Migration Methods + +The migration script supports two methods for resource discovery, choose the method that best fits your scenario: + +1. Auto-Discovery (Recommended) + + The script automatically discovers your Azure IPAM resources by analyzing the existing App Service configuration. This is the simplest approach for most deployments. + +2. Manual Resource Specification + + Use a JSON configuration file to specify exact resource details. This method is useful for complex deployments, cross-subscription resources, or when auto-discovery fails. + +## Migration Process (Method 1: Auto-Discovery) + +### Step 1: Run Auto-Discovery Migration + +Execute the migration script with auto-discovery: + +```powershell +.\migrate.ps1 -AppName "your-ipam-app-name" -ResourceGroupName "your-resource-group" +``` + +#### Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `-AppName` | String | Yes | Name of your existing Azure IPAM App Service | +| `-ResourceGroupName` | String | Yes | Resource group containing your App Service | +| `-NoVerify` | Switch | No | Skip resource existence verification **1** | +| `-Force` | Switch | No | Skip user confirmation prompts **2** | + +> **NOTE 1:** Use with caution as this bypasses safety checks. + +> **NOTE 2:** Recommended for automated deployments only. + +### Step 2: Monitor Migration Progress + +The migration script will automatically: + +1. **Discover Resources**: Analyze your App Service to infer all Azure IPAM components +2. **Verify Resources**: Confirm all resources exist and are accessible +3. **Probe Status API**: Determine current container configuration and application health +4. **Deploy Updates**: Update infrastructure using Bicep templates +5. **Build Container** (Private ACR only): Build and push updated container images +6. **Restart App Service**: Apply new configuration + +> **NOTE:** It may take up to 5 minutes for the Azure IPAM services to become available as the new container is downloaded and started by Azure App Services + +## Migration Process (Method 2: Manual Resource Specification) + +### Step 1: Create Override Configuration File + +Create a JSON(C) file specifying your exact resource details: + +```jsonc +[ + { + // Web App Resource Details + "ResourceType": "Microsoft.Web/sites", + "ResourceName": "your-app-service-name", + "ResourceGroup": "your-resource-group", + "Subscription": "your-subscription-id" + }, + { + // App Service Plan Resource Details + "ResourceType": "Microsoft.Web/serverfarms", + "ResourceName": "your-app-service-plan-name", + "ResourceGroup": "your-resource-group", + "Subscription": "your-subscription-id" + }, + { + // Managed Identity Resource Details + "ResourceType": "Microsoft.ManagedIdentity/userAssignedIdentities", + "ResourceName": "your-managed-identity-name", + "ResourceGroup": "your-resource-group", + "Subscription": "your-subscription-id" + }, + { + // Log Analytics Workspace Resource Details + "ResourceType": "Microsoft.OperationalInsights/workspaces", + "ResourceName": "your-log-analytics-workspace-name", + "ResourceGroup": "your-resource-group", + "Subscription": "your-subscription-id" + }, + { + // Cosmos DB Account Resource Details + "ResourceType": "Microsoft.DocumentDB/databaseAccounts", + "ResourceName": "your-cosmos-db-account-name", + "ResourceGroup": "your-resource-group", + "Subscription": "your-subscription-id" + }, + { + // Key Vault Resource Details + "ResourceType": "Microsoft.KeyVault/vaults", + "ResourceName": "your-key-vault-name", + "ResourceGroup": "your-resource-group", + "Subscription": "your-subscription-id" + }, + { + // Container Registry Resource Details (Optional - only if using private ACR) + "ResourceType": "Microsoft.ContainerRegistry/registries", + "ResourceName": "your-container-registry-name", + "ResourceGroup": "your-resource-group", + "Subscription": "your-subscription-id" + } +] +``` + +Save this file as `resources.jsonc` in the same directory as the migration script. + +### Step 2: Run Manual Override Migration + +Execute the migration script with your resource JSON file specified: + +```powershell +.\migrate.ps1 -AppName "your-ipam-app-name" -ResourceGroupName "your-resource-group" -JsonFile "resources.jsonc" +``` + +#### Manual Override Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `-AppName` | String | Yes | Name of your existing Azure IPAM App Service | +| `-ResourceGroupName` | String | Yes | Resource group containing your App Service | +| `-JsonFile` | String | Yes | Path to your JSON override file | +| `-NoVerify` | Switch | No | Skip resource existence verification **1** | +| `-Force` | Switch | No | Skip user confirmation prompts **2** | + +> **NOTE 1:** Use with caution as this bypasses safety checks. + +> **NOTE 2:** Recommended for automated deployments only. + +### Step 3: Monitor Migration Progress + +The migration script will: + +1. **Load Override Configuration**: Read your specified resource details +2. **Verify Resources**: Confirm all specified resources exist and are accessible +3. **Probe Status API**: Determine current container configuration and application health +4. **Deploy Updates**: Update infrastructure using Bicep templates +5. **Build Container** (Private ACR only): Build and push updated container images +6. **Restart App Service**: Apply new configuration + +> **NOTE:** It may take up to 5 minutes for the Azure IPAM services to become available as the new container is downloaded and started by Azure App Services + +## Migration Validation + +### Post-Migration Verification + +After migration completes, verify your Azure IPAM deployment: + +1. **Check Application Health**: + - Verify the App Service is healthy + - ![Check App Service Helath](./images/app_service_health.png) + +2. **Check Container Configuration**: + - Verify the App Service is no longer using Docker Compose + - Confirm single container model + - ![App Service Container Model](./images/app_service_container_model.png) + +3. **Verify Application Accessibility**: + - Navigate to your Azure IPAM URL + - Confirm the application loads successfully + - Test basic functionality (viewing IP spaces, blocks, etc.) + +## Troubleshooting + +### Common Issues and Solutions + +#### Issue: Azure CLI authentication mismatches + +**Solution**: Ensure Azure PowerShell and Azure CLI contexts match + +```powershell +# Check PowerShell context +Get-AzContext +``` + +```bash +# Check Azure CLI context +az account show +``` + +#### Issue: Container build failures (Private ACR) + +**Solution**: + +1. Verify Azure CLI user has ACR push permissions +2. Check ACR resource availability +3. Review build logs in the script output +4. Manually build & push new containers to ACR + +```shell +# App Services Container +az acr build -r -t ipam:latest -f ./Dockerfile.deb . + +# Function Container +az acr build -r -t ipamfunc:latest -f ./Dockerfile.func . +``` + +#### Issue: App Service fails to start after migration + +**Solution**: + +1. Verify that there were no errors during the Migration process +2. Check migration logs and the Deployment logs in the Azure Portal +3. Check App Service logs in Azure Portal + +### Getting Help + +If you encounter issues during migration: + +1. **Review Migration Logs**: Check PowerShell output and log folder for detailed error messages +2. **Validate Prerequisites**: Ensure all [required permissions](#prerequisites) are in place +3. **Check Azure Status**: Verify Azure services are operational ([Azure Status](https://azure.status.microsoft/status)) +4. **Contact Support**: Create an [issue](https://github.com/Azure/ipam/issues/new?template=bug_report.md) in the Azure IPAM GitHub repository + +## Rollback Procedures + +In the evant a migration issue should occur, you can rollback to your previous configuration: + +1. **Navigate to your App Service** in the Azure Portal +2. Go to **Settings** → **Backups** +3. Locate a backup from **brefore** the Migration script was run +4. Click **Restore** icon associated with the target backup timestamp +5. Make sure to select the **existing** deployment slot, and select **Restore Site Configuration** +6. The restoration process can take *up to 30 minutes*, and will stop/start the App Service during that time + +![Restore From Backup](./images/restore_from_backup.png) + +## FAQ + +### Q: How long does migration take? + +**A**: Typical migrations complete in 10-15 minutes, depending on: + +- Number of resources to migrate +- Container build time (for private ACR) +- Network connectivity + +### Q: Will there be downtime during migration? + +**A**: Yes, brief downtime occurs during: + +- App Service configuration updates +- Container image replacement +- App Service restart + +Expected downtime: 2-5 minutes + +### Q: What happens to my existing data? + +**A**: All existing data is preserved: + +- Cosmos DB data remains unchanged +- Key Vault secrets are maintained +- App settings are migrated +- User configurations are preserved + +### Q: Can I migrate during business hours? + +**A**: While possible, it's recommended to: + +- Schedule during maintenance windows +- Notify users of potential brief interruption +- Test migration in development environment first + +### Q: What if my deployment uses custom configurations? + +**A**: The script handles most custom configurations automatically, however, for complex setups: + +- Use the JSON override method +- Review script output carefully +- Contact support for assistance diff --git a/docs/migration/images/app_service_container_model.png b/docs/migration/images/app_service_container_model.png new file mode 100644 index 0000000000000000000000000000000000000000..cb5770d4d7ff65164827a9f67ad2bd74f63205dc GIT binary patch literal 59468 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 Cu8Z{m literal 0 HcmV?d00001 diff --git a/docs/migration/images/app_service_health.png b/docs/migration/images/app_service_health.png new file mode 100644 index 0000000000000000000000000000000000000000..a9c9eba45a298636ad569f07e973512128f84086 GIT binary patch literal 48182 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 literal 0 HcmV?d00001 diff --git a/docs/migration/images/check_backup_status.png b/docs/migration/images/check_backup_status.png new file mode 100644 index 0000000000000000000000000000000000000000..c12de67d40fd68d9459e55e37eed61c03648b91a GIT binary patch literal 82865 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.!rt?bl~ta`=I$i}oinmK@M2(K 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 BULgPg literal 0 HcmV?d00001 diff --git a/docs/migration/images/check_recent_backups.png b/docs/migration/images/check_recent_backups.png new file mode 100644 index 0000000000000000000000000000000000000000..9a1331322c997ecc165722320f35080eaca67896 GIT binary patch literal 106472 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 &FnfjVsd z*{JGL`Y8ZiKw6Sw=YkMrV1$#fp#fe#^CNxy)EK@WXcz*!2HMC8cZ9Jyu(yu{7&RtN ziKn?1&};4HL*Kb}j&M!m3tfEd{2s#ve<@S%tyjwD*WkK`YOdnSsdhu;>gI%|vF7w} z?(C<`;>=amA6OI|xb8BGP4MIU?~10HSeL)Pjw=k;4&#H@>~(=am>5}I)pD*TK;ZTL26!ylgY$o1`Ujbnv@i)7STmH5W6tiOyZo2j z4|irbHU99Lpzt*8)DoYCN?KsmtsCH9Av<>6Oa{h82c$dAzsfO~Q-Ak|!OzH=ts>hc z3$44nuGb}T+^{$e)edS;26$IiskxBe2&)bDK-=SAi55ywew!v+blVC645A<)D0$@U zxmWbjgU{GGS{k+%+0r*O-edekG!)^e*o?D$*Wo7ex6KBfA4Bte3 z!!4H)op#IKDDlddRgU|(Mr`{Hb~1g`Hh2vXPl0;CXz9CjK+$DG|9znH@^7GWpP2uD z0aX6_$ba-#u$2L-K?kP4a{Q5B1%UGeU^4)p0Rlugr5)7H4!>1YAu29_)$-VZDiIM- zN`+7)WUn2_2!+Yj5s%%b5oaNBMbyI@ z@lk#PwVb>Y0Fi)&{8RciZoH#;>hO^9!5@$4D^>CbPssf#3cG=HtPYO&*8@Ah7E|Ny zDLe!yrA99xF#MpRj^3ENVJ7fR*&GAqc|OpuK^7JU()^50_8Q+axzt4#8!uxJXm<0}tT@#c+yMYV=+-gvYkVjhpY zH0>(@bJ*b}x_Z=}QxOsFLka<}G`^cw11oik3>muOq4?1B2zWFzhn`mtDMIYdnE_7O zGTVKcUjXXb!bo3s0e-clrB@Abll%XXn*tSsX_coM_Qjn$|V0PK0*@txHQ z=ytR$RzOSs4{T%>E)G@N+P|`qPBDI9UL$(L0kOcc5(DAj7af`0-Bp;AKY|((^vTVN z0rQuVw&e~SCQw8TvJ-#^R(|&N*t1`U;p2pkYyvoR(1|W4ETmyeB5#5bo8%W&{abM) z1wjBHWuh4#_<)t7wfya^_A=nD!Q-G&l_aIZ9#;Q$v~kCm;hwO4#AutDxw-kUb>kaE zwe*6dmU2)NUE_(%301)_10dD@6GxC)JDQxSe}#MyT!zkWwPX%l{Ru}ExK|)Y@T;h9 zgwS1Rp9Roo*h4IPy(XheK@z)7Z=(wv&6IfkSq(1dU2nSAHu*_y)E8^nr}uySp(LFd zLnQtS%`xP4m=~x%6>H)HMV?lDlb~3XixDrM`pbvajq6U3@&QL7S%kGp3ATa63=i6Uc|}5rfEgbD*j) zZt;%_NJEeXOJA97{v`sU*dmDNeYQG}d14KwSPsd-iNg4{woD{gUrkFB2%!c_?>ME; z9iGB8z*DyKA)B;)`{m_IEpXmM#^0o(3I8n{s6$>1y>YIsU47kKqSO;a&s4E|Tkdcw zYc}JM)WJ_sgyvo`RP`EX3=aRv7Y;WuGL}SKs}Na~Qib`6iL$Ako*2m>2OWb%Zg2d4 z$v7kZ{xsp4cI+i}*3z~_KFaL`0=9&>9I>gC%y9cSqe`RTyX>v@Kc9pg&KsB>rd)f^ z#=B(D-mNJ9cCJnS^AV@>1HK@1`o9& z(>3+8tLEg`L~KRjsJoi9BE4nZ2AW^*qsq6`!*-pe>QCp$eEs|e^?S0gk?o8eRO6jw z?)%has+T01JEA~rT3$rsP)`>r)`z^BJe^?wMx&Xq&9KbFG64Dc5h&9Ugya-qe5|=W z&+mJ(oo6zu)1;NF4O|o!^HkFtSzBJ)3MNXS{Xd0$2UJtbyDy5Oh>8`ZbCe=oiqrrW zL_$@np(}*mdkaO5dX(NfC{;>82qY8%%Yo24p@gDBzyJa1kWk(P{J*!>efPaPYpLMQ z>^*zR_bcDd>~m;wWe3=R9tEae8*%A;ZpKfY>z5fM?>J$)wns0WPCcuKP6RMuU6JEpc;w`#v?RBWAR22h;N;@F+?uhp6oBnL#@KX!kiti~o7?B{qp5t^M zcQG>yT{7L`i(0t3{WM!1i;9!;Mw{H*7LCh5G>g@H+vwkfWlPy6i z-tCSbyFU^n(c_7ZxzcRjosUb(io7!{KDXZ1kmg`_tsbwMnJ{Wv+D{-Tv60_$kW9

XqCbyIKAv$mnu!k6~q5#Oyw0g9+Q4LPt)A&My#q;{bd?=Y(>r>f0SXgl}`&( zZo+RJb$06#WXF$^F;}RI=P?u6Yb`y*A6fNYGygISj5S&jO#Nr35k@iQkPZb}8k!pN z4biL)dpjGEASO)}UeLF5lJs{)s=SKszc1rIHGj(0OQ=;8XC4g6sdq-kCrCFZ`PFq0 zhQH}g@rBUQ(3HWf^5CEzO?vHxy;C8Aqz%-gb(Dgm9_#lNFb}+Xo zB|8I@=> zE^u*cc+|{cL6#MJ+e~8mPS8xOXdas-xNA@yy9#qiR|#?DZ2~XD1tr9@49}Hzu@`Fi zH8leYzb+?ZC9>u(II!f>0oE&rCDuR|HY!@)1;cj!o<-|k@TL0D0=NrV_ zm6c@Hef;+cBIg=5BoKuMS`A((EiY*t~?rz4^Lzkfe&mwNv=8P;tJ(dIDh{8;qZi%}gtqe$n;DxEedCU0 z>ep&m8T|}t=l@MS$ogOrYA#xOUX-qpG`JUIW9rf#E8l0)*xI^H=;Sm znl9zZrVV?#&~?Y5@891EO9-0MAkk<8upY#%A+qdPIp&bqMC+={XVKj<>RltlGKQ8A ziD?_%2Vo@0rnhHGbYu{W)=-`kZ>JdKx`0b~!*I6EGM|~*rRAw3*wS)v0qL2+{pGQ- zv4evIQ@FsD`LxaDV~6eIiqGg$j?er1lK=FK>>df#|G7MSxV3hmJ$`+z=|FK}B}<-L zlMbIpu^vZHne&+s(HTQ$8@sh6ECx9vi$IVGQxgsisf~_pBS|2ZtAbP z#Yq%O-H}WoIojKPga;;B}0*Hg<)i+#_{{H*0;Db)LhTT>5xJzlt$%UuvT?~g5 zd`j~2lvi|5%^3LypzG7)!4l#auk&iBNgSGOQAsQl)MUM0^1H?gv^eA!7yc zxR+Un7b&~u@dITG#&*y0;2U|IWIph(@_lJxOwRAw#KjeTeA!0@OlR7sX}Chh7}EG9WQj9j>wde&$*^m3I@S^uywS} zz1!H}Dsgg(u5Za3ArRisi8#>{BP{4rBZfCUY(?iqEL##`Y_2`yT#mxE1GM4~`~Lo% z`%YV0s*{W(xb#%pM@>kjr(|2HI^V9gE3O_aKIaZAe)o?--K#PVmhT?j{ll zMmlao* z95UrD>@wxqO>za>M0&(u?(pMw0A#LmY{4-Aok0ny6$Le?h`~?$2MHOXY@E7ShMVO1 z^6rv@4KY(T?O(lZZq*PUsg8#1nUb-079a26C;qex-cEdT@(cq*wf}}ab|d_nD6aTl zi2nHFcY#oBx7M%7HF{xzg#BL%4-GLWyT1dn4FIeZ6p%)j&K#XUKAYbPsxwy#BBuLqwhnKs5#oi$v?6@u=muk?4zfa}puoZmZ6_0k5Ylf2z9FjrAdkbGjU@S9xa)h~$ALgtbu|0OM840ymVpNb!Bo$^=D4 zhnLW3^?BB#yK#R2mIFNO$qOR)bw_>BpJ$@+Ox)?vKZjG&-K8!Ivw}rtB4XI?ZaFSd zsG|jp&#i`_&3}Rdf6?##{1wC=w2&N^=Yy=#<*XrWt;;(o<+Cy&+uRvJw2E;W1~0wt z#(JkkbB@>D$=B13dv*SNk*8_V&L?TMEN=?HFadu4u1|jfYB#TaHfc&nW#G|JCN`bB%`P`&)VU=XwXkwwk0pFFil` z^R|80a*8SBi|n#u_RjH`>AOq;De`3$E+b-{4oU-+mpACf)TKZoQF{aLT<5>JHFDe) zJmw_LrWBwWJi2yKfs+xcrcnXEf8amEudv(Glq=oC-e5EVW_OAg}^}Ur9)(IGKHrxXJ6&OfRUW`2LEzX{^o3{oFNt94OS~2ycfZHgCN)Cg>$=DI40^h zp|_`MongGXi9;8FmsEqmx>GDQk_7&mQD#+<*XlSo;KZ3yWT?$K=<&KK-mQK}9cQ<& z9Hjp6r8*C^r*T`e!JRB^htY0al9rY-t5Bq^k-8o{ZPRX8{TE@c%~4{>&S0sygeL~bRN$4t2PBw}@=~6+{t@=x_r5pc9g@0|(Ht(0N|GY8(1!+8V>GTIB z7F~6&cc(DUnxni|=HrHq`JuCabMEz}Q1R!57~rL7G(auwQ5<#JIgu6?2cu@KB|_jQ z+#)srI(JG}=#u!LBFP;lQ=E~Sf@^msSQjil>VxIZPWizNp!O0GC5#^*`4AVUW6Y|1 zawkoknO8j zlI0;I$Cv58@}!BOl1{)nN;odihFJA*$Q8Ckm%5rHW2Qq^z1eyv4s4!YYbnDYZ@B_= zfKwf(?J*Pf72ok)YarNkAspJH)sp8pA^Ih=$i z#dZ+-KYtF%0~?J+khtvt#{d)CYJ6FTkBJ!F!bbaBQxosBB?LGlph0oGw8m}s3aLHV z_6m?pN5te{@4KZXXK447YfsfVK0xgNnb#w%$vPVn)>6w0hbE)WSNe%L1Z}hrpyveN zIzvZiL!%LzW$>&1iu>CB*0wHV2&9QfGD)u5tfTGNDu`=nhwd~}hdmvxiB(VL%9e@@ zaSLRsyB6#n&XUKb4;GDm9sIrjy7_nTqR7Hs5{SCGl@pN*RbQtKARNO{v$IuO#}*V? zYH-M5Pa!5vKW7DRcX>enc6jnO6yrZFYoG>>%|s<@Ma_p{@{%5_>43?fz-clEGLE&) zEWggYtOJqVaUoLLQR~ZcXy`FuL-70R>*(0iWr$bvjMDmp4n~^-Hkb;#GZfTs_1O-s z=y{%zu?XlBH&dXx1hTckCM~+?Ck6%u@58$1+Y4asa5Z(?w2M#;{bB6)%^#rKt#i*rXuhr|+}ruAn{ z{dqsxh&Z+B2b8Q$@3k)E%DoX{S6K(45~2R79@!Ph1_1XgjhQ`bTLj~VGX~o^=y8VE zU?*^FXGCkw&wZ2gb~+Q25N`Ly^SwUPXyT+-_5j7XtPinFS+0{&%=yl!R218%JK)?= z?Q)EJyT+0Rpyne>j4JiGEtVFAZ`=J{mxh88 zhvGu7z-bxW)|s<#+D_r@TgIiE*^P-L=T80;!0|efyZ9Z*w$8I}X55c0uxdX5a|kT4 z>O>oPxE7C%nrt9+Z1P9uouV7X&^e+RrwxFcP~w^F~$n{v~=C$F|S;g2dKzo zjb(-jqxxP+?nKsm?a>;eWvo8}PfQwX2Fx(WWA`nmQ>Zy?gcZ7@WgmbjhC7Q6&_S`8&G@4dc0)N_Ew4q<&$ax@*_BqzkzMZjYp`zP!JRurs%@ z8EZ76xaC*chb};=TCx@i924~{lK9U4Z3rYm%2F}&@dvQm=U8We+O5Gmq&Sl2H)EO< z*2&tuyFXr4uX?fdH-i1rGzPy4HoVVo+t5?PEo(hA0UjN0J|u6eBA9Oa~>rHXkjsMd>sfB}pjyyH8d z++-ivR)R)QF=^qshLEeQ(^KYrOB_0)!XQI@wbZg8cICw=I%r}qE!pNkWW_uhlHWvW zn;QyVWZwI>#wfcaEn0qetBi6P>jfez(nOXie5^e`4vVOoTmzN`ep^}Pc0e&fi;&YI zqpk%XXhGmkhw$_?8UsY=e(T8A8NEegprpbGtS*2y5XJBC6p`q@hz!JC2i2Lh` z^;a_CU7p>k-U#Ts(g%>+6@W1Mx(FHo-U5*QG_&2n-3#aLYPr@c02c1ZqY7?mcV7+* zr2)o+j#^S_*p^bGLozJMN?21v`u$x92PRPkhLy0lA1nLu<1gc;h`quwZU2B*5X;*x zmP$9};k>}5cFZ>*S`Vkc_1Y9Jbek))Vr}^G(ejlMuwtf9(5h@ctE-p~5hNDyEaS*t zTZKXgKY9(8;fo}HBII0Pobg{m$!4ypU*+!L? z5xoxN7LUVDy%?S4D&lKR56f2R%&1R#8X6x3Zz$yDbg8rCJ(iLH`4swvWn8K;M!XC) z)AYJU;oq8q_+`dqvX8ODR>|u#H24Lr~P>s@~pYGCu^BtCuvu7$NLW%S25acpDBsZ))+RpDuqvDLw z2kj=8R0Af0O})d>Cu>>=fft0mcXK#SH{|5_(IZXG-eq$%asd(Cd{JSeWWavA*BwFb zhPU$-o~^nl$<+8m&p7PE9l>kATAFv{5YJ3RKe^xA zD{m-xRN}06Ec8!fJ6~j+&p{9hvDL-4Sz6gW1FI)brnMTsdsTmCJuEEO|L2^Ii6ktldjqiM~m2cxn&s$-|CIqIVm90Y53#|zf_D7%JqCDuKu**;y1G8r zSDd;kFM8CUoeHvGLq$?&iUE^JZ;@_cXSNShBs8u&T5aOgC8PT1S!Peg&9iHARXK%( zb(Sj_2Aro3X)Z=MT$wzxVPJ1z@!15&dcLHzR3i?!)A~Q$(v{jkAWQ=(oHG9C?C~Vs zq%`1Q*G{sG0N&U|0Mexp(fwxvNP?>y!%W^y^khoX+JYB(>&%s7J2!GK)9)=3+!XwD z$fBa^Hp@>7evh1;m*oNMNn+&c8Lzelq#lSBfHte9o%IBcFED%K@*+1jfD>E)ZC`gIupd@;22o9qK)?bG{!mw71dPtHzHuQa%k}FqKoQxA zQ#uxq2|yS~rnXr-@=-kuW=D^Dg;jsSp@|76XBT)C+))(D=s5a(^I;rSIYm|1BQ*gW zw0CsqivJ2RS^sa`E>ajqNKb$C#@=Eiy~1AmnTdpy$4)zcD<1S6pCGgk?@C{u_f;Q5 zIK)Cq&hS8k#R65#5j&;rOd_cU7pUGSqw|CS6i{XzKfl^>=V%}pzyzY+0q_HA5#0UB zIxVRp_|Cd1Ph4_xvV)JY@fb;6jThr{h!mYc>yIpTIZm}EB}$K{kVFo)jT)cVu5N_+1<3sqBeLv@$(|)a1^SZn-3olJa<`{k{i9{u*In5`NOC z>G^)un6!99gt*$YUt$l~4c7VGkpLJE0tyPIVz(;;PlLwCU%75s#M~1MQcw0{0*ry0 zwS0I3fp+f#>5Q|jLpU5&okoVD!C(#D8JhK&-j3^po{FROPVhd;2br+T8h0}{+}g8M zCYSik5OFVFk{5mNXZyqCyeI-r^Zxo6in;+3qt!z&2V)g%M^>Tlr_~)WGTgvqR!^{PSA8}b*O-Vs? zB1VZ>uRbNFaaGIC|7O;)nkybZS`J632HgqJN0wb#UhFU7OuoHQH)4;WsycYQ+ui?) zw8c{Te=>T9DZ8#wu|96Q9T!?_`Kj26pu-`i`A$|bJA^f`fbVJ9-aTbb{*G8pXujtU(mUG_-*=ZoBoq`emkQ}>_^qhy!_rM--sn?X%K83 zHI&G+|A<6=n&|p^GX6lsOjdj0pyp|~VeI2Sh%p*J&{z1aiEU_We~UR&UbbxaD@51? zqP@0yxsD>yKkvimx%)fC-#fdn*+Z87)R7^5WHX1~q<`4xr(&6VnT0j8Hz(20sLsC; zhp4(+&Y9KwB|B=N#fv@@qF4}2SyDyUFWkEBm{@NA09}7{n;{(uC_=_5a(Bt{f( z8GGj1Oxs%hO93Ofvc$5NMxO#3zdBv>Tp9nnJCkj=ZMel|u<_zu{1H9?KBqRE*xf&B z!VH3_0K^%r2J7rCFK>bCj$Pive|p^xfRpZx_Z5BgwUC!-O}DjQuH}E-=?@sbR_sfx znS>a9I2q2+>8`!-FYN%qy>`YspmUCD-7E+~oY(l6!qw8wHtPG1pP@4bsJIaOs4+&T zvKAmdxFoQsfxwqcX1#ZN8f#Gnj^okVK+?geHa5u3b%212oWgA)otXE~n_pN0)yB+hOyWVt0A8|o#~ZvNUOTG9 z^;s5aj&^A6PS8qDcQ*6z_Q>Cg+ilN<>uN1jNUUE_p7#U+`H+~VW~7me1HGJ)#BlRK zJ>a=8T>vh-W2lIocnDQ*c5>l?k`q}5Pn{6r*d##yxGdpawl2s$OKOZ#bI5BMR6$N| z0KUPvGzfhsnS)p(6w9qRw%kJIH@k=w8)PBjZw*Hl|o0zO5^ZsNw?@Yj=N&|T% z-+#Vpz2l-C@54-$kG!&L?WZp=hu;2^f0count)KE!U4s!(x z6nJ0VP`$*NzqhxiXJPxt6NKx4cqAo>xFZI=98ZA+8@!EFlRkS^k2-p^1qD;xmnkdNs(M=!Ccz4)gN@jka;Qupr z*lS(d2K?FdazWU}lCgPlemavbVYUpbdC6LtxSpu2f#gY)zX}#SupmO6KX{=DjZB=Q zWEilm*t@!B>pbt}11}Hj1?IE_T}~-h731U{1D>2HIM>=Ws3#GkHN*!Rz$qt_H=i~y z*spZhh>%fg5Q(dDb<5iS9o+a}%h{-mN4isj@8T_!TUVL7bv^aQg73*mY4?wuBt^30 zE{k#`uZm;X0f4E|10OfF8mynumJ{jcfqx3}wM7EiJ#L7^9-9s+i5BLP)g5ZKWu}NOY>Jh;RFU#@~^Acj#Q4IaIyIz?!GO{;}o|(z z_q;EamV*vLS9~jtsQ4Oj=}B@&KFEww74!SB2k8DjkU|ivp*~dvJWX`JnnM%dupp2C zujwy4@n1>K5tXU8E7waAl4d0!IWpUs*^h^3sn|IjW*@i+yOH}x?4tAJAKWl`Yon6a zq_DEN*0=qn!F~1xchUYV54mL3$EwKYXzXinGl9HDa$8rR>T^(YB_4K`_)GM54}k`% zvdW)#Hj5)I9Yy)?EaD)!b@p;xmLgyC6a-0eHY$C%GjRPs5SkJy%lRL)vo_Z1>83xr pz|8UgPAdNYA@aY&<^KV5_mxJoMR9eZC@Jb?p%1l`%kEpe_+L*2$fp1R literal 0 HcmV?d00001 diff --git a/docs/migration/images/configure_custom_backups.png b/docs/migration/images/configure_custom_backups.png new file mode 100644 index 0000000000000000000000000000000000000000..7aca6ab07de41874d4c4c4b2da1adc8ae1870652 GIT binary patch literal 176924 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 BFMZ<$XA+w~U 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 literal 0 HcmV?d00001 diff --git a/docs/migration/images/verify_docker_compose.png b/docs/migration/images/verify_docker_compose.png new file mode 100644 index 0000000000000000000000000000000000000000..d515ea702c729b5936581a2bb727b6f109117129 GIT binary patch literal 78141 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

P(fKk#j5@Fq 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 W%qxyPOAE^3XPFvX7~u`w@BJ4V1IV}l literal 0 HcmV?d00001 From fa268d4d9081b8398478eeb87355848c120846f6 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 4 Sep 2025 21:00:40 -0700 Subject: [PATCH 27/43] Created a migration script and Bicep templates to automate the process of migrating away from legacy IPAM deployments --- migrate/main.bicep | 124 ++ migrate/main.parameters.example.bicepparam | 34 + migrate/migrate.ps1 | 1540 +++++++++++++++++++ migrate/modules/appService.bicep | 265 ++++ migrate/modules/cosmos.bicep | 89 ++ migrate/modules/keyVault.bicep | 88 ++ migrate/modules/logAnalyticsWorkspace.bicep | 17 + migrate/overrides.jsonc | 44 + 8 files changed, 2201 insertions(+) create mode 100644 migrate/main.bicep create mode 100644 migrate/main.parameters.example.bicepparam create mode 100644 migrate/migrate.ps1 create mode 100644 migrate/modules/appService.bicep create mode 100644 migrate/modules/cosmos.bicep create mode 100644 migrate/modules/keyVault.bicep create mode 100644 migrate/modules/logAnalyticsWorkspace.bicep create mode 100644 migrate/overrides.jsonc diff --git a/migrate/main.bicep b/migrate/main.bicep new file mode 100644 index 00000000..4901e49c --- /dev/null +++ b/migrate/main.bicep @@ -0,0 +1,124 @@ +// Global parameters +targetScope = 'subscription' + +// Existing Resource Object for Migration +type resourceObject = { + appService: { + appServiceName: string + appServiceRG: string + } + appServicePlan: { + appServicePlanName: string + appServicePlanRG: string + } + cosmosAccount: { + cosmosAccountName: string + cosmosAccountRG: string + cosmosContainerName: string + cosmosDatabaseName: string + } + keyVault: { + keyVaultName: string + keyVaultRG: string + } + logAnalytics: { + workspaceName: string + workspaceRG: string + } + managedIdentity: { + managedIdentityName: string + managedIdentityRG: string + } + containerRegistry: { + containerRegistryName: string? + containerRegistryRG: string? + } +} + +@description('Deployment Location') +param location string = deployment().location + +@description('Azure Cloud Enviroment') +param azureCloud string = 'AZURE_PUBLIC' + +@description('Flag to Deploy Private Container Registry') +param privateAcr bool = false + +@description('IPAM Resources') +param resourceDetails resourceObject + +// Log Analytics Workspace +module logAnalyticsWorkspace './modules/logAnalyticsWorkspace.bicep' ={ + name: 'logAnalyticsWorkspaceModule' + scope: resourceGroup(resourceDetails.logAnalytics.workspaceRG) + params: { + location: location + workspaceName: resourceDetails.logAnalytics.workspaceName + } +} + +// Managed Identity +resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' existing = { + name: resourceDetails.managedIdentity.managedIdentityName + scope: resourceGroup(resourceDetails.managedIdentity.managedIdentityRG) +} + +// Key Vault +module keyVault './modules/keyVault.bicep' = { + name: 'keyVaultModule' + scope: resourceGroup(resourceDetails.keyVault.keyVaultRG) + params: { + location: location + keyVaultName: resourceDetails.keyVault.keyVaultName + identityPrincipalId: managedIdentity.properties.principalId + identityClientId: managedIdentity.properties.clientId + workspaceId: logAnalyticsWorkspace.outputs.workspaceId + } +} + +// Cosmos DB +module cosmos './modules/cosmos.bicep' = { + name: 'cosmosModule' + scope: resourceGroup(resourceDetails.cosmosAccount.cosmosAccountRG) + params: { + cosmosAccountName: resourceDetails.cosmosAccount.cosmosAccountName + workspaceId: logAnalyticsWorkspace.outputs.workspaceId + principalId: managedIdentity.properties.principalId + } +} + +// Container Registry +resource containerRegistry 'Microsoft.ContainerRegistry/registries@2022-12-01' existing = if (privateAcr) { + name: resourceDetails.containerRegistry.containerRegistryName! + scope: resourceGroup(resourceDetails.containerRegistry.containerRegistryRG!) +} + +// App Service +module appService './modules/appService.bicep' = { + scope: resourceGroup(resourceDetails.appService.appServiceRG) + name: 'appServiceModule' + params: { + location: location + azureCloud: azureCloud + appServiceName: resourceDetails.appService.appServiceName + appServicePlanName: resourceDetails.appServicePlan.appServicePlanName + keyVaultUri: keyVault.outputs.keyVaultUri + cosmosDbUri: cosmos.outputs.cosmosDocumentEndpoint + databaseName: resourceDetails.cosmosAccount.cosmosDatabaseName + containerName: resourceDetails.cosmosAccount.cosmosContainerName + managedIdentityId: managedIdentity.id + managedIdentityClientId: managedIdentity.properties.clientId + workspaceId: logAnalyticsWorkspace.outputs.workspaceId + privateAcr: privateAcr + privateAcrUri: privateAcr ? containerRegistry!.properties.loginServer : '' + } +} + +// Outputs +// output suffix string = uniqueString(guid) +// output subscriptionId string = subscription().subscriptionId +// output resourceGroupName string = resourceGroup.name +// output appServiceName string = deployAsFunc ? resourceNames.functionName : resourceNames.appServiceName +// output appServiceHostName string = deployAsFunc ? functionApp.outputs.functionAppHostName : appService.outputs.appServiceHostName +// output acrName string = privateAcr ? containerRegistry.outputs.acrName : '' +// output acrUri string = privateAcr ? containerRegistry.outputs.acrUri : '' diff --git a/migrate/main.parameters.example.bicepparam b/migrate/main.parameters.example.bicepparam new file mode 100644 index 00000000..291868a8 --- /dev/null +++ b/migrate/main.parameters.example.bicepparam @@ -0,0 +1,34 @@ +using './main.bicep' + +param resourceDetails = { + keyVault: { + keyVaultRG: '' + keyVaultName: '' + } + logAnalytics: { + workspaceRG: '' + workspaceName: '' + } + managedIdentity: { + managedIdentityRG: '' + managedIdentityName: '' + } + appServicePlan: { + appServicePlanRG: '' + appServicePlanName: '' + } + appService: { + appServiceRG: '' + appServiceName: '' + } + cosmosAccount: { + cosmosAccountRG: '' + cosmosAccountName: '' + cosmosDatabaseName: ' | ipam-db' + cosmosContainerName: ' | ipam-ctr' + } + containerRegistry: { + containerRegistryRG: ' | NULL' + containerRegistryName: ' | NULL' + } +} diff --git a/migrate/migrate.ps1 b/migrate/migrate.ps1 new file mode 100644 index 00000000..2513c509 --- /dev/null +++ b/migrate/migrate.ps1 @@ -0,0 +1,1540 @@ +############################################################################################################### +## +## Azure IPAM Solution Migration Script +## +## This script migrates existing Azure IPAM deployments from Docker Compose to modern Azure infrastructure +## by discovering current resources, validating their configuration, and deploying updated Bicep templates +## while preserving existing data and configuration settings. +## +############################################################################################################### + +# Set minimum version requirements +#Requires -Version 7.2 +#Requires -Modules @{ ModuleName="Az.Accounts"; ModuleVersion="2.16.0" } +#Requires -Modules @{ ModuleName="Az.KeyVault"; ModuleVersion="5.2.1" } +#Requires -Modules @{ ModuleName="Az.Monitor"; ModuleVersion="5.1.0" } +#Requires -Modules @{ ModuleName="Az.Resources"; ModuleVersion="6.16.0" } +#Requires -Modules @{ ModuleName="Az.Websites"; ModuleVersion="3.2.0" } +#Requires -Modules @{ ModuleName="Az.ContainerRegistry"; ModuleVersion="4.1.3" } + +# Intake and set global parameters +param( + [Parameter(ValueFromPipelineByPropertyName = $true, + Mandatory = $true)] + [string] + $AppName, + + [Parameter(ValueFromPipelineByPropertyName = $true, + Mandatory = $true)] + [string] + $ResourceGroupName, + + [Parameter(ValueFromPipelineByPropertyName = $true, + Mandatory = $false)] + [ValidateScript({ + if (-Not ($_ | Test-Path) ) { + throw [System.ArgumentException]::New("Target file or does not exist.") + } + if (-Not ($_ | Test-Path -PathType Leaf) ) { + throw [System.ArgumentException]::New("The 'JsonFile' argument must be a file, folder paths are not allowed.") + } + if ($_ -notmatch "(\.json|\.jsonc)$") { + throw [System.ArgumentException]::New("The file specified in the 'JsonFile' argument must be of type json or jsonc.") + } + try { + $content = Get-Content -Path $_ -Raw -ErrorAction Stop + $null = ConvertFrom-Json -InputObject $content -ErrorAction Stop + } + catch { + throw [System.ArgumentException]::New("The file specified in the 'JsonFile' argument contains invalid JSON.") + } + return $true + })] + [System.IO.FileInfo] + $JsonFile, + + [Parameter(ValueFromPipelineByPropertyName = $true, + Mandatory = $false)] + [switch] + $NoVerify, + + [Parameter(ValueFromPipelineByPropertyName = $true, + Mandatory = $false)] + [switch] + $Force +) + +# Root Directory +$ROOT_DIR = (Get-Item $($MyInvocation.MyCommand.Path)).Directory.Parent.FullName + +# Minimum Required Azure CLI Version - Required for ACR build functionality +$MIN_AZ_CLI_VER = [System.Version]'2.35.0' + +# Set preference variables +$ErrorActionPreference = "Stop" + +# Set Log File Location +$logPath = Join-Path -Path $ROOT_DIR -ChildPath "logs" +New-Item -ItemType Directory -Path $logpath -Force | Out-Null + +# Initialize detailed logging system +$timestamp = Get-Date -Format "yyyyMMdd-HHmmss" +$logFile = Join-Path -Path $logPath -ChildPath "migrate_$timestamp.log" + +# Logging function +function Write-LogFile { + param( + [string]$Message, + [string]$Level = "INFO", + [switch]$ToConsole, + [System.Management.Automation.ErrorRecord]$ErrorRecord = $null + ) + + $logEntry = "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] [$Level] $Message" + + # Always write to log file + Add-Content -Path $logFile -Value $logEntry -ErrorAction SilentlyContinue + + # Write detailed error information for ERROR level entries + if ($Level -eq "ERROR" -and $ErrorRecord) { + $errorDetails = @" +[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] [ERROR-DETAILS] Exception Type: $($ErrorRecord.Exception.GetType().FullName) +[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] [ERROR-DETAILS] Exception Message: $($ErrorRecord.Exception.Message) +[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] [ERROR-DETAILS] Stack Trace: $($ErrorRecord.ScriptStackTrace) +[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] [ERROR-DETAILS] Position: $($ErrorRecord.InvocationInfo.PositionMessage) +[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] [ERROR-DETAILS] Command: $($ErrorRecord.InvocationInfo.MyCommand) +[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] [ERROR-DETAILS] Line: $($ErrorRecord.InvocationInfo.ScriptLineNumber) +[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] [ERROR-DETAILS] ---------------------------------------- +"@ + Add-Content -Path $logFile -Value $errorDetails -ErrorAction SilentlyContinue + } + + # Optionally write to console (for backwards compatibility) + if ($ToConsole) { + switch ($Level) { + "ERROR" { Write-Host $Message -ForegroundColor Red } + "WARNING" { Write-Host $Message -ForegroundColor Yellow } + "SUCCESS" { Write-Host $Message -ForegroundColor Green } + default { Write-Host $Message } + } + } +} + +# Override error handling to capture detailed logs +$originalErrorActionPreference = $ErrorActionPreference +$ErrorActionPreference = "Continue" + +# Trap for unhandled errors +trap { + Write-LogFile -Message "UNHANDLED ERROR: $($_.Exception.Message)" -Level "ERROR" -ErrorRecord $_ + $ErrorActionPreference = $originalErrorActionPreference + throw $_ +} + +$ErrorActionPreference = $originalErrorActionPreference + +# Global variables set during resource discovery +$location = $null # Azure region extracted from source WebApp +$azureCloud = $null # Azure cloud environment (AZURE_PUBLIC, AZURE_US_GOV, etc.) +$privateAcr = $false # Flag indicating if private ACR is used vs public registry + +# Helper Functions +function Get-UserConfirmation { + param( + [Parameter(Mandatory = $true)] + [string]$Message, + [string]$PromptText = "Enter Y to continue or N to exit (Y/N)" + ) + + Write-Host $Message -ForegroundColor Yellow + do { + $confirmation = Read-Host $PromptText + switch ($confirmation.Trim().ToUpper()) { + { $_ -in @("Y", "YES") } { + Write-Host + return $true + } + { $_ -in @("N", "NO") } { + Write-Host + return $false + } + default { + Write-Host "Invalid input. Please enter Y or N." -ForegroundColor Red + } + } + } while ($true) +} + +function New-ResourceId { + param( + [Parameter(Mandatory = $true)] + [PSCustomObject]$Resource + ) + + # Validate input object + if ($null -eq $Resource) { + throw [System.ArgumentNullException]::new("Resource", "Resource parameter cannot be null") + } + + # Validate required properties exist + $requiredProperties = @('Subscription', 'ResourceGroup', 'ResourceType', 'ResourceName') + $missingProperties = @() + + foreach ($property in $requiredProperties) { + if (-not $Resource.PSObject.Properties[$property]) { + $missingProperties += $property + } + elseif ([string]::IsNullOrWhiteSpace($Resource.$property)) { + throw [System.ArgumentException]::new("Resource property '$property' cannot be null or empty", "Resource") + } + } + + if ($missingProperties.Count -gt 0) { + $availableProperties = $Resource.PSObject.Properties.Name -join ', ' + throw [System.ArgumentException]::new("Resource object is missing required properties: $($missingProperties -join ', '). Available properties: $availableProperties", "Resource") + } + + return "/subscriptions/$($Resource.Subscription)/resourceGroups/$($Resource.ResourceGroup)/providers/$($Resource.ResourceType)/$($Resource.ResourceName)" +} + +function Get-Subdomain { + param( + [Parameter(Mandatory = $true)] + [string]$Url + ) + + try { + $uri = [System.Uri]::new($Url) + $serviceName = $uri.Host.Split('.')[0] + + if ([string]::IsNullOrWhiteSpace($serviceName)) { + throw [System.ArgumentException]::new("Could not extract subdomain from URL hostname: '$($uri.Host)'", "Url") + } + + return $serviceName + } + catch [System.UriFormatException] { + throw [System.ArgumentException]::new("Invalid URL format: '$Url'. Please verify the URL is valid.", "Url") + } +} + +function Get-ResourceDetailsFromId { + param( + [Parameter(Mandatory = $true)] + [string]$ResourceId + ) + + if ([string]::IsNullOrWhiteSpace($ResourceId)) { + throw [System.ArgumentException]::new("ResourceId cannot be null or empty", "ResourceId") + } + + $parts = $ResourceId.Split('/') + if ($parts.Length -lt 9) { + throw [System.ArgumentException]::new("Invalid ResourceId format: '$ResourceId'", "ResourceId") + } + + return [PSCustomObject]@{ + SubscriptionId = $parts[2] + ResourceGroupName = $parts[4] + ResourceType = "$($parts[6])/$($parts[7])" + ResourceName = $parts[8] + FullResourceId = $ResourceId + } +} + +Function Get-BuildLogs { + Param( + [Parameter(Mandatory=$true)] + [string]$SubscriptionId, + [Parameter(Mandatory=$true)] + [string]$ResourceGroupName, + [Parameter(Mandatory=$true)] + [string]$RegistryName, + [Parameter(Mandatory=$true)] + [string]$BuildId + ) + + # Azure management endpoint mapping for different cloud environments + $msArmMap = @{ + AZURE_PUBLIC = "management.azure.com" + AZURE_US_GOV = "management.usgovcloudapi.net" + AZURE_US_GOV_SECRET = "management.azure.microsoft.scloud" + AZURE_GERMANY = "management.microsoftazure.de" + AZURE_CHINA = "management.chinacloudapi.cn" + }; + + $accessToken = (Get-AzAccessToken).Token + + $response = Invoke-RestMethod ` + -Method POST ` + -Uri "https://$($msArmMap[$script:azureCloud])/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.ContainerRegistry/registries/$RegistryName/runs/$BuildId/listLogSasUrl?api-version=2019-04-01" ` + -Authentication Bearer ` + -Token $accessToken + + $logLink = $response.logLink + + $logs = Invoke-RestMethod ` + -Method GET ` + -Uri $logLink + + return $logs +} + +function Get-WebAppDetails { + param( + [Parameter(Mandatory = $true)] + [string]$ResourceGroupName, + [Parameter(Mandatory = $true)] + [string]$AppName + ) + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "Discovering Azure IPAM Resources..." -ForegroundColor Yellow + Write-Host "=====================================================" -ForegroundColor Blue + + $missingResources = @() + $discoveredCount = 0 + $totalExpectedResources = 7 # All resources including Container Registry + + # Get the WebApp resource (single call) + Write-Host "🔍 Discovering Web App '$AppName'..." -ForegroundColor Cyan -NoNewline + Write-LogFile -Message "Starting Web App discovery for '$AppName' in resource group '$ResourceGroupName'" -Level "INFO" + try { + $webApp = Get-AzWebApp -ResourceGroupName $ResourceGroupName -Name $AppName -ErrorAction Stop + Write-Host " ✅ Found" -ForegroundColor Green + Write-LogFile -Message "Successfully discovered Web App '$AppName'" -Level "SUCCESS" + $discoveredCount++ + } + catch { + Write-Host " ❌ Missing" -ForegroundColor Red + Write-LogFile -Message "Failed to discover Web App '$AppName': $($_.Exception.Message)" -Level "ERROR" -ErrorRecord $_ + $missingResources += [PSCustomObject]@{ + ResourceType = "Web App" + ResourceName = $AppName + Error = $_.Exception.Message + } + throw [System.InvalidOperationException]::new("Failed to find Web App '$AppName' in resource group '$ResourceGroupName': $($_.Exception.Message)", $_.Exception) + } + + # Extract User-Assigned Managed Identity - Required for Azure IPAM authentication + Write-Host "🔍 Discovering User-Assigned Managed Identity..." -ForegroundColor Cyan -NoNewline + Write-LogFile -Message "Starting Managed Identity discovery for WebApp '$AppName'" -Level "INFO" + try { + $userAssignedIdentities = $webApp.Identity.UserAssignedIdentities + if ($userAssignedIdentities.Count -eq 0) { + throw [System.InvalidOperationException]::new("No User-Assigned Managed Identity found for WebApp '$AppName' in resource group '$ResourceGroupName'. This is required for migration.") + } + # Take first identity if multiple exist - Azure IPAM typically uses single identity + $managedIdentityResourceId = $userAssignedIdentities.Keys | Select-Object -First 1 + $managedIdentityName = $managedIdentityResourceId.Split('/')[-1] + Write-Host " ✅ Found '$managedIdentityName'" -ForegroundColor Green + Write-LogFile -Message "Successfully discovered Managed Identity '$managedIdentityName' with Resource ID: $managedIdentityResourceId" -Level "SUCCESS" + $discoveredCount++ + } + catch { + Write-Host " ❌ Missing" -ForegroundColor Red + Write-LogFile -Message "Failed to discover Managed Identity: $($_.Exception.Message)" -Level "ERROR" -ErrorRecord $_ + $missingResources += [PSCustomObject]@{ + ResourceType = "Managed Identity" + ResourceName = "Unknown" + Error = $_.Exception.Message + } + throw $_.Exception + } + + # Extract Log Analytics Workspace ResourceId from diagnostic settings (required) + Write-Host "🔍 Discovering Log Analytics Workspace configuration..." -ForegroundColor Cyan -NoNewline + Write-LogFile -Message "Starting Log Analytics Workspace discovery from diagnostic settings" -Level "INFO" + try { + $diagnosticSettings = Get-AzDiagnosticSetting -ResourceId $webApp.Id -ErrorAction SilentlyContinue + if (-not $diagnosticSettings) { + throw [System.InvalidOperationException]::new("No diagnostic settings found for WebApp '$AppName'. Log Analytics configuration is required for migration.") + } + + $logAnalyticsWorkspaceId = $diagnosticSettings | + ForEach-Object { $_.WorkspaceId } | + Where-Object { $_ } | + Select-Object -First 1 + + if (-not $logAnalyticsWorkspaceId) { + throw [System.InvalidOperationException]::new("No Log Analytics Workspace configured in diagnostic settings for WebApp '$AppName'. This is required for migration.") + } + $logAnalyticsWorkspaceName = $logAnalyticsWorkspaceId.Split('/')[-1] + Write-Host " ✅ Found '$logAnalyticsWorkspaceName'" -ForegroundColor Green + Write-LogFile -Message "Successfully discovered Log Analytics Workspace '$logAnalyticsWorkspaceName' with Resource ID: $logAnalyticsWorkspaceId" -Level "SUCCESS" + $discoveredCount++ + } + catch { + Write-Host " ❌ Missing" -ForegroundColor Red + Write-LogFile -Message "Failed to discover Log Analytics Workspace: $($_.Exception.Message)" -Level "ERROR" -ErrorRecord $_ + $missingResources += [PSCustomObject]@{ + ResourceType = "Log Analytics Workspace" + ResourceName = "Unknown" + Error = $_.Exception.Message + } + throw $_.Exception + } + + # Get app settings once for efficiency across multiple lookups + $appSettings = $webApp.SiteConfig.AppSettings + + # Extract CosmosDB Account Name from COSMOS_URL and find the actual resource + # Azure IPAM stores all IP address data in Cosmos DB + Write-Host "🔍 Discovering Cosmos DB Account configuration..." -ForegroundColor Cyan -NoNewline + Write-LogFile -Message "Starting Cosmos DB Account discovery" -Level "INFO" + try { + $cosmosSetting = $appSettings | Where-Object { $_.Name -eq "COSMOS_URL" } + if (-not $cosmosSetting) { + throw [System.ArgumentException]::new("No COSMOS_URL environment variable found for WebApp '$AppName'. This is required for migration.", "COSMOS_URL") + } + Write-LogFile -Message "Found COSMOS_URL setting: $($cosmosSetting.Value)" -Level "INFO" + $cosmosDbAccountName = Get-Subdomain -Url $cosmosSetting.Value + Write-LogFile -Message "Extracted Cosmos DB account name: $cosmosDbAccountName" -Level "INFO" + + # Get current Azure PowerShell context for subscription ID + $azContext = Get-AzContext + if (-not $azContext -or -not $azContext.Subscription) { + throw [System.InvalidOperationException]::new("No active Azure PowerShell context found. Please run Connect-AzAccount to authenticate.") + } + $subscriptionId = $azContext.Subscription.Id + Write-LogFile -Message "Using subscription ID: $subscriptionId" -Level "INFO" + + # Search all Cosmos DB accounts in subscription since resource group may differ + # This handles scenarios where Cosmos DB was deployed in a different RG + $cosmosApiUri = "https://management.azure.com/subscriptions/$subscriptionId/providers/Microsoft.DocumentDB/databaseAccounts?api-version=2025-04-15" + Write-LogFile -Message "Querying Cosmos DB accounts via REST API: $cosmosApiUri" -Level "INFO" + $cosmosResponse = Invoke-AzRestMethod -Uri $cosmosApiUri -Method GET + + if ($cosmosResponse.StatusCode -ne 200) { + throw [System.InvalidOperationException]::new("Failed to retrieve Cosmos DB accounts from subscription '$subscriptionId'. Status: $($cosmosResponse.StatusCode)") + } + + $cosmosData = $cosmosResponse.Content | ConvertFrom-Json + $cosmosAccounts = $cosmosData.value + Write-LogFile -Message "Found $($cosmosAccounts.Count) Cosmos DB accounts in subscription" -Level "INFO" + + if ($cosmosAccounts.Count -eq 0) { + throw [System.InvalidOperationException]::new("No Cosmos DB accounts found in subscription '$subscriptionId'.") + } + + # Prioritize exact name match, fallback to hostname match for flexibility + $matchedAccount = $cosmosAccounts | Where-Object { $_.name -eq $cosmosDbAccountName } + Write-LogFile -Message "Exact name match result: $(if ($matchedAccount) { $matchedAccount.name } else { 'No match' })" -Level "INFO" + + if (-not $matchedAccount) { + # If no exact match, try to find by URL hostname match + $targetHostname = ([System.Uri]::new($cosmosSetting.Value)).Host + Write-LogFile -Message "Attempting hostname match for: $targetHostname" -Level "INFO" + $matchedAccount = $cosmosAccounts | Where-Object { + $_.properties.documentEndpoint -and ([System.Uri]::new($_.properties.documentEndpoint)).Host -eq $targetHostname + } + Write-LogFile -Message "Hostname match result: $(if ($matchedAccount) { $matchedAccount.name } else { 'No match' })" -Level "INFO" + } + + if (-not $matchedAccount) { + $availableAccounts = $cosmosAccounts | ForEach-Object { "$($_.name) (Endpoint: $($_.properties.documentEndpoint))" } + Write-LogFile -Message "Available Cosmos DB accounts: $($availableAccounts -join ', ')" -Level "ERROR" + throw [System.InvalidOperationException]::new("No Cosmos DB account found matching name '$cosmosDbAccountName' or URL '$($cosmosSetting.Value)'. Available accounts: $($availableAccounts -join ', ')") + } + + Write-Host " ✅ Found '$($matchedAccount.name)'" -ForegroundColor Green + Write-LogFile -Message "Successfully discovered Cosmos DB Account '$($matchedAccount.name)' with Resource ID: $($matchedAccount.id)" -Level "SUCCESS" + $cosmosDbResourceId = $matchedAccount.id + $discoveredCount++ + } + catch { + Write-Host " ❌ Missing" -ForegroundColor Red + Write-LogFile -Message "Failed to discover Cosmos DB Account: $($_.Exception.Message)" -Level "ERROR" -ErrorRecord $_ + $missingResources += [PSCustomObject]@{ + ResourceType = "Cosmos DB Account" + ResourceName = if ($cosmosDbAccountName) { $cosmosDbAccountName } else { "Unknown" } + Error = $_.Exception.Message + } + throw [System.InvalidOperationException]::new("Failed to find Cosmos DB resource for URL '$($cosmosSetting.Value)': $($_.Exception.Message)", $_.Exception) + } + + # Extract KeyVault Name from KEYVAULT_URL and find the actual resource (required) + Write-Host "🔍 Discovering Key Vault configuration..." -ForegroundColor Cyan -NoNewline + try { + $keyVaultSetting = $appSettings | Where-Object { $_.Name -eq "KEYVAULT_URL" } + if (-not $keyVaultSetting) { + throw [System.ArgumentException]::new("No KEYVAULT_URL environment variable found for WebApp '$AppName'. This is required for migration.", "KEYVAULT_URL") + } + $keyVaultName = Get-Subdomain -Url $keyVaultSetting.Value + + # Search all Key Vaults in subscription since resource group may differ + $keyVaults = Get-AzKeyVault -ErrorAction Stop + + if ($keyVaults.Count -eq 0) { + throw [System.InvalidOperationException]::new("No Key Vaults found in subscription '$subscriptionId'.") + } + + # Prioritize exact name match, fallback to hostname match for flexibility + $matchedVault = $keyVaults | Where-Object { $_.VaultName -eq $keyVaultName } + + if (-not $matchedVault) { + # If no exact match, try to find by URL hostname match + $targetHostname = ([System.Uri]::new($keyVaultSetting.Value)).Host + $matchedVault = $keyVaults | Where-Object { + $_.VaultUri -and ([System.Uri]::new($_.VaultUri)).Host -eq $targetHostname + } + } + + if (-not $matchedVault) { + $availableVaults = $keyVaults | ForEach-Object { "$($_.VaultName) (URI: $($_.VaultUri))" } + throw [System.InvalidOperationException]::new("No Key Vault found matching name '$keyVaultName' or URL '$($keyVaultSetting.Value)'. Available vaults: $($availableVaults -join ', ')") + } + + Write-Host " ✅ Found '$($matchedVault.VaultName)'" -ForegroundColor Green + $keyVaultResourceId = $matchedVault.ResourceId + $discoveredCount++ + } + catch { + Write-Host " ❌ Missing" -ForegroundColor Red + $missingResources += [PSCustomObject]@{ + ResourceType = "Key Vault" + ResourceName = if ($keyVaultName) { $keyVaultName } else { "Unknown" } + Error = $_.Exception.Message + } + throw [System.InvalidOperationException]::new("Failed to find Key Vault resource for URL '$($keyVaultSetting.Value)': $($_.Exception.Message)", $_.Exception) + } + + # Extract App Service Plan name (required) + Write-Host "🔍 Discovering App Service Plan configuration..." -ForegroundColor Cyan -NoNewline + try { + if (-not $webApp.ServerFarmId) { + throw [System.InvalidOperationException]::new("No App Service Plan found for WebApp '$AppName'. This is required for migration.") + } + $appServicePlanName = $webApp.ServerFarmId.Split('/')[-1] + Write-Host " ✅ Found '$appServicePlanName'" -ForegroundColor Green + $discoveredCount++ + } + catch { + Write-Host " ❌ Missing" -ForegroundColor Red + $missingResources += [PSCustomObject]@{ + ResourceType = "App Service Plan" + ResourceName = "Unknown" + Error = $_.Exception.Message + } + throw $_.Exception + } + + # Check for Container Registry configuration from Docker Compose + # Azure IPAM can use either public azureipam.azurecr.io or private ACR + Write-Host "🔍 Discovering Container Registry configuration..." -ForegroundColor Cyan -NoNewline + $containerRegistryResourceId = $null + try { + # Get Docker Compose file content from LinuxFxVersion if available + $dockerComposeContent = $null + if ($webApp.SiteConfig.LinuxFxVersion -and $webApp.SiteConfig.LinuxFxVersion.Contains("COMPOSE|")) { + # Extract and decode the Base64 Docker Compose content + $base64Content = $webApp.SiteConfig.LinuxFxVersion.Substring($webApp.SiteConfig.LinuxFxVersion.IndexOf("COMPOSE|") + 8) + try { + $dockerComposeBytes = [System.Convert]::FromBase64String($base64Content) + $dockerComposeContent = [System.Text.Encoding]::UTF8.GetString($dockerComposeBytes) + } + catch { + throw [System.InvalidOperationException]::new("Failed to decode Docker Compose Base64 content from LinuxFxVersion: $($_.Exception.Message). This WebApp does not appear to be properly configured for Docker Compose migration.", $_.Exception) + } + } + elseif ($webApp.SiteConfig.LinuxFxVersion -and $webApp.SiteConfig.LinuxFxVersion.Contains("DOCKER|")) { + # If only DOCKER| is present, extract the Docker image reference + $dockerImageRef = $webApp.SiteConfig.LinuxFxVersion.Substring($webApp.SiteConfig.LinuxFxVersion.IndexOf("DOCKER|") + 7) + + if ($dockerImageRef -match "azureipam\.azurecr\.io") { + # Using public Microsoft-provided Azure IPAM registry + Write-Host " ℹ️ Skipped (using public registry)" -ForegroundColor Cyan + $containerRegistryResourceId = $null + $discoveredCount++ # Count as discovered even when using public registry + } + elseif ($dockerImageRef -match "([a-zA-Z0-9\-]+)\.azurecr\.io") { + # Using private ACR - need to locate the registry + $acrName = $matches[1] + + # Search for the ACR in the subscription + $acrResources = Get-AzContainerRegistry -ErrorAction SilentlyContinue + $matchedAcr = $acrResources | Where-Object { $_.Name -eq $acrName } + + if ($matchedAcr) { + $containerRegistryResourceId = $matchedAcr.Id + Write-Host " ✅ Found '$($matchedAcr.Name)'" -ForegroundColor Green + $discoveredCount++ + } + else { + Write-Host " ⚠️ ACR '$acrName' referenced in Docker Compose but not found in subscription" -ForegroundColor Yellow + $containerRegistryResourceId = $null + } + } + } + else { + throw [System.InvalidOperationException]::new("No Docker Compose configuration or Docker Image references found in LinuxFxVersion for WebApp '$AppName'. This script is designed to migrate Docker Compose-based Azure IPAM deployments. Please verify this is the correct WebApp or check the LinuxFxVersion property.") + } + + # Parse Docker Compose content to determine registry type + if ($dockerComposeContent) { + if ($dockerComposeContent -match "azureipam\.azurecr\.io") { + # Using public Microsoft-provided Azure IPAM registry + Write-Host " ℹ️ Skipped (using public registry)" -ForegroundColor Cyan + $containerRegistryResourceId = $null + $discoveredCount++ # Count as discovered even when using public registry + } + elseif ($dockerComposeContent -match "([a-zA-Z0-9\-]+)\.azurecr\.io") { + # Using private ACR - need to locate the registry + $acrName = $matches[1] + + # Search for the ACR in the subscription + $acrResources = Get-AzContainerRegistry -ErrorAction SilentlyContinue + $matchedAcr = $acrResources | Where-Object { $_.Name -eq $acrName } + + if ($matchedAcr) { + $containerRegistryResourceId = $matchedAcr.Id + Write-Host " ✅ Found '$($matchedAcr.Name)'" -ForegroundColor Green + $discoveredCount++ + } + else { + Write-Host " ⚠️ ACR '$acrName' referenced in Docker Compose but not found in subscription" -ForegroundColor Yellow + $containerRegistryResourceId = $null + } + } + else { + throw [System.InvalidOperationException]::new("No Azure Container Registry references found in Docker Compose configuration for WebApp '$AppName'. Azure IPAM requires ACR references (either azureipam.azurecr.io or a private registry). Please verify the Docker Compose configuration is valid for Azure IPAM migration.") + } + } + } + catch { + Write-Host " ❌ Error" -ForegroundColor Red + $missingResources += [PSCustomObject]@{ + ResourceType = "Docker Compose Configuration" + ResourceName = "LinuxFxVersion" + Error = $_.Exception.Message + } + throw $_.Exception + } + + # Fail if no Docker Compose content was found + if(-not $dockerComposeContent) { + Write-Host + + throw [System.InvalidOperationException]::new("No Docker Compose configuration found in LinuxFxVersion for WebApp '$AppName'. This script is designed to migrate Docker Compose-based Azure IPAM deployments. Please verify this is the correct WebApp or check the LinuxFxVersion property.") + } + + # Set global variables for Location, Azure Cloud and Private ACR for use in later functions + $script:location = $webApp.Location + $script:azureCloud = $($appSettings | Where-Object { $_.Name -eq "AZURE_ENV" }).Value + $script:privateAcr = -not [string]::IsNullOrWhiteSpace($containerRegistryResourceId) + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "Discovery Summary: $discoveredCount/$totalExpectedResources resources found" -ForegroundColor Yellow + Write-Host "=====================================================" -ForegroundColor Blue + + # If any resources are missing, display details and throw error + if ($missingResources.Count -gt 0) { + Write-Host + Write-Host "❌ Missing Resources Details:" -ForegroundColor Red + Write-Host "=====================================================" -ForegroundColor Red + + foreach ($missing in $missingResources) { + Write-Host "Resource Type: $($missing.ResourceType)" -ForegroundColor Yellow + Write-Host "Resource Name: $($missing.ResourceName)" -ForegroundColor White + Write-Host "Error: $($missing.Error)" -ForegroundColor Red + Write-Host "----------------------------------------------------" -ForegroundColor Red + } + + $missingCount = $missingResources.Count + $missingNames = $missingResources | ForEach-Object { "$($_.ResourceType) '$($_.ResourceName)'" } + + throw [System.InvalidOperationException]::new("Resource discovery failed. $missingCount out of $totalExpectedResources resources could not be found: $($missingNames -join ', '). Please ensure all resources exist and are properly configured.") + } + else { + Write-Host "✅ All required resources discovered successfully!" -ForegroundColor Green + } + + Write-Host + + return [PSCustomObject]@{ + WebAppResourceId = $webApp.Id + ManagedIdentityResourceId = $managedIdentityResourceId + LogAnalyticsWorkspaceId = $logAnalyticsWorkspaceId + CosmosDbResourceId = $cosmosDbResourceId + KeyVaultResourceId = $keyVaultResourceId + AppServicePlanResourceId = $webApp.ServerFarmId + ContainerRegistryResourceId = $containerRegistryResourceId + } +} + +function Format-WebAppDetailsTable { + param( + [Parameter(Mandatory = $true)] + [PSCustomObject]$Details + ) + + # Define resource types and their property names + $resourceMap = @{ + "Web App" = "WebAppResourceId" + "Managed Identity" = "ManagedIdentityResourceId" + "Log Analytics Workspace" = "LogAnalyticsWorkspaceId" + "Cosmos DB Account" = "CosmosDbResourceId" + "Key Vault" = "KeyVaultResourceId" + "App Service Plan" = "AppServicePlanResourceId" + } + + $tableData = foreach ($resourceType in $resourceMap.Keys) { + $resourceId = $Details.($resourceMap[$resourceType]) + if (-not [string]::IsNullOrWhiteSpace($resourceId)) { + $resourceDetails = Get-ResourceDetailsFromId -ResourceId $resourceId + [PSCustomObject]@{ + ResourceType = $resourceType + ResourceName = $resourceDetails.ResourceName + ResourceGroup = $resourceDetails.ResourceGroupName + Subscription = $resourceDetails.SubscriptionId + } + } + } + + # Handle Container Registry separately + if (-not [string]::IsNullOrWhiteSpace($Details.ContainerRegistryResourceId)) { + $containerRegistryDetails = Get-ResourceDetailsFromId -ResourceId $Details.ContainerRegistryResourceId + $tableData += [PSCustomObject]@{ + ResourceType = "Container Registry" + ResourceName = $containerRegistryDetails.ResourceName + ResourceGroup = $containerRegistryDetails.ResourceGroupName + Subscription = $containerRegistryDetails.SubscriptionId + } + } + elseif ($Details.PSObject.Properties.Name -contains "ContainerRegistryResourceId") { + $tableData += [PSCustomObject]@{ + ResourceType = "Container Registry" + ResourceName = "azureipam (Public)" + ResourceGroup = "N/A" + Subscription = "N/A" + } + } + + Write-Host "=====================================================" -ForegroundColor Red + Write-Host "Resource Summary Table:" -ForegroundColor Yellow + Write-Host "=====================================================" -ForegroundColor Red + $tableData | Format-Table -AutoSize + Write-Host "=====================================================" -ForegroundColor Red + Write-Host +} + +function Test-ResourceExistence { + param( + [Parameter(Mandatory = $true)] + [PSCustomObject]$ResourceDetails + ) + + # Define property names and their corresponding display names + $resourcePropertyMap = @{ + "WebAppResourceId" = "Web App" + "ManagedIdentityResourceId" = "Managed Identity" + "LogAnalyticsWorkspaceId" = "Log Analytics Workspace" + "CosmosDbResourceId" = "Cosmos DB Account" + "KeyVaultResourceId" = "Key Vault" + "AppServicePlanResourceId" = "App Service Plan" + "ContainerRegistryResourceId" = "Container Registry" + } + + # Validate input parameter + if ($null -eq $ResourceDetails) { + throw [System.ArgumentException]::new("ResourceDetails parameter cannot be null.", "ResourceDetails") + } + + if ($ResourceDetails -isnot [PSCustomObject]) { + throw [System.ArgumentException]::new("ResourceDetails parameter must be a PSCustomObject. Received type: $($ResourceDetails.GetType().Name)", "ResourceDetails") + } + + # Get all Resource ID properties from the input object (including ContainerRegistryResourceId even if null) + $resourceIdProperties = $ResourceDetails.PSObject.Properties | Where-Object { + $_.Name -in $resourcePropertyMap.Keys -and + ($_.Name -eq "ContainerRegistryResourceId" -or -not [string]::IsNullOrWhiteSpace($_.Value)) + } + + if ($resourceIdProperties.Count -eq 0) { + $availableProperties = $ResourceDetails.PSObject.Properties | ForEach-Object { $_.Name } + $expectedProperties = $resourcePropertyMap.Keys + throw [System.ArgumentException]::new("No valid Resource ID properties found in the provided object. Expected properties: $($expectedProperties -join ', '). Available properties: $($availableProperties -join ', ').", "ResourceDetails") + } + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "Verifying Resource Existence..." -ForegroundColor Yellow + Write-Host "=====================================================" -ForegroundColor Blue + + $missingResources = @() + $verifiedCount = 0 + $totalCount = $resourceIdProperties.Count + + foreach ($property in $resourceIdProperties) { + $resourceId = $property.Value + + if ([string]::IsNullOrWhiteSpace($resourceId)) { + # Special handling for ContainerRegistryResourceId - it can be null (indicating public ACR) + if ($property.Name -eq "ContainerRegistryResourceId") { + Write-Host "🔍 Verifying Container Registry..." -ForegroundColor Cyan -NoNewline + Write-Host " ℹ️ Skipped (using public registry)" -ForegroundColor Cyan + $verifiedCount++ + continue + } + else { + Write-Host "⚠️ Skipping empty resource ID for property: $($property.Name)" -ForegroundColor Yellow + continue + } + } + + try { + # Get display name from property mapping + $displayName = $resourcePropertyMap[$property.Name] + + # Extract resource details for additional info + $resourceInfo = Get-ResourceDetailsFromId -ResourceId $resourceId + + Write-Host "🔍 Verifying $displayName '$($resourceInfo.ResourceName)'..." -ForegroundColor Cyan -NoNewline + + # Test resource existence + $resource = Get-AzResource -ResourceId $resourceId -ErrorAction SilentlyContinue + + if ($resource) { + Write-Host " ✅ Verified" -ForegroundColor Green + $verifiedCount++ + } + else { + Write-Host " ❌ Missing" -ForegroundColor Red + $missingResources += [PSCustomObject]@{ + ResourceType = $displayName + ResourceName = $resourceInfo.ResourceName + ResourceGroup = $resourceInfo.ResourceGroupName + Subscription = $resourceInfo.SubscriptionId + ResourceId = $resourceId + } + } + } + catch { + Write-Host " ❌ Error: $($_.Exception.Message)" -ForegroundColor Red + $displayName = $resourcePropertyMap[$property.Name] + $resourceInfo = Get-ResourceDetailsFromId -ResourceId $resourceId + + $missingResources += [PSCustomObject]@{ + ResourceType = $displayName + ResourceName = $resourceInfo.ResourceName + ResourceGroup = $resourceInfo.ResourceGroupName + Subscription = $resourceInfo.SubscriptionId + ResourceId = $resourceId + Error = $_.Exception.Message + } + } + } + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "Verification Summary: $verifiedCount/$totalCount resources found" -ForegroundColor Yellow + Write-Host "=====================================================" -ForegroundColor Blue + + # If any resources are missing, display details and throw error + if ($missingResources.Count -gt 0) { + Write-Host + Write-Host "❌ Missing Resources Details:" -ForegroundColor Red + Write-Host "=====================================================" -ForegroundColor Red + + foreach ($missing in $missingResources) { + Write-Host "Resource Type: $($missing.ResourceType)" -ForegroundColor Yellow + Write-Host "Resource Name: $($missing.ResourceName)" -ForegroundColor White + Write-Host "Resource Group: $($missing.ResourceGroup)" -ForegroundColor White + Write-Host "Subscription: $($missing.Subscription)" -ForegroundColor White + Write-Host "Resource ID: $($missing.ResourceId)" -ForegroundColor Gray + if ($missing.Error) { + Write-Host "Error: $($missing.Error)" -ForegroundColor Red + } + Write-Host "----------------------------------------------------" -ForegroundColor Red + } + + Write-Host + + $missingCount = $missingResources.Count + $missingNames = $missingResources | ForEach-Object { "$($_.ResourceType) '$($_.ResourceName)'" } + + throw [System.InvalidOperationException]::new("Resource verification failed. $missingCount out of $totalCount resources could not be found or accessed: $($missingNames -join ', '). Please ensure all resources exist and you have appropriate permissions.") + } + else { + Write-Host "✅ All resources verified successfully!" -ForegroundColor Green + } + + Write-Host +} + +function Read-JsonData { + param( + [Parameter(Mandatory = $true)] + [System.IO.FileInfo] + $JsonFilePath + ) + + $DATA_MAP = @{ + "Web App" = @{ + ResourceType = "Microsoft.Web/sites" + Required = $true + } + "App Service Plan" = @{ + ResourceType = "Microsoft.Web/serverfarms" + Required = $true + } + "Managed Identity" = @{ + ResourceType = "Microsoft.ManagedIdentity/userAssignedIdentities" + Required = $true + } + "Log Analytics Workspace" = @{ + ResourceType = "Microsoft.OperationalInsights/workspaces" + Required = $true + } + "Cosmos DB Account" = @{ + ResourceType = "Microsoft.DocumentDB/databaseAccounts" + Required = $true + } + "Key Vault" = @{ + ResourceType = "Microsoft.KeyVault/vaults" + Required = $true + } + "Container Registry" = @{ + ResourceType = "Microsoft.ContainerRegistry/registries" + Required = $false + } + } + + $jsonData = Get-Content -Path $JsonFilePath.FullName -Raw | ConvertFrom-Json + + $resourceTypes = $jsonData | ForEach-Object { $_.ResourceType } + + # Extract required and optional resource types from DATA_MAP + $requiredResourceTypes = $DATA_MAP.Values | Where-Object { $_.Required -eq $true } | ForEach-Object { $_.ResourceType } + $optionalResourceTypes = $DATA_MAP.Values | Where-Object { $_.Required -eq $false } | ForEach-Object { $_.ResourceType } + $allValidResourceTypes = $requiredResourceTypes + $optionalResourceTypes + + # Check for missing required resource types + $missingRequired = $requiredResourceTypes | Where-Object { $_ -notin $resourceTypes } + $invalidTypes = $resourceTypes | Where-Object { $_ -notin $allValidResourceTypes } + + if ($missingRequired.Count -gt 0 -or $invalidTypes.Count -gt 0) { + $errorMessages = @() + if ($missingRequired.Count -gt 0) { + $errorMessages += "Missing required resource types: $($missingRequired -join ', ')" + } + if ($invalidTypes.Count -gt 0) { + $errorMessages += "Invalid resource types found: $($invalidTypes -join ', ')" + } + + $errorMessage = "The JSON file '$($JsonFilePath.Name)' has resource type issues. $($errorMessages -join '. ')" + throw [System.ArgumentException]::New($errorMessage, "JsonFilePath") + } + + # Create a hashtable to store resources by type for easy lookup + $resourceLookup = @{} + foreach ($resource in $jsonData) { + $resourceLookup[$resource.ResourceType] = $resource + } + + # Build Resource IDs using the helper function + $resourceIds = @{} + $requiredResourceTypes + $optionalResourceTypes | ForEach-Object { + $resource = $resourceLookup[$_] + if ($resource) { + $resourceIds[$_] = New-ResourceId -Resource $resource + } + } + + # Return PSCustomObject matching the structure from Get-WebAppDetails + return [PSCustomObject]@{ + WebAppResourceId = $resourceIds["Microsoft.Web/sites"] + ManagedIdentityResourceId = $resourceIds["Microsoft.ManagedIdentity/userAssignedIdentities"] + LogAnalyticsWorkspaceId = $resourceIds["Microsoft.OperationalInsights/workspaces"] + CosmosDbResourceId = $resourceIds["Microsoft.DocumentDB/databaseAccounts"] + KeyVaultResourceId = $resourceIds["Microsoft.KeyVault/vaults"] + AppServicePlanResourceId = $resourceIds["Microsoft.Web/serverfarms"] + ContainerRegistryResourceId = $resourceIds["Microsoft.ContainerRegistry/registries"] + } +} + +function Get-WebAppStatusDetails { + param( + [Parameter(Mandatory = $true)] + [PSCustomObject]$Details + ) + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "Probing WebApp Status API..." -ForegroundColor Yellow + Write-Host "=====================================================" -ForegroundColor Blue + + try { + $webAppDetails = Get-ResourceDetailsFromId -ResourceId $Details.WebAppResourceId + + Write-Host "🔍 Getting WebApp hostname..." -ForegroundColor Cyan -NoNewline + $webApp = Get-AzWebApp -ResourceGroupName $webAppDetails.ResourceGroupName -Name $webAppDetails.ResourceName -ErrorAction Stop + + if (-not $webApp.HostNames -or $webApp.HostNames.Count -eq 0) { + throw [System.InvalidOperationException]::new("No hostnames found for WebApp '$($webAppDetails.ResourceName)'.") + } + + $appUri = $webApp.HostNames[0] + Write-Host " ✅ Found '$appUri'" -ForegroundColor Green + + $statusApiUrl = "https://$appUri/api/status" + Write-Host "🔍 Querying status API..." -ForegroundColor Cyan -NoNewline + + $statusResponse = Invoke-RestMethod -Uri $statusApiUrl -Method GET -TimeoutSec 30 -ErrorAction Stop + Write-Host " ✅ Success" -ForegroundColor Green + + # Simplified property extraction - PowerShell 7.2+ supports null-conditional operators + $containerStack = $statusResponse.stack + $containerImage = $statusResponse.container?.image_id + + if (-not $containerStack) { + Write-Warning "No 'stack' property found in status API response." + } + + if (-not $containerImage) { + Write-Warning "No 'image_id' property found in container object." + } + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "✅ Status API probing completed successfully!" -ForegroundColor Green + Write-Host + + return [PSCustomObject]@{ + ContainerStack = $containerStack + ContainerImage = $containerImage + StatusApiUrl = $statusApiUrl + } + } + catch [System.Net.WebException] { + Write-Host " ❌ Network Error" -ForegroundColor Red + throw [System.InvalidOperationException]::new("Failed to connect to status API at '$statusApiUrl'. Error: $($_.Exception.Message). This may indicate the WebApp is not running or the status API endpoint is not available.", $_.Exception) + } + catch { + Write-Host " ❌ Error" -ForegroundColor Red + throw [System.InvalidOperationException]::new("Failed to probe status API at '$statusApiUrl': $($_.Exception.Message).", $_.Exception) + } +} + +function ConvertTo-MigrationObject { + param( + [Parameter(Mandatory = $true)] + [PSCustomObject]$Details + ) + + # Create a mapping of resource types to their property names + $resourceMapping = @{ + webApp = "WebAppResourceId" + managedIdentity = "ManagedIdentityResourceId" + logAnalytics = "LogAnalyticsWorkspaceId" + appServicePlan = "AppServicePlanResourceId" + cosmosDb = "CosmosDbResourceId" + keyVault = "KeyVaultResourceId" + containerRegistry = "ContainerRegistryResourceId" + } + + # Extract all resource details at once for efficiency + $resourceDetails = @{} + foreach ($key in $resourceMapping.Keys) { + $resourceId = $Details.($resourceMapping[$key]) + if (-not [string]::IsNullOrWhiteSpace($resourceId)) { + $resourceDetails[$key] = Get-ResourceDetailsFromId -ResourceId $resourceId + } + } + + # Get WebApp settings for Cosmos DB configuration + $webApp = Get-AzWebApp -ResourceGroupName $resourceDetails.webApp.ResourceGroupName -Name $resourceDetails.webApp.ResourceName -ErrorAction Stop + $appSettings = $webApp.SiteConfig.AppSettings + + # Extract Cosmos DB names with Azure IPAM defaults if environment variables missing + $databaseNameSetting = $appSettings | Where-Object { $_.Name -eq "DATABASE_NAME" } + $containerNameSetting = $appSettings | Where-Object { $_.Name -eq "CONTAINER_NAME" } + + # Use Azure IPAM default values if environment variables are not found + if (-not $databaseNameSetting) { + Write-Warning "No DATABASE_NAME environment variable found for WebApp '$($resourceDetails.webApp.ResourceName)'. Using default value 'ipam-db'." + $cosmosDatabaseName = "ipam-db" + } + else { + $cosmosDatabaseName = $databaseNameSetting.Value + } + + if (-not $containerNameSetting) { + Write-Warning "No CONTAINER_NAME environment variable found for WebApp '$($resourceDetails.webApp.ResourceName)'. Using default value 'ipam-ctr'." + $cosmosContainerName = "ipam-ctr" + } + else { + $cosmosContainerName = $containerNameSetting.Value + } + + return @{ + appService = @{ + appServiceName = $resourceDetails.webApp.ResourceName + appServiceRG = $resourceDetails.webApp.ResourceGroupName + } + appServicePlan = @{ + appServicePlanName = $resourceDetails.appServicePlan.ResourceName + appServicePlanRG = $resourceDetails.appServicePlan.ResourceGroupName + } + cosmosAccount = @{ + cosmosAccountName = $resourceDetails.cosmosDb.ResourceName + cosmosAccountRG = $resourceDetails.cosmosDb.ResourceGroupName + cosmosContainerName = $cosmosContainerName + cosmosDatabaseName = $cosmosDatabaseName + } + keyVault = @{ + keyVaultName = $resourceDetails.keyVault.ResourceName + keyVaultRG = $resourceDetails.keyVault.ResourceGroupName + } + logAnalytics = @{ + workspaceName = $resourceDetails.logAnalytics.ResourceName + workspaceRG = $resourceDetails.logAnalytics.ResourceGroupName + } + managedIdentity = @{ + managedIdentityName = $resourceDetails.managedIdentity.ResourceName + managedIdentityRG = $resourceDetails.managedIdentity.ResourceGroupName + } + # Handle optional container registry details (PowerShell 7.2+ null-conditional operator) + containerRegistry = @{ + containerRegistryName = $resourceDetails.containerRegistry?.ResourceName + containerRegistryRG = $resourceDetails.containerRegistry?.ResourceGroupName + } + } +} + +Function Deploy-Bicep { + Param( + [Parameter(Mandatory = $false)] + [PSCustomObject]$Details + ) + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "Deploying IPAM Migration Templates..." -ForegroundColor Yellow + Write-Host "=====================================================" -ForegroundColor Blue + + Write-LogFile -Message "=== Starting Bicep Deployment ===" -Level "INFO" + Write-LogFile -Message "Location: $script:location" -Level "INFO" + Write-LogFile -Message "Azure Cloud: $script:azureCloud" -Level "INFO" + Write-LogFile -Message "Private ACR: $script:privateAcr" -Level "INFO" + Write-LogFile -Message "Resource Details: $(ConvertTo-Json $Details -Depth 5 -Compress)" -Level "INFO" + + try { + # Instantiate deployment parameter object + Write-Host "📄 Preparing deployment parameters..." -ForegroundColor Cyan -NoNewline + $deploymentParameters = @{ + location = $script:location + azureCloud = $script:azureCloud + privateAcr = $script:privateAcr + resourceDetails = $Details + } + Write-LogFile -Message "Deployment parameters prepared: $(ConvertTo-Json $deploymentParameters -Depth 5 -Compress)" -Level "INFO" + Write-Host " ✅ Success" -ForegroundColor Green + + # Generate unique deployment name + $deploymentName = "ipamInfraMigrate-$(Get-Date -Format `"yyyyMMddhhmmsstt`")" + Write-LogFile -Message "Generated deployment name: $deploymentName" -Level "INFO" + Write-Host "🚀 Starting Bicep deployment..." -ForegroundColor Cyan -NoNewline + + # Verify main.bicep file exists + $bicepPath = Join-Path -Path $ROOT_DIR -ChildPath "migrate\main.bicep" + if (-not (Test-Path -Path $bicepPath)) { + Write-LogFile -Message "Bicep template not found at: $bicepPath" -Level "ERROR" + throw [System.InvalidOperationException]::new("Bicep template file not found at path: $bicepPath") + } + Write-LogFile -Message "Bicep template verified at: $bicepPath" -Level "INFO" + + # Deploy IPAM bicep template + Write-LogFile -Message "Executing New-AzDeployment with template: main.bicep" -Level "INFO" + $deployment = New-AzDeployment ` + -Name $deploymentName ` + -Location $script:location ` + -TemplateFile main.bicep ` + -TemplateParameterObject $deploymentParameters ` + -ErrorAction Stop + + Write-Host " ✅ Success" -ForegroundColor Green + Write-LogFile -Message "Bicep deployment completed successfully" -Level "SUCCESS" + Write-LogFile -Message "Deployment result: $(ConvertTo-Json $deployment -Depth 3 -Compress)" -Level "INFO" + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "✅ IPAM migration templates deployed successfully!" -ForegroundColor Green + Write-Host + + return $deployment + } + catch { + Write-Host " ❌ Failed" -ForegroundColor Red + Write-Host + Write-Host "❌ IPAM Bicep template deployment failed!" -ForegroundColor Red + Write-LogFile -Message "Bicep deployment failed: $($_.Exception.Message)" -Level "ERROR" -ErrorRecord $_ + throw [System.InvalidOperationException]::new("Failed to deploy IPAM Bicep templates: $($_.Exception.Message)", $_.Exception) + } +} + +Function Build-ContainerImage { + Param( + [Parameter(Mandatory = $true)] + [PSCustomObject]$ContainerDetails, + [Parameter(Mandatory = $true)] + [string]$TargetAcrResourceId + ) + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "Building and Pushing Container Image..." -ForegroundColor Yellow + Write-Host "=====================================================" -ForegroundColor Blue + + Write-LogFile -Message "=== Starting Container Image Build ===" -Level "INFO" + Write-LogFile -Message "Target ACR Resource ID: $TargetAcrResourceId" -Level "INFO" + Write-LogFile -Message "Container Details: $(ConvertTo-Json $ContainerDetails -Depth 3 -Compress)" -Level "INFO" + + try { + # Extract ACR details from Resource ID + Write-LogFile -Message "Extracting ACR details from Resource ID" -Level "INFO" + $acrDetails = Get-ResourceDetailsFromId -ResourceId $TargetAcrResourceId + $targetAcrName = $acrDetails.ResourceName + $acrResourceGroup = $acrDetails.ResourceGroupName + $subscriptionId = $acrDetails.SubscriptionId + Write-LogFile -Message "ACR Details - Name: $targetAcrName, ResourceGroup: $acrResourceGroup, Subscription: $subscriptionId" -Level "INFO" + + # Determine container type from the container details + $containerType = $ContainerDetails.ContainerImage + Write-LogFile -Message "Container type determined: $containerType" -Level "INFO" + if ([string]::IsNullOrWhiteSpace($containerType)) { + throw [System.InvalidOperationException]::new("Container image information is not available from the status API. Cannot determine the appropriate Dockerfile to use for building the image.") + } + + # Define container configuration mapping + $containerMap = @{ + debian = @{ + Extension = 'deb' + Port = 80 + Images = @{ + Build = 'node:22-slim' + Serve = 'python:3.11-slim' + } + } + rhel = @{ + Extension = 'rhel' + Port = 8080 + Images = @{ + Build = 'registry.access.redhat.com/ubi8/nodejs-22' + Serve = 'registry.access.redhat.com/ubi8/python-311' + } + } + } + Write-LogFile -Message "Container mapping configuration loaded for types: $(($containerMap.Keys -join ', '))" -Level "INFO" + + # Validate container type + if (-not $containerMap.ContainsKey($containerType)) { + $availableTypes = $containerMap.Keys -join ', ' + Write-LogFile -Message "Invalid container type '$containerType'. Available types: $availableTypes" -Level "ERROR" + throw [System.InvalidOperationException]::new("Unsupported container type '$containerType'. Supported types are: $availableTypes") + } + + # Determine Dockerfile path + $dockerFile = 'Dockerfile.' + $containerMap[$containerType].Extension + $dockerFilePath = Join-Path -Path $ROOT_DIR -ChildPath $dockerFile + Write-LogFile -Message "Dockerfile path determined: $dockerFilePath" -Level "INFO" + + # Verify Dockerfile exists + if (-not (Test-Path -Path $dockerFilePath)) { + Write-LogFile -Message "Dockerfile not found at path: $dockerFilePath" -Level "ERROR" + throw [System.InvalidOperationException]::new("Dockerfile not found at path '$dockerFilePath'. Please ensure the required Dockerfile exists for container type '$containerType'.") + } + Write-LogFile -Message "Dockerfile verified at path: $dockerFilePath" -Level "SUCCESS" + + Write-Host "🔨 Building IPAM container image (" -ForegroundColor Cyan -NoNewline + Write-Host "$containerType" -ForegroundColor Yellow -NoNewline + Write-Host ")..." -ForegroundColor Cyan -NoNewline + + # Log build parameters for troubleshooting + $buildArgs = @{ + Port = $containerMap[$containerType].Port + BuildImage = $containerMap[$containerType].Images.Build + ServeImage = $containerMap[$containerType].Images.Serve + } + Write-LogFile -Message "ACR build parameters: $(ConvertTo-Json $buildArgs -Compress)" -Level "INFO" + Write-LogFile -Message "Build command: az acr build -r $targetAcrName -t ipam:latest -f $dockerFilePath $ROOT_DIR --build-arg PORT=$($buildArgs.Port) --build-arg BUILD_IMAGE=$($buildArgs.BuildImage) --build-arg SERVE_IMAGE=$($buildArgs.ServeImage) --no-logs" -Level "INFO" + + # Execute ACR build command + $appBuildOutput = $( + az acr build -r $targetAcrName ` + -t ipam:latest ` + -f $dockerFilePath $ROOT_DIR ` + --build-arg PORT=$($containerMap[$containerType].Port) ` + --build-arg BUILD_IMAGE=$($containerMap[$containerType].Images.Build) ` + --build-arg SERVE_IMAGE=$($containerMap[$containerType].Images.Serve) ` + --no-logs + ) *>&1 + + Write-LogFile -Message "ACR build command exit code: $LASTEXITCODE" -Level "INFO" + Write-LogFile -Message "ACR build output: $($appBuildOutput -join ' ')" -Level "INFO" + + # Check build result + if ($LASTEXITCODE -ne 0) { + Write-Host " ❌ Failed" -ForegroundColor Red + Write-LogFile -Message "ACR build failed with exit code: $LASTEXITCODE" -Level "ERROR" + + # Extract build ID for error logging + $buildId = [regex]::Matches($appBuildOutput, "(?<=Queued a build with ID: )[\w]*").Value.Trim() + Write-LogFile -Message "Extracted build ID: $buildId" -Level "INFO" + + if ($buildId) { + Write-Host "📋 Fetching build logs for ID: $buildId..." -ForegroundColor Cyan -NoNewline + Write-LogFile -Message "Attempting to fetch detailed build logs for build ID: $buildId" -Level "INFO" + + try { + # Get current subscription and resource group for the ACR + $azContext = Get-AzContext + $currentSubscriptionId = $azContext.Subscription.Id + Write-LogFile -Message "Current PowerShell context subscription: $currentSubscriptionId" -Level "INFO" + + # Validate we're working with the same subscription + if ($subscriptionId -ne $currentSubscriptionId) { + Write-Warning "ACR is in subscription '$subscriptionId' but current context is '$currentSubscriptionId'. This may affect log retrieval." + Write-LogFile -Message "Subscription mismatch detected - ACR: $subscriptionId, Current: $currentSubscriptionId" -Level "WARNING" + } + + # Fetch detailed build logs + Write-LogFile -Message "Calling Get-BuildLogs function for detailed error analysis" -Level "INFO" + $buildLogs = Get-BuildLogs -SubscriptionId $subscriptionId -ResourceGroupName $acrResourceGroup -RegistryName $targetAcrName -BuildId $buildId + + Write-Host " ✅ Success" -ForegroundColor Green + # Write-Host "📋 Build logs retrieved successfully:" -ForegroundColor Yellow + # Write-Host $buildLogs -ForegroundColor Gray + Write-LogFile -Message "=== DETAILED BUILD LOGS ===" -Level "ERROR" + Write-LogFile -Message $buildLogs -Level "ERROR" + Write-LogFile -Message "=== END BUILD LOGS ===" -Level "ERROR" + + $errorMessage = "Container build failed with exit code $LASTEXITCODE. Build ID: $buildId. Detailed logs retrieved above." + } + catch { + Write-Host " ❌ Failed" -ForegroundColor Red + Write-Host "⚠️ Failed to retrieve build logs: $($_.Exception.Message)" -ForegroundColor Yellow + Write-LogFile -Message "Failed to retrieve build logs: $($_.Exception.Message)" -Level "ERROR" -ErrorRecord $_ + $errorMessage = "Container build failed with exit code $LASTEXITCODE. Build ID: $buildId. Output: $($appBuildOutput -join ' '). Failed to retrieve detailed logs: $($_.Exception.Message)" + } + } + else { + Write-LogFile -Message "No build ID found in ACR build output" -Level "ERROR" + $errorMessage = "Container build failed with exit code $LASTEXITCODE. Output: $($appBuildOutput -join ' '). No build ID found in output." + } + + Write-LogFile -Message "Final error message: $errorMessage" -Level "ERROR" + throw [System.InvalidOperationException]::new($errorMessage) + } + else { + Write-Host " ✅ Success" -ForegroundColor Green + Write-LogFile -Message "ACR build completed successfully" -Level "SUCCESS" + } + + # Generate new image reference + $newImageReference = "$targetAcrName.azurecr.io/ipam:latest" + + # Restart the WebApp to pick up the new image + Write-Host "🔄 Restarting WebApp to apply new container image..." -ForegroundColor Cyan -NoNewline + try { + # Extract WebApp details for restart + $webAppDetails = Get-ResourceDetailsFromId -ResourceId $details.WebAppResourceId + Restart-AzWebApp -ResourceGroupName $webAppDetails.ResourceGroupName -Name $webAppDetails.ResourceName -ErrorAction Stop | Out-Null + Write-Host " ✅ Success" -ForegroundColor Green + } + catch { + Write-Host " ❌ Failed" -ForegroundColor Red + Write-Warning "WebApp restart failed: $($_.Exception.Message). You may need to manually restart the WebApp to apply the new container image." + } + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "✅ Container image build and push completed successfully!" -ForegroundColor Green + Write-Host + + # Return only the image reference string + return $newImageReference + } + catch { + # Write-Host + Write-Host "❌ Container image build and push failed!" -ForegroundColor Red + throw [System.InvalidOperationException]::new("Failed to build and push container image: $($_.Exception.Message)", $_.Exception) + } +} + +# Log script start +Write-LogFile -Message "=== Azure IPAM Migration Script Started ===" -Level "INFO" +Write-LogFile -Message "Parameters: AppName=$AppName, ResourceGroupName=$ResourceGroupName, JsonFile=$JsonFile, NoVerify=$NoVerify, Force=$Force" -Level "INFO" +Write-LogFile -Message "Root Directory: $ROOT_DIR" -Level "INFO" +Write-LogFile -Message "Log File: $logFile" -Level "INFO" + +# Console output start +Write-Host + +# Determine resource discovery method based on whether JSON override file is provided +if ([string]::IsNullorEmpty($JsonFile)) { + # Auto-discovery mode: Extract configuration from existing WebApp + Write-Host "⚙️ Auto-Discovering Resource Details from WebApp Config..." -ForegroundColor Magenta + Write-Host + Write-LogFile -Message "Starting auto-discovery mode for ResourceGroup: $ResourceGroupName, AppName: $AppName" -Level "INFO" + + $details = Get-WebAppDetails -ResourceGroupName $ResourceGroupName -AppName $AppName + Write-LogFile -Message "Auto-discovery completed successfully" -Level "SUCCESS" + + # Display the table summary + Format-WebAppDetailsTable -Details $details +} +else { + # Override mode: Use administrator-provided JSON configuration + Write-Host "📄 Reading Resource Overrides from specified JSON File: " -ForegroundColor Magenta -NoNewline + Write-Host "$($JsonFile.FullName)" -ForegroundColor Yellow + Write-Host + Write-LogFile -Message "Using JSON override mode with file: $($JsonFile.FullName)" -Level "INFO" + + $jsonFilePath = Get-Item -Path $script:JsonFile + $details = Read-JsonData -JsonFilePath $jsonFilePath + Write-LogFile -Message "JSON override data loaded successfully" -Level "SUCCESS" + + # Display the table summary + Format-WebAppDetailsTable -Details $details +} + +# User confirmation before proceeding with migration +if (-not $Force -and -not (Get-UserConfirmation -Message "Please confirm the above resources should be used for the conversion process." -PromptText "Is this information accurate? Enter Y to continue or N to exit (Y/N)")) { + exit 1 +} + +# Verify resource existence before proceeding (unless NoVerify switch is set) +if ($NoVerify -eq $false) { + # Verify that all resources exist before proceeding + Test-ResourceExistence -ResourceDetails $details +} + +# Probe the WebApp Status API to get container details for image building +$containerDetails = Get-WebAppStatusDetails -Details $details + +# Azure CLI validation only required for private ACR scenarios (for ACR build command) +if($script:privateAcr) { + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "Verifying Azure CLI Configuration..." -ForegroundColor Yellow + Write-Host "=====================================================" -ForegroundColor Blue + + # Verify Minimum Azure CLI Version + Write-Host "🔍 Checking Azure CLI version..." -ForegroundColor Cyan -NoNewline + try { + $azureCliVer = [System.Version](az version | ConvertFrom-Json).'azure-cli' + + if($azureCliVer -lt $MIN_AZ_CLI_VER) { + Write-Host " ❌ Version $azureCliVer (Required: $MIN_AZ_CLI_VER or greater)" -ForegroundColor Red + throw [System.InvalidOperationException]::new("Azure CLI must be version $MIN_AZ_CLI_VER or greater! Current version: $azureCliVer") + } + else { + Write-Host " ✅ v$azureCliVer" -ForegroundColor Green + } + } + catch { + Write-Host " ❌ Error checking version" -ForegroundColor Red + throw [System.InvalidOperationException]::new("Failed to verify Azure CLI version: $($_.Exception.Message)", $_.Exception) + } + + # Verify Azure PowerShell and Azure CLI Contexts Match + # This ensures ACR build operations target the correct subscription + Write-Host "🔍 Verifying Azure CLI authentication..." -ForegroundColor Cyan -NoNewline + try { + $azureCliContext = $(az account show | ConvertFrom-Json) 2>$null + + if(-not $azureCliContext) { + Write-Host " ❌ Not authenticated" -ForegroundColor Red + throw [System.InvalidOperationException]::new("Azure CLI not logged in or no subscription has been selected!") + } + else { + Write-Host " ✅ Authenticated" -ForegroundColor Green + } + } + catch { + Write-Host " ❌ Authentication failed" -ForegroundColor Red + throw [System.InvalidOperationException]::new("Azure CLI authentication verification failed: $($_.Exception.Message)", $_.Exception) + } + + # Synchronize Azure PowerShell and CLI contexts to prevent deployment/build mismatches + Write-Host "🔍 Verifying Azure CLI context..." -ForegroundColor Cyan -NoNewline + try { + $azureCliSub = $azureCliContext.id + $azurePowerShellSub = (Get-AzContext).Subscription.Id + + if ($azurePowerShellSub -ne $azureCliSub) { + Write-Host " ❌ Context Mismatch" -ForegroundColor Red + Write-Host " ↳Azure PowerShell: $azurePowerShellSub" -ForegroundColor Gray + Write-Host " ↳Azure CLI: $azureCliSub" -ForegroundColor Gray + + Write-Host "🔧 Switching Azure CLI context..." -ForegroundColor Cyan -NoNewline + + $null = az account set --subscription $azurePowerShellSub 2>&1 + if ($LASTEXITCODE -ne 0) { + Write-Host " ❌ Failed" -ForegroundColor Red + throw "Failed to switch Azure CLI context to subscription '$azurePowerShellSub'" + } + + Write-Host " ✅ Success" -ForegroundColor Green + } + else { + Write-Host " ✅ Synchronized" -ForegroundColor Green + } + } + catch { + Write-Host " ❌ Context verification failed" -ForegroundColor Red + throw [System.InvalidOperationException]::new("Failed to verify context synchronization: $($_.Exception.Message)", $_.Exception) + } + + Write-Host "=====================================================" -ForegroundColor Blue + Write-Host "✅ Azure CLI configuration verified successfully!" -ForegroundColor Green + Write-Host +} + +Write-Host "🔄 Converting Resource Details to Migration Object..." -ForegroundColor Cyan +# Transform discovered resource details into format expected by Bicep templates +$migrationObject = ConvertTo-MigrationObject -Details $details +Write-Host + +# Final user confirmation before executing deployment and container operations +if (-not $Force -and -not (Get-UserConfirmation -Message "Please confirm you are ready to proceed with the Azure IPAM migration process." -PromptText "Proceed with migration? Enter Y to continue or N to exit (Y/N)")) { + Write-LogFile -Message "User declined to proceed with migration" -Level "INFO" + exit 1 +} + +Write-LogFile -Message "User confirmed migration process, beginning deployment phase" -Level "INFO" + +try { + # Deploy Bicep templates to update Azure IPAM infrastructure + Write-LogFile -Message "Starting Bicep template deployment" -Level "INFO" + Deploy-Bicep -Details $migrationObject | Out-Null + Write-LogFile -Message "Bicep template deployment completed successfully" -Level "SUCCESS" + + # Build and push container image to target ACR (if using private ACR) + if ($script:privateAcr) { + Write-LogFile -Message "Private ACR enabled, proceeding with container image build" -Level "INFO" + # Get target ACR resource ID from the details object + $targetAcrResourceId = $details.ContainerRegistryResourceId + + if ([string]::IsNullOrWhiteSpace($targetAcrResourceId)) { + Write-Warning "Private ACR is enabled but no target ACR resource ID found in details object. Skipping container image build and push." + Write-LogFile -Message "Private ACR enabled but no target ACR resource ID found, skipping container build" -Level "WARNING" + } + else { + Write-LogFile -Message "Building and pushing container image to ACR: $targetAcrResourceId" -Level "INFO" + # Build custom container image and push to private ACR, then restart WebApp + $newImageReference = Build-ContainerImage -ContainerDetails $containerDetails -TargetAcrResourceId $targetAcrResourceId + Write-Host "🎉 Migration complete!" -ForegroundColor Green + Write-LogFile -Message "Migration completed successfully with private ACR. New image reference: $newImageReference" -Level "SUCCESS" + } + } + else { + # Using public Azure IPAM registry - no custom build required + Write-Host "🎉 Migration completed using public Azure IPAM registry!" -ForegroundColor Green + Write-LogFile -Message "Migration completed successfully using public Azure IPAM registry" -Level "SUCCESS" + } + + Write-LogFile -Message "=== Azure IPAM Migration Script Completed Successfully ===" -Level "SUCCESS" +} +catch { + Write-LogFile -Message "=== CRITICAL ERROR: Migration Failed ===" -Level "ERROR" -ErrorRecord $_ + Write-LogFile -Message "Migration failed at main execution level: $($_.Exception.Message)" -Level "ERROR" -ErrorRecord $_ + Write-Host + Write-Host "💥 Migration failed! Check the log file for details." -ForegroundColor Red + Write-Host "📋 Log file location: $logFile" -ForegroundColor Yellow + throw +} + +Write-Host diff --git a/migrate/modules/appService.bicep b/migrate/modules/appService.bicep new file mode 100644 index 00000000..c4da561a --- /dev/null +++ b/migrate/modules/appService.bicep @@ -0,0 +1,265 @@ +@description('App Service Name') +param appServiceName string + +@description('App Service Plan Name') +param appServicePlanName string + +@description('CosmosDB URI') +param cosmosDbUri string + +@description('CosmosDB Database Name') +param databaseName string + +@description('CosmosDB Container Name') +param containerName string + +@description('KeyVault URI') +param keyVaultUri string + +@description('Deployment Location') +param location string = resourceGroup().location + +@description('Azure Cloud Enviroment') +param azureCloud string = 'AZURE_PUBLIC' + +@description('Managed Identity Id') +param managedIdentityId string + +@description('Managed Identity ClientId') +param managedIdentityClientId string + +@description('Log Analytics Worskpace ID') +param workspaceId string + +@description('Flag to Deploy Private Container Registry') +param privateAcr bool + +@description('Uri for Private Container Registry') +param privateAcrUri string + +// ACR Uri Variable +var acrUri = privateAcr ? privateAcrUri : 'azureipam.azurecr.io' + +resource appServicePlan 'Microsoft.Web/serverfarms@2021-02-01' = { + name: appServicePlanName + location: location + sku: { + name: 'P1v3' + size: 'P1v3' + tier: 'PremiumV3' + capacity: 1 + } + kind: 'linux' + properties: { + reserved: true + } +} + +resource appService 'Microsoft.Web/sites@2021-02-01' = { + name: appServiceName + location: location + kind: 'app,linux,container' + identity: { + type: 'UserAssigned' + userAssignedIdentities: { + '${managedIdentityId}': {} + } + } + properties: { + httpsOnly: true + serverFarmId: appServicePlan.id + keyVaultReferenceIdentity: managedIdentityId + siteConfig: { + acrUseManagedIdentityCreds: privateAcr ? true : false + acrUserManagedIdentityID: privateAcr ? managedIdentityClientId : null + alwaysOn: true + linuxFxVersion: 'DOCKER|${acrUri}/ipam:latest' + appCommandLine: '' + healthCheckPath: '/api/status' + appSettings: concat( + [ + { + name: 'AZURE_ENV' + value: azureCloud + } + { + name: 'COSMOS_URL' + value: cosmosDbUri + } + // { + // name: 'COSMOS_KEY' + // value: '@Microsoft.KeyVault(SecretUri=${keyVaultUri}secrets/COSMOS-KEY/)' + // } + { + name: 'DATABASE_NAME' + value: databaseName + } + { + name: 'CONTAINER_NAME' + value: containerName + } + { + name: 'MANAGED_IDENTITY_ID' + value: '@Microsoft.KeyVault(SecretUri=${keyVaultUri}secrets/IDENTITY-ID/)' + } + { + name: 'UI_APP_ID' + value: '@Microsoft.KeyVault(SecretUri=${keyVaultUri}secrets/UI-ID/)' + } + { + name: 'ENGINE_APP_ID' + value: '@Microsoft.KeyVault(SecretUri=${keyVaultUri}secrets/ENGINE-ID/)' + } + { + name: 'ENGINE_APP_SECRET' + value: '@Microsoft.KeyVault(SecretUri=${keyVaultUri}secrets/ENGINE-SECRET/)' + } + { + name: 'TENANT_ID' + value: '@Microsoft.KeyVault(SecretUri=${keyVaultUri}secrets/TENANT-ID/)' + } + { + name: 'KEYVAULT_URL' + value: keyVaultUri + } + { + name: 'WEBSITE_HEALTHCHECK_MAXPINGFAILURES' + value: '2' + } + { + name: 'WEBSITE_ENABLE_SYNC_UPDATE_SITE' + value: 'true' + } + { + name: 'DOCKER_REGISTRY_SERVER_URL' + value: privateAcr ? 'https://${privateAcrUri}' : 'https://index.docker.io/v1' + } + ] + ) + } + } +} + +resource appConfigLogs 'Microsoft.Web/sites/config@2021-02-01' = { + name: 'logs' + parent: appService + properties: { + detailedErrorMessages: { + enabled: true + } + failedRequestsTracing: { + enabled: true + } + httpLogs: { + fileSystem: { + enabled: true + retentionInDays: 7 + retentionInMb: 50 + } + } + } +} + +resource diagnosticSettingsPlan 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { + name: 'diagSettings' + scope: appServicePlan + properties: { + metrics: [ + { + category: 'AllMetrics' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + ] + workspaceId: workspaceId + } +} + +resource diagnosticSettingsApp 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { + name: 'diagSettings' + scope: appService + properties: { + logs: [ + { + category: 'AppServiceAntivirusScanAuditLogs' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'AppServiceHTTPLogs' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'AppServiceConsoleLogs' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'AppServiceAppLogs' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'AppServiceFileAuditLogs' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'AppServiceAuditLogs' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'AppServiceIPSecAuditLogs' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'AppServicePlatformLogs' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + ] + metrics: [ + { + category: 'AllMetrics' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + ] + workspaceId: workspaceId + } +} + +output appServiceHostName string = appService.properties.defaultHostName diff --git a/migrate/modules/cosmos.bicep b/migrate/modules/cosmos.bicep new file mode 100644 index 00000000..f3279aae --- /dev/null +++ b/migrate/modules/cosmos.bicep @@ -0,0 +1,89 @@ +@description('CosmosDB Account Name') +param cosmosAccountName string + +@description('Log Analytics Workspace ID') +param workspaceId string + +@description('Managed Identity PrincipalId') +param principalId string + +var dbContributor = '00000000-0000-0000-0000-000000000002' +var dbContributorId = '${resourceGroup().id}/providers/Microsoft.DocumentDB/databaseAccounts/${cosmosAccount.name}/sqlRoleDefinitions/${dbContributor}' +var dbContributorRoleAssignmentId = guid(dbContributor, principalId, cosmosAccount.id) + +resource cosmosAccount 'Microsoft.DocumentDB/databaseAccounts@2021-06-15' existing = { + name: cosmosAccountName +} + +resource diagnosticSettings 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { + name: 'diagSettings' + scope: cosmosAccount + properties: { + logs: [ + { + category: 'DataPlaneRequests' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'QueryRuntimeStatistics' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'PartitionKeyStatistics' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'PartitionKeyRUConsumption' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + { + category: 'ControlPlaneRequests' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + ] + metrics: [ + { + category: 'AllMetrics' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + ] + logAnalyticsDestinationType: 'Dedicated' + workspaceId: workspaceId + } +} + +resource sqlRoleAssignment 'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments@2023-04-15' = { + name: dbContributorRoleAssignmentId + parent: cosmosAccount + properties: { + roleDefinitionId: dbContributorId + principalId: principalId + scope: cosmosAccount.id + } +} + +output cosmosDocumentEndpoint string = cosmosAccount.properties.documentEndpoint diff --git a/migrate/modules/keyVault.bicep b/migrate/modules/keyVault.bicep new file mode 100644 index 00000000..ce7c226d --- /dev/null +++ b/migrate/modules/keyVault.bicep @@ -0,0 +1,88 @@ +@description('KeyVault Name') +param keyVaultName string + +@description('Deployment Location') +param location string = resourceGroup().location + +@description('Managed Identity PrincipalId') +param identityPrincipalId string + +@description('Managed Identity ClientId') +param identityClientId string + +@description('AzureAD TenantId') +param tenantId string = subscription().tenantId + +@description('Log Analytics Worskpace ID') +param workspaceId string + +var keyVaultUser = '4633458b-17de-408a-b874-0445c86b69e6' +var keyVaultUserId = subscriptionResourceId('Microsoft.Authorization/roleDefinitions', keyVaultUser) +var keyVaultUserRoleAssignmentId = guid(keyVaultUser, identityPrincipalId, keyVault.id) + +resource keyVault 'Microsoft.KeyVault/vaults@2021-11-01-preview' = { + name: keyVaultName + location: location + properties: { + enablePurgeProtection: true + enableRbacAuthorization: true + tenantId: tenantId + sku: { + name: 'standard' + family: 'A' + } + networkAcls: { + defaultAction: 'Allow' + bypass: 'AzureServices' + } + } +} + +resource identityId 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = { + parent: keyVault + name: 'IDENTITY-ID' + properties: { + value: identityClientId + } +} + +resource diagnosticSettings 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = { + name: 'diagSettings' + scope: keyVault + properties: { + logs: [ + { + categoryGroup: 'allLogs' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + ] + metrics: [ + { + category: 'AllMetrics' + enabled: true + retentionPolicy: { + days: 0 + enabled: false + } + } + ] + workspaceId: workspaceId + } +} + +resource keyVaultUserAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { + name: keyVaultUserRoleAssignmentId + scope: keyVault + properties: { + principalType: 'ServicePrincipal' + roleDefinitionId: keyVaultUserId + principalId: identityPrincipalId + } +} + +output keyVaultName string = keyVault.name +output keyVaultUri string = keyVault.properties.vaultUri diff --git a/migrate/modules/logAnalyticsWorkspace.bicep b/migrate/modules/logAnalyticsWorkspace.bicep new file mode 100644 index 00000000..d8296ef2 --- /dev/null +++ b/migrate/modules/logAnalyticsWorkspace.bicep @@ -0,0 +1,17 @@ +@description('Log Analytics Workspace Name') +param workspaceName string + +@description('Deployment Location') +param location string = resourceGroup().location + +resource workspace 'Microsoft.OperationalInsights/workspaces@2020-10-01' = { + name: workspaceName + location: location + properties: { + sku: { + name: 'PerGB2018' + } + } +} + +output workspaceId string = workspace.id diff --git a/migrate/overrides.jsonc b/migrate/overrides.jsonc new file mode 100644 index 00000000..472aab36 --- /dev/null +++ b/migrate/overrides.jsonc @@ -0,0 +1,44 @@ +[ + { + // Web App Resource Details + "ResourceType": "Microsoft.Web/sites", + "ResourceName": "ipam-mahjhdi3465ru", + "ResourceGroup": "ipam-rg-mahjhdi3465ru", + "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + }, + { + // App Service Plan Resource Details + "ResourceType": "Microsoft.Web/serverfarms", + "ResourceName": "ipam-asp-mahjhdi3465ru", + "ResourceGroup": "ipam-rg-mahjhdi3465ru", + "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + }, + { + // Managed Identity Resource Details + "ResourceType": "Microsoft.ManagedIdentity/userAssignedIdentities", + "ResourceName": "ipam-mi-mahjhdi3465ru", + "ResourceGroup": "ipam-rg-mahjhdi3465ru", + "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + }, + { + // Log Analytics Workspace Resource Details + "ResourceType": "Microsoft.OperationalInsights/workspaces", + "ResourceName": "ipam-law-mahjhdi3465ru", + "ResourceGroup": "ipam-rg-mahjhdi3465ru", + "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + }, + { + // Cosmos DB Account Resource Details + "ResourceType": "Microsoft.DocumentDB/databaseAccounts", + "ResourceName": "ipam-dbacct-mahjhdi3465ru", + "ResourceGroup": "ipam-rg-mahjhdi3465ru", + "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + }, + { + // Key Vault Resource Details + "ResourceType": "Microsoft.KeyVault/vaults", + "ResourceName": "ipam-kv-mahjhdi3465ru", + "ResourceGroup": "ipam-rg-mahjhdi3465ru", + "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + } +] From 4c19b10fa451b2afd341505561198b107fdd9ac6 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 4 Sep 2025 21:01:10 -0700 Subject: [PATCH 28/43] Updated NPM packages to address bugs and security fixes --- ui/package-lock.json | 715 +++++++++++++++++++++---------------------- ui/package.json | 34 +- 2 files changed, 372 insertions(+), 377 deletions(-) diff --git a/ui/package-lock.json b/ui/package-lock.json index 05b0dc61..880371de 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -8,21 +8,21 @@ "name": "azure-ipam-ui", "version": "3.5.0", "dependencies": { - "@azure/msal-browser": "^4.15.0", - "@azure/msal-react": "^3.0.15", + "@azure/msal-browser": "^4.22.0", + "@azure/msal-react": "^3.0.19", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", "@inovua/reactdatagrid-community": "^5.10.2", - "@mui/icons-material": "^7.2.0", - "@mui/lab": "^7.0.0-beta.14", - "@mui/material": "^7.2.0", - "@reduxjs/toolkit": "^2.8.2", - "@testing-library/jest-dom": "^6.6.3", + "@mui/icons-material": "^7.3.2", + "@mui/lab": "^7.0.0-beta.17", + "@mui/material": "^7.3.2", + "@reduxjs/toolkit": "^2.9.0", + "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", - "axios": "^1.10.0", - "echarts": "^5.6.0", - "echarts-for-react": "^3.0.2", + "axios": "^1.11.0", + "echarts": "^6.0.0", + "echarts-for-react": "^3.0.4", "globals": "^16.3.0", "lodash": "^4.17.21", "md5": "^2.3.0", @@ -33,19 +33,19 @@ "react-dom": "^18.3.1", "react-draggable": "^4.5.0", "react-redux": "^9.2.0", - "react-router": "^7.7.0", + "react-router": "^7.8.2", "spinners-react": "^1.0.11", - "web-vitals": "^5.0.3" + "web-vitals": "^5.1.0" }, "devDependencies": { - "@eslint/js": "^9.31.0", - "@vitejs/plugin-react": "^4.6.0", - "eslint": "^9.31.0", + "@eslint/js": "^9.34.0", + "@vitejs/plugin-react": "^5.0.2", + "eslint": "^9.34.0", "eslint-plugin-jest": "^29.0.1", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", - "serve": "^14.2.4", - "vite": "^7.0.5", + "serve": "^14.2.5", + "vite": "^7.1.4", "vite-plugin-eslint2": "^5.0.4" } }, @@ -69,36 +69,36 @@ } }, "node_modules/@azure/msal-browser": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.15.0.tgz", - "integrity": "sha512-+AIGTvpVz+FIx5CsM1y+nW0r/qOb/ChRdM8/Cbp+jKWC0Wdw4ldnwPdYOBi5NaALUQnYITirD9XMZX7LdklEzQ==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.22.0.tgz", + "integrity": "sha512-JLWHzAW1aZ/L190Th56jN+2t3T1dMvXOs1obXYLEr3ZWi81vVmBCt0di3mPvTTOiWoE0Cf/4hVQ/LINilqjObA==", "license": "MIT", "dependencies": { - "@azure/msal-common": "15.8.1" + "@azure/msal-common": "15.12.0" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.8.1.tgz", - "integrity": "sha512-ltIlFK5VxeJ5BurE25OsJIfcx1Q3H/IZg2LjV9d4vmH+5t4c1UCyRQ/HgKLgXuCZShs7qfc/TC95GYZfsUsJUQ==", + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.12.0.tgz", + "integrity": "sha512-4ucXbjVw8KJ5QBgnGJUeA07c8iznwlk5ioHIhI4ASXcXgcf2yRFhWzYOyWg/cI49LC9ekpFJeQtO3zjDTbl6TQ==", "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-react": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@azure/msal-react/-/msal-react-3.0.15.tgz", - "integrity": "sha512-nVOWlPrhemKya7GZyEONISQk4MDV2vOoV3638dqFmIPd+3WIi98ZS1HSpQsOw1YL9nBEImhwqrXKnC/MFWrKoA==", + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@azure/msal-react/-/msal-react-3.0.19.tgz", + "integrity": "sha512-309fo4+V0vUlZolMDv2w+JlZBH1Fr2/vpPtMbZNhGYjKrexEBWNx3uAPVCa4Vyf/egWxXYTXAcbRhd6+Wlp8Lg==", "license": "MIT", "engines": { "node": ">=10" }, "peerDependencies": { - "@azure/msal-browser": "^4.15.0", + "@azure/msal-browser": "^4.21.0", "react": "^16.8.0 || ^17 || ^18 || ^19" } }, @@ -127,22 +127,22 @@ } }, "node_modules/@babel/core": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", - "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", + "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", + "@babel/generator": "^7.28.3", "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.6", - "@babel/parser": "^7.28.0", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.3", + "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.0", - "@babel/types": "^7.28.0", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -165,13 +165,13 @@ "license": "MIT" }, "node_modules/@babel/generator": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", - "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.0", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -220,15 +220,15 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -276,26 +276,26 @@ } }, "node_modules/@babel/helpers": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", - "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz", + "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", - "@babel/types": "^7.27.6" + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", + "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.0" + "@babel/types": "^7.28.2" }, "bin": { "parser": "bin/babel-parser.js" @@ -337,9 +337,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", - "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", + "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -360,17 +360,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz", + "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", + "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", + "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", + "@babel/types": "^7.28.2", "debug": "^4.3.1" }, "engines": { @@ -378,9 +378,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz", - "integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -1008,9 +1008,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", - "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1018,9 +1018,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1068,9 +1068,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.31.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", - "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", + "version": "9.34.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz", + "integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==", "dev": true, "license": "MIT", "engines": { @@ -1091,13 +1091,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", - "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.14.0", + "@eslint/core": "^0.15.2", "levn": "^0.4.1" }, "engines": { @@ -1221,9 +1221,9 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.2.0.tgz", - "integrity": "sha512-d49s7kEgI5iX40xb2YPazANvo7Bx0BLg/MNRwv+7BVpZUzXj1DaVCKlQTDex3gy/0jsCb4w7AY2uH4t4AJvSog==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.2.tgz", + "integrity": "sha512-AOyfHjyDKVPGJJFtxOlept3EYEdLoar/RvssBTWVAvDJGIE676dLi2oT/Kx+FoVXFoA/JdV7DEMq/BVWV3KHRw==", "license": "MIT", "funding": { "type": "opencollective", @@ -1231,12 +1231,12 @@ } }, "node_modules/@mui/icons-material": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.2.0.tgz", - "integrity": "sha512-gRCspp3pfjHQyTmSOmYw7kUQTd9Udpdan4R8EnZvqPeoAtHnPzkvjBrBqzKaoAbbBp5bGF7BcD18zZJh4nwu0A==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.3.2.tgz", + "integrity": "sha512-TZWazBjWXBjR6iGcNkbKklnwodcwj0SrChCNHc9BhD9rBgET22J1eFhHsEmvSvru9+opDy3umqAimQjokhfJlQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6" + "@babel/runtime": "^7.28.3" }, "engines": { "node": ">=14.0.0" @@ -1246,7 +1246,7 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@mui/material": "^7.2.0", + "@mui/material": "^7.3.2", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, @@ -1257,15 +1257,15 @@ } }, "node_modules/@mui/lab": { - "version": "7.0.0-beta.14", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-7.0.0-beta.14.tgz", - "integrity": "sha512-pn+ZvylDcBKQOo17oa/PhtIA/UFQFq8RvpN+r/jHrztz/CjMDju2CWBne0txvQ5JIS8uTIGp2/IsTa7II1g5wg==", + "version": "7.0.0-beta.17", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-7.0.0-beta.17.tgz", + "integrity": "sha512-H8tSINm6Xgbi7o49MplAwks4tAEE6SpFNd9l7n4NURl0GSpOv0CZvgXKSJt4+6TmquDhE7pomHpHWJiVh/2aCg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.1", - "@mui/system": "^7.1.1", - "@mui/types": "^7.4.3", - "@mui/utils": "^7.1.1", + "@babel/runtime": "^7.28.3", + "@mui/system": "^7.3.2", + "@mui/types": "^7.4.6", + "@mui/utils": "^7.3.2", "clsx": "^2.1.1", "prop-types": "^15.8.1" }, @@ -1279,8 +1279,8 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material": "^7.1.2", - "@mui/material-pigment-css": "^7.1.1", + "@mui/material": "^7.3.2", + "@mui/material-pigment-css": "^7.3.2", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -1301,22 +1301,22 @@ } }, "node_modules/@mui/material": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.2.0.tgz", - "integrity": "sha512-NTuyFNen5Z2QY+I242MDZzXnFIVIR6ERxo7vntFi9K1wCgSwvIl0HcAO2OOydKqqKApE6omRiYhpny1ZhGuH7Q==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.2.tgz", + "integrity": "sha512-qXvbnawQhqUVfH1LMgMaiytP+ZpGoYhnGl7yYq2x57GYzcFL/iPzSZ3L30tlbwEjSVKNYcbiKO8tANR1tadjUg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6", - "@mui/core-downloads-tracker": "^7.2.0", - "@mui/system": "^7.2.0", - "@mui/types": "^7.4.4", - "@mui/utils": "^7.2.0", + "@babel/runtime": "^7.28.3", + "@mui/core-downloads-tracker": "^7.3.2", + "@mui/system": "^7.3.2", + "@mui/types": "^7.4.6", + "@mui/utils": "^7.3.2", "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.12", "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1", - "react-is": "^19.1.0", + "react-is": "^19.1.1", "react-transition-group": "^4.4.5" }, "engines": { @@ -1329,7 +1329,7 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material-pigment-css": "^7.2.0", + "@mui/material-pigment-css": "^7.3.2", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -1350,13 +1350,13 @@ } }, "node_modules/@mui/private-theming": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.2.0.tgz", - "integrity": "sha512-y6N1Yt3T5RMxVFnCh6+zeSWBuQdNDm5/UlM0EAYZzZR/1u+XKJWYQmbpx4e+F+1EpkYi3Nk8KhPiQDi83M3zIw==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.2.tgz", + "integrity": "sha512-ha7mFoOyZGJr75xeiO9lugS3joRROjc8tG1u4P50dH0KR7bwhHznVMcYg7MouochUy0OxooJm/OOSpJ7gKcMvg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6", - "@mui/utils": "^7.2.0", + "@babel/runtime": "^7.28.3", + "@mui/utils": "^7.3.2", "prop-types": "^15.8.1" }, "engines": { @@ -1377,12 +1377,12 @@ } }, "node_modules/@mui/styled-engine": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.2.0.tgz", - "integrity": "sha512-yq08xynbrNYcB1nBcW9Fn8/h/iniM3ewRguGJXPIAbHvxEF7Pz95kbEEOAAhwzxMX4okhzvHmk0DFuC5ayvgIQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.2.tgz", + "integrity": "sha512-PkJzW+mTaek4e0nPYZ6qLnW5RGa0KN+eRTf5FA2nc7cFZTeM+qebmGibaTLrgQBy3UpcpemaqfzToBNkzuxqew==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6", + "@babel/runtime": "^7.28.3", "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", "@emotion/sheet": "^1.4.0", @@ -1411,16 +1411,16 @@ } }, "node_modules/@mui/system": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.2.0.tgz", - "integrity": "sha512-PG7cm/WluU6RAs+gNND2R9vDwNh+ERWxPkqTaiXQJGIFAyJ+VxhyKfzpdZNk0z0XdmBxxi9KhFOpgxjehf/O0A==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.2.tgz", + "integrity": "sha512-9d8JEvZW+H6cVkaZ+FK56R53vkJe3HsTpcjMUtH8v1xK6Y1TjzHdZ7Jck02mGXJsE6MQGWVs3ogRHTQmS9Q/rA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6", - "@mui/private-theming": "^7.2.0", - "@mui/styled-engine": "^7.2.0", - "@mui/types": "^7.4.4", - "@mui/utils": "^7.2.0", + "@babel/runtime": "^7.28.3", + "@mui/private-theming": "^7.3.2", + "@mui/styled-engine": "^7.3.2", + "@mui/types": "^7.4.6", + "@mui/utils": "^7.3.2", "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -1451,12 +1451,12 @@ } }, "node_modules/@mui/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.4.tgz", - "integrity": "sha512-p63yhbX52MO/ajXC7hDHJA5yjzJekvWD3q4YDLl1rSg+OXLczMYPvTuSuviPRCgRX8+E42RXz1D/dz9SxPSlWg==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.6.tgz", + "integrity": "sha512-NVBbIw+4CDMMppNamVxyTccNv0WxtDb7motWDlMeSC8Oy95saj1TIZMGynPpFLePt3yOD8TskzumeqORCgRGWw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6" + "@babel/runtime": "^7.28.3" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -1468,17 +1468,17 @@ } }, "node_modules/@mui/utils": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.2.0.tgz", - "integrity": "sha512-O0i1GQL6MDzhKdy9iAu5Yr0Sz1wZjROH1o3aoztuivdCXqEeQYnEjTDiRLGuFxI9zrUbTHBwobMyQH5sNtyacw==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.2.tgz", + "integrity": "sha512-4DMWQGenOdLnM3y/SdFQFwKsCLM+mqxzvoWp9+x2XdEzXapkznauHLiXtSohHs/mc0+5/9UACt1GdugCX2te5g==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6", - "@mui/types": "^7.4.4", + "@babel/runtime": "^7.28.3", + "@mui/types": "^7.4.6", "@types/prop-types": "^15.7.15", "clsx": "^2.1.1", "prop-types": "^15.8.1", - "react-is": "^19.1.0" + "react-is": "^19.1.1" }, "engines": { "node": ">=14.0.0" @@ -1542,9 +1542,9 @@ } }, "node_modules/@reduxjs/toolkit": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.8.2.tgz", - "integrity": "sha512-MYlOhQ0sLdw4ud48FoC5w0dH9VfWQjtCjreKwYTT3l+r427qYC5Y8PihNutepr8XrNaBUDQo9khWUwQxZaqt5A==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.9.0.tgz", + "integrity": "sha512-fSfQlSRu9Z5yBkvsNhYF2rPS8cGXn/TZVrlwN1948QyZ8xMZ0JvP50S2acZNaf+o63u6aEeMjipFyksjIcWrog==", "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", @@ -1568,9 +1568,9 @@ } }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.19", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz", - "integrity": "sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.34.tgz", + "integrity": "sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==", "dev": true, "license": "MIT" }, @@ -1598,9 +1598,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", - "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", "cpu": [ "arm" ], @@ -1612,9 +1612,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", - "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", "cpu": [ "arm64" ], @@ -1626,9 +1626,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", - "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", "cpu": [ "arm64" ], @@ -1640,9 +1640,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", - "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", "cpu": [ "x64" ], @@ -1654,9 +1654,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", - "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", "cpu": [ "arm64" ], @@ -1668,9 +1668,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", - "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", "cpu": [ "x64" ], @@ -1682,9 +1682,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", - "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", "cpu": [ "arm" ], @@ -1696,9 +1696,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", - "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", "cpu": [ "arm" ], @@ -1710,9 +1710,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", - "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", "cpu": [ "arm64" ], @@ -1724,9 +1724,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", - "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", "cpu": [ "arm64" ], @@ -1738,9 +1738,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", - "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", "cpu": [ "loong64" ], @@ -1751,10 +1751,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", - "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", "cpu": [ "ppc64" ], @@ -1766,9 +1766,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", - "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", "cpu": [ "riscv64" ], @@ -1780,9 +1780,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", - "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", "cpu": [ "riscv64" ], @@ -1794,9 +1794,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", - "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", "cpu": [ "s390x" ], @@ -1808,9 +1808,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", - "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", "cpu": [ "x64" ], @@ -1822,9 +1822,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", - "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", "cpu": [ "x64" ], @@ -1836,9 +1836,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", - "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", "cpu": [ "arm64" ], @@ -1850,9 +1850,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", - "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", "cpu": [ "ia32" ], @@ -1864,9 +1864,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", - "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", "cpu": [ "x64" ], @@ -1909,16 +1909,16 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", - "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "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==", + "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", - "chalk": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", - "lodash": "^4.17.21", + "picocolors": "^1.1.1", "redent": "^3.0.0" }, "engines": { @@ -1927,18 +1927,6 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, "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", @@ -2032,9 +2020,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, @@ -2042,7 +2030,8 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/@types/lodash": { "version": "4.17.13", @@ -2250,24 +2239,24 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz", - "integrity": "sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.0.2.tgz", + "integrity": "sha512-tmyFgixPZCx2+e6VO9TNITWcCQl8+Nl/E8YbAyPVv85QCc7/A3JrdfG2A8gIzvVhWuzMOVrFW1aReaNxrI6tbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", + "@babel/core": "^7.28.3", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-beta.19", + "@rolldown/pluginutils": "1.0.0-beta.34", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "node_modules/@zeit/schemas": { @@ -2276,19 +2265,6 @@ "integrity": "sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==", "dev": true }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -2578,7 +2554,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, "node_modules/available-typed-arrays": { "version": "1.0.7", @@ -2597,13 +2574,13 @@ } }, "node_modules/axios": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", - "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -2749,7 +2726,6 @@ "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", @@ -2912,6 +2888,7 @@ "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" }, @@ -2924,6 +2901,7 @@ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -2932,28 +2910,40 @@ } }, "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, + "license": "MIT", "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", + "bytes": "3.1.2", + "compressible": "~2.0.18", "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", "vary": "~1.1.2" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/compression/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -2962,7 +2952,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", @@ -3173,6 +3164,7 @@ "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" } @@ -3217,7 +3209,6 @@ "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", @@ -3235,25 +3226,26 @@ "dev": true }, "node_modules/echarts": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.6.0.tgz", - "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-6.0.0.tgz", + "integrity": "sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==", "license": "Apache-2.0", "dependencies": { "tslib": "2.3.0", - "zrender": "5.6.1" + "zrender": "6.0.0" } }, "node_modules/echarts-for-react": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/echarts-for-react/-/echarts-for-react-3.0.2.tgz", - "integrity": "sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/echarts-for-react/-/echarts-for-react-3.0.4.tgz", + "integrity": "sha512-rc7SNdr0JoMTkMJspp9ejlZAoipv2mMwbI30ggIgxSZMELdX36C2aJREvJ9OSkyetC/RoO1s7VrefXUrUAMClg==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "size-sensor": "^1.0.1" }, "peerDependencies": { - "echarts": "^3.0.0 || ^4.0.0 || ^5.0.0", + "echarts": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", "react": "^15.0.0 || >=16.0.0" } }, @@ -3351,7 +3343,6 @@ "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" @@ -3361,7 +3352,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -3398,7 +3388,6 @@ "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" @@ -3411,7 +3400,6 @@ "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", @@ -3513,20 +3501,20 @@ } }, "node_modules/eslint": { - "version": "9.31.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz", - "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==", + "version": "9.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.34.0.tgz", + "integrity": "sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.0", - "@eslint/core": "^0.15.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.31.0", - "@eslint/plugin-kit": "^0.3.1", + "@eslint/js": "9.34.0", + "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -3692,19 +3680,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -3857,11 +3832,14 @@ } }, "node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "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" }, @@ -3971,12 +3949,15 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "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": { @@ -4049,7 +4030,6 @@ "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", @@ -4074,7 +4054,6 @@ "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", @@ -4166,7 +4145,6 @@ "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" @@ -4228,7 +4206,6 @@ "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" @@ -4241,7 +4218,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -5046,7 +5022,6 @@ "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" @@ -5198,10 +5173,11 @@ "dev": true }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5360,10 +5336,11 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5525,10 +5502,11 @@ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "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" }, @@ -5746,9 +5724,9 @@ } }, "node_modules/react-is": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", - "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.1.tgz", + "integrity": "sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA==", "license": "MIT" }, "node_modules/react-redux": { @@ -5785,9 +5763,9 @@ } }, "node_modules/react-router": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.7.0.tgz", - "integrity": "sha512-3FUYSwlvB/5wRJVTL/aavqHmfUKe0+Xm9MllkYgGo9eDwNdkvwlJGjpPxono1kCycLt6AnDTgjmXvK3/B4QGuw==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.8.2.tgz", + "integrity": "sha512-7M2fR1JbIZ/jFWqelpvSZx+7vd7UlBTfdZqf6OSdF9g6+sfdqJDAWcak6ervbHph200ePlu+7G8LdoiC3ReyAQ==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -5967,13 +5945,13 @@ } }, "node_modules/rollup": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", - "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", + "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.7" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -5983,26 +5961,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.41.1", - "@rollup/rollup-android-arm64": "4.41.1", - "@rollup/rollup-darwin-arm64": "4.41.1", - "@rollup/rollup-darwin-x64": "4.41.1", - "@rollup/rollup-freebsd-arm64": "4.41.1", - "@rollup/rollup-freebsd-x64": "4.41.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", - "@rollup/rollup-linux-arm-musleabihf": "4.41.1", - "@rollup/rollup-linux-arm64-gnu": "4.41.1", - "@rollup/rollup-linux-arm64-musl": "4.41.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-musl": "4.41.1", - "@rollup/rollup-linux-s390x-gnu": "4.41.1", - "@rollup/rollup-linux-x64-gnu": "4.41.1", - "@rollup/rollup-linux-x64-musl": "4.41.1", - "@rollup/rollup-win32-arm64-msvc": "4.41.1", - "@rollup/rollup-win32-ia32-msvc": "4.41.1", - "@rollup/rollup-win32-x64-msvc": "4.41.1", + "@rollup/rollup-android-arm-eabi": "4.46.2", + "@rollup/rollup-android-arm64": "4.46.2", + "@rollup/rollup-darwin-arm64": "4.46.2", + "@rollup/rollup-darwin-x64": "4.46.2", + "@rollup/rollup-freebsd-arm64": "4.46.2", + "@rollup/rollup-freebsd-x64": "4.46.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", + "@rollup/rollup-linux-arm-musleabihf": "4.46.2", + "@rollup/rollup-linux-arm64-gnu": "4.46.2", + "@rollup/rollup-linux-arm64-musl": "4.46.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", + "@rollup/rollup-linux-ppc64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-musl": "4.46.2", + "@rollup/rollup-linux-s390x-gnu": "4.46.2", + "@rollup/rollup-linux-x64-gnu": "4.46.2", + "@rollup/rollup-linux-x64-musl": "4.46.2", + "@rollup/rollup-win32-arm64-msvc": "4.46.2", + "@rollup/rollup-win32-ia32-msvc": "4.46.2", + "@rollup/rollup-win32-x64-msvc": "4.46.2", "fsevents": "~2.3.2" } }, @@ -6050,10 +6028,25 @@ } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, "node_modules/safe-push-apply": { "version": "1.0.0", @@ -6109,10 +6102,11 @@ } }, "node_modules/serve": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.4.tgz", - "integrity": "sha512-qy1S34PJ/fcY8gjVGszDB3EXiPSk5FKhUa7tQe0UPRddxRidc2V6cNHPNewbE1D7MAkgLuWEt3Vw56vYy73tzQ==", + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.5.tgz", + "integrity": "sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA==", "dev": true, + "license": "MIT", "dependencies": { "@zeit/schemas": "2.36.0", "ajv": "8.12.0", @@ -6121,7 +6115,7 @@ "chalk": "5.0.1", "chalk-template": "0.4.0", "clipboardy": "3.0.0", - "compression": "1.7.4", + "compression": "1.8.1", "is-port-reachable": "4.0.0", "serve-handler": "6.1.6", "update-check": "1.5.4" @@ -6862,22 +6856,23 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/vite": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.5.tgz", - "integrity": "sha512-1mncVwJxy2C9ThLwz0+2GKZyEXuC3MyWtAAlNftlZZXZDP3AJt5FmwcMit/IGGaNZ8ZOB2BNO/HFUB+CpN0NQw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.4.tgz", + "integrity": "sha512-X5QFK4SGynAeeIt+A7ZWnApdUyHYm+pzv/8/A57LqSGcI88U6R6ipOs3uCesdc6yl7nl+zNO0t8LmqAdXcQihw==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", - "fdir": "^6.4.6", - "picomatch": "^4.0.2", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", "postcss": "^8.5.6", - "rollup": "^4.40.0", + "rollup": "^4.43.0", "tinyglobby": "^0.2.14" }, "bin": { @@ -6973,9 +6968,9 @@ } }, "node_modules/web-vitals": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.0.3.tgz", - "integrity": "sha512-4KmOFYxj7qT6RAdCH0SWwq8eKeXNhAFXR4PmgF6nrWFmrJ41n7lq3UCA6UK0GebQ4uu+XP8e8zGjaDO3wZlqTg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.1.0.tgz", + "integrity": "sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==", "license": "Apache-2.0" }, "node_modules/which": { @@ -7170,9 +7165,9 @@ } }, "node_modules/zrender": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz", - "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-6.0.0.tgz", + "integrity": "sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==", "license": "BSD-3-Clause", "dependencies": { "tslib": "2.3.0" diff --git a/ui/package.json b/ui/package.json index 9478734d..00f054d0 100644 --- a/ui/package.json +++ b/ui/package.json @@ -4,21 +4,21 @@ "type": "module", "private": true, "dependencies": { - "@azure/msal-browser": "^4.15.0", - "@azure/msal-react": "^3.0.15", + "@azure/msal-browser": "^4.22.0", + "@azure/msal-react": "^3.0.19", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", "@inovua/reactdatagrid-community": "^5.10.2", - "@mui/icons-material": "^7.2.0", - "@mui/lab": "^7.0.0-beta.14", - "@mui/material": "^7.2.0", - "@reduxjs/toolkit": "^2.8.2", - "@testing-library/jest-dom": "^6.6.3", + "@mui/icons-material": "^7.3.2", + "@mui/lab": "^7.0.0-beta.17", + "@mui/material": "^7.3.2", + "@reduxjs/toolkit": "^2.9.0", + "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", - "axios": "^1.10.0", - "echarts": "^5.6.0", - "echarts-for-react": "^3.0.2", + "axios": "^1.11.0", + "echarts": "^6.0.0", + "echarts-for-react": "^3.0.4", "globals": "^16.3.0", "lodash": "^4.17.21", "md5": "^2.3.0", @@ -29,9 +29,9 @@ "react-dom": "^18.3.1", "react-draggable": "^4.5.0", "react-redux": "^9.2.0", - "react-router": "^7.7.0", + "react-router": "^7.8.2", "spinners-react": "^1.0.11", - "web-vitals": "^5.0.3" + "web-vitals": "^5.1.0" }, "scripts": { "start": "vite", @@ -50,14 +50,14 @@ ] }, "devDependencies": { - "@eslint/js": "^9.31.0", - "@vitejs/plugin-react": "^4.6.0", - "eslint": "^9.31.0", + "@eslint/js": "^9.34.0", + "@vitejs/plugin-react": "^5.0.2", + "eslint": "^9.34.0", "eslint-plugin-jest": "^29.0.1", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", - "serve": "^14.2.4", - "vite": "^7.0.5", + "serve": "^14.2.5", + "vite": "^7.1.4", "vite-plugin-eslint2": "^5.0.4" } } From a74ed2598fbcf8d52f60f9b83d20d9801bf2e6b7 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Thu, 4 Sep 2025 21:10:33 -0700 Subject: [PATCH 29/43] Fixed linting issues and added details about migration folder --- README.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index fb49beed..1c70182b 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,7 @@ description: "IPAM - Azure IP Address Management made easy!" --- --> -# Azure IPAM - - -Azure IPAM is a lightweight solution developed on top of the Azure platform designed to help Azure customers manage their IP Address space easily and effectively. + + +# Azure IPAM + +Azure IPAM is a lightweight solution developed on top of the Azure platform designed to help Azure customers manage their IP Address space easily and effectively. ## Repo Contents @@ -31,11 +33,12 @@ Azure IPAM is a lightweight solution developed on top of the Azure platform desi |----------------------|---------------------------------------------------------------| | `.github/` | Bug Report, Issue Templates and GitHub Actions | | `.vscode/` | VSCode Configuration | -| `deploy/` | Deployment Bicep Templates & PowerShell Deployment Scripts | +| `deploy/` | Deployment Bicep Templates & PowerShell Deployment Script | | `assets/` | Compiled ZIP Archive | | `docs/` | Documentation Folder | | `engine/` | Engine Application Code | | `examples/` | Example Templates, Scripts and Code Snippets for Azure IPAM | +| `migrate/` | Migration Bicep Templates & Powershell Migration Script | | `lb/` | Load Balancer (NGINX) Configs | | `tests/` | Testing Scripts | | `tools/` | Lifecycle Scripts (Build/Version/Update) | @@ -58,10 +61,11 @@ Azure IPAM is a lightweight solution developed on top of the Azure platform desi ## Documentation -IPAM uses both [Docsify](https://docsify.js.org/) and [GitHub Pages](https://docs.github.com/en/github/working-with-github-pages) to present the project documentation, which can be found [here](https://azure.github.io/ipam/) +IPAM uses both [Docsify](https://docsify.js.org/) and [GitHub Pages](https://docs.github.com/en/github/working-with-github-pages) for all [project documentation](https://azure.github.io/ipam/). ## Questions or Comments for the team? -The IPAM team welcomes questions and contributions from the community. We have set up a GitHub Discussions page [here](https://github.com/Azure/ipam/discussions) to make it easy to engage with the IPAM team without opening an issue. + +The IPAM team welcomes questions and contributions from the community. We have set up a [GitHub Discussions](https://github.com/Azure/ipam/discussions) page to make it easy to engage with the IPAM team without opening an issue. ## FAQ @@ -69,11 +73,13 @@ The IPAM team welcomes questions and contributions from the community. We have s You realize that you do not have a clear picture as to what is deployed into your Azure environment and connected to your private IP address space. Or, you would like a way to easily manage, assign, and track your private IP addess space usage! **What does the roadmap for IPAM look like?** + - We are assessing leveraging Azure Container Apps for hosting the two containers that make up the IPAM application - We are assessing support for multiple Tenants, as today the tool is designed with a single Tenant in mind - We are working on capturing IP address infromation for resources that support hybrid connectivity (ie Gateways) **Who are the awesome people that built this solution??** + Matt and Harvey are Architects at Microsoft! We are always on the look out for interesting ways to help our customers overcome their challenges! ## Contributing From 74264190e25d6e512b948719969f817753d1b41e Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Sun, 7 Sep 2025 21:42:46 -0700 Subject: [PATCH 30/43] Updated legacy Compose detection to not rely on Status API --- deploy/update.ps1 | 67 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 21 deletions(-) diff --git a/deploy/update.ps1 b/deploy/update.ps1 index d4f901ee..a9bba34b 100644 --- a/deploy/update.ps1 +++ b/deploy/update.ps1 @@ -136,6 +136,36 @@ Function Get-BuildLogs { return $logs } +Function Set-HealthCheck { + Param( + [Parameter(Mandatory=$true)] + [string]$AppName, + [Parameter(Mandatory=$true)] + [string]$ResourceGroupName + ) + + Set-AzResource ` + -ResourceGroupName $ResourceGroupName ` + -ResourceType "Microsoft.Web/sites/config" ` + -ResourceName "${AppName}/web" ` + -ApiVersion "2023-12-01" ` + -Properties @{ healthCheckPath = "/api/status" } ` + -Force ` + | Out-Null + + $existing = @{} + + $site = Get-AzWebApp -ResourceGroupName $ResourceGroupName -Name $AppName + $site.SiteConfig.AppSettings | ForEach-Object { $existing[$_.Name] = $_.Value } + $existing["WEBSITE_HEALTHCHECK_MAXPINGFAILURES"] = "2" + + Set-AzWebApp ` + -ResourceGroupName $ResourceGroupName ` + -Name $AppName ` + -AppSettings $existing ` + | Out-Null +} + Function Restart-IpamApp { Param( [Parameter(Mandatory=$true)] @@ -320,20 +350,7 @@ try { Write-Host "INFO: Application exists, detected type is " -ForegroundColor Green -NoNewline Write-Host $appType -ForegroundColor Cyan - Write-Host "INFO: Probing Status API for deployment details..." -ForegroundColor Green - - $appUri = $existingApp.HostNames[0] - $statusUri = "https://${appUri}/api/status" - $status = Invoke-RestMethod -Method Get -Uri $statusUri -ErrorVariable statusErr -ErrorAction SilentlyContinue - - if ($statusErr) { - Write-Host "ERROR: Unable to reach IPAM Status API!" -ForegroundColor Red - throw $statusErr - } - - $stackType = $status.stack - - if($stackType -eq 'LegacyCompose') { + if($isContainer -and $existingApp.SiteConfig.LinuxFxVersion.StartsWith("COMPOSE|")) { Write-Host "WARNING: Legacy Docker Compose detected!" -ForegroundColor Yellow Write-Host Write-Host "Please follow the migration guide at " -ForegroundColor Blue -NoNewline @@ -342,6 +359,13 @@ try { exit } + if ($null -eq $existingApp.SiteConfig.HealthCheckPath) { + Write-Host "WARNING: Health Check is missing!" -ForegroundColor Yellow + Write-Host "INFO: Adding application health check..." -ForegroundColor Green + + Set-HealthCheck -ResourceGroupName $ResourceGroupName -AppName $AppName + } + if ($isContainer) { $appAcr = $existingApp.SiteConfig.LinuxFxVersion.Split('|')[1].Split('/')[0] $privateAcr = $appAcr -eq $IPAM_PUBLIC_ACR ? $false : $true @@ -429,14 +453,15 @@ try { if (-not $isFunction) { Write-Host "INFO: Detecting container distro..." -ForegroundColor Green - # $appUri = $existingApp.HostNames[0] - # $statusUri = "https://${appUri}/api/status" - # $status = Invoke-RestMethod -Method Get -Uri $statusUri -ErrorVariable statusErr -ErrorAction SilentlyContinue + $appUri = $existingApp.HostNames[0] + $statusUri = "https://${appUri}/api/status" - # if ($statusErr) { - # Write-Host "ERROR: Unable to detect container distro!" -ForegroundColor Red - # throw $statusErr - # } + try { + $status = Invoke-RestMethod -Method Get -Uri $statusUri -ErrorVariable statusErr -ErrorAction SilentlyContinue + } catch { + Write-Host "ERROR: Unable to detect container distro!" -ForegroundColor Red + throw $_ + } $containerType = $status.container.image_id } From 7f5f40dfcde0f679a7327b3a1814dab54c51295c Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Sun, 7 Sep 2025 21:43:04 -0700 Subject: [PATCH 31/43] Removed uneeded FAQ entry --- docs/migration/README.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/docs/migration/README.md b/docs/migration/README.md index 7add38b4..d0503081 100644 --- a/docs/migration/README.md +++ b/docs/migration/README.md @@ -436,7 +436,7 @@ In the evant a migration issue should occur, you can rollback to your previous c - Container image replacement - App Service restart -Expected downtime: 2-5 minutes +Expected downtime: 10-15 minutes ### Q: What happens to my existing data? @@ -447,14 +447,6 @@ Expected downtime: 2-5 minutes - App settings are migrated - User configurations are preserved -### Q: Can I migrate during business hours? - -**A**: While possible, it's recommended to: - -- Schedule during maintenance windows -- Notify users of potential brief interruption -- Test migration in development environment first - ### Q: What if my deployment uses custom configurations? **A**: The script handles most custom configurations automatically, however, for complex setups: From 5b154594da2aceae490f64436c50d6cf0bc76537 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Sun, 7 Sep 2025 21:43:17 -0700 Subject: [PATCH 32/43] Update NPM packages to latest versions --- ui/package-lock.json | 27 ++++++++++++++------------- ui/package.json | 4 ++-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/ui/package-lock.json b/ui/package-lock.json index 880371de..209badae 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -38,9 +38,9 @@ "web-vitals": "^5.1.0" }, "devDependencies": { - "@eslint/js": "^9.34.0", + "@eslint/js": "^9.35.0", "@vitejs/plugin-react": "^5.0.2", - "eslint": "^9.34.0", + "eslint": "^9.35.0", "eslint-plugin-jest": "^29.0.1", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", @@ -954,10 +954,11 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "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==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -1068,9 +1069,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.34.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz", - "integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==", + "version": "9.35.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.35.0.tgz", + "integrity": "sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==", "dev": true, "license": "MIT", "engines": { @@ -3501,19 +3502,19 @@ } }, "node_modules/eslint": { - "version": "9.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.34.0.tgz", - "integrity": "sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==", + "version": "9.35.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.35.0.tgz", + "integrity": "sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.34.0", + "@eslint/js": "9.35.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", diff --git a/ui/package.json b/ui/package.json index 00f054d0..b74141ef 100644 --- a/ui/package.json +++ b/ui/package.json @@ -50,9 +50,9 @@ ] }, "devDependencies": { - "@eslint/js": "^9.34.0", + "@eslint/js": "^9.35.0", "@vitejs/plugin-react": "^5.0.2", - "eslint": "^9.34.0", + "eslint": "^9.35.0", "eslint-plugin-jest": "^29.0.1", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", From 047fb9b9dbef49bcd76e6696c6f64852ebe09ec0 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 8 Sep 2025 12:28:04 -0700 Subject: [PATCH 33/43] Improved error handling and addressed PSScriptAnalyzer warnings --- tools/build.ps1 | 120 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 84 insertions(+), 36 deletions(-) diff --git a/tools/build.ps1 b/tools/build.ps1 index 57ce1225..ce7b7e51 100644 --- a/tools/build.ps1 +++ b/tools/build.ps1 @@ -1,7 +1,7 @@ ############################################################################################################### ## ## Azure IPAM Zip Deploy Archive Creation Script -## +## ############################################################################################################### # Set minimum version requirements @@ -11,7 +11,7 @@ param( [Parameter(ValueFromPipelineByPropertyName = $true, Mandatory = $true)] - [ValidateScript({ + [ValidateScript({ if (Test-Path -LiteralPath $_ -PathType Container) { return $true } @@ -32,7 +32,13 @@ param( throw 'File name contains invalid characters' })] [string] - $FileName = 'ipam.zip' + $FileName = 'ipam.zip', + + # Use this to use "npm install" instead of "npm ci" and direct pip to install "requirements.txt" instead of "requirements.lock.txt" + [Parameter(ValueFromPipelineByPropertyName = $true, + Mandatory = $false)] + [switch] + $ManifestOnly ) # Root Directory @@ -58,17 +64,25 @@ $ErrorActionPreference = "Stop" $logPath = Join-Path -Path $ROOT_DIR -ChildPath "logs" New-Item -ItemType Directory -Path $logpath -Force | Out-Null -$buildLog = Join-Path -Path $logPath -ChildPath "build_$(get-date -format `"yyyyMMddhhmmsstt`").log" +$errorLog = Join-Path -Path $logPath -ChildPath "error_$(get-date -format `"yyyyMMddhhmmsstt`").log" +$transcriptLog = Join-Path -Path $logPath -ChildPath "build_$(get-date -format `"yyyyMMddhhmmsstt`").log" -Start-Transcript -Path $buildLog | Out-Null +Start-Transcript -Path $transcriptLog | Out-Null try { Write-Host + + if ($ManifestOnly) { + Write-Host "NOTE: " -ForegroundColor Magenta -NoNewline + Write-Host "ManifestOnly" -ForegroundColor Cyan -NoNewline + Write-Host " flag is set!" -ForegroundColor Magenta + } + Write-Host "INFO: Verifying NodeJS is present and has the correct version" -ForegroundColor Green # Check for NodeJS and NPM and fetch their current versions try { - $npmErr = $( + $npmErr = $( $npmDetails = npm version --json ) 2>&1 } catch { @@ -112,7 +126,7 @@ try { # Check for PIP and fetch the associated Python version try { - $pipErr = $( + $pipErr = $( $pipDetails = pip --version ) 2>&1 } catch { @@ -125,7 +139,15 @@ try { # Extract Python version and exit if it doesn't match required version if($null -eq $pipErr) { - $pythonVersion = [version]$([regex]::matches($pipDetails, '(?!=[(python ])[\d]+\.[\d]+(?=[)])').value) + try { + $pythonVersion = [version]$([regex]::matches($pipDetails, '(?!=[(python ])[\d]+\.[\d]+(?=[)])').value) + } catch { + Write-Host "ERROR: Cannot extract Python version!" -ForegroundColor red + Write-Host "ERROR: Python " -ForegroundColor red -NoNewline + Write-Host "v$PYTHON_VERSION" -ForegroundColor cyan -NoNewline + Write-Host " and PIP are required to build the Azure IPAM code package!" -ForegroundColor red + exit + } } else { Write-Host "ERROR: Python PIP not detected!" -ForegroundColor red Write-Host "ERROR: Python " -ForegroundColor red -NoNewline @@ -155,38 +177,54 @@ try { Write-Host "INFO: Running NPM Install..." -ForegroundColor Green # Install Azure IPAM UI Dependencies - $npmInstallErr = $( - $npmInstall = npm ci --no-progress --no-update-notifier --no-fund --loglevel error - ) 2>&1 - - # Switch back to original dir - Pop-Location + try { + # Capture all output for logging purposes + $npmOutput = if ($ManifestOnly) { + npm install --no-progress --no-update-notifier --no-fund --loglevel error 2>&1 + } else { + npm ci --no-progress --no-update-notifier --no-fund --loglevel error 2>&1 + } - # Exit if NPM Install fails - if($npmInstallErr) { + # Throw error if NPM Install fails + if ($LASTEXITCODE -ne 0) { + throw "NPM Install failed with exit code $LASTEXITCODE. Output: $($npmOutput -join "`n")" + } + } + catch { + # Switch back to original dir before throwing error + Pop-Location Write-Host "ERROR: NPM Install failed!" -ForegroundColor red - throw $npmInstallErr + throw $_ } + # Switch back to original dir + Pop-Location + # Switch to UI dir for build process Push-Location -Path $uiDir Write-Host "INFO: Running NPM Build..." -ForegroundColor Green # Build Azure IPAM UI - $npmBuildErr = $( - $npmBuild = npm run build --no-update-notifier - ) 2>&1 - - # Switch back to original dir - Pop-Location + try { + # Capture all output for logging purposes + $npmBuildOutput = npm run build --no-update-notifier 2>&1 - # Exit if NPM Build fails - if($npmBuildErr) { + # Throw error if NPM Build fails + if ($LASTEXITCODE -ne 0) { + throw "NPM Build failed with exit code $LASTEXITCODE. Output: $($npmBuildOutput -join "`n")" + } + } + catch { + # Switch back to original dir before throwing error + Pop-Location Write-Host "ERROR: NPM Build failed!" -ForegroundColor red - throw $npmBuildErr + throw $_ } + # Switch back to original dir + Pop-Location + # Create temporary directory New-Item -ItemType Directory -Path $tempFolder -Force | Out-Null @@ -202,19 +240,29 @@ try { $packageDir = New-Item -ItemType Directory -Path (Join-Path -Path $tempFolder -ChildPath "packages") # Fetch Azure IPAM Engine modules - $pipInstallErr = $( - $pipInstall = pip install -r requirements.lock.txt --target $packageDir.FullName --no-warn-script-location --progress-bar off - ) 2>&1 - - # Switch back to original dir - Pop-Location + try { + # Capture all output for logging purposes + $pipOutput = if ($ManifestOnly) { + pip install -r requirements.txt --target $packageDir.FullName --no-warn-script-location --no-user --progress-bar off 2>&1 + } else { + pip install -r requirements.lock.txt --target $packageDir.FullName --no-warn-script-location --no-user --progress-bar off 2>&1 + } - # Exit if PIP Install fails - if($pipInstallErr) { + # Throw error if PIP Install fails + if ($LASTEXITCODE -ne 0) { + throw "PIP Install failed with exit code $LASTEXITCODE. Output: $($pipOutput -join "`n")" + } + } + catch { + # Switch back to original dir before throwing error + Pop-Location Write-Host "ERROR: PIP Install failed!" -ForegroundColor red - throw $pipInstallErr + throw $_ } + # Switch back to original dir + Pop-Location + # Create the Azure IPAM ZIP Deploy archive if NPM Build and PIP install were successful if((-not $npmBuildErr) -and (-not $pipInstallErr)) { $FilePath = Join-Path -Path $Path -ChildPath $FileName @@ -251,7 +299,7 @@ try { Write-Host "ZIP Asset Path: $fullPath" -ForegroundColor Yellow } catch { - $_ | Out-File -FilePath $buildLog -Append + $_ | Out-File -FilePath $errorLog-Append Write-Host "ERROR: Unable to build Azure IPAM Zip assets due to an exception, see log for detailed information!" -ForegroundColor red Write-Host "Build Log: $buildLog" -ForegroundColor Red From 7d31b3338ccba64206280eb80a1afca9bbca580d Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 8 Sep 2025 12:28:27 -0700 Subject: [PATCH 34/43] Updated to the latest NPM package versions --- ui/package-lock.json | 20 ++++++++++---------- ui/package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ui/package-lock.json b/ui/package-lock.json index 209badae..559c34e3 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -45,7 +45,7 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "serve": "^14.2.5", - "vite": "^7.1.4", + "vite": "^7.1.5", "vite-plugin-eslint2": "^5.0.4" } }, @@ -6612,14 +6612,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -6863,9 +6863,9 @@ } }, "node_modules/vite": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.4.tgz", - "integrity": "sha512-X5QFK4SGynAeeIt+A7ZWnApdUyHYm+pzv/8/A57LqSGcI88U6R6ipOs3uCesdc6yl7nl+zNO0t8LmqAdXcQihw==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", + "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6874,7 +6874,7 @@ "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", - "tinyglobby": "^0.2.14" + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" diff --git a/ui/package.json b/ui/package.json index b74141ef..a935b5fe 100644 --- a/ui/package.json +++ b/ui/package.json @@ -57,7 +57,7 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "serve": "^14.2.5", - "vite": "^7.1.4", + "vite": "^7.1.5", "vite-plugin-eslint2": "^5.0.4" } } From 2f4e8c6be171db152305696ec67123f4b21f5231 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 8 Sep 2025 15:25:27 -0700 Subject: [PATCH 35/43] Added documentation for Azure IPAM update process --- docs/_sidebar.md | 20 +- docs/update/README.md | 479 ++++++++++++++++++++++ docs/update/images/app_service_health.png | Bin 0 -> 48182 bytes 3 files changed, 489 insertions(+), 10 deletions(-) create mode 100644 docs/update/README.md create mode 100644 docs/update/images/app_service_health.png diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 1c487bb6..be938c22 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -1,12 +1,12 @@ + -* Getting Started - -* [Welcome](/README.md) -* [Deployment](/deployment/README.md) -* [Migration](/migration/README.md) -* [Troubleshooting](/troubleshooting/README.md) -* [How-To](/how-to/README.md) -* [API](/api/README.md) -* [Questions/Comments](/questions-comments/README.md) -* [Contributing](/contributing/README.md) +- [Welcome](/README.md) +- [Deployment](/deployment/README.md) +- [Update](/update/README.md) +- [Migration](/migration/README.md) +- [Troubleshooting](/troubleshooting/README.md) +- [How-To](/how-to/README.md) +- [API](/api/README.md) +- [Questions/Comments](/questions-comments/README.md) +- [Contributing](/contributing/README.md) diff --git a/docs/update/README.md b/docs/update/README.md new file mode 100644 index 00000000..38a2ec67 --- /dev/null +++ b/docs/update/README.md @@ -0,0 +1,479 @@ +# Azure IPAM Update Guide + +## Overview + +This guide provides comprehensive instructions for updating existing Azure IPAM deployments to the latest version. The update process preserves your existing data and configuration while updating your deployment with the latest features, security patches, and bug fixes from the Azure IPAM project. + +The Azure IPAM update script (`update.ps1`) supports multiple deployment architectures and automatically detects your current configuration to perform the appropriate update method. + +> **Important**: If your deployment uses **Docker Compose** (legacy deployment method), you cannot use this update script. Docker Compose deployments must use the [Migration Guide](/migration/README.md) to upgrade to modern deployment architecture. The update script will automatically detect Docker Compose deployments and redirect you to the migration guide. + +## Prerequisites + +To successfully update your Azure IPAM deployment, ensure the following prerequisites are met: + +- An Azure Subscription containing your existing Azure IPAM deployment +- The following Azure RBAC Roles: + - [Contributor](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#contributor) or [Owner](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#owner) at the Resource Group scope containing your Azure IPAM resources +- [PowerShell](https://learn.microsoft.com/powershell/scripting/install/installing-powershell) version 7.2.0 or later installed +- [Azure PowerShell](https://learn.microsoft.com/powershell/azure/install-az-ps) version 2.13.0 or later installed +- [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli) version 2.35.0 or later installed (required only for Private ACR deployments) + +> **NOTE:** The update script requires access to your existing Azure IPAM resources. Ensure you have the necessary permissions to both read the current configuration and restart/redeploy the App Service. + +## Update Methods by Deployment Type + +The update process varies depending on your current Azure IPAM deployment architecture: + +### 1. Public Azure Container Registry (ACR) Deployments + +#### Most Common Deployment Type + +For deployments using the publicly hosted Azure Container Registry (`azureipam.azurecr.io`), updates are handled by simply restarting your Azure App Service or Function App to pull the latest container images. + +- **Update Method**: Container restart +- **Downtime**: Minimal (during restart only) +- **Additional Requirements**: None (fully automated) + +### 2. Private Azure Container Registry (ACR) Deployments + +For deployments using a self-hosted Azure Container Registry within your subscription, the update process includes building new container images with the latest code and pushing them to your private registry. + +- **Update Method**: Container build and deployment +- **Downtime**: During container build and restart +- **Additional Requirements**: Azure CLI authentication (as noted in Prerequisites above) + +### 3. Native ZIP Deploy Deployments + +For "native" deployments that use ZIP Deploy functionality to deploy Python code directly to Azure App Services or Function Apps without containers. + +- **Update Method**: ZIP Deploy (downloads from GitHub releases by default) +- **Downtime**: During ZIP deployment process (~5 minutes) +- **Additional Requirements**: None (downloads automatically from GitHub releases, or you can provide a local ZIP file path) + +## Pre-Update Considerations + +### Backup Recommendation + +Before performing any update, it is strongly recommended to verify that your Azure App Service has recent backups available. While the update process is designed to preserve your existing data and configuration, having a backup ensures you can restore your service if any issues occur. + +To check your backup status: + +1. Navigate to your Azure IPAM App Service in the Azure Portal +2. Go to **Settings** → **Backups** +3. Verify that recent automatic or custom backups are available and show "Succeeded" status + +> **Note**: If your deployment uses Azure Functions on Consumption or Elastic Premium plans, automatic backups are not supported. See [Azure Functions backup documentation](https://learn.microsoft.com/azure/app-service/manage-backup?tabs=portal#does-azure-functions-support-automatic-backups) for details on supported tiers. + +For detailed backup instructions, refer to the [Migration Guide backup section](/migration/README.md#pre-migration-backup). + +### Version Updates & Compatibility + +The update script automatically handles version compatibility, including: + +- **Python Version Updates**: If the target Azure IPAM version uses a different Python version, the script will automatically update your App Service configuration +- **Health Check Configuration**: Missing health check configurations will be automatically added during the update +- **Legacy Detection**: Docker Compose deployments (deprecated) will be detected and the script will redirect you to the migration guide + +## Authentication Setup + +### Authenticate to Azure PowerShell + +Before executing the update script, authenticate to [Azure PowerShell](https://learn.microsoft.com/powershell/azure/install-az-ps) and set the context to the subscription containing your Azure IPAM deployment. + +#### Connect to Azure PowerShell + +```powershell +# Sign in Interactively +Connect-AzAccount + +# Sign in with Device Code +Connect-AzAccount -UseDeviceAuthentication +``` + +> **NOTE:** If you're connecting to an Azure Cloud besides Azure Public (such as Gov, China, etc.), you may need to specify the `-Environment` flag as described in the [Azure PowerShell documentation](https://learn.microsoft.com/powershell/module/az.accounts/connect-azaccount) when using `Connect-AzAccount` + +#### Set the Active Subscription for Azure PowerShell + +```powershell +# Set Azure PowerShell Context +Set-AzContext -Subscription "" + +# Example with Subscription ID +Set-AzContext -Subscription "28b502e2-323f-4e57-98db-743459176557" + +# Example with Subscription Name +Set-AzContext -Subscription "Contoso IPAM Subscription" +``` + +### Authenticate to Azure CLI (Private ACR Only) + +If your Azure IPAM deployment uses a private Azure Container Registry, you must also authenticate to the [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli) in addition to Azure PowerShell. This is required because the update script uses `az acr build` to build and push updated container images. + +#### Connect to Azure CLI + +```bash +# Sign in Interactively +az login + +# Sign in with Device Code +az login --use-device-code +``` + +#### Set the Active Subscription for Azure CLI + +```bash +# Set Azure CLI Active Subscription +az account set --subscription "" +``` + +> **Important**: Ensure both Azure PowerShell and Azure CLI are authenticated to the **same subscription**. Mismatched subscription contexts can cause deployment failures during the container build process. + +## Clone the GitHub Repository + +Clone the Azure IPAM repository to access the update script: + +```powershell +# Example using PowerShell for Windows +PS C:\> git clone https://github.com/Azure/ipam.git +PS C:\> cd .\ipam\deploy +PS C:\ipam\deploy> .\update.ps1 + +# Example using PowerShell for Linux +PS /> git clone https://github.com/Azure/ipam.git +PS /> cd /ipam/deploy +PS /ipam/deploy> .\update.ps1 +``` + +## Update Scenarios and Usage + +### Scenario 1: Standard Update (Public ACR or Native ZIP Deploy) + +For most deployments using the public Azure Container Registry or native ZIP deploy, a simple restart or deployment is sufficient: + +```powershell +# Basic update with required parameters +.\update.ps1 -AppName "your-ipam-app" -ResourceGroupName "your-ipam-rg" +``` + +### Scenario 2: Private ACR Update + +For deployments using a private Azure Container Registry, the script will automatically detect this and build new containers: + +```powershell +# Private ACR deployments (automatically detected) +.\update.ps1 -AppName "your-ipam-app" -ResourceGroupName "your-ipam-rg" +``` + +### Scenario 3: ZIP Deploy from Custom Source + +To update from a specific GitHub repository or user (potentially with custom ZIP filename): + +```powershell +# Update from custom GitHub source +.\update.ps1 ` + -AppName "your-ipam-app" ` + -ResourceGroupName "your-ipam-rg" ` + -GitHubUserName "your-corp" ` + -GitHubRepoName "ipam-fork" + +# Update from custom GitHub source with different ZIP file name +.\update.ps1 ` + -AppName "your-ipam-app" ` + -ResourceGroupName "your-ipam-rg" ` + -GitHubUserName "your-corp" ` + -GitHubRepoName "ipam-fork" ` + -ZipFileName "ipam-custom.zip" +``` + +### Scenario 4: ZIP Deploy from Local File + +To update using a local ZIP file (for testing or custom builds): + +```powershell +# Update from local ZIP file +.\update.ps1 ` + -AppName "your-ipam-app" ` + -ResourceGroupName "your-ipam-rg" ` + -ZipFilePath "C:\temp\ipam-custom.zip" +``` + +### Scenario 5: ZIP Deploy to Custom Directory (Optional) + +By default, the script automatically creates a temporary directory for downloading ZIP files. You only need to specify a custom directory if you want to control the download location or preserve the ZIP file after the update: + +```powershell +# Update with custom asset folder (folder must already exist) +# Useful for debugging or when you want to keep the downloaded ZIP file +.\update.ps1 ` + -AppName "your-ipam-app" ` + -ResourceGroupName "your-ipam-rg" ` + -AssetFolder "C:\ipam\assets" +``` + +## Update Script Parameters + +| Parameter | Type | Required | Description | +|----------------------|--------|----------|----------------------------------------------------------------------| +| `-AppName` | String | Yes | Name of your existing Azure IPAM App Service or Function App | +| `-ResourceGroupName` | String | Yes | Resource group containing your App Service | +| `-GitHubUserName` | String | No | GitHub user/organization name for custom repository **1** | +| `-GitHubRepoName` | String | No | GitHub repository name for custom repository **1** | +| `-ZipFileName` | String | No | ZIP file name to download from GitHub **1** | +| `-ZipFilePath` | String | No | Path to local ZIP file for deployment **1** | +| `-AssetFolder` | String | No | Directory to store downloaded ZIP file **2** | + +> **NOTE 1:** Only applicable for native (non-container) deployments. These parameters are ignored for container deployments, which are automatically built from the latest repository code. + +> **NOTE 2:** Script creates a temporary directory automatically if not specified. + +## Update Process Flow + +The update script follows this automated process and will automatically determine the appropriate update method based on your deployment configuration: + +### 1. Application Discovery and Validation + +- Verifies the specified App Service or Function App exists in the subscription +- Detects the application type (App Service vs Function App, Container vs Native) +- Checks for legacy Docker Compose deployments (redirects to migration guide if found) +- Determines deployment architecture (Public ACR, Private ACR, or Native ZIP Deploy) + +### 2. Health Check Configuration + +- Verifies health check endpoint is configured (`/api/status`) +- Automatically adds health check configuration if missing +- Sets health check failure threshold to 2 attempts + +### 3. Deployment Type Detection and Processing + +#### For Public ACR Container Deployments + +- Detects use of public Azure Container Registry (`azureipam.azurecr.io`) by examining `LinuxFxVersion` +- Simply restarts the application to pull latest container images from public registry +- **Process exits here** - no building or ZIP deployment needed + +#### For Private ACR Container Deployments + +- Validates private ACR exists in the same Resource Group +- Verifies Azure CLI version (minimum `2.35.0`) and authentication status +- Ensures Azure PowerShell and Azure CLI contexts match +- Detects container distribution type (Debian/RHEL) by querying application `/api/status` endpoint +- Builds new container images using `az acr build` with appropriate Dockerfile +- Tags and pushes updated images to private registry (`ipam:latest` or `ipamfunc:latest`) +- Restarts the application +- Captures and logs build errors if container build fails + +#### For Native ZIP Deploy Deployments + +- Checks and updates Python version if it has changed between versions +- Downloads latest release ZIP from GitHub (using GitHubUserName/GitHubRepoName parameters) +- Alternatively uses provided local ZIP file if ZipFilePath is specified +- Creates temporary directory for ZIP file if AssetFolder not provided +- Performs ZIP Deploy to App Service using PowerShell cmdlets +- Falls back to Kudu API if standard ZIP Deploy using Azure PowerShell fails +- Handles retry logic for deployment failures (3 attempts) +- Cleans up temporary files + +### 4. Restart and Validation + +- Restarts the App Service or Function App +- Implements retry logic for restart failures +- Provides status updates throughout the process + +## Monitoring the Update Process + +### Update Logs + +The update script generates detailed logs in the `logs` directory: + +- **Update Log**: `logs/update_[timestamp].log` - Complete update process log +- **Error Log**: `logs/error_[timestamp].log` - Detailed error information if issues occur + +### Container Build Monitoring (Private ACR) + +For private ACR deployments, monitor the container build process: + +1. **Build Initiation**: Script uses `az acr build` with `--no-logs` flag and reports build queue status +2. **Build Progress**: Monitor in Azure Portal → Container Registry → Tasks +3. **Error Handling**: If build fails, script extracts Build ID from output and fetches detailed error logs via REST API + +### ZIP Deploy Monitoring (Native Deployments) + +For native deployments: + +1. **GitHub Download**: Script calls GitHub API to get latest release asset download URL +2. **ZIP Upload**: First attempts standard `Publish-AzWebApp`, falls back to Kudu API if needed +3. **Completion**: Allow ~5 minutes for ZIP Deploy process to complete (shown as note in script output) + +## Post-Update Verification + +After the update completes, verify your Azure IPAM deployment: + +### 1. Application Health Check + +Verify the application is running and healthy: + +![Check App Service Helath](./images/app_service_health.png) + +### 2. Version Verification + +Check that the update was successful by querying the status API: + +```powershell +# Check version information via status API +$appUrl = "https://your-ipam-app.azurewebsites.net" +$status = Invoke-RestMethod -Uri "$appUrl/api/status" -Method Get +Write-Host "Current Version: $($status.version)" +``` + +**Example Output:** + +```text +Current Version: 3.5.0 +``` + +**Full API Response Body (Example):** + +```json +{ + "status": "OK", + "version": "3.5.0", + "stack": "AppContainer", + "environment": "AZURE_PUBLIC", + "container": { + "image_id": "debian", + "image_version": "13", + "image_codename": "trixie", + "image_pretty_name": "Debian GNU/Linux 13 (trixie)" + } +} +``` + +Verify the version matches the expected updated version from the [Azure IPAM releases page](https://github.com/Azure/ipam/releases). + +### 3. Functionality Testing + +Perform basic functionality tests: + +- Log into the application +- Verify pre-existing IP address Spaces & Blocks are visible +- Test basic IPAM operations (view networks, reservations, etc.) +- Confirm API endpoints respond as expected + +## Troubleshooting + +### Common Issues and Solutions + +#### Authentication Errors + +**Issue**: PowerShell authentication failures + +```text +ERROR: Azure PowerShell not logged in or no subscription has been selected! +``` + +**Solution**: + +```powershell +Connect-AzAccount +Set-AzContext -Subscription "your-subscription-id" +``` + +#### Private ACR Context Mismatch + +**Issue**: Azure CLI and PowerShell context mismatch + +```text +ERROR: Azure PowerShell and Azure CLI must be set to the same context! +``` + +**Solution**: + +```powershell +# PowerShell +Set-AzContext -Subscription "your-subscription-id" + +# CLI +az account set --subscription "your-subscription-id" +``` + +#### Container Build Failures + +**Issue**: Private ACR container build fails + +**Solution**: + +1. Check build logs in `logs/error_[timestamp].log` (script automatically captures detailed logs) +2. Verify ACR permissions and storage capacity +3. Review Azure Container Registry task logs in Azure Portal +4. Ensure the application's `/api/status` endpoint is accessible for container type detection +5. For manual container build instructions, see the [Contributing Guide](/contributing/README.md#manual-container-builds) + +#### ZIP Deploy Failures + +**Issue**: ZIP Deploy upload failures for native deployments + +**Solution**: + +1. Script automatically retries with Kudu API if standard `Publish-AzWebApp` fails +2. Check App Service deployment logs in Azure Portal +3. Verify sufficient storage space in App Service plan +4. Ensure GitHub release contains the specified ZIP file name (default: `ipam.zip`) + +#### Legacy Docker Compose Detection + +**Issue**: Script detects Docker Compose deployment + +```text +WARNING: Legacy Docker Compose detected! +Please follow the migration guide... +``` + +**Solution**: Use the [Migration Guide](/migration/README.md) instead of the update script + +### Health Check Issues + +If health check configuration fails: + +1. Verify App Service permissions +2. Check that `/api/status` endpoint is responding +3. Manually configure health check in Azure Portal if needed + +### Getting Help + +If you encounter issues not covered in this guide: + +1. Review the update logs for detailed error information +2. Check the [Troubleshooting Guide](/troubleshooting/README.md) +3. Open an issue on the [Azure IPAM GitHub repository](https://github.com/Azure/ipam/issues) +4. Include relevant log files and error messages in your issue report + +## Update Best Practices + +### Maintenance Windows + +- Schedule updates during maintenance windows to minimize impact +- For container deployments, expect 2-5 minutes of downtime during restart +- For ZIP deployments, allow up to 10 minutes for the complete process + +### Testing Updates + +- Test updates in a development or staging environment first +- Verify application functionality before updating production deployments +- Create a snapshot backup before updating critical production environments + +### Frequency Recommendations + +- Review and apply updates monthly or as code/security patches are released +- Watch the [Azure IPAM repository](https://github.com/Azure/ipam) for release notifications + - See [GitHub's guide on configuring repository watch settings](https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository) to set up custom notifications for releases only + +### Rollback Planning + +- Ensure recent backups are available before updating +- Understand your App Service backup and restore procedures +- Consider creating a manual backup before major version updates + +--- + +For additional information about Azure IPAM deployment and management, refer to the [Deployment Guide](/deployment/README.md) diff --git a/docs/update/images/app_service_health.png b/docs/update/images/app_service_health.png new file mode 100644 index 0000000000000000000000000000000000000000..a9c9eba45a298636ad569f07e973512128f84086 GIT binary patch literal 48182 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 literal 0 HcmV?d00001 From efae973213d514bca4cd5b63a17d40e054ba5395 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 8 Sep 2025 15:26:13 -0700 Subject: [PATCH 36/43] Fixed documentation Markdown lint warnings --- docs/_coverpage.md | 2 ++ docs/deployment/README.md | 12 ++++++------ docs/troubleshooting/README.md | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/_coverpage.md b/docs/_coverpage.md index 9df4464e..d16765f7 100644 --- a/docs/_coverpage.md +++ b/docs/_coverpage.md @@ -1,8 +1,10 @@ + ![logo](./images/ipam-logo.png ':size=45%') # IPAM 3.5.0 + > Azure IP Address Management Made Easy [GitHub](https://github.com/Azure/ipam) diff --git a/docs/deployment/README.md b/docs/deployment/README.md index 579464ae..72591710 100644 --- a/docs/deployment/README.md +++ b/docs/deployment/README.md @@ -24,7 +24,7 @@ To successfully deploy the solution, the following prerequisites must be met: - [Docker (Linux)](https://docs.docker.com/engine/install/) / [Docker Desktop (Windows)](https://docs.docker.com/desktop/install/windows-install/) installed (optional) - Required only if you are building your own container image and running it locally for development/testing purposes -> **NOTE:** An alternate [Management Group](https://learn.microsoft.com/en-us/azure/governance/management-groups/overview) can be specific, but is **highly discouraged** as it will limit the visibility of the Azure IPAM platform. This option should only be used for testing or proof-of-concept deployments. +> **NOTE:** An alternate [Management Group](https://learn.microsoft.com/azure/governance/management-groups/overview) can be specific, but is **highly discouraged** as it will limit the visibility of the Azure IPAM platform. This option should only be used for testing or proof-of-concept deployments. ## Deployment Overview @@ -61,7 +61,7 @@ Connect-AzAccount Connect-AzAccount -UseDeviceAuthentication ``` -> **NOTE:** If you're connecting to an Azure Cloud besides Azure Public (such as Gov, China, etc.), you may need to specify the `-Environment` flag as described [here](https://learn.microsoft.com/powershell/azure/authenticate-azureps#sign-in-to-another-cloud) when using `Connect-AzAccount` +> **NOTE:** If you're connecting to an Azure Cloud besides Azure Public (such as Gov, China, etc.), you may need to specify the `-Environment` flag as described in the [Authentication Methods](https://learn.microsoft.com/powershell/azure/authenticate-azureps#sign-in-to-another-cloud) documentation when using `Connect-AzAccount` ### Set the Active Subscription for Azure PowerShell @@ -76,7 +76,7 @@ Set-AzContext -Subscription "28b502e2-323f-4e57-98db-743459176557" Set-AzContext -Subscription "Contoso IPAM Subscription" ``` -For additional information on authenticating with Azure PowerShell, refer to the documentation [here](https://learn.microsoft.com/powershell/azure/authenticate-azureps) +For additional information on authenticating with Azure PowerShell, refer to the [documentation](https://learn.microsoft.com/powershell/azure/authenticate-azureps) ## Authenticate to Azure CLI (Optional) @@ -105,7 +105,7 @@ az account set --subscription "28b502e2-323f-4e57-98db-743459176557" az account set --subscription "Contoso IPAM Subscription" ``` -For additional information on authenticating with Azure CLI, refer to the documentation [here](https://learn.microsoft.com/cli/azure/authenticate-azure-cli) +For additional information on authenticating with Azure CLI, refer to the [documentation](https://learn.microsoft.com/cli/azure/authenticate-azure-cli) ## Clone the Github Repo @@ -126,7 +126,7 @@ PS /ipam/deploy> .\deploy.ps1 To deploy the full solution, run the following from within the `deploy` directory: ```powershell -./deploy.ps1 -Location "westus3" +./deploy.ps1 -Location "westus3" ``` You have the ability to pass optional flags to the deployment script: @@ -149,7 +149,7 @@ You have the ability to pass optional flags to the deployment script: > **NOTE 3:** Maximum of seven (7) characters. This is because the prefix is used to generate names for several different Azure resource types with varying maximum lengths. -> **NOTE 4:** It is **highly discouraged** to use a [Management Group](https://learn.microsoft.com/en-us/azure/governance/management-groups/overview) other than the [Root Management Group](https://learn.microsoft.com/azure/governance/management-groups/overview#root-management-group-for-each-directory) as it will limit the visibility of the Azure IPAM platform. This option should only be used for testing or proof-of-concept deployments. +> **NOTE 4:** It is **highly discouraged** to use a [Management Group](https://learn.microsoft.com/azure/governance/management-groups/overview) other than the [Root Management Group](https://learn.microsoft.com/azure/governance/management-groups/overview#root-management-group-for-each-directory) as it will limit the visibility of the Azure IPAM platform. This option should only be used for testing or proof-of-concept deployments. **Customize the name of the App Registrations:** diff --git a/docs/troubleshooting/README.md b/docs/troubleshooting/README.md index 5193f49f..8e0d3393 100644 --- a/docs/troubleshooting/README.md +++ b/docs/troubleshooting/README.md @@ -132,6 +132,6 @@ az cosmosdb update --resource-group --name Notes -This flag may have been set by [Azure Policy](https://learn.microsoft.com/azure/governance/policy/overview). You can find more details about this policy [here](https://learn.microsoft.com/azure/cosmos-db/policy-reference#azure-cosmos-db) under *Azure Cosmos DB key based metadata write access should be disabled*. You may need to contact your policy administrator to request an exception for Azure IPAM. +This flag may have been set by [Azure Policy](https://learn.microsoft.com/azure/governance/policy/overview). You can find more details about this policy in the [Azure Policy Built-Ins](https://learn.microsoft.com/azure/cosmos-db/policy-reference#azure-cosmos-db) documentation under *Azure Cosmos DB key based metadata write access should be disabled*. You may need to contact your policy administrator to request an exception for Azure IPAM. Additionally this issue only applies to legacy deployments of Azure IPAM (prior to v3.0.0) as the latest versions use SQL [role-based access control](https://learn.microsoft.com/azure/cosmos-db/how-to-setup-rbac) to read/write data from Cosmos DB. From b82cfcb7694f8dac352b563fd9004de42e80e439 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 8 Sep 2025 16:58:55 -0700 Subject: [PATCH 37/43] Anonymized resource identifiers --- migrate/overrides.jsonc | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/migrate/overrides.jsonc b/migrate/overrides.jsonc index 472aab36..ccaa4a35 100644 --- a/migrate/overrides.jsonc +++ b/migrate/overrides.jsonc @@ -2,43 +2,43 @@ { // Web App Resource Details "ResourceType": "Microsoft.Web/sites", - "ResourceName": "ipam-mahjhdi3465ru", - "ResourceGroup": "ipam-rg-mahjhdi3465ru", - "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + "ResourceName": "ipam-app-name", + "ResourceGroup": "ipam-rg-name", + "Subscription": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, { // App Service Plan Resource Details "ResourceType": "Microsoft.Web/serverfarms", - "ResourceName": "ipam-asp-mahjhdi3465ru", - "ResourceGroup": "ipam-rg-mahjhdi3465ru", - "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + "ResourceName": "ipam-asp-name", + "ResourceGroup": "ipam-rg-name", + "Subscription": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, { // Managed Identity Resource Details "ResourceType": "Microsoft.ManagedIdentity/userAssignedIdentities", - "ResourceName": "ipam-mi-mahjhdi3465ru", - "ResourceGroup": "ipam-rg-mahjhdi3465ru", - "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + "ResourceName": "ipam-identity-name", + "ResourceGroup": "ipam-rg-name", + "Subscription": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, { // Log Analytics Workspace Resource Details "ResourceType": "Microsoft.OperationalInsights/workspaces", - "ResourceName": "ipam-law-mahjhdi3465ru", - "ResourceGroup": "ipam-rg-mahjhdi3465ru", - "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + "ResourceName": "ipam-workspace-name", + "ResourceGroup": "ipam-rg-name", + "Subscription": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, { // Cosmos DB Account Resource Details "ResourceType": "Microsoft.DocumentDB/databaseAccounts", - "ResourceName": "ipam-dbacct-mahjhdi3465ru", - "ResourceGroup": "ipam-rg-mahjhdi3465ru", - "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + "ResourceName": "ipam-cosmosdb-name", + "ResourceGroup": "ipam-rg-name", + "Subscription": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, { // Key Vault Resource Details "ResourceType": "Microsoft.KeyVault/vaults", - "ResourceName": "ipam-kv-mahjhdi3465ru", - "ResourceGroup": "ipam-rg-mahjhdi3465ru", - "Subscription": "13655656-04c8-46a7-bc1b-244981d76d95" + "ResourceName": "ipam-keyvault-name", + "ResourceGroup": "ipam-rg-name", + "Subscription": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" } ] From 5304df04e74032ee982f48964359d1635b536c08 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 8 Sep 2025 17:01:18 -0700 Subject: [PATCH 38/43] Added missing space --- tools/build.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/build.ps1 b/tools/build.ps1 index ce7b7e51..88aaf774 100644 --- a/tools/build.ps1 +++ b/tools/build.ps1 @@ -299,7 +299,7 @@ try { Write-Host "ZIP Asset Path: $fullPath" -ForegroundColor Yellow } catch { - $_ | Out-File -FilePath $errorLog-Append + $_ | Out-File -FilePath $errorLog -Append Write-Host "ERROR: Unable to build Azure IPAM Zip assets due to an exception, see log for detailed information!" -ForegroundColor red Write-Host "Build Log: $buildLog" -ForegroundColor Red From 39042f5aa3ee8909b48324baed679fa16add2ed5 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 8 Sep 2025 17:12:49 -0700 Subject: [PATCH 39/43] Fixed token acquisition to account for newer PowerShell versions returning a SecureString by default --- tests/azureipam.tests.ps1 | 71 ++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/tests/azureipam.tests.ps1 b/tests/azureipam.tests.ps1 index 5fc6fccd..bdc6c664 100644 --- a/tests/azureipam.tests.ps1 +++ b/tests/azureipam.tests.ps1 @@ -4,7 +4,10 @@ BeforeAll { Set-StrictMode -Version Latest [string]$baseUrl = "$env:IPAM_URL/api" - [System.Security.SecureString]$accessToken = ConvertTo-SecureString (Get-AzAccessToken -ResourceUrl api://$env:IPAM_ENGINE_APP_ID).Token -AsPlainText + + $token = (Get-AzAccessToken -ResourceUrl api://$env:IPAM_ENGINE_APP_ID).Token + [System.Security.SecureString]$accessToken = if ($token -is [System.Security.SecureString]) { $token } else { ConvertTo-SecureString $token -AsPlainText } + [hashtable]$headers = @{ "Content-Type" = "application/json" } @@ -169,7 +172,7 @@ BeforeAll { # Convert from JSON to PSObject $tokenObj = $tokenJson | ConvertFrom-Json - + Write-Output $headerObj, $tokenObj } } @@ -199,7 +202,7 @@ Context 'Spaces' { New-ApiResource '/spaces' $spaceB $spaces, $spacesStatus = Get-ApiResource '/spaces' - + $spaces.Count | Should -Be 2 $spaces.Name -contains 'TestSpace01' | Should -Be $true $spaces.Name -contains 'TestSpace02' | Should -Be $true @@ -210,7 +213,7 @@ Context 'Spaces' { Remove-ApiResource '/spaces/TestSpace02' $spaces, $spacesStatus = Get-ApiResource '/spaces' - + $spaces.Count | Should -Be 1 $spaces.Name -contains 'TestSpace01' | Should -Be $true $spaces.Name -contains 'TestSpace02' | Should -Be $false @@ -234,7 +237,7 @@ Context 'Spaces' { Update-ApiResource '/spaces/TestSpace01' $update $spaces, $spacesStatus = Get-ApiResource '/spaces' - + $spaces.Count | Should -Be 1 $spaces[0].Name -eq 'TestSpaceA' | Should -Be $true $spaces[0].Desc -eq 'Test Space A' | Should -Be $true @@ -275,7 +278,7 @@ Context 'Blocks' { New-ApiResource '/spaces/TestSpaceA/blocks' $blockB $blocks, $blocksStatus = Get-ApiResource '/spaces/TestSpaceA/blocks' - + $blocks.Count | Should -Be 2 $blocks.Name -contains 'TestBlock01' | Should -Be $true $blocks.Name -contains 'TestBlock02' | Should -Be $true @@ -286,7 +289,7 @@ Context 'Blocks' { Remove-ApiResource '/spaces/TestSpaceA/blocks/TestBlock02' $blocks, $blocksStatus = Get-ApiResource '/spaces/TestSpaceA/blocks' - + $blocks.Count | Should -Be 1 $blocks.Name -contains 'TestBlock01' | Should -Be $true $blocks.Name -contains 'TestBlock02' | Should -Be $false @@ -310,7 +313,7 @@ Context 'Blocks' { Update-ApiResource '/spaces/TestSpaceA/blocks/TestBlock01' $update $blocks, $blocksStatus = Get-ApiResource '/spaces/TestSpaceA/blocks' - + $blocks.Count | Should -Be 1 $blocks[0].Name -eq 'TestBlockA' | Should -Be $true $blocks[0].Cidr -eq '10.1.0.0/16' | Should -Be $true @@ -331,7 +334,7 @@ Context 'Networks' { It 'Verify No Networks Exist in Block' { $networks, $networksStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/networks' - + $networks | Should -Be $null } @@ -399,7 +402,7 @@ Context 'External Networks' { It 'Verify No External Networks Exist in Block' { $externals, $externalsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals' - + $externals.Count | Should -Be 0 } @@ -414,7 +417,7 @@ Context 'External Networks' { New-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals' $script:externalA $externals, $externalsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals' - + $externals.Count | Should -Be 1 $externals[0].Name -eq "ExternalNetA" | Should -Be $true @@ -433,7 +436,7 @@ Context 'External Networks' { New-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals' $script:externalB $externals, $externalsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals' - + $externals.Count | Should -Be 2 $externals[0].Name -eq "ExternalNetA" | Should -Be $true @@ -449,7 +452,7 @@ Context 'External Networks' { It 'Get a Specific External Network' { $external, $externalStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetB' - + $external.Name -eq "ExternalNetB" | Should -Be $true $external.Desc -eq "External Network B" | Should -Be $true $external.Cidr -eq "10.1.2.0/24" | Should -Be $true @@ -478,7 +481,7 @@ Context 'External Networks' { Update-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetB' $update $externals, $externalsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals' - + $externals.Count | Should -Be 2 $externals[0].Name -eq "ExternalNetA" | Should -Be $true @@ -495,7 +498,7 @@ Context 'External Networks' { Remove-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetC' $externals, $externalsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals' - + $externals.Count | Should -Be 1 $externals[0].Name -eq "ExternalNetA" | Should -Be $true @@ -507,7 +510,7 @@ Context 'External Networks' { It 'Verify No External Subnets Exist in External Network' { $subnets, $subnetsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets' - + $subnets.Count | Should -Be 0 } @@ -522,7 +525,7 @@ Context 'External Networks' { New-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets' $script:subnetA $subnets, $subnetsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets' - + $subnets.Count | Should -Be 1 $subnets[0].Name -eq "SubnetA" | Should -Be $true @@ -541,7 +544,7 @@ Context 'External Networks' { New-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets' $script:subnetB $subnets, $subnetsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets' - + $subnets.Count | Should -Be 2 $subnets[0].Name -eq "SubnetA" | Should -Be $true @@ -557,7 +560,7 @@ Context 'External Networks' { It 'Get Specific External Subnet' { $subnet, $subnetStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetB' - + $subnet.Name -eq "SubnetB" | Should -Be $true $subnet.Desc -eq "Subnet B" | Should -Be $true $subnet.Cidr -eq "10.1.1.64/26" | Should -Be $true @@ -586,7 +589,7 @@ Context 'External Networks' { Update-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetB' $update $subnets, $subnetsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets' - + $subnets.Count | Should -Be 2 $subnets[0].Name -eq "SubnetA" | Should -Be $true @@ -603,7 +606,7 @@ Context 'External Networks' { Remove-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetC' $subnets, $subnetsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets' - + $subnets.Count | Should -Be 1 $subnets[0].Name -eq "SubnetA" | Should -Be $true @@ -615,7 +618,7 @@ Context 'External Networks' { It 'Verify No External Endpoints Exist in External Subnet' { $endpoints, $endpointsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' - + $endpoints.Count | Should -Be 0 } @@ -630,7 +633,7 @@ Context 'External Networks' { New-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' $script:endpointA $endpoints, $endpointsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' - + $endpoints.Count | Should -Be 1 $endpoints[0].Name -eq "EndpointA" | Should -Be $true @@ -649,7 +652,7 @@ Context 'External Networks' { New-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' $script:endpointB $endpoints, $endpointsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' - + $endpoints.Count | Should -Be 2 $endpoints[0].Name -eq "EndpointA" | Should -Be $true @@ -685,7 +688,7 @@ Context 'External Networks' { Set-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' $body $endpoints, $endpointsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' - + $endpoints.Count | Should -Be 4 $endpoints[0].Name -eq "EndpointA" | Should -Be $true @@ -715,7 +718,7 @@ Context 'External Networks' { Remove-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' $body $endpoints, $endpointsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' - + $endpoints.Count | Should -Be 2 $endpoints[0].Name -eq "EndpointA" | Should -Be $true @@ -731,7 +734,7 @@ Context 'External Networks' { It 'Get a Specific External Endpoint' { $endpoint, $endpointStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints/EndpointA' - + $endpoint.Name | Should -Be "EndpointA" $endpoint.Desc | Should -Be "Endpoint A" $endpoint.IP | Should -Be "10.1.1.4" @@ -760,7 +763,7 @@ Context 'External Networks' { Update-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints/EndpointB' $update $endpoints, $endpointsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' - + $endpoints.Count | Should -Be 2 $endpoints[0].Name -eq "EndpointA" | Should -Be $true @@ -777,7 +780,7 @@ Context 'External Networks' { Remove-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints/EndpointC' $endpoints, $endpointsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/externals/ExternalNetA/subnets/SubnetA/endpoints' - + $endpoints.Count | Should -Be 1 $endpoints[0].Name -eq "EndpointA" | Should -Be $true @@ -791,7 +794,7 @@ Context 'Reservations' { It 'Verify No Reservations Exist in Block' { $reservations, $reservationsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/reservations' - + $reservations | Should -Be $null } @@ -817,7 +820,7 @@ Context 'Reservations' { $script:reservationC, $reservationCStatus = New-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/reservations' $bodyC $reservations, $reservationsStatus = Get-ApiResource '/spaces/TestSpaceA/blocks/TestBlockA/reservations' - + $reservations.Count | Should -Be 3 $reservations[0].Space -eq "TestSpaceA" | Should -Be $true @@ -898,7 +901,7 @@ Context 'Reservations' { It 'Get a Specific Reservation' { $reservation, $reservationStatus = Get-ApiResource "/spaces/TestSpaceA/blocks/TestBlockA/reservations/$($script:reservationC.Id)" - + $reservation.Space -eq "TestSpaceA" | Should -Be $true $reservation.Block -eq "TestBlockA" | Should -Be $true $reservation.Desc -eq "Test Reservation C" | Should -Be $true @@ -938,7 +941,7 @@ Context 'Tools' { New-ApiResource '/spaces' $toolsSpace $spaces, $spacesStatus = Get-ApiResource '/spaces' - + $spaces.Count | Should -Be 2 $spaces.Name -eq 'TestSpaceA' | Should -Be $true $spaces.Name -eq 'ToolsSpace' | Should -Be $true @@ -954,7 +957,7 @@ Context 'Tools' { New-ApiResource '/spaces/ToolsSpace/blocks' $toolsBlock $blocks, $blocksStatus = Get-ApiResource '/spaces/ToolsSpace/blocks' - + $blocks.Count | Should -Be 1 $blocks.Name -eq 'ToolsBlock' | Should -Be $true From 54094f74a61e5f1f6e2089043fb3bac20f111778 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 8 Sep 2025 19:03:30 -0700 Subject: [PATCH 40/43] Updated error message for better clarity --- ui/src/msal/graph.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/msal/graph.jsx b/ui/src/msal/graph.jsx index 31ec48d5..b77da228 100644 --- a/ui/src/msal/graph.jsx +++ b/ui/src/msal/graph.jsx @@ -8,7 +8,7 @@ async function generateToken() { const accounts = msalInstance.getAllAccounts(); if (accounts.length === 0) { - throw new Error("No user accounts found. Please login first."); + throw new Error("No user accounts found. Please login or re-authenticate first."); } const request = { From 06b63cbf5b71d554452cdfa3934966f159546b4e Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 8 Sep 2025 19:36:22 -0700 Subject: [PATCH 41/43] Renamed function to use an approved PowerShell verb --- tests/azureipam.tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/azureipam.tests.ps1 b/tests/azureipam.tests.ps1 index bdc6c664..6809fd5b 100644 --- a/tests/azureipam.tests.ps1 +++ b/tests/azureipam.tests.ps1 @@ -132,7 +132,7 @@ BeforeAll { } # Parse JWT Access Token - Function Parse-JWTtoken { + Function Get-JWTPayload { [CmdletBinding()] Param( [Parameter(Mandatory=$true)] From cc5d4a1953e1c2266516976e4cd164cad804475c Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Wed, 10 Sep 2025 20:30:49 -0700 Subject: [PATCH 42/43] Added Azure PowerShell and Azure CLI warning suppression --- deploy/update.ps1 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/deploy/update.ps1 b/deploy/update.ps1 index a9bba34b..b2ebd46f 100644 --- a/deploy/update.ps1 +++ b/deploy/update.ps1 @@ -88,6 +88,13 @@ $IPAM_PUBLIC_ACR = "azureipam.azurecr.io" # Set preference variables $ErrorActionPreference = "Stop" +# Hide Azure PowerShell SDK Warnings +$Env:SuppressAzurePowerShellBreakingChangeWarnings = $true + +# Hide Azure PowerShell SDK & Azure CLI Survey Prompts +$Env:AzSurveyMessage = $false +$Env:AZURE_CORE_SURVEY_MESSAGE = $false + # Set Log File Location $logPath = Join-Path -Path $ROOT_DIR -ChildPath "logs" New-Item -ItemType Directory -Path $logpath -Force | Out-Null From 1eefe6dcf6e7e1419864617e8b7fcefab280fd43 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Wed, 10 Sep 2025 20:31:05 -0700 Subject: [PATCH 43/43] Updated NPM packages to latest versions --- ui/package-lock.json | 16 ++++++++-------- ui/package.json | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ui/package-lock.json b/ui/package-lock.json index 559c34e3..33819a29 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -8,7 +8,7 @@ "name": "azure-ipam-ui", "version": "3.5.0", "dependencies": { - "@azure/msal-browser": "^4.22.0", + "@azure/msal-browser": "^4.22.1", "@azure/msal-react": "^3.0.19", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", @@ -23,7 +23,7 @@ "axios": "^1.11.0", "echarts": "^6.0.0", "echarts-for-react": "^3.0.4", - "globals": "^16.3.0", + "globals": "^16.4.0", "lodash": "^4.17.21", "md5": "^2.3.0", "moment": "^2.30.1", @@ -69,9 +69,9 @@ } }, "node_modules/@azure/msal-browser": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.22.0.tgz", - "integrity": "sha512-JLWHzAW1aZ/L190Th56jN+2t3T1dMvXOs1obXYLEr3ZWi81vVmBCt0di3mPvTTOiWoE0Cf/4hVQ/LINilqjObA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.22.1.tgz", + "integrity": "sha512-/I76rBJpt5ZVfFXk+GkKxD4w1DZEbVpNn0aQjvRgnDnTYo3L/f8Oeo3R1O9eL/ccg5j1537iRLr7UwVhwnHtyg==", "license": "MIT", "dependencies": { "@azure/msal-common": "15.12.0" @@ -4107,9 +4107,9 @@ } }, "node_modules/globals": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", - "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", "license": "MIT", "engines": { "node": ">=18" diff --git a/ui/package.json b/ui/package.json index a935b5fe..e9c71a57 100644 --- a/ui/package.json +++ b/ui/package.json @@ -4,7 +4,7 @@ "type": "module", "private": true, "dependencies": { - "@azure/msal-browser": "^4.22.0", + "@azure/msal-browser": "^4.22.1", "@azure/msal-react": "^3.0.19", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", @@ -19,7 +19,7 @@ "axios": "^1.11.0", "echarts": "^6.0.0", "echarts-for-react": "^3.0.4", - "globals": "^16.3.0", + "globals": "^16.4.0", "lodash": "^4.17.21", "md5": "^2.3.0", "moment": "^2.30.1",

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 z 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⪼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 tsA||K_utA={U?m_yLC#0MFX^7p!a{|kS97p4FJ literal 0 HcmV?d00001 diff --git a/docs/migration/images/restore_from_backup.png b/docs/migration/images/restore_from_backup.png new file mode 100644 index 0000000000000000000000000000000000000000..2af19197af1d7ed20ff1632c5056d6f189c2dde4 GIT binary patch literal 166201 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