From 04d9836ef1311cd334856a89fe8df6ac3d3ed559 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Sun, 19 Oct 2025 16:47:31 +0200 Subject: [PATCH 1/4] Update npm, mlir and emscripten dependencies Signed-off-by: Roberto Raggi --- Dockerfile.emsdk | 2 +- package-lock.json | 1779 ++++++++++---------------- package.json | 42 +- packages/cxx-frontend/package.json | 10 +- packages/cxx-gen-ast/package.json | 6 +- packages/cxx-gen-lsp/package.json | 4 +- packages/cxx-playground/package.json | 51 +- scripts/build-mlir.mjs | 2 +- 8 files changed, 718 insertions(+), 1178 deletions(-) diff --git a/Dockerfile.emsdk b/Dockerfile.emsdk index 35f3e26d..49ab6499 100644 --- a/Dockerfile.emsdk +++ b/Dockerfile.emsdk @@ -1,4 +1,4 @@ -FROM emscripten/emsdk:4.0.12 as em +FROM emscripten/emsdk:4.0.16 as em RUN apt-get update && apt-get install -y \ ninja-build \ diff --git a/package-lock.json b/package-lock.json index 69d9119e..b51ac351 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,60 +12,8 @@ "packages/*" ], "devDependencies": { - "@eslint/js": "^9.33.0", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-separator": "^1.1.7", - "@radix-ui/react-slot": "^1.2.3", - "@radix-ui/react-tooltip": "^1.2.8", - "@tailwindcss/vite": "^4.1.12", - "@tanstack/react-query": "^5.85.3", - "@types/node": "^24.2.1", - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@types/react-window": "^1.8.8", - "@vitejs/plugin-react": "^5.0.0", - "birpc": "^2.5.0", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cxx-frontend": "^1.1.27", - "esbuild": "^0.25.8", - "eslint": "^9.33.0", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.20", - "globals": "^16.3.0", - "jsonc-cli": "^1.0.2", - "lucide-react": "^0.539.0", - "monaco-editor": "^0.52.2", - "plugin-react": "^0.0.1-security", - "prettier": "^3.6.2", - "react": "^19.1.1", - "react-dom": "^19.1.1", - "react-resizable-panels": "^3.0.4", - "react-virtualized-auto-sizer": "^1.0.26", - "react-window": "^1.8.11", - "tailwind-merge": "^3.3.1", - "tailwindcss": "^4.1.12", - "tw-animate-css": "^1.3.6", - "typedoc": "^0.28.9", - "typescript": "^5.9.2", - "typescript-eslint": "^8.39.1", - "use-debounce": "^10.0.5", - "vite": "^7.1.2", - "zx": "^8.8.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "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" - }, - "engines": { - "node": ">=6.0.0" + "@types/node": "^24.8.1", + "zx": "^8.8.5" } }, "node_modules/@babel/code-frame": { @@ -94,22 +42,22 @@ } }, "node_modules/@babel/core": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", - "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.3", - "@babel/parser": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.3", - "@babel/types": "^7.28.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -241,27 +189,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz", - "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2" + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", - "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.2" + "@babel/types": "^7.28.4" }, "bin": { "parser": "bin/babel-parser.js" @@ -302,16 +250,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", - "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", @@ -328,18 +266,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz", - "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.3", + "@babel/parser": "^7.28.4", "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2", + "@babel/types": "^7.28.4", "debug": "^4.3.1" }, "engines": { @@ -347,9 +285,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", - "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", "dev": true, "license": "MIT", "dependencies": { @@ -361,9 +299,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", - "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", + "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", "cpu": [ "ppc64" ], @@ -378,9 +316,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", - "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", + "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", "cpu": [ "arm" ], @@ -395,9 +333,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", - "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", + "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", "cpu": [ "arm64" ], @@ -412,9 +350,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", - "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", + "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", "cpu": [ "x64" ], @@ -429,9 +367,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", - "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", + "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", "cpu": [ "arm64" ], @@ -446,9 +384,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", - "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", + "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", "cpu": [ "x64" ], @@ -463,9 +401,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", - "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", + "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", "cpu": [ "arm64" ], @@ -480,9 +418,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", - "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", + "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", "cpu": [ "x64" ], @@ -497,9 +435,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", - "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", + "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", "cpu": [ "arm" ], @@ -514,9 +452,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", - "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", + "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", "cpu": [ "arm64" ], @@ -531,9 +469,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", - "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", + "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", "cpu": [ "ia32" ], @@ -548,9 +486,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", - "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", + "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", "cpu": [ "loong64" ], @@ -565,9 +503,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", - "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", + "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", "cpu": [ "mips64el" ], @@ -582,9 +520,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", - "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", + "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", "cpu": [ "ppc64" ], @@ -599,9 +537,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", - "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", + "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", "cpu": [ "riscv64" ], @@ -616,9 +554,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", - "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", + "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", "cpu": [ "s390x" ], @@ -633,9 +571,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", - "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", + "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", "cpu": [ "x64" ], @@ -650,9 +588,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", - "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", + "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", "cpu": [ "arm64" ], @@ -667,9 +605,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", - "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", + "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", "cpu": [ "x64" ], @@ -684,9 +622,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", - "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", + "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", "cpu": [ "arm64" ], @@ -701,9 +639,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", - "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", + "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", "cpu": [ "x64" ], @@ -718,9 +656,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", - "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", + "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", "cpu": [ "arm64" ], @@ -735,9 +673,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", - "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", + "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", "cpu": [ "x64" ], @@ -752,9 +690,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", - "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", + "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", "cpu": [ "arm64" ], @@ -769,9 +707,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", - "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", + "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", "cpu": [ "ia32" ], @@ -786,9 +724,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", - "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", + "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", "cpu": [ "x64" ], @@ -803,9 +741,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "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": { @@ -845,13 +783,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.6", + "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -860,19 +798,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", - "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", + "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -920,9 +861,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", - "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", + "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", "dev": true, "license": "MIT", "engines": { @@ -933,9 +874,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -943,13 +884,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.2", + "@eslint/core": "^0.16.0", "levn": "^0.4.1" }, "engines": { @@ -999,16 +940,16 @@ "license": "MIT" }, "node_modules/@gerrit0/mini-shiki": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.9.2.tgz", - "integrity": "sha512-Tvsj+AOO4Z8xLRJK900WkyfxHsZQu+Zm1//oT1w443PO6RiYMoq/4NGOhaNuZoUMYsjKIAPVQ6eOFMddj6yphQ==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.13.1.tgz", + "integrity": "sha512-fDWM5QQc70jwBIt/WYMybdyXdyBmoJe7r1hpM+V/bHnyla79sygVDK2/LlVxIPc4n5FA3B5Wzt7AQH2+psNphg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/engine-oniguruma": "^3.9.2", - "@shikijs/langs": "^3.9.2", - "@shikijs/themes": "^3.9.2", - "@shikijs/types": "^3.9.2", + "@shikijs/engine-oniguruma": "^3.13.0", + "@shikijs/langs": "^3.13.0", + "@shikijs/themes": "^3.13.0", + "@shikijs/types": "^3.13.0", "@shikijs/vscode-textmate": "^10.0.2" } }, @@ -1725,9 +1666,9 @@ "link": true }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.30", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.30.tgz", - "integrity": "sha512-whXaSoNUFiyDAjkUF8OBpOm77Szdbk5lGNqFe6CbVbJFrhCCPinCbRA3NjawwlNHla1No7xvXXh+CpSxnPfUEw==", + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.38.tgz", + "integrity": "sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==", "dev": true, "license": "MIT" }, @@ -2012,40 +1953,40 @@ ] }, "node_modules/@shikijs/engine-oniguruma": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.9.2.tgz", - "integrity": "sha512-Vn/w5oyQ6TUgTVDIC/BrpXwIlfK6V6kGWDVVz2eRkF2v13YoENUvaNwxMsQU/t6oCuZKzqp9vqtEtEzKl9VegA==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.13.0.tgz", + "integrity": "sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.9.2", + "@shikijs/types": "3.13.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.9.2.tgz", - "integrity": "sha512-X1Q6wRRQXY7HqAuX3I8WjMscjeGjqXCg/Sve7J2GWFORXkSrXud23UECqTBIdCSNKJioFtmUGJQNKtlMMZMn0w==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.13.0.tgz", + "integrity": "sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.9.2" + "@shikijs/types": "3.13.0" } }, "node_modules/@shikijs/themes": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.9.2.tgz", - "integrity": "sha512-6z5lBPBMRfLyyEsgf6uJDHPa6NAGVzFJqH4EAZ+03+7sedYir2yJBRu2uPZOKmj43GyhVHWHvyduLDAwJQfDjA==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.13.0.tgz", + "integrity": "sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.9.2" + "@shikijs/types": "3.13.0" } }, "node_modules/@shikijs/types": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.9.2.tgz", - "integrity": "sha512-/M5L0Uc2ljyn2jKvj4Yiah7ow/W+DJSglVafvWAJ/b8AZDeeRAdMu3c2riDzB7N42VD+jSnWxeP9AKtd4TfYVw==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.13.0.tgz", + "integrity": "sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==", "dev": true, "license": "MIT", "dependencies": { @@ -2061,54 +2002,54 @@ "license": "MIT" }, "node_modules/@tailwindcss/node": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.12.tgz", - "integrity": "sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.14.tgz", + "integrity": "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", - "jiti": "^2.5.1", + "jiti": "^2.6.0", "lightningcss": "1.30.1", - "magic-string": "^0.30.17", + "magic-string": "^0.30.19", "source-map-js": "^1.2.1", - "tailwindcss": "4.1.12" + "tailwindcss": "4.1.14" } }, "node_modules/@tailwindcss/oxide": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.12.tgz", - "integrity": "sha512-gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.14.tgz", + "integrity": "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { "detect-libc": "^2.0.4", - "tar": "^7.4.3" + "tar": "^7.5.1" }, "engines": { "node": ">= 10" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.12", - "@tailwindcss/oxide-darwin-arm64": "4.1.12", - "@tailwindcss/oxide-darwin-x64": "4.1.12", - "@tailwindcss/oxide-freebsd-x64": "4.1.12", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.12", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.12", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.12", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.12", - "@tailwindcss/oxide-linux-x64-musl": "4.1.12", - "@tailwindcss/oxide-wasm32-wasi": "4.1.12", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.12", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.12" + "@tailwindcss/oxide-android-arm64": "4.1.14", + "@tailwindcss/oxide-darwin-arm64": "4.1.14", + "@tailwindcss/oxide-darwin-x64": "4.1.14", + "@tailwindcss/oxide-freebsd-x64": "4.1.14", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.14", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.14", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.14", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.14", + "@tailwindcss/oxide-linux-x64-musl": "4.1.14", + "@tailwindcss/oxide-wasm32-wasi": "4.1.14", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.14", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.14" } }, "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.12.tgz", - "integrity": "sha512-oNY5pq+1gc4T6QVTsZKwZaGpBb2N1H1fsc1GD4o7yinFySqIuRZ2E4NvGasWc6PhYJwGK2+5YT1f9Tp80zUQZQ==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.14.tgz", + "integrity": "sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==", "cpu": [ "arm64" ], @@ -2123,9 +2064,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.12.tgz", - "integrity": "sha512-cq1qmq2HEtDV9HvZlTtrj671mCdGB93bVY6J29mwCyaMYCP/JaUBXxrQQQm7Qn33AXXASPUb2HFZlWiiHWFytw==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.14.tgz", + "integrity": "sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==", "cpu": [ "arm64" ], @@ -2140,9 +2081,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.12.tgz", - "integrity": "sha512-6UCsIeFUcBfpangqlXay9Ffty9XhFH1QuUFn0WV83W8lGdX8cD5/+2ONLluALJD5+yJ7k8mVtwy3zMZmzEfbLg==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.14.tgz", + "integrity": "sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==", "cpu": [ "x64" ], @@ -2157,9 +2098,9 @@ } }, "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.12.tgz", - "integrity": "sha512-JOH/f7j6+nYXIrHobRYCtoArJdMJh5zy5lr0FV0Qu47MID/vqJAY3r/OElPzx1C/wdT1uS7cPq+xdYYelny1ww==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.14.tgz", + "integrity": "sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==", "cpu": [ "x64" ], @@ -2174,9 +2115,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.12.tgz", - "integrity": "sha512-v4Ghvi9AU1SYgGr3/j38PD8PEe6bRfTnNSUE3YCMIRrrNigCFtHZ2TCm8142X8fcSqHBZBceDx+JlFJEfNg5zQ==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.14.tgz", + "integrity": "sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==", "cpu": [ "arm" ], @@ -2191,9 +2132,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.12.tgz", - "integrity": "sha512-YP5s1LmetL9UsvVAKusHSyPlzSRqYyRB0f+Kl/xcYQSPLEw/BvGfxzbH+ihUciePDjiXwHh+p+qbSP3SlJw+6g==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.14.tgz", + "integrity": "sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==", "cpu": [ "arm64" ], @@ -2208,9 +2149,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.12.tgz", - "integrity": "sha512-V8pAM3s8gsrXcCv6kCHSuwyb/gPsd863iT+v1PGXC4fSL/OJqsKhfK//v8P+w9ThKIoqNbEnsZqNy+WDnwQqCA==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.14.tgz", + "integrity": "sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==", "cpu": [ "arm64" ], @@ -2225,9 +2166,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.12.tgz", - "integrity": "sha512-xYfqYLjvm2UQ3TZggTGrwxjYaLB62b1Wiysw/YE3Yqbh86sOMoTn0feF98PonP7LtjsWOWcXEbGqDL7zv0uW8Q==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.14.tgz", + "integrity": "sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==", "cpu": [ "x64" ], @@ -2242,9 +2183,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.12.tgz", - "integrity": "sha512-ha0pHPamN+fWZY7GCzz5rKunlv9L5R8kdh+YNvP5awe3LtuXb5nRi/H27GeL2U+TdhDOptU7T6Is7mdwh5Ar3A==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.14.tgz", + "integrity": "sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==", "cpu": [ "x64" ], @@ -2259,9 +2200,9 @@ } }, "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.12.tgz", - "integrity": "sha512-4tSyu3dW+ktzdEpuk6g49KdEangu3eCYoqPhWNsZgUhyegEda3M9rG0/j1GV/JjVVsj+lG7jWAyrTlLzd/WEBg==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.14.tgz", + "integrity": "sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==", "bundleDependencies": [ "@napi-rs/wasm-runtime", "@emnapi/core", @@ -2277,21 +2218,21 @@ "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.4.5", - "@emnapi/runtime": "^1.4.5", - "@emnapi/wasi-threads": "^1.0.4", - "@napi-rs/wasm-runtime": "^0.2.12", - "@tybys/wasm-util": "^0.10.0", - "tslib": "^2.8.0" + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.0.5", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.12.tgz", - "integrity": "sha512-iGLyD/cVP724+FGtMWslhcFyg4xyYyM+5F4hGvKA7eifPkXHRAUDFaimu53fpNg9X8dfP75pXx/zFt/jlNF+lg==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.14.tgz", + "integrity": "sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==", "cpu": [ "arm64" ], @@ -2306,9 +2247,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.12.tgz", - "integrity": "sha512-NKIh5rzw6CpEodv/++r0hGLlfgT/gFN+5WNdZtvh6wpU2BpGNgdjvj6H2oFc8nCM839QM1YOhjpgbAONUb4IxA==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.14.tgz", + "integrity": "sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==", "cpu": [ "x64" ], @@ -2323,24 +2264,24 @@ } }, "node_modules/@tailwindcss/vite": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.12.tgz", - "integrity": "sha512-4pt0AMFDx7gzIrAOIYgYP0KCBuKWqyW8ayrdiLEjoJTT4pKTjrzG/e4uzWtTLDziC+66R9wbUqZBccJalSE5vQ==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.14.tgz", + "integrity": "sha512-BoFUoU0XqgCUS1UXWhmDJroKKhNXeDzD7/XwabjkDIAbMnc4ULn5e2FuEuBbhZ6ENZoSYzKlzvZ44Yr6EUDUSA==", "dev": true, "license": "MIT", "dependencies": { - "@tailwindcss/node": "4.1.12", - "@tailwindcss/oxide": "4.1.12", - "tailwindcss": "4.1.12" + "@tailwindcss/node": "4.1.14", + "@tailwindcss/oxide": "4.1.14", + "tailwindcss": "4.1.14" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "node_modules/@tanstack/query-core": { - "version": "5.85.3", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.85.3.tgz", - "integrity": "sha512-9Ne4USX83nHmRuEYs78LW+3lFEEO2hBDHu7mrdIgAFx5Zcrs7ker3n/i8p4kf6OgKExmaDN5oR0efRD7i2J0DQ==", + "version": "5.90.5", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.5.tgz", + "integrity": "sha512-wLamYp7FaDq6ZnNehypKI5fNvxHPfTYylE0m/ZpuuzJfJqhR5Pxg9gvGBHZx4n7J+V5Rg5mZxHHTlv25Zt5u+w==", "dev": true, "license": "MIT", "funding": { @@ -2349,13 +2290,13 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.85.3", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.85.3.tgz", - "integrity": "sha512-AqU8TvNh5GVIE8I+TUU0noryBRy7gOY0XhSayVXmOPll4UkZeLWKDwi0rtWOZbwLRCbyxorfJ5DIjDqE7GXpcQ==", + "version": "5.90.5", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.5.tgz", + "integrity": "sha512-pN+8UWpxZkEJ/Rnnj2v2Sxpx1WFlaa9L6a4UO89p6tTQbeo+m0MS8oYDjbggrR8QcTyjKoYWKS3xJQGr3ExT8Q==", "dev": true, "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.85.3" + "@tanstack/query-core": "5.90.5" }, "funding": { "type": "github", @@ -2435,19 +2376,19 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz", - "integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==", + "version": "24.8.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.8.1.tgz", + "integrity": "sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.10.0" + "undici-types": "~7.14.0" } }, "node_modules/@types/react": { - "version": "19.1.10", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.10.tgz", - "integrity": "sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==", + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", + "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", "dev": true, "license": "MIT", "dependencies": { @@ -2455,23 +2396,13 @@ } }, "node_modules/@types/react-dom": { - "version": "19.1.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.7.tgz", - "integrity": "sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==", + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz", + "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==", "dev": true, "license": "MIT", "peerDependencies": { - "@types/react": "^19.0.0" - } - }, - "node_modules/@types/react-window": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.8.tgz", - "integrity": "sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/react": "*" + "@types/react": "^19.2.0" } }, "node_modules/@types/unist": { @@ -2499,17 +2430,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.39.1.tgz", - "integrity": "sha512-yYegZ5n3Yr6eOcqgj2nJH8cH/ZZgF+l0YIdKILSDjYFRjgYQMgv/lRjV5Z7Up04b9VYUondt8EPMqg7kTWgJ2g==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.1.tgz", + "integrity": "sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.39.1", - "@typescript-eslint/type-utils": "8.39.1", - "@typescript-eslint/utils": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", + "@typescript-eslint/scope-manager": "8.46.1", + "@typescript-eslint/type-utils": "8.46.1", + "@typescript-eslint/utils": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -2523,7 +2454,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.39.1", + "@typescript-eslint/parser": "^8.46.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -2539,16 +2470,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.39.1.tgz", - "integrity": "sha512-pUXGCuHnnKw6PyYq93lLRiZm3vjuslIy7tus1lIQTYVK9bL8XBgJnCWm8a0KcTtHC84Yya1Q6rtll+duSMj0dg==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.1.tgz", + "integrity": "sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", + "@typescript-eslint/scope-manager": "8.46.1", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1", "debug": "^4.3.4" }, "engines": { @@ -2563,83 +2494,15 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.39.1.tgz", - "integrity": "sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.39.1", - "@typescript-eslint/tsconfig-utils": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { - "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" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/project-service": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.39.1.tgz", - "integrity": "sha512-8fZxek3ONTwBu9ptw5nCKqZOSkXshZB7uAxuFF0J/wTMkKydjXCzqqga7MlFMpHi9DoG4BadhmTkITBcg8Aybw==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.1.tgz", + "integrity": "sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.39.1", - "@typescript-eslint/types": "^8.39.1", + "@typescript-eslint/tsconfig-utils": "^8.46.1", + "@typescript-eslint/types": "^8.46.1", "debug": "^4.3.4" }, "engines": { @@ -2654,14 +2517,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.39.1.tgz", - "integrity": "sha512-RkBKGBrjgskFGWuyUGz/EtD8AF/GW49S21J8dvMzpJitOF1slLEbbHnNEtAHtnDAnx8qDEdRrULRnWVx27wGBw==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.1.tgz", + "integrity": "sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1" + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2672,9 +2535,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.39.1.tgz", - "integrity": "sha512-ePUPGVtTMR8XMU2Hee8kD0Pu4NDE1CN9Q1sxGSGd/mbOtGZDM7pnhXNJnzW63zk/q+Z54zVzj44HtwXln5CvHA==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.1.tgz", + "integrity": "sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==", "dev": true, "license": "MIT", "engines": { @@ -2689,15 +2552,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.39.1.tgz", - "integrity": "sha512-gu9/ahyatyAdQbKeHnhT4R+y3YLtqqHyvkfDxaBYk97EcbfChSJXyaJnIL3ygUv7OuZatePHmQvuH5ru0lnVeA==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.1.tgz", + "integrity": "sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1", - "@typescript-eslint/utils": "8.39.1", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1", + "@typescript-eslint/utils": "8.46.1", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -2713,17 +2576,31 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.39.1.tgz", - "integrity": "sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==", + "node_modules/@typescript-eslint/types": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.1.tgz", + "integrity": "sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.1.tgz", + "integrity": "sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.39.1", - "@typescript-eslint/tsconfig-utils": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", + "@typescript-eslint/project-service": "8.46.1", + "@typescript-eslint/tsconfig-utils": "8.46.1", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/visitor-keys": "8.46.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -2742,7 +2619,7 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", @@ -2752,7 +2629,7 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", @@ -2768,10 +2645,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -2781,31 +2658,17 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.39.1.tgz", - "integrity": "sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/utils": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.39.1.tgz", - "integrity": "sha512-VF5tZ2XnUSTuiqZFXCZfZs1cgkdd3O/sSYmdo2EpSyDlC86UM/8YytTmKnehOW3TGAlivqTDT6bS87B/GQ/jyg==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.1.tgz", + "integrity": "sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1" + "@typescript-eslint/scope-manager": "8.46.1", + "@typescript-eslint/types": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2819,82 +2682,14 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.39.1.tgz", - "integrity": "sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.39.1", - "@typescript-eslint/tsconfig-utils": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { - "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" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.39.1.tgz", - "integrity": "sha512-W8FQi6kEh2e8zVhQ0eeRnxdvIoOkAp/CPAahcNio6nO9dsIwb9b34z90KOlheoyuVf6LSOEdjlkxSkapNEc+4A==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.1.tgz", + "integrity": "sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.39.1", + "@typescript-eslint/types": "8.46.1", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -2906,16 +2701,16 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.0.0.tgz", - "integrity": "sha512-Jx9JfsTa05bYkS9xo0hkofp2dCmp1blrKjw9JONs5BTHOvJCgLbaPSuZLGSVJW6u2qe0tc4eevY0+gSNNi0YCw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.0.4.tgz", + "integrity": "sha512-La0KD0vGkVkSk6K+piWDKRUyg8Rl5iAIKRMH0vMJI0Eg47bq1eOxmoObAaQG37WMW9MSyk7Cs8EIWwJC1PtzKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.28.0", + "@babel/core": "^7.28.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.30", + "@rolldown/pluginutils": "1.0.0-beta.38", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, @@ -2967,13 +2762,16 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { @@ -3020,9 +2818,9 @@ "license": "MIT" }, "node_modules/birpc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.5.0.tgz", - "integrity": "sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.6.1.tgz", + "integrity": "sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==", "dev": true, "license": "MIT", "funding": { @@ -3158,18 +2956,18 @@ } }, "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "dev": true, "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=12" + "node": ">=20" } }, "node_modules/clsx": { @@ -3292,9 +3090,9 @@ "license": "ISC" }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, @@ -3326,9 +3124,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", - "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", + "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3339,32 +3137,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.9", - "@esbuild/android-arm": "0.25.9", - "@esbuild/android-arm64": "0.25.9", - "@esbuild/android-x64": "0.25.9", - "@esbuild/darwin-arm64": "0.25.9", - "@esbuild/darwin-x64": "0.25.9", - "@esbuild/freebsd-arm64": "0.25.9", - "@esbuild/freebsd-x64": "0.25.9", - "@esbuild/linux-arm": "0.25.9", - "@esbuild/linux-arm64": "0.25.9", - "@esbuild/linux-ia32": "0.25.9", - "@esbuild/linux-loong64": "0.25.9", - "@esbuild/linux-mips64el": "0.25.9", - "@esbuild/linux-ppc64": "0.25.9", - "@esbuild/linux-riscv64": "0.25.9", - "@esbuild/linux-s390x": "0.25.9", - "@esbuild/linux-x64": "0.25.9", - "@esbuild/netbsd-arm64": "0.25.9", - "@esbuild/netbsd-x64": "0.25.9", - "@esbuild/openbsd-arm64": "0.25.9", - "@esbuild/openbsd-x64": "0.25.9", - "@esbuild/openharmony-arm64": "0.25.9", - "@esbuild/sunos-x64": "0.25.9", - "@esbuild/win32-arm64": "0.25.9", - "@esbuild/win32-ia32": "0.25.9", - "@esbuild/win32-x64": "0.25.9" + "@esbuild/aix-ppc64": "0.25.11", + "@esbuild/android-arm": "0.25.11", + "@esbuild/android-arm64": "0.25.11", + "@esbuild/android-x64": "0.25.11", + "@esbuild/darwin-arm64": "0.25.11", + "@esbuild/darwin-x64": "0.25.11", + "@esbuild/freebsd-arm64": "0.25.11", + "@esbuild/freebsd-x64": "0.25.11", + "@esbuild/linux-arm": "0.25.11", + "@esbuild/linux-arm64": "0.25.11", + "@esbuild/linux-ia32": "0.25.11", + "@esbuild/linux-loong64": "0.25.11", + "@esbuild/linux-mips64el": "0.25.11", + "@esbuild/linux-ppc64": "0.25.11", + "@esbuild/linux-riscv64": "0.25.11", + "@esbuild/linux-s390x": "0.25.11", + "@esbuild/linux-x64": "0.25.11", + "@esbuild/netbsd-arm64": "0.25.11", + "@esbuild/netbsd-x64": "0.25.11", + "@esbuild/openbsd-arm64": "0.25.11", + "@esbuild/openbsd-x64": "0.25.11", + "@esbuild/openharmony-arm64": "0.25.11", + "@esbuild/sunos-x64": "0.25.11", + "@esbuild/win32-arm64": "0.25.11", + "@esbuild/win32-ia32": "0.25.11", + "@esbuild/win32-x64": "0.25.11" } }, "node_modules/escalade": { @@ -3391,25 +3189,24 @@ } }, "node_modules/eslint": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", - "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", + "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", "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/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.1", + "@eslint/core": "^0.16.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.33.0", - "@eslint/plugin-kit": "^0.3.5", + "@eslint/js": "9.38.0", + "@eslint/plugin-kit": "^0.4.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.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.6", @@ -3452,22 +3249,29 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "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==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.0.tgz", + "integrity": "sha512-fNXaOwvKwq2+pXiRpXc825Vd63+KM4DLL40Rtlycb8m7fYpp6efrTp1sa6ZbP/Ap58K2bEKFXRmhURE+CJAQWw==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.22.4 || ^4.0.0", + "zod-validation-error": "^3.0.3 || ^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.20", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", - "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.24.tgz", + "integrity": "sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==", "dev": true, "license": "MIT", "peerDependencies": { @@ -3629,24 +3433,6 @@ "reusify": "^1.0.4" } }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -3732,9 +3518,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", "dev": true, "license": "MIT", "engines": { @@ -3768,9 +3554,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==", "dev": true, "license": "MIT", "engines": { @@ -3804,6 +3590,23 @@ "node": ">=8" } }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3851,16 +3654,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3892,9 +3685,9 @@ "license": "ISC" }, "node_modules/jiti": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", - "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, "license": "MIT", "bin": { @@ -3968,34 +3761,10 @@ "node": ">=6" } }, - "node_modules/jsonc-cli": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jsonc-cli/-/jsonc-cli-1.0.2.tgz", - "integrity": "sha512-8/83tqXpp60aq+mz1NpMtU2cXIYAzQjQg1yeEXBMdc45/6TgaZ2hPuS70GviakvPQGEOMmsS3a1ZpIxbCOwAng==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsonc-parser": "3", - "yargs": "17" - }, - "bin": { - "jsonc": "cli.js" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", "dependencies": { @@ -4299,9 +4068,9 @@ } }, "node_modules/lucide-react": { - "version": "0.539.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.539.0.tgz", - "integrity": "sha512-VVISr+VF2krO91FeuCrm1rSOLACQUYVy7NQkzrOty52Y8TlTPcXcMdQFj9bYzBgXbWCiywlwSZ3Z8u6a+6bMlg==", + "version": "0.546.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.546.0.tgz", + "integrity": "sha512-Z94u6fKT43lKeYHiVyvyR8fT7pwCzDu7RyMPpTvh054+xahSgj4HFQ+NmflvzdXsoAjYGdCguGaFKYuvq0ThCQ==", "dev": true, "license": "ISC", "peerDependencies": { @@ -4316,13 +4085,13 @@ "license": "MIT" }, "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "version": "0.30.19", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/markdown-it": { @@ -4350,13 +4119,6 @@ "dev": true, "license": "MIT" }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", - "dev": true, - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4381,19 +4143,6 @@ "node": ">=8.6" } }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4418,9 +4167,9 @@ } }, "node_modules/minizlib": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", - "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "dev": true, "license": "MIT", "dependencies": { @@ -4430,29 +4179,6 @@ "node": ">= 18" } }, - "node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/monaco-editor": { - "version": "0.52.2", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", - "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", - "dev": true, - "license": "MIT" - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -4584,24 +4310,18 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/plugin-react": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/plugin-react/-/plugin-react-0.0.1-security.tgz", - "integrity": "sha512-+p20kpGJ1lkjI903pfStB5+rstbWUAtk+HzkfEiKzgPlKJjuTT+kYwVJGPMjpbqKQtdzoeO3gqVAlVmx1Ys0Dg==", - "dev": true - }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -4699,9 +4419,9 @@ "license": "MIT" }, "node_modules/react": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", - "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "dev": true, "license": "MIT", "engines": { @@ -4709,16 +4429,16 @@ } }, "node_modules/react-dom": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz", - "integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "dev": true, "license": "MIT", "dependencies": { - "scheduler": "^0.26.0" + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.1.1" + "react": "^19.2.0" } }, "node_modules/react-refresh": { @@ -4781,9 +4501,9 @@ } }, "node_modules/react-resizable-panels": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-3.0.4.tgz", - "integrity": "sha512-8Y4KNgV94XhUvI2LeByyPIjoUJb71M/0hyhtzkHaqpVHs+ZQs8b627HmzyhmVYi3C9YP6R+XD1KmG7hHjEZXFQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-3.0.6.tgz", + "integrity": "sha512-b3qKHQ3MLqOgSS+FRYKapNkJZf5EQzuf6+RLiq1/IlTHw99YrZ2NJZLk4hQIzTnnIkRg2LUqyVinu6YWWpUYew==", "dev": true, "license": "MIT", "peerDependencies": { @@ -4826,31 +4546,14 @@ } }, "node_modules/react-window": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.11.tgz", - "integrity": "sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-2.2.1.tgz", + "integrity": "sha512-jrUMKDLW1B4yX4OU0QjdytGgWIg6wqWfiTe86lUhFsCUltkNNB/zYxFU0DTKAzBOMRbkpLVWS1IkLvQeO4L7nw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.0.0", - "memoize-one": ">=3.1.1 <6" - }, - "engines": { - "node": ">8.0.0" - }, "peerDependencies": { - "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/resolve-from": { @@ -4954,9 +4657,9 @@ } }, "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "dev": true, "license": "MIT" }, @@ -5004,31 +4707,37 @@ } }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/strip-json-comments": { @@ -5069,34 +4778,37 @@ } }, "node_modules/tailwindcss": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.12.tgz", - "integrity": "sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.14.tgz", + "integrity": "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==", "dev": true, "license": "MIT" }, "node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "dev": true, "license": "MIT", "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", + "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", "dev": true, "license": "ISC", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", + "minizlib": "^3.1.0", "yallist": "^5.0.0" }, "engines": { @@ -5114,14 +4826,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" @@ -5130,6 +4842,37 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5164,9 +4907,9 @@ "license": "0BSD" }, "node_modules/tw-animate-css": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.3.6.tgz", - "integrity": "sha512-9dy0R9UsYEGmgf26L8UcHiLmSFTHa9+D7+dAt/G/sF5dCnPePZbfgDYinc7/UzAM7g/baVrmS6m9yEpU46d+LA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz", + "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==", "dev": true, "license": "MIT", "funding": { @@ -5187,17 +4930,17 @@ } }, "node_modules/typedoc": { - "version": "0.28.10", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.10.tgz", - "integrity": "sha512-zYvpjS2bNJ30SoNYfHSRaFpBMZAsL7uwKbWwqoCNFWjcPnI3e/mPLh2SneH9mX7SJxtDpvDgvd9/iZxGbo7daw==", + "version": "0.28.14", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.14.tgz", + "integrity": "sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@gerrit0/mini-shiki": "^3.9.0", + "@gerrit0/mini-shiki": "^3.12.0", "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", - "yaml": "^2.8.0" + "yaml": "^2.8.1" }, "bin": { "typedoc": "bin/typedoc" @@ -5237,9 +4980,9 @@ } }, "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5251,16 +4994,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.39.1.tgz", - "integrity": "sha512-GDUv6/NDYngUlNvwaHM1RamYftxf782IyEDbdj3SeaIHHv8fNQVRC++fITT7kUJV/5rIA/tkoRSSskt6osEfqg==", + "version": "8.46.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.1.tgz", + "integrity": "sha512-VHgijW803JafdSsDO8I761r3SHrgk4T00IdyQ+/UsthtgPRsBWQLqoSxOolxTpxRKi1kGXK0bSz4CoAc9ObqJA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.39.1", - "@typescript-eslint/parser": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1", - "@typescript-eslint/utils": "8.39.1" + "@typescript-eslint/eslint-plugin": "8.46.1", + "@typescript-eslint/parser": "8.46.1", + "@typescript-eslint/typescript-estree": "8.46.1", + "@typescript-eslint/utils": "8.46.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5274,74 +5017,6 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.39.1.tgz", - "integrity": "sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.39.1", - "@typescript-eslint/tsconfig-utils": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/typescript-eslint/node_modules/brace-expansion": { - "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" - } - }, - "node_modules/typescript-eslint/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typescript-eslint/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", @@ -5350,9 +5025,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", - "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", + "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==", "dev": true, "license": "MIT" }, @@ -5420,9 +5095,9 @@ } }, "node_modules/use-debounce": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-10.0.5.tgz", - "integrity": "sha512-Q76E3lnIV+4YT9AHcrHEHYmAd9LKwUAbPXDm7FlqVGDHiSOhX3RDjT8dm0AxbJup6WgOb1YEcKyCr11kBJR5KQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-10.0.6.tgz", + "integrity": "sha512-C5OtPyhAZgVoteO9heXMTdW7v/IbFI+8bSVKYCJrSmiWWCLsbUxiBSp4t9v0hNBTGY97bT72ydDIDyGSFWfwXg==", "dev": true, "license": "MIT", "engines": { @@ -5456,18 +5131,18 @@ } }, "node_modules/vite": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.2.tgz", - "integrity": "sha512-J0SQBPlQiEXAF7tajiH+rUooJPo0l8KQgyg4/aMunNtrOa7bwuZJsJbDWzeljqQpgftxuq5yNJxQ91O9ts29UQ==", + "version": "7.1.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.10.tgz", + "integrity": "sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", - "fdir": "^6.4.6", + "fdir": "^6.5.0", "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" @@ -5530,6 +5205,24 @@ } } }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/vite/node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -5545,6 +5238,19 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5572,23 +5278,36 @@ } }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -5620,32 +5339,31 @@ } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^7.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", "dev": true, "license": "ISC", "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yocto-queue": { @@ -5661,10 +5379,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", + "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + }, "node_modules/zx": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/zx/-/zx-8.8.0.tgz", - "integrity": "sha512-v0VZXgSHusDvTtZROno3Ws8xkE1uNSSwH/yF8Fm+ZwBrYhr+bRNNpsnTJ32eR/t6umc7lAz5WqdP800ugW9zFA==", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/zx/-/zx-8.8.5.tgz", + "integrity": "sha512-SNgDF5L0gfN7FwVOdEFguY3orU5AkfFZm9B5YSHog/UDHv+lvmd82ZAsOenOkQixigwH2+yyH198AwNdKhj+RA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5678,12 +5419,12 @@ "version": "1.1.27", "license": "MIT", "devDependencies": { - "@types/node": "^24.0.10", - "esbuild": "^0.25.5", + "@types/node": "^24.8.1", + "esbuild": "^0.25.11", "prettier": "^3.6.2", - "typedoc": "^0.28.7", - "typescript": "^5.8.3", - "zx": "^8.6.1" + "typedoc": "^0.28.14", + "typescript": "^5.9.3", + "zx": "^8.8.5" } }, "packages/cxx-gen-ast": { @@ -5691,148 +5432,12 @@ "version": "1.1.3", "license": "MIT", "devDependencies": { - "@types/node": "^24.0.10", + "@types/node": "^24.8.1", "@types/yargs": "^17.0.33", "prettier": "^3.6.2", - "typescript": "^5.8.3", + "typescript": "^5.9.3", "yargs": "^18.0.0", - "zod": "^3.25.74" - } - }, - "packages/cxx-gen-ast/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "packages/cxx-gen-ast/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "packages/cxx-gen-ast/node_modules/cliui": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", - "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=20" - } - }, - "packages/cxx-gen-ast/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" - }, - "packages/cxx-gen-ast/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/cxx-gen-ast/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "packages/cxx-gen-ast/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "packages/cxx-gen-ast/node_modules/yargs": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", - "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^9.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "string-width": "^7.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^22.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "packages/cxx-gen-ast/node_modules/yargs-parser": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", - "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "packages/cxx-gen-ast/node_modules/zod": { - "version": "3.25.76", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "zod": "^4.1.12" } }, "packages/cxx-gen-lsp": { @@ -5840,82 +5445,56 @@ "version": "1.0.0", "license": "MIT", "devDependencies": { - "@types/node": "^24.0.10", + "@types/node": "^24.8.1", "prettier": "^3.6.2", - "typescript": "^5.8.3" + "typescript": "^5.9.3" } }, "packages/cxx-playground": { "name": "@robertoraggi/cxx-playground", "version": "0.0.0", "devDependencies": { - "@eslint/js": "^9.30.1", - "@radix-ui/react-dialog": "^1.1.14", + "@eslint/js": "^9.38.0", + "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-separator": "^1.1.7", "@radix-ui/react-slot": "^1.2.3", - "@radix-ui/react-tooltip": "^1.2.7", - "@tailwindcss/vite": "^4.1.11", - "@tanstack/react-query": "^5.81.5", - "@types/react": "^19.1.8", - "@types/react-dom": "^19.1.6", - "@types/react-window": "^1.8.8", - "@vitejs/plugin-react": "^4.6.0", - "birpc": "^2.4.0", + "@radix-ui/react-tooltip": "^1.2.8", + "@tailwindcss/vite": "^4.1.14", + "@tanstack/react-query": "^5.90.5", + "@types/react": "^19.2.2", + "@types/react-dom": "^19.2.2", + "@vitejs/plugin-react": "^5.0.4", + "birpc": "^2.6.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cxx-frontend": "^1.1.27", - "eslint": "^9.30.1", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.20", - "globals": "^16.3.0", - "lucide-react": "^0.525.0", - "monaco-editor": "^0.52.2", + "eslint": "^9.38.0", + "eslint-plugin-react-hooks": "^7.0.0", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.4.0", + "lucide-react": "^0.546.0", + "monaco-editor": "^0.52.0", "prettier": "^3.6.2", - "react": "^19.1.0", - "react-dom": "^19.1.0", - "react-resizable-panels": "^3.0.3", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-resizable-panels": "^3.0.6", "react-virtualized-auto-sizer": "^1.0.26", - "react-window": "^1.8.11", + "react-window": "^2.2.1", "tailwind-merge": "^3.3.1", - "tailwindcss": "^4.1.11", - "tw-animate-css": "^1.3.5", - "typescript": "^5.8.3", - "typescript-eslint": "^8.35.1", - "use-debounce": "^10.0.5", - "vite": "^7.0.2" + "tailwindcss": "^4.1.14", + "tw-animate-css": "^1.4.0", + "typescript": "^5.9.3", + "typescript-eslint": "^8.46.1", + "use-debounce": "^10.0.6", + "vite": "^7.1.10" } }, - "packages/cxx-playground/node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.27", + "packages/cxx-playground/node_modules/monaco-editor": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.0.tgz", + "integrity": "sha512-OeWhNpABLCeTqubfqLMXGsqf6OmPU6pHM85kF3dhy6kq5hnhuVS1p3VrEW/XhWHc71P2tHyS5JFySD8mgs1crw==", "dev": true, "license": "MIT" - }, - "packages/cxx-playground/node_modules/@vitejs/plugin-react": { - "version": "4.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.28.0", - "@babel/plugin-transform-react-jsx-self": "^7.27.1", - "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-beta.27", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.17.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" - } - }, - "packages/cxx-playground/node_modules/lucide-react": { - "version": "0.525.0", - "dev": true, - "license": "ISC", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } } } } diff --git a/package.json b/package.json index d5b7a1a8..f9a9b312 100644 --- a/package.json +++ b/package.json @@ -24,46 +24,8 @@ "url": "https://github.com/robertoraggi/cplusplus/issues" }, "devDependencies": { - "@eslint/js": "^9.33.0", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-separator": "^1.1.7", - "@radix-ui/react-slot": "^1.2.3", - "@radix-ui/react-tooltip": "^1.2.8", - "@tailwindcss/vite": "^4.1.12", - "@tanstack/react-query": "^5.85.3", - "@types/node": "^24.2.1", - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@types/react-window": "^1.8.8", - "@vitejs/plugin-react": "^5.0.0", - "birpc": "^2.5.0", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cxx-frontend": "^1.1.27", - "esbuild": "^0.25.8", - "eslint": "^9.33.0", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.20", - "globals": "^16.3.0", - "jsonc-cli": "^1.0.2", - "lucide-react": "^0.539.0", - "monaco-editor": "^0.52.2", - "plugin-react": "^0.0.1-security", - "prettier": "^3.6.2", - "react": "^19.1.1", - "react-dom": "^19.1.1", - "react-resizable-panels": "^3.0.4", - "react-virtualized-auto-sizer": "^1.0.26", - "react-window": "^1.8.11", - "tailwind-merge": "^3.3.1", - "tailwindcss": "^4.1.12", - "tw-animate-css": "^1.3.6", - "typedoc": "^0.28.9", - "typescript": "^5.9.2", - "typescript-eslint": "^8.39.1", - "use-debounce": "^10.0.5", - "vite": "^7.1.2", - "zx": "^8.8.0" + "@types/node": "^24.8.1", + "zx": "^8.8.5" }, "workspaces": [ "packages/*" diff --git a/packages/cxx-frontend/package.json b/packages/cxx-frontend/package.json index 52ebcc78..96085d06 100644 --- a/packages/cxx-frontend/package.json +++ b/packages/cxx-frontend/package.json @@ -37,11 +37,11 @@ "url": "https://github.com/robertoraggi/cplusplus/issues" }, "devDependencies": { - "@types/node": "^24.0.10", - "esbuild": "^0.25.5", + "@types/node": "^24.8.1", + "esbuild": "^0.25.11", "prettier": "^3.6.2", - "typedoc": "^0.28.7", - "typescript": "^5.8.3", - "zx": "^8.6.1" + "typedoc": "^0.28.14", + "typescript": "^5.9.3", + "zx": "^8.8.5" } } diff --git a/packages/cxx-gen-ast/package.json b/packages/cxx-gen-ast/package.json index 1d84ef4f..14f2691c 100644 --- a/packages/cxx-gen-ast/package.json +++ b/packages/cxx-gen-ast/package.json @@ -18,11 +18,11 @@ }, "license": "MIT", "devDependencies": { - "@types/node": "^24.0.10", + "@types/node": "^24.8.1", "@types/yargs": "^17.0.33", "prettier": "^3.6.2", - "typescript": "^5.8.3", + "typescript": "^5.9.3", "yargs": "^18.0.0", - "zod": "^3.25.74" + "zod": "^4.1.12" } } diff --git a/packages/cxx-gen-lsp/package.json b/packages/cxx-gen-lsp/package.json index 1fbbefa5..8b2681e6 100644 --- a/packages/cxx-gen-lsp/package.json +++ b/packages/cxx-gen-lsp/package.json @@ -18,8 +18,8 @@ }, "license": "MIT", "devDependencies": { - "@types/node": "^24.0.10", + "@types/node": "^24.8.1", "prettier": "^3.6.2", - "typescript": "^5.8.3" + "typescript": "^5.9.3" } } diff --git a/packages/cxx-playground/package.json b/packages/cxx-playground/package.json index 05894142..eb8ac082 100644 --- a/packages/cxx-playground/package.json +++ b/packages/cxx-playground/package.json @@ -10,39 +10,38 @@ "preview": "vite preview" }, "devDependencies": { - "@eslint/js": "^9.30.1", - "@radix-ui/react-dialog": "^1.1.14", + "@eslint/js": "^9.38.0", + "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-separator": "^1.1.7", "@radix-ui/react-slot": "^1.2.3", - "@radix-ui/react-tooltip": "^1.2.7", - "@tailwindcss/vite": "^4.1.11", - "@tanstack/react-query": "^5.81.5", - "@types/react": "^19.1.8", - "@types/react-dom": "^19.1.6", - "@types/react-window": "^1.8.8", - "@vitejs/plugin-react": "^4.6.0", - "birpc": "^2.4.0", + "@radix-ui/react-tooltip": "^1.2.8", + "@tailwindcss/vite": "^4.1.14", + "@tanstack/react-query": "^5.90.5", + "@types/react": "^19.2.2", + "@types/react-dom": "^19.2.2", + "@vitejs/plugin-react": "^5.0.4", + "birpc": "^2.6.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cxx-frontend": "^1.1.27", - "eslint": "^9.30.1", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.20", - "globals": "^16.3.0", - "lucide-react": "^0.525.0", - "monaco-editor": "^0.52.2", + "eslint": "^9.38.0", + "eslint-plugin-react-hooks": "^7.0.0", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.4.0", + "lucide-react": "^0.546.0", + "monaco-editor": "^0.52.0", "prettier": "^3.6.2", - "react": "^19.1.0", - "react-dom": "^19.1.0", - "react-resizable-panels": "^3.0.3", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-resizable-panels": "^3.0.6", "react-virtualized-auto-sizer": "^1.0.26", - "react-window": "^1.8.11", + "react-window": "^2.2.1", "tailwind-merge": "^3.3.1", - "tailwindcss": "^4.1.11", - "tw-animate-css": "^1.3.5", - "typescript": "^5.8.3", - "typescript-eslint": "^8.35.1", - "use-debounce": "^10.0.5", - "vite": "^7.0.2" + "tailwindcss": "^4.1.14", + "tw-animate-css": "^1.4.0", + "typescript": "^5.9.3", + "typescript-eslint": "^8.46.1", + "use-debounce": "^10.0.6", + "vite": "^7.1.10" } } diff --git a/scripts/build-mlir.mjs b/scripts/build-mlir.mjs index d65928e4..25037b66 100644 --- a/scripts/build-mlir.mjs +++ b/scripts/build-mlir.mjs @@ -51,7 +51,7 @@ async function downloadLLVM({ packages, version, outdir }) { } async function main() { - const version = "20.1.8"; + const version = "21.1.3"; const packages = ["cmake", "third-party", "llvm", "mlir"]; const llvm_source_dir = zx.path.resolve( From a87e11de8683eee542bfea677ddc06d4090fdf2a Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Sun, 19 Oct 2025 17:17:20 +0200 Subject: [PATCH 2/4] Fix coding style --- src/parser/cxx/literals.cc | 12 +- src/parser/cxx/preprocessor.cc | 695 ++++++++++++++-------------- src/parser/cxx/preprocessor.h | 68 +-- src/parser/cxx/preprocessor_fwd.h | 10 +- src/parser/cxx/toolchain.h | 14 +- src/parser/cxx/util.h | 2 +- src/parser/cxx/windows_toolchain.cc | 2 +- 7 files changed, 400 insertions(+), 403 deletions(-) diff --git a/src/parser/cxx/literals.cc b/src/parser/cxx/literals.cc index 36d591fc..f9065546 100644 --- a/src/parser/cxx/literals.cc +++ b/src/parser/cxx/literals.cc @@ -33,12 +33,12 @@ namespace { template struct StringLiteralParser { std::string_view text; - DiagnosticsClient *diagnostics; + DiagnosticsClient* diagnostics; String value; int pos = 0; explicit StringLiteralParser(std::string_view text, - DiagnosticsClient *diagnostics) + DiagnosticsClient* diagnostics) : text(text), diagnostics(diagnostics) {} [[nodiscard]] auto LA(int n = 0) -> int { @@ -355,7 +355,7 @@ void IntegerLiteral::initialize() const { } auto IntegerLiteral::Components::from(std::string_view text, - DiagnosticsClient *diagnostics) + DiagnosticsClient* diagnostics) -> Components { std::string integerPart; integerPart.reserve(text.size()); @@ -578,7 +578,7 @@ void FloatLiteral::initialize() const { } auto FloatLiteral::Components::from(std::string_view text, - DiagnosticsClient *diagnostics) + DiagnosticsClient* diagnostics) -> Components { std::size_t pos = 0; @@ -737,7 +737,7 @@ auto FloatLiteral::Components::from(std::string_view text, } auto StringLiteral::Components::from(std::string_view text, - DiagnosticsClient *diagnostics) + DiagnosticsClient* diagnostics) -> Components { StringLiteralParser parser(text, diagnostics); @@ -754,7 +754,7 @@ void StringLiteral::initialize() const { } auto CharLiteral::Components::from(std::string_view text, - DiagnosticsClient *diagnostics) + DiagnosticsClient* diagnostics) -> Components { StringLiteralParser parser(text, diagnostics); diff --git a/src/parser/cxx/preprocessor.cc b/src/parser/cxx/preprocessor.cc index 5cc055a3..bbac519e 100644 --- a/src/parser/cxx/preprocessor.cc +++ b/src/parser/cxx/preprocessor.cc @@ -192,26 +192,26 @@ std::unordered_set enabledFeatures{ class Hideset { public: - Hideset(const Hideset &other) = default; - auto operator=(const Hideset &other) -> Hideset & = default; + Hideset(const Hideset& other) = default; + auto operator=(const Hideset& other) -> Hideset& = default; - Hideset(Hideset &&other) = default; - auto operator=(Hideset &&other) -> Hideset & = default; + Hideset(Hideset&& other) = default; + auto operator=(Hideset&& other) -> Hideset& = default; Hideset() = default; explicit Hideset(std::set names) : names_(std::move(names)) {} - [[nodiscard]] auto contains(const std::string_view &name) const -> bool { + [[nodiscard]] auto contains(const std::string_view& name) const -> bool { return names_.contains(name); } - [[nodiscard]] auto names() const -> const std::set & { + [[nodiscard]] auto names() const -> const std::set& { return names_; }; - auto operator==(const Hideset &other) const -> bool { + auto operator==(const Hideset& other) const -> bool { return names_ == other.names_; } @@ -219,8 +219,8 @@ class Hideset { std::set names_; }; -inline auto getHeaderName(const cxx::Include &include) -> std::string { - return std::visit([](const auto &include) { return include.fileName; }, +inline auto getHeaderName(const cxx::Include& include) -> std::string { + return std::visit([](const auto& include) { return include.fileName; }, include); } @@ -230,27 +230,27 @@ template <> struct std::less { using is_transparent = void; - auto operator()(const Hideset &hideset, const Hideset &other) const -> bool { + auto operator()(const Hideset& hideset, const Hideset& other) const -> bool { return hideset.names() < other.names(); } - auto operator()(const Hideset &hideset, - const std::set &names) const -> bool { + auto operator()(const Hideset& hideset, + const std::set& names) const -> bool { return hideset.names() < names; } - auto operator()(const std::set &names, - const Hideset &hideset) const -> bool { + auto operator()(const std::set& names, + const Hideset& hideset) const -> bool { return names < hideset.names(); } - auto operator()(const Hideset &hideset, const std::string_view &name) const + auto operator()(const Hideset& hideset, const std::string_view& name) const -> bool { return std::lexicographical_compare(begin(hideset.names()), end(hideset.names()), &name, &name + 1); } - auto operator()(const std::string_view &name, const Hideset &hideset) const + auto operator()(const std::string_view& name, const Hideset& hideset) const -> bool { return std::lexicographical_compare( &name, &name + 1, begin(hideset.names()), end(hideset.names())); @@ -261,18 +261,18 @@ template <> struct std::hash { using is_transparent = void; - auto operator()(const Hideset &hideset) const -> std::size_t { + auto operator()(const Hideset& hideset) const -> std::size_t { return operator()(hideset.names()); } - auto operator()(const std::set &names) const + auto operator()(const std::set& names) const -> std::size_t { std::size_t seed = 0; - for (const auto &name : names) cxx::hash_combine(seed, name); + for (const auto& name : names) cxx::hash_combine(seed, name); return seed; } - auto operator()(const std::string_view &name) const -> std::size_t { + auto operator()(const std::string_view& name) const -> std::size_t { std::size_t seed = 0; cxx::hash_combine(seed, name); return seed; @@ -283,26 +283,26 @@ template <> struct std::equal_to { using is_transparent = void; - auto operator()(const Hideset &hideset, const Hideset &other) const -> bool { + auto operator()(const Hideset& hideset, const Hideset& other) const -> bool { return hideset.names() == other.names(); } - auto operator()(const Hideset &hideset, - const std::set &names) const -> bool { + auto operator()(const Hideset& hideset, + const std::set& names) const -> bool { return hideset.names() == names; } - auto operator()(const std::set &names, - const Hideset &hideset) const -> bool { + auto operator()(const std::set& names, + const Hideset& hideset) const -> bool { return hideset.names() == names; } - auto operator()(const Hideset &hideset, const std::string_view &name) const + auto operator()(const Hideset& hideset, const std::string_view& name) const -> bool { return hideset.names().size() == 1 && *hideset.names().begin() == name; } - auto operator()(const std::string_view &name, const Hideset &hideset) const + auto operator()(const std::string_view& name, const Hideset& hideset) const -> bool { return hideset.names().size() == 1 && *hideset.names().begin() == name; } @@ -317,7 +317,7 @@ struct TokList; struct Tok final : Managed { std::string_view text; - const Hideset *hideset = nullptr; + const Hideset* hideset = nullptr; std::uint32_t offset = 0; std::uint32_t length = 0; std::uint32_t sourceFile = 0; @@ -327,23 +327,23 @@ struct Tok final : Managed { std::uint16_t generated : 1 = false; std::uint16_t isFromMacroBody : 1 = false; - Tok(const Tok &other) = default; - auto operator=(const Tok &other) -> Tok & = default; + Tok(const Tok& other) = default; + auto operator=(const Tok& other) -> Tok& = default; - Tok(Tok &&other) = default; - auto operator=(Tok &&other) -> Tok & = default; + Tok(Tok&& other) = default; + auto operator=(Tok&& other) -> Tok& = default; [[nodiscard]] auto is(TokenKind k) const -> bool { return kind == k; } [[nodiscard]] auto isNot(TokenKind k) const -> bool { return kind != k; } - [[nodiscard]] static auto WithHideset(Arena *pool, const Tok *tok, - const Hideset *hideset) -> Tok * { + [[nodiscard]] static auto WithHideset(Arena* pool, const Tok* tok, + const Hideset* hideset) -> Tok* { return new (pool) Tok(tok, hideset); } - [[nodiscard]] static auto FromCurrentToken(Arena *pool, const Lexer &lex, - int sourceFile) -> Tok * { + [[nodiscard]] static auto FromCurrentToken(Arena* pool, const Lexer& lex, + int sourceFile) -> Tok* { auto tk = new (pool) Tok(); tk->sourceFile = sourceFile; tk->kind = lex.tokenKind(); @@ -355,15 +355,15 @@ struct Tok final : Managed { return tk; } - [[nodiscard]] static auto Copy(Arena *pool, const Tok *tok) { + [[nodiscard]] static auto Copy(Arena* pool, const Tok* tok) { auto tk = new (pool) Tok(); *tk = *tok; return tk; } - [[nodiscard]] static auto Gen(Arena *pool, TokenKind kind, - const std::string_view &text, - const Hideset *hideset = nullptr) -> Tok * { + [[nodiscard]] static auto Gen(Arena* pool, TokenKind kind, + const std::string_view& text, + const Hideset* hideset = nullptr) -> Tok* { auto tk = new (pool) Tok(); tk->kind = kind; tk->text = text; @@ -385,20 +385,20 @@ struct Tok final : Managed { private: Tok() = default; - Tok(const Tok *tok, const Hideset *hs) { + Tok(const Tok* tok, const Hideset* hs) { *this = *tok; hideset = hs; } }; struct TokList final : Managed { - const Tok *tok = nullptr; - TokList *next = nullptr; + const Tok* tok = nullptr; + TokList* next = nullptr; - explicit TokList(const Tok *tok, TokList *next = nullptr) + explicit TokList(const Tok* tok, TokList* next = nullptr) : tok(tok), next(next) {} - [[nodiscard]] static auto isSame(TokList *ls, TokList *rs) -> bool { + [[nodiscard]] static auto isSame(TokList* ls, TokList* rs) -> bool { if (ls == rs) return true; if (!ls || !rs) return false; if (ls->tok->kind != rs->tok->kind) return false; @@ -409,19 +409,19 @@ struct TokList final : Managed { class TokIterator { public: - using value_type = const Tok *; + using value_type = const Tok*; using difference_type = std::ptrdiff_t; TokIterator() = default; - explicit TokIterator(TokList *ts) : ts_(ts) {} + explicit TokIterator(TokList* ts) : ts_(ts) {} - auto operator==(const TokIterator &other) const -> bool = default; + auto operator==(const TokIterator& other) const -> bool = default; - auto operator*() const -> const Tok & { return *ts_->tok; } + auto operator*() const -> const Tok& { return *ts_->tok; } - auto operator->() const -> const Tok * { return ts_->tok; } + auto operator->() const -> const Tok* { return ts_->tok; } - auto operator++() -> TokIterator & { + auto operator++() -> TokIterator& { ts_ = ts_->next; return *this; } @@ -432,10 +432,10 @@ class TokIterator { return it; } - [[nodiscard]] auto toTokList() const -> TokList * { return ts_; } + [[nodiscard]] auto toTokList() const -> TokList* { return ts_; } private: - TokList *ts_ = nullptr; + TokList* ts_ = nullptr; }; struct EndOfFileSentinel { @@ -497,19 +497,19 @@ inline constexpr LookAt lookat{}; struct ObjectMacro { std::string_view name; - TokList *body = nullptr; + TokList* body = nullptr; - ObjectMacro(std::string_view name, TokList *body) : name(name), body(body) {} + ObjectMacro(std::string_view name, TokList* body) : name(name), body(body) {} }; struct FunctionMacro { std::string_view name; std::vector formals; - TokList *body = nullptr; + TokList* body = nullptr; bool variadic = false; FunctionMacro(std::string_view name, std::vector formals, - TokList *body, bool variadic) + TokList* body, bool variadic) : name(name), formals(std::move(formals)), body(body), @@ -517,47 +517,47 @@ struct FunctionMacro { }; struct MacroExpansionContext { - TokList *ts = nullptr; + TokList* ts = nullptr; }; struct BuiltinObjectMacro { std::string_view name; - std::functionTokList *> expand; + std::functionTokList*> expand; BuiltinObjectMacro( std::string_view name, - std::functionTokList *> expand) + std::functionTokList*> expand) : name(name), expand(std::move(expand)) {} }; struct BuiltinFunctionMacro { std::string_view name; - std::functionTokList *> expand; + std::functionTokList*> expand; BuiltinFunctionMacro( std::string_view name, - std::functionTokList *> expand) + std::functionTokList*> expand) : name(name), expand(std::move(expand)) {} }; using Macro = std::variant; -[[nodiscard]] inline auto getMacroName(const Macro ¯o) -> std::string_view { +[[nodiscard]] inline auto getMacroName(const Macro& macro) -> std::string_view { struct { - auto operator()(const ObjectMacro ¯o) const -> std::string_view { + auto operator()(const ObjectMacro& macro) const -> std::string_view { return macro.name; } - auto operator()(const FunctionMacro ¯o) const -> std::string_view { + auto operator()(const FunctionMacro& macro) const -> std::string_view { return macro.name; } - auto operator()(const BuiltinObjectMacro ¯o) const -> std::string_view { + auto operator()(const BuiltinObjectMacro& macro) const -> std::string_view { return macro.name; } - auto operator()(const BuiltinFunctionMacro ¯o) const + auto operator()(const BuiltinFunctionMacro& macro) const -> std::string_view { return macro.name; } @@ -566,21 +566,21 @@ using Macro = std::variant TokList * { +[[nodiscard]] inline auto getMacroBody(const Macro& macro) -> TokList* { struct { - auto operator()(const ObjectMacro ¯o) const -> TokList * { + auto operator()(const ObjectMacro& macro) const -> TokList* { return macro.body; } - auto operator()(const FunctionMacro ¯o) const -> TokList * { + auto operator()(const FunctionMacro& macro) const -> TokList* { return macro.body; } - auto operator()(const BuiltinObjectMacro ¯o) const -> TokList * { + auto operator()(const BuiltinObjectMacro& macro) const -> TokList* { return nullptr; } - auto operator()(const BuiltinFunctionMacro ¯o) const -> TokList * { + auto operator()(const BuiltinFunctionMacro& macro) const -> TokList* { return nullptr; } } visitor; @@ -588,27 +588,25 @@ using Macro = std::variant bool { +[[nodiscard]] inline auto isObjectLikeMacro(const Macro& macro) -> bool { struct { - auto operator()(const ObjectMacro &) const -> bool { return true; } - auto operator()(const BuiltinObjectMacro &) const -> bool { return true; } + auto operator()(const ObjectMacro&) const -> bool { return true; } + auto operator()(const BuiltinObjectMacro&) const -> bool { return true; } - auto operator()(const FunctionMacro &) const -> bool { return false; } - auto operator()(const BuiltinFunctionMacro &) const -> bool { - return false; - } + auto operator()(const FunctionMacro&) const -> bool { return false; } + auto operator()(const BuiltinFunctionMacro&) const -> bool { return false; } } visitor; return std::visit(visitor, macro); } -[[nodiscard]] inline auto isFunctionLikeMacro(const Macro ¯o) -> bool { +[[nodiscard]] inline auto isFunctionLikeMacro(const Macro& macro) -> bool { struct { - auto operator()(const FunctionMacro &) const -> bool { return true; } - auto operator()(const BuiltinFunctionMacro &) const -> bool { return true; } + auto operator()(const FunctionMacro&) const -> bool { return true; } + auto operator()(const BuiltinFunctionMacro&) const -> bool { return true; } - auto operator()(const ObjectMacro &) const -> bool { return false; } - auto operator()(const BuiltinObjectMacro &) const -> bool { return false; } + auto operator()(const ObjectMacro&) const -> bool { return false; } + auto operator()(const BuiltinObjectMacro&) const -> bool { return false; } } visitor; return std::visit(visitor, macro); @@ -618,17 +616,17 @@ struct SourceFile { std::string fileName; std::string source; std::vector lines; - TokList *tokens = nullptr; - TokList *headerProtection = nullptr; + TokList* tokens = nullptr; + TokList* headerProtection = nullptr; int headerProtectionLevel = 0; int id = 0; bool pragmaOnceProtected = false; SourceFile() noexcept = default; - SourceFile(const SourceFile &) noexcept = default; - auto operator=(const SourceFile &) noexcept -> SourceFile & = default; - SourceFile(SourceFile &&) noexcept = default; - auto operator=(SourceFile &&) noexcept -> SourceFile & = default; + SourceFile(const SourceFile&) noexcept = default; + auto operator=(const SourceFile&) noexcept -> SourceFile& = default; + SourceFile(SourceFile&&) noexcept = default; + auto operator=(SourceFile&&) noexcept -> SourceFile& = default; SourceFile(std::string fileName, std::string source, std::uint32_t id) noexcept @@ -691,16 +689,16 @@ struct SourceFile { struct Preprocessor::Private { struct Buffer { - SourceFile *source = nullptr; + SourceFile* source = nullptr; fs::path currentPath; - TokList *ts = nullptr; + TokList* ts = nullptr; int includeDepth = 0; }; - Preprocessor *preprocessor_ = nullptr; - Control *control_ = nullptr; - DiagnosticsClient *diagnosticsClient_ = nullptr; - CommentHandler *commentHandler_ = nullptr; + Preprocessor* preprocessor_ = nullptr; + Control* control_ = nullptr; + DiagnosticsClient* diagnosticsClient_ = nullptr; + CommentHandler* commentHandler_ = nullptr; LanguageKind language_ = LanguageKind::kCXX; bool canResolveFiles_ = true; std::vector systemIncludePaths_; @@ -716,7 +714,7 @@ struct Preprocessor::Private { std::vector skipping_; std::string_view date_; std::string_view time_; - std::function willIncludeHeader_; + std::function willIncludeHeader_; std::vector buffers_; struct Dep { std::string_view local; @@ -739,7 +737,7 @@ struct Preprocessor::Private { void initialize(); - void error(TokList *ts, std::string message) const { + void error(TokList* ts, std::string message) const { if (!ts || !ts->tok) { cxx_runtime_error(std::format("no source location: {}", message)); } else { @@ -748,7 +746,7 @@ struct Preprocessor::Private { } } - void warning(TokList *ts, std::string message) const { + void warning(TokList* ts, std::string message) const { if (!ts || !ts->tok) { cxx_runtime_error(std::format("no source location: {}", message)); } else { @@ -757,11 +755,11 @@ struct Preprocessor::Private { } } - void error(const Token &token, std::string message) const { + void error(const Token& token, std::string message) const { diagnosticsClient_->report(token, Severity::Error, std::move(message)); } - void warning(const Token &token, std::string message) const { + void warning(const Token& token, std::string message) const { diagnosticsClient_->report(token, Severity::Warning, std::move(message)); } @@ -769,21 +767,20 @@ struct Preprocessor::Private { return std::tuple(skipping_.back(), evaluating_.back()); } - [[nodiscard]] auto clone(TokList *ts) -> TokList * { + [[nodiscard]] auto clone(TokList* ts) -> TokList* { if (!ts) return nullptr; return cons(ts->tok, clone(ts->next)); } - [[nodiscard]] auto cons(const Tok *tok, TokList *next = nullptr) - -> TokList * { + [[nodiscard]] auto cons(const Tok* tok, TokList* next = nullptr) -> TokList* { return new (&pool_) TokList(tok, next); } - [[nodiscard]] auto snoc(TokList *first, TokList *second) -> TokList * { + [[nodiscard]] auto snoc(TokList* first, TokList* second) -> TokList* { if (!first) return second; if (!second) return first; - TokList *tail = first; + TokList* tail = first; while (tail->next) { tail = tail->next; @@ -795,9 +792,9 @@ struct Preprocessor::Private { } template S> - [[nodiscard]] auto toTokList(I first, S last) -> TokList * { - TokList *list = nullptr; - TokList **it = &list; + [[nodiscard]] auto toTokList(I first, S last) -> TokList* { + TokList* list = nullptr; + TokList** it = &list; for (; first != last; ++first) { *it = cons(&*first); it = (&(*it)->next); @@ -806,26 +803,26 @@ struct Preprocessor::Private { } template - [[nodiscard]] auto toTokList(const R &range) -> TokList * { + [[nodiscard]] auto toTokList(const R& range) -> TokList* { return toTokList(std::ranges::begin(range), std::ranges::end(range)); } - [[nodiscard]] auto withHideset(const Tok *tok, const Hideset *hideset) - -> Tok * { + [[nodiscard]] auto withHideset(const Tok* tok, const Hideset* hideset) + -> Tok* { return Tok::WithHideset(&pool_, tok, hideset); } - [[nodiscard]] auto fromCurrentToken(const Lexer &lex, int sourceFile) - -> Tok * { + [[nodiscard]] auto fromCurrentToken(const Lexer& lex, int sourceFile) + -> Tok* { return Tok::FromCurrentToken(&pool_, lex, sourceFile); } - [[nodiscard]] auto gen(TokenKind kind, const std::string_view &text, - const Hideset *hideset = nullptr) -> Tok * { + [[nodiscard]] auto gen(TokenKind kind, const std::string_view& text, + const Hideset* hideset = nullptr) -> Tok* { return Tok::Gen(&pool_, kind, text, hideset); } - [[nodiscard]] auto copy(const Tok *tok) -> Tok * { + [[nodiscard]] auto copy(const Tok* tok) -> Tok* { auto copy = Tok::Copy(&pool_, tok); return copy; } @@ -847,9 +844,9 @@ struct Preprocessor::Private { evaluating_.pop_back(); } - [[nodiscard]] auto findSourceFile(const std::string &fileName) - -> SourceFile * { - for (auto &sourceFile : sourceFiles_) { + [[nodiscard]] auto findSourceFile(const std::string& fileName) + -> SourceFile* { + for (auto& sourceFile : sourceFiles_) { if (sourceFile->fileName == fileName) { return sourceFile.get(); } @@ -858,14 +855,14 @@ struct Preprocessor::Private { } [[nodiscard]] auto createSourceFile(std::string fileName, std::string source) - -> SourceFile * { + -> SourceFile* { if (sourceFiles_.size() >= 4096) { cxx_runtime_error("too many source files"); } const int sourceFileId = static_cast(sourceFiles_.size() + 1); - SourceFile *sourceFile = + SourceFile* sourceFile = &*sourceFiles_.emplace_back(std::make_unique( std::move(fileName), std::move(source), sourceFileId)); @@ -874,15 +871,15 @@ struct Preprocessor::Private { return sourceFile; } - [[nodiscard]] auto bol(TokList *ts) const -> bool { + [[nodiscard]] auto bol(TokList* ts) const -> bool { return ts && ts->tok->bol; } - [[nodiscard]] auto lookat(TokList *ts, auto... tokens) const -> bool { + [[nodiscard]] auto lookat(TokList* ts, auto... tokens) const -> bool { return cxx::lookat(TokIterator{ts}, EndOfFileSentinel{}, tokens...); } - [[nodiscard]] auto match(TokList *&ts, TokenKind k) const -> bool { + [[nodiscard]] auto match(TokList*& ts, TokenKind k) const -> bool { if (lookat(ts, k)) { ts = ts->next; return true; @@ -890,7 +887,7 @@ struct Preprocessor::Private { return false; } - [[nodiscard]] auto match(TokIterator &it, TokIterator last, TokenKind k) const + [[nodiscard]] auto match(TokIterator& it, TokIterator last, TokenKind k) const -> bool { if (it == last) return false; if (it->isNot(k)) return false; @@ -898,7 +895,7 @@ struct Preprocessor::Private { return true; } - [[nodiscard]] auto matchId(TokList *&ts, const std::string_view &s) const + [[nodiscard]] auto matchId(TokList*& ts, const std::string_view& s) const -> bool { if (lookat(ts, TokenKind::T_IDENTIFIER) && ts->tok->text == s) { ts = ts->next; @@ -907,13 +904,13 @@ struct Preprocessor::Private { return false; } - void expect(TokList *&ts, TokenKind k) const { + void expect(TokList*& ts, TokenKind k) const { if (!match(ts, k)) { error(ts, std::format("expected '{}'", Token::spell(k))); } } - [[nodiscard]] auto expectId(TokList *&ts) const -> std::string_view { + [[nodiscard]] auto expectId(TokList*& ts) const -> std::string_view { if (lookat(ts, TokenKind::T_IDENTIFIER)) { auto id = ts->tok->text; ts = ts->next; @@ -924,8 +921,8 @@ struct Preprocessor::Private { return {}; } - [[nodiscard]] auto makeUnion(const Hideset *hs, const std::string_view &name) - -> const Hideset * { + [[nodiscard]] auto makeUnion(const Hideset* hs, const std::string_view& name) + -> const Hideset* { if (!hs) return get(name); if (hs->names().contains(name)) return hs; auto names = hs->names(); @@ -933,8 +930,8 @@ struct Preprocessor::Private { return get(std::move(names)); } - [[nodiscard]] auto makeIntersection(const Hideset *hs, const Hideset *other) - -> const Hideset * { + [[nodiscard]] auto makeIntersection(const Hideset* hs, const Hideset* other) + -> const Hideset* { if (!other || !hs) return nullptr; if (other == hs) return hs; @@ -947,13 +944,13 @@ struct Preprocessor::Private { return get(std::move(names)); } - [[nodiscard]] auto get(std::set names) -> const Hideset * { + [[nodiscard]] auto get(std::set names) -> const Hideset* { if (names.empty()) return nullptr; if (auto it = hidesets.find(names); it != hidesets.end()) return &*it; return &*hidesets.emplace(std::move(names)).first; } - [[nodiscard]] auto get(const std::string_view &name) -> const Hideset * { + [[nodiscard]] auto get(const std::string_view& name) -> const Hideset* { if (auto it = hidesets.find(name); it != hidesets.end()) return &*it; return &*hidesets.emplace(std::set{name}).first; } @@ -971,7 +968,7 @@ struct Preprocessor::Private { } // switch } - [[nodiscard]] auto updateStringLiteralValue(Token &lastToken, const Tok *tk) + [[nodiscard]] auto updateStringLiteralValue(Token& lastToken, const Tok* tk) -> bool { if (!isStringLiteral(lastToken.kind())) { return false; @@ -1017,31 +1014,31 @@ struct Preprocessor::Private { return true; } - [[nodiscard]] auto fileExists(const fs::path &file) const -> bool { + [[nodiscard]] auto fileExists(const fs::path& file) const -> bool { return fs::exists(file) && !fs::is_directory(file); } - [[nodiscard]] auto checkHeaderProtection(TokList *ts) const -> TokList *; + [[nodiscard]] auto checkHeaderProtection(TokList* ts) const -> TokList*; - [[nodiscard]] auto checkPragmaOnceProtected(TokList *ts) const -> bool; + [[nodiscard]] auto checkPragmaOnceProtected(TokList* ts) const -> bool; struct Resolve { - const Private *d; + const Private* d; bool wantNextInlude; bool didFindCurrentPath = false; std::optional firstMatch; std::array currentPaths; - Resolve(const Resolve &other) = delete; - auto operator=(const Resolve &other) -> Resolve & = delete; + Resolve(const Resolve& other) = delete; + auto operator=(const Resolve& other) -> Resolve& = delete; - Resolve(const Private *d, bool next) : d(d), wantNextInlude(next) { + Resolve(const Private* d, bool next) : d(d), wantNextInlude(next) { currentPaths[0] = d->currentPath_.string(); } using SearchPaths = std::vector>; - [[nodiscard]] auto operator()(const Include &include) + [[nodiscard]] auto operator()(const Include& include) -> std::optional { // search in the current path auto header = getHeaderName(include); @@ -1079,15 +1076,15 @@ struct Preprocessor::Private { return paths; } - [[nodiscard]] auto search(auto view, const std::string &headerName) + [[nodiscard]] auto search(auto view, const std::string& headerName) -> std::optional { auto transformToIncludePath = std::views::transform( - [&](const fs::path &path) { return path / headerName; }); + [&](const fs::path& path) { return path / headerName; }); auto filterExistingFiles = std::views::filter( - [&](const fs::path &path) { return d->fileExists(path); }); + [&](const fs::path& path) { return d->fileExists(path); }); - for (const auto &path : view | transformToIncludePath | + for (const auto& path : view | transformToIncludePath | filterExistingFiles | std::views::reverse) { if (!wantNextInlude) return path.string(); @@ -1104,71 +1101,72 @@ struct Preprocessor::Private { } }; - [[nodiscard]] auto resolve(const Include &include, bool next) const + [[nodiscard]] auto resolve(const Include& include, bool next) const -> std::optional { if (!canResolveFiles_) return std::nullopt; return Resolve{this, next}(include); } - [[nodiscard]] auto isDefined(const std::string_view &id) const -> bool { + [[nodiscard]] auto isDefined(const std::string_view& id) const -> bool { const auto defined = macros_.contains(id); return defined; } - [[nodiscard]] auto isDefined(const Tok *tok) const -> bool { + [[nodiscard]] auto isDefined(const Tok* tok) const -> bool { if (!tok) return false; return tok->is(TokenKind::T_IDENTIFIER) && isDefined(tok->text); } - void defineMacro(TokList *ts); + void defineMacro(TokList* ts); void adddBuiltinMacro( std::string_view name, - std::functionTokList *> expand) { + std::functionTokList*> expand) { macros_.insert_or_assign(name, BuiltinObjectMacro(name, std::move(expand))); } void adddBuiltinFunctionMacro( std::string_view name, - std::functionTokList *> expand) { + std::functionTokList*> expand) { macros_.insert_or_assign(name, BuiltinFunctionMacro(name, std::move(expand))); } - [[nodiscard]] auto tokenize(const std::string_view &source, int sourceFile, - bool bol) -> TokList *; + [[nodiscard]] auto tokenize(const std::string_view& source, int sourceFile, + bool bol) -> TokList*; [[nodiscard]] auto skipLine(TokIterator it, TokIterator last) -> TokIterator; - [[nodiscard]] auto parseMacroDefinition(TokList *ts) -> Macro; + [[nodiscard]] auto parseMacroDefinition(TokList* ts) -> Macro; - [[nodiscard]] auto expand(const std::function &emitToken) + [[nodiscard]] auto expand(const std::function& emitToken) -> PreprocessingState; [[nodiscard]] auto expandTokens(TokIterator it, TokIterator last, bool inConditionalExpression) -> TokIterator; - [[nodiscard]] auto expandOne( - TokIterator first, TokIterator last, bool inConditionalExpression, - const std::function &emitToken) -> TokIterator; + [[nodiscard]] auto expandOne(TokIterator first, TokIterator last, + bool inConditionalExpression, + const std::function& emitToken) + -> TokIterator; [[nodiscard]] auto replaceIsDefinedMacro( - TokList *ts, bool inConditionalExpression, - const std::function &emitToken) -> TokList *; + TokList* ts, bool inConditionalExpression, + const std::function& emitToken) -> TokList*; - [[nodiscard]] auto expandMacro(TokList *ts) -> TokList *; + [[nodiscard]] auto expandMacro(TokList* ts) -> TokList*; - [[nodiscard]] auto expandObjectLikeMacro(TokList *ts, const Macro *macro) - -> TokList *; + [[nodiscard]] auto expandObjectLikeMacro(TokList* ts, const Macro* macro) + -> TokList*; - [[nodiscard]] auto expandFunctionLikeMacro(TokList *ts, const Macro *macro) - -> TokList *; + [[nodiscard]] auto expandFunctionLikeMacro(TokList* ts, const Macro* macro) + -> TokList*; struct ParsedIncludeDirective { Include header; bool includeNext = false; - TokList *loc = nullptr; + TokList* loc = nullptr; }; struct ParsedIfDirective { @@ -1178,67 +1176,67 @@ struct Preprocessor::Private { using ParsedDirective = std::variant; - [[nodiscard]] auto parseDirective(SourceFile *source, TokList *start) + [[nodiscard]] auto parseDirective(SourceFile* source, TokList* start) -> ParsedDirective; - [[nodiscard]] auto parseIncludeDirective(TokList *directive, TokList *ts) + [[nodiscard]] auto parseIncludeDirective(TokList* directive, TokList* ts) -> std::optional; - [[nodiscard]] auto parseHeaderName(TokList *ts) - -> std::tuple>; + [[nodiscard]] auto parseHeaderName(TokList* ts) + -> std::tuple>; - [[nodiscard]] auto substitute(TokList *pointOfSubstitution, - const Macro *macro, - const std::vector &actuals, - const Hideset *hideset) -> TokList *; + [[nodiscard]] auto substitute(TokList* pointOfSubstitution, + const Macro* macro, + const std::vector& actuals, + const Hideset* hideset) -> TokList*; - [[nodiscard]] auto merge(const Tok *left, const Tok *right) -> const Tok *; + [[nodiscard]] auto merge(const Tok* left, const Tok* right) -> const Tok*; - [[nodiscard]] auto stringize(TokList *ts) -> const Tok *; + [[nodiscard]] auto stringize(TokList* ts) -> const Tok*; - [[nodiscard]] auto instantiate(TokList *ts, const Hideset *hideset) - -> TokList *; + [[nodiscard]] auto instantiate(TokList* ts, const Hideset* hideset) + -> TokList*; - [[nodiscard]] auto lookupMacro(const Tok *tk) const -> const Macro *; + [[nodiscard]] auto lookupMacro(const Tok* tk) const -> const Macro*; - [[nodiscard]] auto lookupMacroArgument(TokList *&ts, const Macro *macro, - const std::vector &actuals) + [[nodiscard]] auto lookupMacroArgument(TokList*& ts, const Macro* macro, + const std::vector& actuals) -> std::optional; - [[nodiscard]] auto copyLine(TokList *ts, bool inMacroBody = false) - -> TokList *; + [[nodiscard]] auto copyLine(TokList* ts, bool inMacroBody = false) + -> TokList*; - [[nodiscard]] auto prepareConstantExpression(TokList *ts) -> TokList *; + [[nodiscard]] auto prepareConstantExpression(TokList* ts) -> TokList*; - [[nodiscard]] auto evaluateConstantExpression(TokList *ts) -> long; - [[nodiscard]] auto conditionalExpression(TokList *&ts) -> long; - [[nodiscard]] auto binaryExpression(TokList *&ts) -> long; - [[nodiscard]] auto binaryExpressionHelper(TokList *&ts, long lhs, int minPrec) + [[nodiscard]] auto evaluateConstantExpression(TokList* ts) -> long; + [[nodiscard]] auto conditionalExpression(TokList*& ts) -> long; + [[nodiscard]] auto binaryExpression(TokList*& ts) -> long; + [[nodiscard]] auto binaryExpressionHelper(TokList*& ts, long lhs, int minPrec) -> long; - [[nodiscard]] auto unaryExpression(TokList *&ts) -> long; - [[nodiscard]] auto primaryExpression(TokList *&ts) -> long; + [[nodiscard]] auto unaryExpression(TokList*& ts) -> long; + [[nodiscard]] auto primaryExpression(TokList*& ts) -> long; - [[nodiscard]] auto parseArguments(TokList *ts, std::size_t formalCount, + [[nodiscard]] auto parseArguments(TokList* ts, std::size_t formalCount, bool ignoreComma = false) - -> std::tuple, TokList *, const Hideset *>; + -> std::tuple, TokList*, const Hideset*>; [[nodiscard]] auto string(std::string s) -> std::string_view; - void print(TokList *ts, std::ostream &out) const; + void print(TokList* ts, std::ostream& out) const; - void printLine(TokList *ts, std::ostream &out, bool nl = true) const; + void printLine(TokList* ts, std::ostream& out, bool nl = true) const; - void finalizeToken(std::vector &tokens, const Tok *tk); + void finalizeToken(std::vector& tokens, const Tok* tk); }; struct Preprocessor::ParseArguments { struct Result { std::vector args; TokIterator it; - const Hideset *hideset = nullptr; + const Hideset* hideset = nullptr; }; - Private &d; + Private& d; template S> auto operator()(TokIterator it, S last, std::size_t formalCount, @@ -1286,7 +1284,7 @@ struct Preprocessor::ParseArguments { template S> auto skipArgument(I it, S last, bool ignoreComma) -> TokIterator { for (int depth = 0; it != last; ++it) { - const auto &tk = *it; + const auto& tk = *it; if (tk.is(TokenKind::T_LPAREN)) { ++depth; } else if (tk.is(TokenKind::T_RPAREN)) { @@ -1306,8 +1304,8 @@ void PendingInclude::resolveWith( auto d = preprocessor.d.get(); if (!resolvedFileName.has_value()) { - const auto &header = getHeaderName(include); - d->error(static_cast(loc), + const auto& header = getHeaderName(include); + d->error(static_cast(loc), std::format("file '{}' not found", header)); return; } @@ -1425,7 +1423,7 @@ void Preprocessor::Private::initialize() { // add built-in object-like macros adddBuiltinMacro( - "__FILE__", [this](const MacroExpansionContext &context) -> TokList * { + "__FILE__", [this](const MacroExpansionContext& context) -> TokList* { auto ts = context.ts; auto tk = gen(TokenKind::T_STRING_LITERAL, string(std::format("\"{}\"", currentFileName_))); @@ -1435,7 +1433,7 @@ void Preprocessor::Private::initialize() { }); adddBuiltinMacro( - "__LINE__", [this](const MacroExpansionContext &context) -> TokList * { + "__LINE__", [this](const MacroExpansionContext& context) -> TokList* { auto ts = context.ts; const auto start = preprocessor_->tokenStartPosition(ts->tok->token()); auto tk = gen(TokenKind::T_INTEGER_LITERAL, @@ -1446,7 +1444,7 @@ void Preprocessor::Private::initialize() { }); adddBuiltinMacro("__COUNTER__", - [this](const MacroExpansionContext &context) -> TokList * { + [this](const MacroExpansionContext& context) -> TokList* { auto tk = gen(TokenKind::T_INTEGER_LITERAL, string(std::to_string(counter_++))); tk->sourceFile = context.ts->tok->sourceFile; @@ -1455,7 +1453,7 @@ void Preprocessor::Private::initialize() { }); adddBuiltinMacro("__DATE__", - [this](const MacroExpansionContext &context) -> TokList * { + [this](const MacroExpansionContext& context) -> TokList* { auto ts = context.ts; auto tk = gen(TokenKind::T_STRING_LITERAL, date_); tk->sourceFile = ts->tok->sourceFile; @@ -1464,7 +1462,7 @@ void Preprocessor::Private::initialize() { }); adddBuiltinMacro("__TIME__", - [this](const MacroExpansionContext &context) -> TokList * { + [this](const MacroExpansionContext& context) -> TokList* { auto ts = context.ts; auto tk = gen(TokenKind::T_STRING_LITERAL, time_); tk->sourceFile = ts->tok->sourceFile; @@ -1474,8 +1472,8 @@ void Preprocessor::Private::initialize() { // add built-in function-like macros - auto replaceWithBoolLiteral = [this](const Tok *token, bool value, - TokList *ts) { + auto replaceWithBoolLiteral = [this](const Tok* token, bool value, + TokList* ts) { auto tk = gen(TokenKind::T_INTEGER_LITERAL, value ? "1" : "0"); tk->sourceFile = token->sourceFile; tk->space = token->space; @@ -1483,8 +1481,8 @@ void Preprocessor::Private::initialize() { return cons(tk, ts); }; - auto replaceWithLocal = [this](const Tok *token, std::string_view local, - TokList *ts) { + auto replaceWithLocal = [this](const Tok* token, std::string_view local, + TokList* ts) { auto tk = gen(TokenKind::T_PP_INTERNAL_VARIABLE, local); tk->sourceFile = token->sourceFile; tk->space = token->space; @@ -1495,7 +1493,7 @@ void Preprocessor::Private::initialize() { adddBuiltinFunctionMacro( "__has_feature", [this, replaceWithBoolLiteral]( - const MacroExpansionContext &context) -> TokList * { + const MacroExpansionContext& context) -> TokList* { auto ts = context.ts; auto macroId = ts->tok; ts = ts->next; @@ -1509,7 +1507,7 @@ void Preprocessor::Private::initialize() { adddBuiltinFunctionMacro( "__has_builtin", [this, replaceWithBoolLiteral]( - const MacroExpansionContext &context) -> TokList * { + const MacroExpansionContext& context) -> TokList* { auto ts = context.ts; auto macroId = ts->tok; ts = ts->next; @@ -1523,7 +1521,7 @@ void Preprocessor::Private::initialize() { adddBuiltinFunctionMacro( "__has_extension", [this, replaceWithBoolLiteral]( - const MacroExpansionContext &context) -> TokList * { + const MacroExpansionContext& context) -> TokList* { auto ts = context.ts; auto macroId = ts->tok; ts = ts->next; @@ -1537,7 +1535,7 @@ void Preprocessor::Private::initialize() { adddBuiltinFunctionMacro( "__has_attribute", [this, replaceWithBoolLiteral]( - const MacroExpansionContext &context) -> TokList * { + const MacroExpansionContext& context) -> TokList* { auto ts = context.ts; auto macroId = ts->tok; ts = ts->next; @@ -1549,7 +1547,7 @@ void Preprocessor::Private::initialize() { }); auto hasInclude = [this, replaceWithLocal, replaceWithBoolLiteral]( - const MacroExpansionContext &context) -> TokList * { + const MacroExpansionContext& context) -> TokList* { auto ts = context.ts; const auto macroName = ts->tok; @@ -1602,8 +1600,8 @@ void Preprocessor::Private::initialize() { adddBuiltinFunctionMacro("__has_include_next", hasInclude); } -void Preprocessor::Private::finalizeToken(std::vector &tokens, - const Tok *tk) { +void Preprocessor::Private::finalizeToken(std::vector& tokens, + const Tok* tk) { auto kind = tk->kind; const auto fileId = tk->sourceFile; TokenValue value{}; @@ -1612,7 +1610,7 @@ void Preprocessor::Private::finalizeToken(std::vector &tokens, if (codeCompletionOffset_ < tk->offset || (codeCompletionOffset_ >= tk->offset && codeCompletionOffset_ < tk->offset + tk->length)) { - auto &completionToken = + auto& completionToken = tokens.emplace_back(TokenKind::T_CODE_COMPLETION, tk->offset, 0); completionToken.setFileId(fileId); @@ -1709,12 +1707,12 @@ void Preprocessor::Private::finalizeToken(std::vector &tokens, } }; -auto Preprocessor::Private::tokenize(const std::string_view &source, - int sourceFile, bool bol) -> TokList * { +auto Preprocessor::Private::tokenize(const std::string_view& source, + int sourceFile, bool bol) -> TokList* { cxx::Lexer lex(source, language_); lex.setKeepComments(true); lex.setPreprocessing(true); - TokList *ts = nullptr; + TokList* ts = nullptr; auto it = &ts; do { lex(); @@ -1724,7 +1722,7 @@ auto Preprocessor::Private::tokenize(const std::string_view &source, TokenValue tokenValue{}; if (sourceFile) { - const SourceFile *file = sourceFiles_[sourceFile - 1].get(); + const SourceFile* file = sourceFiles_[sourceFile - 1].get(); auto tokenText = file->source.substr(lex.tokenPos(), lex.tokenLength()); @@ -1752,7 +1750,7 @@ auto Preprocessor::Private::tokenize(const std::string_view &source, auto Preprocessor::Private::expandTokens(TokIterator it, TokIterator last, bool inConditionalExpression) -> TokIterator { - TokList *tokens = nullptr; + TokList* tokens = nullptr; auto out = &tokens; while (it != last) { @@ -1769,7 +1767,7 @@ auto Preprocessor::Private::expandTokens(TokIterator it, TokIterator last, } auto Preprocessor::Private::expand( - const std::function &emitToken) -> PreprocessingState { + const std::function& emitToken) -> PreprocessingState { if (buffers_.empty()) return ProcessingComplete{}; auto buffer = buffers_.back(); @@ -1835,7 +1833,7 @@ auto Preprocessor::Private::expand( it = last; std::vector dependencies; - for (auto &dep : dependencies_) { + for (auto& dep : dependencies_) { dependencies.push_back({ .include = dep.include, .isIncludeNext = dep.isIncludeNext, @@ -1863,7 +1861,7 @@ auto Preprocessor::Private::expand( return CanContinuePreprocessing{}; } -auto Preprocessor::Private::parseDirective(SourceFile *source, TokList *start) +auto Preprocessor::Private::parseDirective(SourceFile* source, TokList* start) -> ParsedDirective { auto directive = start->next; @@ -1874,7 +1872,7 @@ auto Preprocessor::Private::parseDirective(SourceFile *source, TokList *start) const auto directiveKind = classifyDirective( directive->tok->text.data(), int(directive->tok->text.length())); - TokList *ts = directive->next; + TokList* ts = directive->next; const auto [skipping, evaluating] = state(); @@ -2090,8 +2088,8 @@ auto Preprocessor::Private::parseDirective(SourceFile *source, TokList *start) return std::monostate{}; } -auto Preprocessor::Private::parseIncludeDirective(TokList *directive, - TokList *ts) +auto Preprocessor::Private::parseIncludeDirective(TokList* directive, + TokList* ts) -> std::optional { if (lookat(ts, TokenKind::T_IDENTIFIER)) { auto eol = skipLine(TokIterator{ts}, TokIterator{}); @@ -2116,8 +2114,8 @@ auto Preprocessor::Private::parseIncludeDirective(TokList *directive, return std::nullopt; } -auto Preprocessor::Private::parseHeaderName(TokList *ts) - -> std::tuple> { +auto Preprocessor::Private::parseHeaderName(TokList* ts) + -> std::tuple> { if (lookat(ts, TokenKind::T_STRING_LITERAL)) { auto file = ts->tok->text.substr(1, ts->tok->text.length() - 2); Include headerFile = QuoteInclude(std::string(file)); @@ -2140,7 +2138,7 @@ auto Preprocessor::Private::parseHeaderName(TokList *ts) auto Preprocessor::Private::expandOne( TokIterator it, TokIterator last, bool inConditionalExpression, - const std::function &emitToken) -> TokIterator { + const std::function& emitToken) -> TokIterator { if (it == last) return last; if (auto continuation = replaceIsDefinedMacro( @@ -2160,8 +2158,8 @@ auto Preprocessor::Private::expandOne( } auto Preprocessor::Private::replaceIsDefinedMacro( - TokList *ts, bool inConditionalExpression, - const std::function &emitToken) -> TokList * { + TokList* ts, bool inConditionalExpression, + const std::function& emitToken) -> TokList* { if (!inConditionalExpression) { return nullptr; } @@ -2192,27 +2190,27 @@ auto Preprocessor::Private::replaceIsDefinedMacro( return ts; } -auto Preprocessor::Private::expandMacro(TokList *ts) -> TokList * { +auto Preprocessor::Private::expandMacro(TokList* ts) -> TokList* { struct ExpandMacro { - Private &self; - TokList *ts = nullptr; - const Macro *macro = nullptr; + Private& self; + TokList* ts = nullptr; + const Macro* macro = nullptr; - auto operator()(const ObjectMacro &) -> TokList * { + auto operator()(const ObjectMacro&) -> TokList* { return self.expandObjectLikeMacro(ts, macro); } - auto operator()(const FunctionMacro &) -> TokList * { + auto operator()(const FunctionMacro&) -> TokList* { if (!self.lookat(ts->next, TokenKind::T_LPAREN)) return nullptr; return self.expandFunctionLikeMacro(ts, macro); } - auto operator()(const BuiltinObjectMacro ¯o) -> TokList * { + auto operator()(const BuiltinObjectMacro& macro) -> TokList* { return macro.expand(MacroExpansionContext{.ts = ts}); } - auto operator()(const BuiltinFunctionMacro ¯o) -> TokList * { + auto operator()(const BuiltinFunctionMacro& macro) -> TokList* { if (!self.lookat(ts->next, TokenKind::T_LPAREN)) return nullptr; return macro.expand(MacroExpansionContext{.ts = ts}); @@ -2227,10 +2225,10 @@ auto Preprocessor::Private::expandMacro(TokList *ts) -> TokList * { return nullptr; } -auto Preprocessor::Private::expandObjectLikeMacro(TokList *ts, const Macro *m) - -> TokList * { +auto Preprocessor::Private::expandObjectLikeMacro(TokList* ts, const Macro* m) + -> TokList* { auto macro = &std::get(*m); - const Tok *tk = ts->tok; + const Tok* tk = ts->tok; const auto hideset = makeUnion(tk->hideset, tk->text); auto expanded = substitute(ts, m, {}, hideset); @@ -2240,8 +2238,8 @@ auto Preprocessor::Private::expandObjectLikeMacro(TokList *ts, const Macro *m) } // assert(expanded->tok->generated); - const_cast(expanded->tok)->space = tk->space; - const_cast(expanded->tok)->bol = tk->bol; + const_cast(expanded->tok)->space = tk->space; + const_cast(expanded->tok)->bol = tk->bol; auto it = expanded; @@ -2251,13 +2249,13 @@ auto Preprocessor::Private::expandObjectLikeMacro(TokList *ts, const Macro *m) return expanded; } -auto Preprocessor::Private::expandFunctionLikeMacro(TokList *ts, const Macro *m) - -> TokList * { +auto Preprocessor::Private::expandFunctionLikeMacro(TokList* ts, const Macro* m) + -> TokList* { auto macro = &std::get(*m); assert(lookat(ts->next, TokenKind::T_LPAREN)); - const Tok *tk = ts->tok; + const Tok* tk = ts->tok; auto [args, rest, hideset] = parseArguments(ts, macro->formals.size(), macro->variadic); @@ -2272,8 +2270,8 @@ auto Preprocessor::Private::expandFunctionLikeMacro(TokList *ts, const Macro *m) // assert(expanded->tok->generated); - const_cast(expanded->tok)->space = tk->space; - const_cast(expanded->tok)->bol = tk->bol; + const_cast(expanded->tok)->space = tk->space; + const_cast(expanded->tok)->bol = tk->bol; auto it = expanded; while (it->next) it = it->next; @@ -2282,14 +2280,14 @@ auto Preprocessor::Private::expandFunctionLikeMacro(TokList *ts, const Macro *m) return expanded; } -auto Preprocessor::Private::substitute(TokList *pointOfSubstitution, - const Macro *macro, - const std::vector &actuals, - const Hideset *hideset) -> TokList * { - TokList *os = nullptr; - auto **ip = (&os); +auto Preprocessor::Private::substitute(TokList* pointOfSubstitution, + const Macro* macro, + const std::vector& actuals, + const Hideset* hideset) -> TokList* { + TokList* os = nullptr; + auto** ip = (&os); - auto appendTokens = [&](TokList *rs) { + auto appendTokens = [&](TokList* rs) { if (!*ip) { *ip = (rs); } else { @@ -2298,7 +2296,7 @@ auto Preprocessor::Private::substitute(TokList *pointOfSubstitution, while (*ip && (*ip)->next) ip = (&(*ip)->next); }; - auto appendToken = [&](const Tok *tk) { + auto appendToken = [&](const Tok* tk) { if (tk->isFromMacroBody) { // todo: make a copy of tk and override its location to be the same as // the point of substitution. @@ -2312,10 +2310,10 @@ auto Preprocessor::Private::substitute(TokList *pointOfSubstitution, } }; - TokList *macroBody = getMacroBody(*macro); + TokList* macroBody = getMacroBody(*macro); // set the token stream to the macro body - TokList *ts = macroBody; + TokList* ts = macroBody; while (ts && !lookat(ts, TokenKind::T_EOF_SYMBOL)) { if (lookat(ts, TokenKind::T_HASH, TokenKind::T_IDENTIFIER)) { @@ -2404,11 +2402,11 @@ auto Preprocessor::Private::substitute(TokList *pointOfSubstitution, } auto Preprocessor::Private::lookupMacroArgument( - TokList *&ts, const Macro *m, const std::vector &actuals) + TokList*& ts, const Macro* m, const std::vector& actuals) -> std::optional { if (!isFunctionLikeMacro(*m)) return std::nullopt; - const FunctionMacro *macro = &std::get(*m); + const FunctionMacro* macro = &std::get(*m); if (!lookat(ts, TokenKind::T_IDENTIFIER)) { return std::nullopt; @@ -2457,7 +2455,7 @@ auto Preprocessor::Private::lookupMacroArgument( return std::nullopt; } -auto Preprocessor::Private::checkPragmaOnceProtected(TokList *ts) const +auto Preprocessor::Private::checkPragmaOnceProtected(TokList* ts) const -> bool { if (!ts) return false; if (!match(ts, TokenKind::T_HASH)) return false; @@ -2466,12 +2464,12 @@ auto Preprocessor::Private::checkPragmaOnceProtected(TokList *ts) const return true; } -auto Preprocessor::Private::checkHeaderProtection(TokList *ts) const - -> TokList * { +auto Preprocessor::Private::checkHeaderProtection(TokList* ts) const + -> TokList* { if (!ts) return nullptr; if (!match(ts, TokenKind::T_HASH)) return nullptr; if (bol(ts) || !matchId(ts, "ifndef")) return nullptr; - TokList *prot = ts; + TokList* prot = ts; if (bol(ts) || !match(ts, TokenKind::T_IDENTIFIER)) return nullptr; if (!bol(ts) || !match(ts, TokenKind::T_HASH)) return nullptr; if (bol(ts) || !matchId(ts, "define")) return nullptr; @@ -2479,10 +2477,10 @@ auto Preprocessor::Private::checkHeaderProtection(TokList *ts) const return prot; } -auto Preprocessor::Private::copyLine(TokList *ts, bool inMacroBody) - -> TokList * { +auto Preprocessor::Private::copyLine(TokList* ts, bool inMacroBody) + -> TokList* { assert(ts); - TokList *line = nullptr; + TokList* line = nullptr; auto it = &line; auto lastTok = ts->tok; for (; ts && !lookat(ts, TokenKind::T_EOF_SYMBOL) && !bol(ts); @@ -2504,8 +2502,7 @@ auto Preprocessor::Private::copyLine(TokList *ts, bool inMacroBody) return line; } -auto Preprocessor::Private::prepareConstantExpression(TokList *ts) - -> TokList * { +auto Preprocessor::Private::prepareConstantExpression(TokList* ts) -> TokList* { auto line = copyLine(ts); dependencies_.clear(); @@ -2518,11 +2515,11 @@ auto Preprocessor::Private::prepareConstantExpression(TokList *ts) return expression; } -auto Preprocessor::Private::evaluateConstantExpression(TokList *ts) -> long { +auto Preprocessor::Private::evaluateConstantExpression(TokList* ts) -> long { return conditionalExpression(ts); } -auto Preprocessor::Private::conditionalExpression(TokList *&ts) -> long { +auto Preprocessor::Private::conditionalExpression(TokList*& ts) -> long { if (!ts) return 0; const auto value = binaryExpression(ts); if (!match(ts, TokenKind::T_QUESTION)) return value; @@ -2532,7 +2529,7 @@ auto Preprocessor::Private::conditionalExpression(TokList *&ts) -> long { return value ? iftrue : iffalse; } -static auto prec(TokList *ts) -> int { +static auto prec(TokList* ts) -> int { enum Prec { kLogicalOr, kLogicalAnd, @@ -2592,12 +2589,12 @@ static auto prec(TokList *ts) -> int { } // switch } -auto Preprocessor::Private::binaryExpression(TokList *&ts) -> long { +auto Preprocessor::Private::binaryExpression(TokList*& ts) -> long { auto e = unaryExpression(ts); return binaryExpressionHelper(ts, e, 0); } -auto Preprocessor::Private::binaryExpressionHelper(TokList *&ts, long lhs, +auto Preprocessor::Private::binaryExpressionHelper(TokList*& ts, long lhs, int minPrec) -> long { while (prec(ts) >= minPrec) { const auto p = prec(ts); @@ -2670,7 +2667,7 @@ auto Preprocessor::Private::binaryExpressionHelper(TokList *&ts, long lhs, return lhs; } -auto Preprocessor::Private::unaryExpression(TokList *&ts) -> long { +auto Preprocessor::Private::unaryExpression(TokList*& ts) -> long { if (match(ts, TokenKind::T_MINUS)) { return -unaryExpression(ts); } @@ -2686,7 +2683,7 @@ auto Preprocessor::Private::unaryExpression(TokList *&ts) -> long { return primaryExpression(ts); } -auto Preprocessor::Private::primaryExpression(TokList *&ts) -> long { +auto Preprocessor::Private::primaryExpression(TokList*& ts) -> long { const auto tk = ts->tok; if (match(ts, TokenKind::T_INTEGER_LITERAL)) { @@ -2702,7 +2699,7 @@ auto Preprocessor::Private::primaryExpression(TokList *&ts) -> long { } else if (matchId(ts, "false")) { return 0; } else if (tk->is(TokenKind::T_PP_INTERNAL_VARIABLE)) { - for (const auto &dep : dependencies_) { + for (const auto& dep : dependencies_) { if (dep.local == tk->text) { ts = ts->next; return dep.exists; @@ -2714,8 +2711,8 @@ auto Preprocessor::Private::primaryExpression(TokList *&ts) -> long { return 0; } -auto Preprocessor::Private::instantiate(TokList *ts, const Hideset *hideset) - -> TokList * { +auto Preprocessor::Private::instantiate(TokList* ts, const Hideset* hideset) + -> TokList* { for (auto ip = ts; ip; ip = ip->next) { if (ip->tok->hideset != hideset) { (ip)->tok = withHideset(ip->tok, hideset); @@ -2724,9 +2721,9 @@ auto Preprocessor::Private::instantiate(TokList *ts, const Hideset *hideset) return ts; } -auto Preprocessor::Private::parseArguments(TokList *ts, std::size_t formalCount, +auto Preprocessor::Private::parseArguments(TokList* ts, std::size_t formalCount, bool ignoreComma) - -> std::tuple, TokList *, const Hideset *> { + -> std::tuple, TokList*, const Hideset*> { assert(lookat(ts, TokenKind::T_IDENTIFIER, TokenKind::T_LPAREN)); auto parsedArgs = ParseArguments{*this}( @@ -2740,7 +2737,7 @@ auto Preprocessor::Private::parseArguments(TokList *ts, std::size_t formalCount, parsedArgs->hideset); } -auto Preprocessor::Private::stringize(TokList *ts) -> const Tok * { +auto Preprocessor::Private::stringize(TokList* ts) -> const Tok* { std::string s; const auto start = ts; @@ -2777,7 +2774,7 @@ auto Preprocessor::Private::string(std::string s) -> std::string_view { return std::string_view(scratchBuffer_.emplace_front(std::move(s))); } -auto Preprocessor::Private::parseMacroDefinition(TokList *ts) -> Macro { +auto Preprocessor::Private::parseMacroDefinition(TokList* ts) -> Macro { const auto name = ts->tok->text; ts = ts->next; @@ -2810,7 +2807,7 @@ auto Preprocessor::Private::parseMacroDefinition(TokList *ts) -> Macro { return ObjectMacro(name, ts); } -void Preprocessor::Private::defineMacro(TokList *ts) { +void Preprocessor::Private::defineMacro(TokList* ts) { #if 0 std::cout << std::format("*** defining macro: "); printLine(ts, std::cout); @@ -2821,8 +2818,8 @@ void Preprocessor::Private::defineMacro(TokList *ts) { const auto name = getMacroName(macro); if (auto body = getMacroBody(macro)) { - const_cast(body->tok)->space = false; - const_cast(body->tok)->bol = false; + const_cast(body->tok)->space = false; + const_cast(body->tok)->bol = false; } if (auto it = macros_.find(name); it != macros_.end()) { @@ -2837,8 +2834,8 @@ void Preprocessor::Private::defineMacro(TokList *ts) { macros_.insert_or_assign(name, std::move(macro)); } -auto Preprocessor::Private::merge(const Tok *left, const Tok *right) - -> const Tok * { +auto Preprocessor::Private::merge(const Tok* left, const Tok* right) + -> const Tok* { if (!left) return right; if (!right) return left; const auto hideset = makeIntersection(left->hideset, right->hideset); @@ -2861,7 +2858,7 @@ auto Preprocessor::Private::skipLine(TokIterator it, TokIterator last) return it; } -auto Preprocessor::Private::lookupMacro(const Tok *tk) const -> const Macro * { +auto Preprocessor::Private::lookupMacro(const Tok* tk) const -> const Macro* { if (!tk || tk->isNot(TokenKind::T_IDENTIFIER)) { return nullptr; } @@ -2893,14 +2890,14 @@ static auto wantSpace(TokenKind kind) -> bool { } // switch } -static auto needSpace(const Tok *prev, const Tok *current) -> bool { +static auto needSpace(const Tok* prev, const Tok* current) -> bool { if (!prev || current->space) return current->space; return wantSpace(prev->kind) && wantSpace(current->kind); } -void Preprocessor::Private::print(TokList *ts, std::ostream &out) const { +void Preprocessor::Private::print(TokList* ts, std::ostream& out) const { bool first = true; - for (const Tok *prevTk = nullptr; ts; ts = ts->next) { + for (const Tok* prevTk = nullptr; ts; ts = ts->next) { auto tk = ts->tok; if (tk->text.empty()) continue; if (tk->bol) { @@ -2914,10 +2911,10 @@ void Preprocessor::Private::print(TokList *ts, std::ostream &out) const { } } -void Preprocessor::Private::printLine(TokList *ts, std::ostream &out, +void Preprocessor::Private::printLine(TokList* ts, std::ostream& out, bool nl) const { bool first = true; - for (const Tok *prevTk = nullptr; ts; ts = ts->next) { + for (const Tok* prevTk = nullptr; ts; ts = ts->next) { auto tk = ts->tok; if (tk->text.empty()) continue; if (!first && needSpace(prevTk, tk)) out << std::format(" "); @@ -2929,8 +2926,8 @@ void Preprocessor::Private::printLine(TokList *ts, std::ostream &out, if (nl) out << std::format("\n"); } -Preprocessor::Preprocessor(Control *control, - DiagnosticsClient *diagnosticsClient) +Preprocessor::Preprocessor(Control* control, + DiagnosticsClient* diagnosticsClient) : d(std::make_unique()) { d->preprocessor_ = this; d->control_ = control; @@ -2940,7 +2937,7 @@ Preprocessor::Preprocessor(Control *control, Preprocessor::~Preprocessor() = default; -auto Preprocessor::diagnosticsClient() const -> DiagnosticsClient * { +auto Preprocessor::diagnosticsClient() const -> DiagnosticsClient* { return d->diagnosticsClient_; } @@ -2948,11 +2945,11 @@ auto Preprocessor::language() const -> LanguageKind { return d->language_; } void Preprocessor::setLanguage(LanguageKind lang) { d->language_ = lang; } -auto Preprocessor::commentHandler() const -> CommentHandler * { +auto Preprocessor::commentHandler() const -> CommentHandler* { return d->commentHandler_; } -void Preprocessor::setCommentHandler(CommentHandler *commentHandler) { +void Preprocessor::setCommentHandler(CommentHandler* commentHandler) { d->commentHandler_ = commentHandler; } @@ -2981,25 +2978,25 @@ void Preprocessor::setOmitLineMarkers(bool omitLineMarkers) { } void Preprocessor::setOnWillIncludeHeader( - std::function willIncludeHeader) { + std::function willIncludeHeader) { d->willIncludeHeader_ = std::move(willIncludeHeader); } void Preprocessor::squeeze() { d->pool_.release(); } auto Preprocessor::sourceFileName(uint32_t sourceFileId) const - -> const std::string & { + -> const std::string& { assert(sourceFileId > 0); return d->sourceFiles_[sourceFileId - 1]->fileName; } -auto Preprocessor::source(uint32_t sourceFileId) const -> const std::string & { +auto Preprocessor::source(uint32_t sourceFileId) const -> const std::string& { assert(sourceFileId > 0); return d->sourceFiles_[sourceFileId - 1]->source; } void Preprocessor::preprocess(std::string source, std::string fileName, - std::vector &tokens) { + std::vector& tokens) { beginPreprocessing(std::move(source), std::move(fileName), tokens); DefaultPreprocessorState state{*this}; @@ -3013,7 +3010,7 @@ void Preprocessor::preprocess(std::string source, std::string fileName, } void Preprocessor::beginPreprocessing(std::string source, std::string fileName, - std::vector &tokens) { + std::vector& tokens) { assert(!d->findSourceFile(fileName)); auto sourceFile = d->createSourceFile(std::move(fileName), std::move(source)); @@ -3042,7 +3039,7 @@ void Preprocessor::beginPreprocessing(std::string source, std::string fileName, } } -void Preprocessor::endPreprocessing(std::vector &tokens) { +void Preprocessor::endPreprocessing(std::vector& tokens) { // consume the continuation if there is one std::functionstd::optional> continuation; std::swap(continuation, d->continuation_); @@ -3059,17 +3056,17 @@ void Preprocessor::endPreprocessing(std::vector &tokens) { if (d->codeCompletionLocation_.has_value()) { auto sourceFile = d->sourceFiles_[0].get(); - auto &tk = tokens.emplace_back(TokenKind::T_CODE_COMPLETION, offset, 0); + auto& tk = tokens.emplace_back(TokenKind::T_CODE_COMPLETION, offset, 0); tk.setFileId(mainSourceFileId); d->codeCompletionLocation_ = std::nullopt; } - auto &tk = tokens.emplace_back(TokenKind::T_EOF_SYMBOL, offset); + auto& tk = tokens.emplace_back(TokenKind::T_EOF_SYMBOL, offset); tk.setFileId(mainSourceFileId); } -auto Preprocessor::continuePreprocessing(std::vector &tokens) +auto Preprocessor::continuePreprocessing(std::vector& tokens) -> PreprocessingState { // consume the continuation if there is one std::function()> continuation; @@ -3079,13 +3076,13 @@ auto Preprocessor::continuePreprocessing(std::vector &tokens) if (next) return *next; } - auto emitToken = [&](const Tok *tk) { d->finalizeToken(tokens, tk); }; + auto emitToken = [&](const Tok* tk) { d->finalizeToken(tokens, tk); }; return d->expand(emitToken); } -void Preprocessor::getPreprocessedText(const std::vector &tokens, - std::ostream &out) const { +void Preprocessor::getPreprocessedText(const std::vector& tokens, + std::ostream& out) const { // ### print tokens std::size_t index = 1; std::uint32_t lastFileId = std::numeric_limits::max(); @@ -3093,7 +3090,7 @@ void Preprocessor::getPreprocessedText(const std::vector &tokens, bool atStartOfLine = true; while (index + 1 < tokens.size()) { - const auto &token = tokens[index++]; + const auto& token = tokens[index++]; if (const auto fileId = token.fileId(); !d->omitLineMarkers_ && fileId && fileId != lastFileId) { @@ -3111,7 +3108,7 @@ void Preprocessor::getPreprocessedText(const std::vector &tokens, atStartOfLine = false; out << ' '; } else if (index > 2) { - const auto &prevToken = tokens[index - 2]; + const auto& prevToken = tokens[index - 2]; std::string s = prevToken.spell(); s += token.spell(); Lexer lex(s, d->language_); @@ -3141,7 +3138,7 @@ void Preprocessor::getPreprocessedText(const std::vector &tokens, } auto Preprocessor::systemIncludePaths() const - -> const std::vector & { + -> const std::vector& { return d->systemIncludePaths_; } @@ -3152,27 +3149,27 @@ void Preprocessor::addSystemIncludePath(std::string path) { d->systemIncludePaths_.push_back(std::move(path)); } -void Preprocessor::defineMacro(const std::string &name, - const std::string &body) { +void Preprocessor::defineMacro(const std::string& name, + const std::string& body) { auto s = d->string(name + " " + body); auto tokens = d->tokenize(s, /*sourceFile=*/0, false); for (auto it = tokens; it; it = it->next) { - const_cast(it->tok)->isFromMacroBody = true; + const_cast(it->tok)->isFromMacroBody = true; } d->defineMacro(tokens); } -void Preprocessor::undefMacro(const std::string &name) { +void Preprocessor::undefMacro(const std::string& name) { auto it = d->macros_.find(name); if (it != d->macros_.end()) d->macros_.erase(it); } -void Preprocessor::printMacros(std::ostream &out) const { +void Preprocessor::printMacros(std::ostream& out) const { struct { - const Preprocessor &self; - std::ostream &out; + const Preprocessor& self; + std::ostream& out; - void operator()(const FunctionMacro ¯o) { + void operator()(const FunctionMacro& macro) { auto d = self.d.get(); out << std::format("#define {}", macro.name); @@ -3198,7 +3195,7 @@ void Preprocessor::printMacros(std::ostream &out) const { out << std::format("\n"); } - void operator()(const ObjectMacro ¯o) { + void operator()(const ObjectMacro& macro) { auto d = self.d.get(); out << std::format("#define {}", macro.name); @@ -3211,52 +3208,52 @@ void Preprocessor::printMacros(std::ostream &out) const { out << std::format("\n"); } - void operator()(const BuiltinObjectMacro &) {} - void operator()(const BuiltinFunctionMacro &) {} + void operator()(const BuiltinObjectMacro&) {} + void operator()(const BuiltinFunctionMacro&) {} } printMacro{*this, out}; - for (const auto &[name, macro] : d->macros_) { + for (const auto& [name, macro] : d->macros_) { std::visit(printMacro, macro); } } auto Preprocessor::sources() const -> std::vector { std::vector sources; - for (const auto &sourceFile : d->sourceFiles_) { + for (const auto& sourceFile : d->sourceFiles_) { sources.push_back(Source{.fileName = sourceFile->fileName, .lineOffsets = sourceFile->lines}); } return sources; } -auto Preprocessor::tokenStartPosition(const Token &token) const +auto Preprocessor::tokenStartPosition(const Token& token) const -> SourcePosition { if (token.fileId() == 0) { return {}; } - auto &sourceFile = *d->sourceFiles_[token.fileId() - 1]; + auto& sourceFile = *d->sourceFiles_[token.fileId() - 1]; return sourceFile.getTokenStartPosition(token.offset()); } -auto Preprocessor::tokenEndPosition(const Token &token) const +auto Preprocessor::tokenEndPosition(const Token& token) const -> SourcePosition { if (token.fileId() == 0) { return {}; } - auto &sourceFile = *d->sourceFiles_[token.fileId() - 1]; + auto& sourceFile = *d->sourceFiles_[token.fileId() - 1]; return sourceFile.getTokenStartPosition(token.offset() + token.length()); } -auto Preprocessor::getTextLine(const Token &token) const -> std::string_view { +auto Preprocessor::getTextLine(const Token& token) const -> std::string_view { if (token.fileId() == 0) return {}; - const SourceFile *file = d->sourceFiles_[token.fileId() - 1].get(); + const SourceFile* file = d->sourceFiles_[token.fileId() - 1].get(); const auto pos = tokenStartPosition(token); std::string_view source = file->source; - const auto &lines = file->lines; + const auto& lines = file->lines; const auto start = lines.at(pos.line - 1); const auto end = pos.line < lines.size() ? lines.at(pos.line) : source.length(); @@ -3269,14 +3266,14 @@ auto Preprocessor::getTextLine(const Token &token) const -> std::string_view { return textLine; } -auto Preprocessor::getTokenText(const Token &token) const -> std::string_view { +auto Preprocessor::getTokenText(const Token& token) const -> std::string_view { if (token.fileId() == 0) return {}; - const SourceFile *file = d->sourceFiles_[token.fileId() - 1].get(); + const SourceFile* file = d->sourceFiles_[token.fileId() - 1].get(); std::string_view source = file->source; return source.substr(token.offset(), token.length()); } -auto Preprocessor::resolve(const Include &include, bool isIncludeNext) const +auto Preprocessor::resolve(const Include& include, bool isIncludeNext) const -> std::optional { return d->resolve(include, isIncludeNext); } @@ -3286,28 +3283,28 @@ void Preprocessor::requestCodeCompletionAt(std::uint32_t line, d->codeCompletionLocation_ = SourcePosition{{}, line, column}; } -void DefaultPreprocessorState::operator()(const ProcessingComplete &) { +void DefaultPreprocessorState::operator()(const ProcessingComplete&) { done = true; } -void DefaultPreprocessorState::operator()(const CanContinuePreprocessing &) {} +void DefaultPreprocessorState::operator()(const CanContinuePreprocessing&) {} -void DefaultPreprocessorState::operator()(const PendingInclude &status) { +void DefaultPreprocessorState::operator()(const PendingInclude& status) { auto resolvedInclude = self.resolve(status.include, status.isIncludeNext); status.resolveWith(resolvedInclude); } -void DefaultPreprocessorState::operator()(const PendingHasIncludes &status) { +void DefaultPreprocessorState::operator()(const PendingHasIncludes& status) { using Request = PendingHasIncludes::Request; - std::ranges::for_each(status.requests, [&](const Request &dep) { + std::ranges::for_each(status.requests, [&](const Request& dep) { auto resolved = self.resolve(dep.include, dep.isIncludeNext); dep.setExists(resolved.has_value()); }); } -void DefaultPreprocessorState::operator()(const PendingFileContent &request) { +void DefaultPreprocessorState::operator()(const PendingFileContent& request) { std::ifstream in(request.fileName); std::ostringstream out; out << in.rdbuf(); diff --git a/src/parser/cxx/preprocessor.h b/src/parser/cxx/preprocessor.h index 94f539be..e093d9c0 100644 --- a/src/parser/cxx/preprocessor.h +++ b/src/parser/cxx/preprocessor.h @@ -44,27 +44,27 @@ class CommentHandler { public: virtual ~CommentHandler() = default; - virtual void handleComment(Preprocessor *preprocessor, - const Token &token) = 0; + virtual void handleComment(Preprocessor* preprocessor, + const Token& token) = 0; }; class Preprocessor { public: - Preprocessor(Preprocessor &&) noexcept = default; - auto operator=(Preprocessor &&) noexcept -> Preprocessor & = default; + Preprocessor(Preprocessor&&) noexcept = default; + auto operator=(Preprocessor&&) noexcept -> Preprocessor& = default; - explicit Preprocessor(Control *control, DiagnosticsClient *diagnosticsClient); + explicit Preprocessor(Control* control, DiagnosticsClient* diagnosticsClient); ~Preprocessor(); - [[nodiscard]] auto diagnosticsClient() const -> DiagnosticsClient *; + [[nodiscard]] auto diagnosticsClient() const -> DiagnosticsClient*; [[nodiscard]] auto language() const -> LanguageKind; void setLanguage(LanguageKind lang); - [[nodiscard]] auto preprocessorDelegate() const -> PreprocessorDelegate *; + [[nodiscard]] auto preprocessorDelegate() const -> PreprocessorDelegate*; - [[nodiscard]] auto commentHandler() const -> CommentHandler *; - void setCommentHandler(CommentHandler *commentHandler); + [[nodiscard]] auto commentHandler() const -> CommentHandler*; + void setCommentHandler(CommentHandler* commentHandler); [[nodiscard]] auto canResolveFiles() const -> bool; void setCanResolveFiles(bool canResolveFiles); @@ -76,37 +76,37 @@ class Preprocessor { void setOmitLineMarkers(bool omitLineMarkers); void setOnWillIncludeHeader( - std::function willIncludeHeader); + std::function willIncludeHeader); void beginPreprocessing(std::string source, std::string fileName, - std::vector &outputTokens); + std::vector& outputTokens); - void endPreprocessing(std::vector &outputTokens); + void endPreprocessing(std::vector& outputTokens); - [[nodiscard]] auto continuePreprocessing(std::vector &outputTokens) + [[nodiscard]] auto continuePreprocessing(std::vector& outputTokens) -> PreprocessingState; [[nodiscard]] auto sourceFileName(uint32_t sourceFileId) const - -> const std::string &; + -> const std::string&; - [[nodiscard]] auto source(uint32_t sourceFileId) const -> const std::string &; + [[nodiscard]] auto source(uint32_t sourceFileId) const -> const std::string&; void preprocess(std::string source, std::string fileName, - std::vector &tokens); + std::vector& tokens); - void getPreprocessedText(const std::vector &tokens, - std::ostream &out) const; + void getPreprocessedText(const std::vector& tokens, + std::ostream& out) const; [[nodiscard]] auto systemIncludePaths() const - -> const std::vector &; + -> const std::vector&; void addSystemIncludePath(std::string path); - void defineMacro(const std::string &name, const std::string &body); + void defineMacro(const std::string& name, const std::string& body); - void undefMacro(const std::string &name); + void undefMacro(const std::string& name); - void printMacros(std::ostream &out) const; + void printMacros(std::ostream& out) const; struct Source { std::string_view fileName; @@ -115,17 +115,17 @@ class Preprocessor { [[nodiscard]] auto sources() const -> std::vector; - [[nodiscard]] auto tokenStartPosition(const Token &token) const + [[nodiscard]] auto tokenStartPosition(const Token& token) const -> SourcePosition; - [[nodiscard]] auto tokenEndPosition(const Token &token) const + [[nodiscard]] auto tokenEndPosition(const Token& token) const -> SourcePosition; - [[nodiscard]] auto getTextLine(const Token &token) const -> std::string_view; + [[nodiscard]] auto getTextLine(const Token& token) const -> std::string_view; - [[nodiscard]] auto getTokenText(const Token &token) const -> std::string_view; + [[nodiscard]] auto getTokenText(const Token& token) const -> std::string_view; - [[nodiscard]] auto resolve(const Include &include, bool isIncludeNext) const + [[nodiscard]] auto resolve(const Include& include, bool isIncludeNext) const -> std::optional; void requestCodeCompletionAt(std::uint32_t line, std::uint32_t column); @@ -141,19 +141,19 @@ class Preprocessor { }; class DefaultPreprocessorState { - Preprocessor &self; + Preprocessor& self; bool done = false; public: - explicit DefaultPreprocessorState(Preprocessor &self) : self(self) {} + explicit DefaultPreprocessorState(Preprocessor& self) : self(self) {} explicit operator bool() const { return !done; } - void operator()(const ProcessingComplete &); - void operator()(const CanContinuePreprocessing &); - void operator()(const PendingInclude &status); - void operator()(const PendingHasIncludes &status); - void operator()(const PendingFileContent &status); + void operator()(const ProcessingComplete&); + void operator()(const CanContinuePreprocessing&); + void operator()(const PendingInclude& status); + void operator()(const PendingHasIncludes& status); + void operator()(const PendingFileContent& status); }; } // namespace cxx diff --git a/src/parser/cxx/preprocessor_fwd.h b/src/parser/cxx/preprocessor_fwd.h index 32a19b4b..1314e7f4 100644 --- a/src/parser/cxx/preprocessor_fwd.h +++ b/src/parser/cxx/preprocessor_fwd.h @@ -53,10 +53,10 @@ struct QuoteInclude { using Include = std::variant; struct PendingInclude { - Preprocessor &preprocessor; + Preprocessor& preprocessor; Include include; bool isIncludeNext = false; - void *loc = nullptr; + void* loc = nullptr; std::functionstd::vector> candidates; void resolveWith(std::optional fileName) const; @@ -66,17 +66,17 @@ struct PendingHasIncludes { struct Request { Include include; bool isIncludeNext = false; - bool &exists; + bool& exists; void setExists(bool value) const { exists = value; } }; - Preprocessor &preprocessor; + Preprocessor& preprocessor; std::vector requests; }; struct PendingFileContent { - Preprocessor &preprocessor; + Preprocessor& preprocessor; std::string fileName; void setContent(std::optional content) const; diff --git a/src/parser/cxx/toolchain.h b/src/parser/cxx/toolchain.h index a951e6e1..aed0fbd9 100644 --- a/src/parser/cxx/toolchain.h +++ b/src/parser/cxx/toolchain.h @@ -32,15 +32,15 @@ class MemoryLayout; class Toolchain { public: - Toolchain(const Toolchain &) = delete; - auto operator=(const Toolchain &) -> Toolchain & = delete; + Toolchain(const Toolchain&) = delete; + auto operator=(const Toolchain&) -> Toolchain& = delete; - explicit Toolchain(Preprocessor *preprocessor); + explicit Toolchain(Preprocessor* preprocessor); virtual ~Toolchain(); [[nodiscard]] auto language() const -> LanguageKind; - [[nodiscard]] auto memoryLayout() const -> MemoryLayout * { + [[nodiscard]] auto memoryLayout() const -> MemoryLayout* { return memoryLayout_.get(); } @@ -50,11 +50,11 @@ class Toolchain { virtual void addSystemCppIncludePaths() = 0; virtual void addPredefinedMacros() = 0; - [[nodiscard]] auto preprocessor() const -> Preprocessor * { + [[nodiscard]] auto preprocessor() const -> Preprocessor* { return preprocessor_; } - void defineMacro(const std::string &name, const std::string &definition); + void defineMacro(const std::string& name, const std::string& definition); void addSystemIncludePath(std::string path); @@ -82,7 +82,7 @@ class Toolchain { void addWASICxx26Macros(); private: - Preprocessor *preprocessor_; + Preprocessor* preprocessor_; std::unique_ptr memoryLayout_; }; diff --git a/src/parser/cxx/util.h b/src/parser/cxx/util.h index dc7e7a10..4ec29656 100644 --- a/src/parser/cxx/util.h +++ b/src/parser/cxx/util.h @@ -27,7 +27,7 @@ namespace cxx { auto align_to(int n, int align) -> int; template -void hash_combine(std::size_t &seed, const T &val) { +void hash_combine(std::size_t& seed, const T& val) { seed ^= std::hash()(val) + 0x9e3779b9 + (seed << 6) + (seed >> 2); } diff --git a/src/parser/cxx/windows_toolchain.cc b/src/parser/cxx/windows_toolchain.cc index 29042570..31d78bac 100644 --- a/src/parser/cxx/windows_toolchain.cc +++ b/src/parser/cxx/windows_toolchain.cc @@ -30,7 +30,7 @@ namespace cxx { -WindowsToolchain::WindowsToolchain(Preprocessor *preprocessor, +WindowsToolchain::WindowsToolchain(Preprocessor* preprocessor, std::string arch = "x86_64") : Toolchain(preprocessor), arch_(std::move(arch)) { memoryLayout()->setSizeOfLong(4); From c423f45f6d91bcc5152ff2a57dfc2dd3f2cdc891 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Sun, 19 Oct 2025 17:20:15 +0200 Subject: [PATCH 3/4] Remove unused release-please job from CI workflow and NODE_AUTH_TOKEN from publish step Signed-off-by: Roberto Raggi --- .github/workflows/ci.yml | 15 --------------- .github/workflows/publish.yml | 2 -- 2 files changed, 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a5e8af05..3c90c0a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -273,21 +273,6 @@ jobs: build.wasi/install/usr/lib/wasi-sysroot/include/wasm32-wasi retention-days: 1 - release-please: - runs-on: ubuntu-latest - if: false && github.repository == 'robertoraggi/cplusplus' && github.ref == 'refs/heads/main' - steps: - - uses: GoogleCloudPlatform/release-please-action@v3 - with: - token: ${{ secrets.RELEASE_TOKEN }} - release-type: node - package-name: cplusplus - extra-files: | - packages/cxx-frontend/package.json - templates/cxx-parse/package.json - templates/cxx-browser-esm-vite/package.json - templates/cxx-parse-esm/package.json - build-playground: runs-on: ubuntu-latest needs: build-emscripten diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 25ad3f75..8fed9d27 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -35,5 +35,3 @@ jobs: - name: Publish working-directory: packages/cxx-frontend run: npm publish - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} From 2f8deed8806f267ce47280517c28512e0cb4405e Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Sun, 19 Oct 2025 18:57:47 +0200 Subject: [PATCH 4/4] Fix module type issues in scripts Signed-off-by: Roberto Raggi --- package-lock.json | 407 ++++++++++-------- package.json | 12 +- packages/cxx-playground/package.json | 3 +- scripts/{ast-dump.mjs => ast-dump.js} | 0 scripts/{build-mlir.mjs => build-mlir.js} | 18 +- scripts/{build-wasi.mjs => build-wasi.js} | 7 +- scripts/{cxx-wasmtime.mjs => cxx-wasmtime.js} | 2 +- scripts/devcontainer-post-create.sh | 0 ...ad-lsp-model.mjs => download-lsp-model.js} | 0 scripts/{setup-venv.mjs => setup-venv.js} | 0 scripts/tsconfig.json | 15 +- scripts/{update-deps.mts => update-deps.ts} | 0 ...h-configs.mjs => update-launch-configs.ts} | 14 +- scripts/{update-tests.mjs => update-tests.js} | 0 14 files changed, 282 insertions(+), 196 deletions(-) rename scripts/{ast-dump.mjs => ast-dump.js} (100%) mode change 100755 => 100644 rename scripts/{build-mlir.mjs => build-mlir.js} (95%) rename scripts/{build-wasi.mjs => build-wasi.js} (92%) mode change 100755 => 100644 rename scripts/{cxx-wasmtime.mjs => cxx-wasmtime.js} (98%) mode change 100755 => 100644 mode change 100755 => 100644 scripts/devcontainer-post-create.sh rename scripts/{download-lsp-model.mjs => download-lsp-model.js} (100%) rename scripts/{setup-venv.mjs => setup-venv.js} (100%) mode change 100755 => 100644 rename scripts/{update-deps.mts => update-deps.ts} (100%) rename scripts/{update-launch-configs.mjs => update-launch-configs.ts} (88%) rename scripts/{update-tests.mjs => update-tests.js} (100%) mode change 100755 => 100644 diff --git a/package-lock.json b/package-lock.json index b51ac351..98550895 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ ], "devDependencies": { "@types/node": "^24.8.1", + "jsonc-parser": "^3.3.1", "zx": "^8.8.5" } }, @@ -32,9 +33,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", - "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", "dev": true, "license": "MIT", "engines": { @@ -250,6 +251,16 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", @@ -908,9 +919,9 @@ } }, "node_modules/@floating-ui/dom": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.3.tgz", - "integrity": "sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", "dev": true, "license": "MIT", "dependencies": { @@ -919,13 +930,13 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.5.tgz", - "integrity": "sha512-HDO/1/1oH9fjj4eLgegrlH3dklZpHtUYYFiVwMUwfGvk9jWDRWqkklA2/NFScknrcNSspbV868WjXORvreDX+Q==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", "dev": true, "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.7.3" + "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", @@ -964,33 +975,19 @@ } }, "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1072,9 +1069,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { @@ -1673,9 +1670,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", + "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", "cpu": [ "arm" ], @@ -1687,9 +1684,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", + "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", "cpu": [ "arm64" ], @@ -1701,9 +1698,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", + "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", "cpu": [ "arm64" ], @@ -1715,9 +1712,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", + "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", "cpu": [ "x64" ], @@ -1729,9 +1726,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", + "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", "cpu": [ "arm64" ], @@ -1743,9 +1740,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", + "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", "cpu": [ "x64" ], @@ -1757,9 +1754,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", + "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", "cpu": [ "arm" ], @@ -1771,9 +1768,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", + "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", "cpu": [ "arm" ], @@ -1785,9 +1782,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", + "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", "cpu": [ "arm64" ], @@ -1799,9 +1796,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", + "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", "cpu": [ "arm64" ], @@ -1812,10 +1809,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "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==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", + "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", "cpu": [ "loong64" ], @@ -1827,9 +1824,9 @@ ] }, "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", + "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", "cpu": [ "ppc64" ], @@ -1841,9 +1838,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", + "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", "cpu": [ "riscv64" ], @@ -1855,9 +1852,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", + "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", "cpu": [ "riscv64" ], @@ -1869,9 +1866,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", + "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", "cpu": [ "s390x" ], @@ -1883,9 +1880,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", + "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", "cpu": [ "x64" ], @@ -1897,9 +1894,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", + "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", "cpu": [ "x64" ], @@ -1910,10 +1907,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", + "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", + "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", "cpu": [ "arm64" ], @@ -1925,9 +1936,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", + "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", "cpu": [ "ia32" ], @@ -1938,10 +1949,24 @@ "win32" ] }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", + "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "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==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", + "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", "cpu": [ "x64" ], @@ -2405,6 +2430,16 @@ "@types/react": "^19.2.0" } }, + "node_modules/@types/react-window": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.8.tgz", + "integrity": "sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -2817,6 +2852,16 @@ "dev": true, "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.18", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.18.tgz", + "integrity": "sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/birpc": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.6.1.tgz", @@ -2852,9 +2897,9 @@ } }, "node_modules/browserslist": { - "version": "4.25.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.2.tgz", - "integrity": "sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==", + "version": "4.26.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", + "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", "dev": true, "funding": [ { @@ -2872,9 +2917,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001733", - "electron-to-chromium": "^1.5.199", - "node-releases": "^2.0.19", + "baseline-browser-mapping": "^2.8.9", + "caniuse-lite": "^1.0.30001746", + "electron-to-chromium": "^1.5.227", + "node-releases": "^2.0.21", "update-browserslist-db": "^1.1.3" }, "bin": { @@ -2895,9 +2941,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001735", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz", - "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==", + "version": "1.0.30001751", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", + "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", "dev": true, "funding": [ { @@ -3041,9 +3087,9 @@ "link": true }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -3066,9 +3112,9 @@ "license": "MIT" }, "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3083,9 +3129,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.203", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.203.tgz", - "integrity": "sha512-uz4i0vLhfm6dLZWbz/iH88KNDV+ivj5+2SA+utpgjKaj9Q0iDLuwk6Idhe9BTxciHudyx6IvTvijhkPvFGUQ0g==", + "version": "1.5.237", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz", + "integrity": "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==", "dev": true, "license": "ISC" }, @@ -3497,6 +3543,21 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3761,6 +3822,13 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -4119,6 +4187,13 @@ "dev": true, "license": "MIT" }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4213,9 +4288,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.25", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.25.tgz", + "integrity": "sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==", "dev": true, "license": "MIT" }, @@ -4546,14 +4621,21 @@ } }, "node_modules/react-window": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-2.2.1.tgz", - "integrity": "sha512-jrUMKDLW1B4yX4OU0QjdytGgWIg6wqWfiTe86lUhFsCUltkNNB/zYxFU0DTKAzBOMRbkpLVWS1IkLvQeO4L7nw==", + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.11.tgz", + "integrity": "sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.0.0", + "memoize-one": ">=3.1.1 <6" + }, + "engines": { + "node": ">8.0.0" + }, "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/resolve-from": { @@ -4578,9 +4660,9 @@ } }, "node_modules/rollup": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", - "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", + "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", "dev": true, "license": "MIT", "dependencies": { @@ -4594,44 +4676,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@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", + "@rollup/rollup-android-arm-eabi": "4.52.5", + "@rollup/rollup-android-arm64": "4.52.5", + "@rollup/rollup-darwin-arm64": "4.52.5", + "@rollup/rollup-darwin-x64": "4.52.5", + "@rollup/rollup-freebsd-arm64": "4.52.5", + "@rollup/rollup-freebsd-x64": "4.52.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", + "@rollup/rollup-linux-arm-musleabihf": "4.52.5", + "@rollup/rollup-linux-arm64-gnu": "4.52.5", + "@rollup/rollup-linux-arm64-musl": "4.52.5", + "@rollup/rollup-linux-loong64-gnu": "4.52.5", + "@rollup/rollup-linux-ppc64-gnu": "4.52.5", + "@rollup/rollup-linux-riscv64-gnu": "4.52.5", + "@rollup/rollup-linux-riscv64-musl": "4.52.5", + "@rollup/rollup-linux-s390x-gnu": "4.52.5", + "@rollup/rollup-linux-x64-gnu": "4.52.5", + "@rollup/rollup-linux-x64-musl": "4.52.5", + "@rollup/rollup-openharmony-arm64": "4.52.5", + "@rollup/rollup-win32-arm64-msvc": "4.52.5", + "@rollup/rollup-win32-ia32-msvc": "4.52.5", + "@rollup/rollup-win32-x64-gnu": "4.52.5", + "@rollup/rollup-win32-x64-msvc": "4.52.5", "fsevents": "~2.3.2" } }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5131,9 +5200,9 @@ } }, "node_modules/vite": { - "version": "7.1.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.10.tgz", - "integrity": "sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==", + "version": "7.1.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz", + "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", "dev": true, "license": "MIT", "dependencies": { @@ -5223,21 +5292,6 @@ } } }, - "node_modules/vite/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/vite/node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", @@ -5463,6 +5517,7 @@ "@tanstack/react-query": "^5.90.5", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", + "@types/react-window": "^1.8.8", "@vitejs/plugin-react": "^5.0.4", "birpc": "^2.6.1", "class-variance-authority": "^0.7.1", @@ -5479,7 +5534,7 @@ "react-dom": "^19.2.0", "react-resizable-panels": "^3.0.6", "react-virtualized-auto-sizer": "^1.0.26", - "react-window": "^2.2.1", + "react-window": "^1.8.8", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.14", "tw-animate-css": "^1.4.0", @@ -5491,8 +5546,6 @@ }, "packages/cxx-playground/node_modules/monaco-editor": { "version": "0.52.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.0.tgz", - "integrity": "sha512-OeWhNpABLCeTqubfqLMXGsqf6OmPU6pHM85kF3dhy6kq5hnhuVS1p3VrEW/XhWHc71P2tHyS5JFySD8mgs1crw==", "dev": true, "license": "MIT" } diff --git a/package.json b/package.json index f9a9b312..d45dc9b2 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.1.27", "description": "A compiler frontend for C++23", "private": true, + "type": "module", "keywords": [ "c++", "compiler", @@ -25,6 +26,7 @@ }, "devDependencies": { "@types/node": "^24.8.1", + "jsonc-parser": "^3.3.1", "zx": "^8.8.5" }, "workspaces": [ @@ -34,14 +36,14 @@ "build:cxx-frontend": "npm run build -w cxx-frontend", "build:playground": "npm run build -w @robertoraggi/cxx-playground", "build:emscripten": "npm run build -w cxx-frontend", - "build:wasi": "zx scripts/build-wasi.mjs", - "build:mlir": "zx scripts/build-mlir.mjs", + "build:wasi": "node scripts/build-wasi.js", + "build:mlir": "node scripts/build-mlir.js", "playground": "npm run dev -w @robertoraggi/cxx-playground", - "setup-venv": "zx scripts/setup-venv.mjs", - "update-tests": "zx scripts/update-tests.mjs", + "setup-venv": "node scripts/setup-venv.js", + "update-tests": "node scripts/update-tests.js", "cxx-gen-ast": "node --no-warnings packages/cxx-gen-ast/src/gen.ts", "cxx-gen-lsp": "node --no-warnings packages/cxx-gen-lsp/src/main.ts packages/cxx-gen-lsp/metaModel.json packages/cxx-gen-lsp -o src/lsp/cxx/lsp", - "download-lsp-model": "zx scripts/download-lsp-model.mjs", + "download-lsp-model": "node scripts/download-lsp-model.js", "download-mlir": "gh run download -n mlir --dir build.em/llvm-project/install/" } } diff --git a/packages/cxx-playground/package.json b/packages/cxx-playground/package.json index eb8ac082..e08ede8a 100644 --- a/packages/cxx-playground/package.json +++ b/packages/cxx-playground/package.json @@ -19,6 +19,7 @@ "@tanstack/react-query": "^5.90.5", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", + "@types/react-window": "^1.8.8", "@vitejs/plugin-react": "^5.0.4", "birpc": "^2.6.1", "class-variance-authority": "^0.7.1", @@ -35,7 +36,7 @@ "react-dom": "^19.2.0", "react-resizable-panels": "^3.0.6", "react-virtualized-auto-sizer": "^1.0.26", - "react-window": "^2.2.1", + "react-window": "^1.8.8", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.14", "tw-animate-css": "^1.4.0", diff --git a/scripts/ast-dump.mjs b/scripts/ast-dump.js old mode 100755 new mode 100644 similarity index 100% rename from scripts/ast-dump.mjs rename to scripts/ast-dump.js diff --git a/scripts/build-mlir.mjs b/scripts/build-mlir.js similarity index 95% rename from scripts/build-mlir.mjs rename to scripts/build-mlir.js index 25037b66..e312c9ba 100644 --- a/scripts/build-mlir.mjs +++ b/scripts/build-mlir.js @@ -96,6 +96,15 @@ async function main() { await zx.fs.mkdir(llvm_source_dir, { recursive: true }); await zx.fs.writeFile(zx.path.join(llvm_source_dir, ".gitignore"), "*"); + await zx.fs.writeFile( + zx.path.join(llvm_install_dir, "package.json"), + `{ + "name": "mlir", + "version": "${version}", + "type": "commonjs" +}` + ); + await downloadLLVM({ version, packages, outdir: llvm_source_dir }); await $`emcmake cmake ${llvm_cmake_options} -S ${llvm_source_dir}/llvm -B ${llvm_build_dir}/llvm -DCMAKE_INSTALL_PREFIX=${llvm_install_dir}`; @@ -120,7 +129,8 @@ async function main() { await zx.fs.writeFile( zx.path.join(llvm_install_dir, "bin", app), - `#!/usr/bin/env node\nrequire("./${app}.js");` + `#!/usr/bin/env node +require("./${app}.js");` ); await zx.fs.chmod(zx.path.join(llvm_install_dir, "bin", app), 0o755); @@ -154,8 +164,4 @@ async function main() { } } -try { - await main(); -} catch (e) { - console.error(e.message); -} +await await main(); diff --git a/scripts/build-wasi.mjs b/scripts/build-wasi.js old mode 100755 new mode 100644 similarity index 92% rename from scripts/build-wasi.mjs rename to scripts/build-wasi.js index 100b2664..2633f244 --- a/scripts/build-wasi.mjs +++ b/scripts/build-wasi.js @@ -20,10 +20,15 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -import "zx/globals"; +import { $, which, argv } from "zx"; +import { fileURLToPath } from "url"; +import path from "path"; $.verbose = true; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + const workspacePath = path.join(__dirname, "../"); const docker = await which("docker"); const uid = String(await $`id -u`).trim(); diff --git a/scripts/cxx-wasmtime.mjs b/scripts/cxx-wasmtime.js old mode 100755 new mode 100644 similarity index 98% rename from scripts/cxx-wasmtime.mjs rename to scripts/cxx-wasmtime.js index babc1699..3424d45b --- a/scripts/cxx-wasmtime.mjs +++ b/scripts/cxx-wasmtime.js @@ -42,7 +42,7 @@ try { } catch (e) { if (e instanceof ProcessOutput) { echo`${e}`; - process.exit(e.status); + process.exit(e.exitCode); } else { process.exit(1); } diff --git a/scripts/devcontainer-post-create.sh b/scripts/devcontainer-post-create.sh old mode 100755 new mode 100644 diff --git a/scripts/download-lsp-model.mjs b/scripts/download-lsp-model.js similarity index 100% rename from scripts/download-lsp-model.mjs rename to scripts/download-lsp-model.js diff --git a/scripts/setup-venv.mjs b/scripts/setup-venv.js old mode 100755 new mode 100644 similarity index 100% rename from scripts/setup-venv.mjs rename to scripts/setup-venv.js diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index d8f34c3e..b9105dd9 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -5,11 +5,24 @@ "lib": ["esnext"], "types": ["node"], + "noEmit": true, + + // Stricter Typechecking Options "noUncheckedIndexedAccess": true, "exactOptionalPropertyTypes": true, + // Style Options + // "noImplicitReturns": true, + // "noImplicitOverride": true, + // "noUnusedLocals": true, + // "noUnusedParameters": true, + // "noFallthroughCasesInSwitch": true, + // "noPropertyAccessFromIndexSignature": true, + + // Recommended Options "strict": true, - // "verbatimModuleSyntax": true, + "jsx": "react-jsx", + "verbatimModuleSyntax": true, "isolatedModules": true, "noUncheckedSideEffectImports": true, "moduleDetection": "force", diff --git a/scripts/update-deps.mts b/scripts/update-deps.ts similarity index 100% rename from scripts/update-deps.mts rename to scripts/update-deps.ts diff --git a/scripts/update-launch-configs.mjs b/scripts/update-launch-configs.ts similarity index 88% rename from scripts/update-launch-configs.mjs rename to scripts/update-launch-configs.ts index 0444480d..a5421214 100644 --- a/scripts/update-launch-configs.mjs +++ b/scripts/update-launch-configs.ts @@ -1,5 +1,11 @@ import { $, path, fs, glob } from "zx"; -import { parse, printParseErrorCode, modify, applyEdits } from "jsonc-parser"; +import { + parse, + printParseErrorCode, + modify, + applyEdits, + type ParseError, +} from "jsonc-parser"; $.verbose = true; @@ -11,7 +17,7 @@ const unitTestsPath = path.join(workspacePath, "tests/unit_tests"); const ccFiles = await glob(`${unitTestsPath}/**/*.cc`); console.log(ccFiles); -function makeLaunchConfig({ file }) { +function makeLaunchConfig({ file }: { file: string }) { const kind = path.basename(path.dirname(file)); const name = path.basename(file); @@ -34,7 +40,7 @@ const launchConfigPath = path.join(workspacePath, ".vscode/launch.json"); const launchConfigContent = await fs.readFile(launchConfigPath, "utf-8"); // Parse JSON with comments -let errors = []; +let errors: ParseError[] = []; const launchConfig = parse(launchConfigContent, errors, { allowTrailingComma: true, }); @@ -51,7 +57,7 @@ if (errors.length > 0) { // Filter out old test configurations const existingConfigs = launchConfig.configurations || []; const filteredConfigs = existingConfigs.filter( - (config) => !config.name.match(/ \[.*\]$/) + (config: any) => !config.name.match(/ \[.*\]$/) ); // Append new configurations diff --git a/scripts/update-tests.mjs b/scripts/update-tests.js old mode 100755 new mode 100644 similarity index 100% rename from scripts/update-tests.mjs rename to scripts/update-tests.js