From c78acbd6d4fd84bfbbfafbcea452cac5298cee17 Mon Sep 17 00:00:00 2001 From: GODrums Date: Tue, 7 Jan 2025 15:04:32 +0100 Subject: [PATCH 1/8] chore: update deps --- webapp/package-lock.json | 4482 +++++++++++++++++--------------------- webapp/package.json | 24 +- 2 files changed, 2039 insertions(+), 2467 deletions(-) diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 8496898b..7edab09d 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -59,7 +59,7 @@ "postcss": "8.4.41", "rxjs": "7.8.1", "tailwind-merge": "2.5.2", - "tailwindcss": "3.4.10", + "tailwindcss": "^3.4.17", "tailwindcss-animate": "1.0.7", "tslib": "2.6.3" }, @@ -70,20 +70,20 @@ "@angular/cli": "18.2.1", "@angular/compiler-cli": "18.2.1", "@chromatic-com/storybook": "1.7.0", - "@spartan-ng/cli": "0.0.1-alpha.366", - "@storybook/addon-essentials": "8.3.4", - "@storybook/addon-interactions": "8.3.4", - "@storybook/addon-links": "8.3.4", - "@storybook/addon-onboarding": "8.3.4", - "@storybook/addon-themes": "8.3.4", - "@storybook/angular": "8.3.4", - "@storybook/blocks": "8.3.4", - "@storybook/test": "8.3.4", + "@spartan-ng/cli": "^0.0.1-alpha.380", + "@storybook/addon-essentials": "^8.4.7", + "@storybook/addon-interactions": "^8.4.7", + "@storybook/addon-links": "^8.4.7", + "@storybook/addon-onboarding": "^8.4.7", + "@storybook/addon-themes": "^8.4.7", + "@storybook/angular": "^8.4.7", + "@storybook/blocks": "^8.4.7", + "@storybook/test": "^8.4.7", "@tailwindcss/typography": "0.5.15", "@types/jasmine": "5.1.4", "@typescript-eslint/eslint-plugin": "8.2.0", "@typescript-eslint/parser": "8.2.0", - "chromatic": "11.7.1", + "chromatic": "^11.22.0", "eslint": "9.9.0", "eslint-plugin-prettier": "5.2.1", "jasmine-core": "5.2.0", @@ -93,7 +93,7 @@ "karma-jasmine": "5.1.0", "karma-jasmine-html-reporter": "2.1.0", "prettier": "3.3.3", - "storybook": "8.3.4", + "storybook": "^8.4.7", "typescript": "5.5.4" }, "engines": { @@ -1013,12 +1013,14 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", - "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -1145,17 +1147,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz", - "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/traverse": "^7.25.7", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "engines": { @@ -1166,12 +1169,13 @@ } }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1241,41 +1245,43 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", - "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", - "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", - "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1285,22 +1291,24 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz", - "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", - "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1335,14 +1343,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz", - "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1351,27 +1360,15 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", - "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz", - "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1390,28 +1387,31 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", - "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1443,28 +1443,14 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", - "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", - "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.26.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -1553,14 +1539,15 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.7.tgz", - "integrity": "sha512-q1mqqqH0e1lhmsEQHV5U8OmdueBC2y0RFr2oUzZoFRtN3MvPmt2fsFRcNQAoGLTSNdHBFUYGnlgcRFhkBbKjPw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-decorators": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1621,12 +1608,13 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.7.tgz", - "integrity": "sha512-oXduHo642ZhstLVYTe2z2GSJIruU0c/W3/Ghr6A5yGMsVrvdnxO1z+3pbTcT7f3/Clnt+1z8D/w1r1f1SHaCHw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1714,12 +1702,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz", - "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1831,12 +1820,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz", - "integrity": "sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2244,14 +2234,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz", - "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2637,16 +2627,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.7.tgz", - "integrity": "sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", + "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/plugin-syntax-typescript": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2656,12 +2647,13 @@ } }, "node_modules/@babel/plugin-transform-typescript/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2851,16 +2843,17 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz", - "integrity": "sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", + "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", - "@babel/plugin-syntax-jsx": "^7.25.7", - "@babel/plugin-transform-modules-commonjs": "^7.25.7", - "@babel/plugin-transform-typescript": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2882,30 +2875,32 @@ } }, "node_modules/@babel/template": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", - "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", - "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2914,12 +2909,14 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", - "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7", + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -2929,10 +2926,11 @@ } }, "node_modules/@babel/traverse/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -2941,14 +2939,14 @@ } }, "node_modules/@babel/types": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", - "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3012,20 +3010,22 @@ } }, "node_modules/@emnapi/core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.2.0.tgz", - "integrity": "sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.3.1.tgz", + "integrity": "sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==", "dev": true, + "license": "MIT", "dependencies": { "@emnapi/wasi-threads": "1.0.1", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", - "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", + "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" } @@ -3035,6 +3035,7 @@ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" } @@ -3915,6 +3916,7 @@ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -3927,6 +3929,7 @@ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -3939,26 +3942,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/types/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3970,27 +3959,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -4198,9 +4166,9 @@ ] }, "node_modules/@mdx-js/react": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", - "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", + "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4216,24 +4184,26 @@ } }, "node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.6.9.tgz", - "integrity": "sha512-KXTPO0vkrtHEIcthU3TIQEkPxoytcmdyNXRwOojZEVQhqEefykAek48ndFiVTmyOu2LW2EuzP49Le8zY7nESWQ==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.7.6.tgz", + "integrity": "sha512-eD1JZDQ+h5WLdA58MmAE1DzLwvFaGJeeam3Tswc/sEUb4QGT86X4Fme+dMTBRYRoAq/tRYql3DlVTFhdmrUVzg==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.6.9", + "@module-federation/sdk": "0.7.6", "@types/semver": "7.5.8", "semver": "7.6.3" } }, "node_modules/@module-federation/data-prefetch": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.6.9.tgz", - "integrity": "sha512-rpHxfHNkIiPA441GzXI6TMYjSrUjRWDwxJTvRQopX/P0jK5vKtNwT1UBTNF2DJkbtO1idljfhbrIufEg0OY72w==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.7.6.tgz", + "integrity": "sha512-AMpfnuIAK/Y5M682BUsnc13ARCEKhEvb0tXF4S+l7jfL08oE9gyo+G/nk0LIzZBO2mLDz5g2AydAERanM6gswQ==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.6.9", - "@module-federation/sdk": "0.6.9", + "@module-federation/runtime": "0.7.6", + "@module-federation/sdk": "0.7.6", "fs-extra": "9.1.0" }, "peerDependencies": { @@ -4242,14 +4212,16 @@ } }, "node_modules/@module-federation/dts-plugin": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.6.9.tgz", - "integrity": "sha512-uiMjjEFcMlOvRtNu8/tt7sJ5y7WTosTVym0V7lMQjgoeX0QesvZqRhgzw5gQcPcFvbk54RwTUI2rS8OEGScCFw==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.7.6.tgz", + "integrity": "sha512-K8T8+Ip+fCQkTOxAQbAW47drphN36+WcvcOusn/fsIT+1exdhyvqxSCj8V7MLCtjA9kGDi0jHIGN6MN4p2cV0Q==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/managers": "0.6.9", - "@module-federation/sdk": "0.6.9", - "@module-federation/third-party-dts-extractor": "0.6.9", + "@module-federation/error-codes": "0.7.6", + "@module-federation/managers": "0.7.6", + "@module-federation/sdk": "0.7.6", + "@module-federation/third-party-dts-extractor": "0.7.6", "adm-zip": "^0.5.10", "ansi-colors": "^4.1.3", "axios": "^1.7.4", @@ -4261,7 +4233,7 @@ "log4js": "6.9.1", "node-schedule": "2.1.1", "rambda": "^9.1.0", - "ws": "8.17.1" + "ws": "8.18.0" }, "peerDependencies": { "typescript": "^4.9.0 || ^5.0.0", @@ -4273,69 +4245,43 @@ } } }, - "node_modules/@module-federation/dts-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@module-federation/dts-plugin/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@module-federation/dts-plugin/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@module-federation/dts-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@module-federation/dts-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@module-federation/enhanced": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.7.6.tgz", + "integrity": "sha512-ivTVuRKhew/25fiblAW22RybYzyacQsvnQG3y9zSNsYbwcj+0u7THWMmsK8vNKxDUpjxuQulCK07BEycDjoB5Q==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@module-federation/enhanced": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.6.9.tgz", - "integrity": "sha512-4bEGQSE6zJ2FMdBTOrRiVjNNzWhUqzWEJGWbsr0bpLNAl4BVx2ah5MyKTrSYqaW//BRA2qc8rmrIreaIawr3kQ==", - "dev": true, - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.6.9", - "@module-federation/data-prefetch": "0.6.9", - "@module-federation/dts-plugin": "0.6.9", - "@module-federation/managers": "0.6.9", - "@module-federation/manifest": "0.6.9", - "@module-federation/rspack": "0.6.9", - "@module-federation/runtime-tools": "0.6.9", - "@module-federation/sdk": "0.6.9", + "@module-federation/bridge-react-webpack-plugin": "0.7.6", + "@module-federation/data-prefetch": "0.7.6", + "@module-federation/dts-plugin": "0.7.6", + "@module-federation/managers": "0.7.6", + "@module-federation/manifest": "0.7.6", + "@module-federation/rspack": "0.7.6", + "@module-federation/runtime-tools": "0.7.6", + "@module-federation/sdk": "0.7.6", "btoa": "^1.2.1", "upath": "2.0.1" }, @@ -4356,91 +4302,84 @@ } } }, + "node_modules/@module-federation/error-codes": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.7.6.tgz", + "integrity": "sha512-XVzX/sRFj1h5JvOOVMoFppxq0t1t3o/AlEICHgWX+dybIwJgz9g4gihZOWVZfz5/xsKGcUwdH5X7Z2nkuYhJEw==", + "dev": true, + "license": "MIT" + }, "node_modules/@module-federation/managers": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.6.9.tgz", - "integrity": "sha512-q3AOQXcWWpdUZI1gDIi9j/UqcP+FJBYXj/e4pNp3QAteJwS/Ve9UP3y0hW27bIbAWZSSajWsYbf/+YLnktA/kQ==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.7.6.tgz", + "integrity": "sha512-NW0LJ6TL13oN004D9e50EalcGZyTYHHgyaeKOc90Omb/HMeHxjyhHx7wl1TLRwVN2E5Rk+IO0JrwgrdlNMfAzg==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.6.9", + "@module-federation/sdk": "0.7.6", "find-pkg": "2.0.0", "fs-extra": "9.1.0" } }, "node_modules/@module-federation/manifest": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.6.9.tgz", - "integrity": "sha512-JMSPDpHODXOmTyJes8GJ950mbN7tqjQzqgFVUubDOVFOmlC0/MYaRzRPmkApz6d8nUfMbLZYzxNSaBHx8GP0/Q==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.7.6.tgz", + "integrity": "sha512-xBrFwLjDMUjKRnp+P4X29ZNyhgXSsp+SfrBxVsKJpEESOHalDoNClbo6gXvZAvkBZyo9sY3SJhAwduDwNkg04w==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "0.6.9", - "@module-federation/managers": "0.6.9", - "@module-federation/sdk": "0.6.9", + "@module-federation/dts-plugin": "0.7.6", + "@module-federation/managers": "0.7.6", + "@module-federation/sdk": "0.7.6", "chalk": "3.0.0", "find-pkg": "2.0.0" } }, - "node_modules/@module-federation/manifest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@module-federation/node": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.6.11.tgz", + "integrity": "sha512-ytCNML9Q9dQ7Xi/pTYp4Y+yP/YUiFyyCa8BEKnSt5Ipiqtu4QMxj46EkOIgvLv0nSlK+xOVgAzqtXLI89SfhCg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@module-federation/enhanced": "0.7.6", + "@module-federation/runtime": "0.7.6", + "@module-federation/sdk": "0.7.6", + "@module-federation/utilities": "3.1.29", + "btoa": "1.2.1", + "encoding": "^0.1.13", + "node-fetch": "2.7.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "react": "^16||^17||^18", + "react-dom": "^16||^17||^18", + "webpack": "^5.40.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@module-federation/manifest/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "node_modules/@module-federation/rspack": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.7.6.tgz", + "integrity": "sha512-alfX85C+2AQLXGrtpa08ImwhHIGwFIkJ/6i/XhxpYL5iFu0mC0xRIJPJUw0tiBWdFpP4p+Ykij3hP3FqfvaiKg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@module-federation/manifest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@module-federation/manifest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@module-federation/rspack": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.6.9.tgz", - "integrity": "sha512-N5yBqN8ijSRZKd0kbIvpZNil0y8rFa8cREKI1QsW1+EYUKwOUBFwF55tFdTmNCKmpZqSEBtcNjRGZXknsYPQxg==", - "dev": true, - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.6.9", - "@module-federation/dts-plugin": "0.6.9", - "@module-federation/managers": "0.6.9", - "@module-federation/manifest": "0.6.9", - "@module-federation/runtime-tools": "0.6.9", - "@module-federation/sdk": "0.6.9" + "@module-federation/bridge-react-webpack-plugin": "0.7.6", + "@module-federation/dts-plugin": "0.7.6", + "@module-federation/managers": "0.7.6", + "@module-federation/manifest": "0.7.6", + "@module-federation/runtime-tools": "0.7.6", + "@module-federation/sdk": "0.7.6" }, "peerDependencies": { "typescript": "^4.9.0 || ^5.0.0", @@ -4456,49 +4395,84 @@ } }, "node_modules/@module-federation/runtime": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.6.9.tgz", - "integrity": "sha512-G1x+6jyW5sW1X+TtWaKigGhwqiHE8MESvi3ntE9ICxwELAGBonmsqDqnLSrdEy6poBKslvPANPJr0Nn9pvW9lg==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.7.6.tgz", + "integrity": "sha512-TEEDbGwaohZ2dMa+Sk/Igq8XpcyfjqJfbL20mdAZeifSFVZYRSCaTd/xIXP7pEw8+5BaCMc4YfCf/XcjFAUrVA==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.6.9" + "@module-federation/error-codes": "0.7.6", + "@module-federation/sdk": "0.7.6" } }, "node_modules/@module-federation/runtime-tools": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.6.9.tgz", - "integrity": "sha512-AhsEBXo8IW1ATMKS1xfJaxBiHu9n5z6WUOAIWdPpWXXBJhTFgOs0K1xAod0xLJY4YH/B5cwEcHRPN3FEs2/0Ww==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.7.6.tgz", + "integrity": "sha512-SvokF6gn2sNrTEPG51H0LrowHnf3iNfznO2PzKpxAhZOBdb1pm0wJPwWSMHYrjMdDpjr7bzaqAywnkHdA6lqeQ==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.6.9", - "@module-federation/webpack-bundler-runtime": "0.6.9" + "@module-federation/runtime": "0.7.6", + "@module-federation/webpack-bundler-runtime": "0.7.6" } }, "node_modules/@module-federation/sdk": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.6.9.tgz", - "integrity": "sha512-xmTxb9LgncxPGsBrN6AT/+aHnFGv8swbeNl0PcSeVbXTGLu3Gp7j+5J+AhJoWNB++SLguRwBd8LjB1d8mNKLDg==", - "dev": true + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.7.6.tgz", + "integrity": "sha512-MFE+RtsHnutZOCp2eKpa3A/yzZ8tOPmjX7QRdVnB2qqR9JA2SH3ZP5+cYq76tzFQZvU1BCWAQVNMvqGOW2yVZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "isomorphic-rslog": "0.0.6" + } }, "node_modules/@module-federation/third-party-dts-extractor": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.6.9.tgz", - "integrity": "sha512-im00IQyX/siJz+SaAmJo6vGmMBig7UYzcrPD1N5NeiZonxdT1RZk9iXUP419UESgovYy4hM6w4qdCq6PMMl2bw==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.7.6.tgz", + "integrity": "sha512-JME76/rgr41AKXG6kUTQXdQJiMCypN3qHOgPv4VuIag10UdLo/0gdeN6PYronvYmvPOQMfYev80GcEwl4l531A==", "dev": true, + "license": "MIT", "dependencies": { "find-pkg": "2.0.0", "fs-extra": "9.1.0", "resolve": "1.22.8" } }, + "node_modules/@module-federation/utilities": { + "version": "3.1.29", + "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-3.1.29.tgz", + "integrity": "sha512-yhHOgm3mkZBvQzT4HoBJAVhGIa7Nfhpd4Zdc11g0vYEMapU6lfN5HHipUFdj6bLUzHhDyrY6CaF3syqTuabAfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/sdk": "0.7.6" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18", + "webpack": "^5.40.0" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.6.9.tgz", - "integrity": "sha512-ME1MjNT/a4MFI3HaJDM06olJ+/+H8lk4oDOdwwEZI2JSH3UoqCDrMcjSKCjBNMGzza57AowGobo1LHQeY8yZ8Q==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.7.6.tgz", + "integrity": "sha512-kB9hQ0BfwNAcQWGskDEOxYP2z2bB/1ABXKr8MDomCFl2mbW3vvfYMQrb8UhJmJvE3rbGI/iXhJUdgBLNREnjUg==", "dev": true, + "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.6.9", - "@module-federation/sdk": "0.6.9" + "@module-federation/runtime": "0.7.6", + "@module-federation/sdk": "0.7.6" } }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { @@ -4584,6 +4558,7 @@ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", "dev": true, + "license": "MIT", "dependencies": { "@emnapi/core": "^1.1.0", "@emnapi/runtime": "^1.1.0", @@ -4956,128 +4931,44 @@ "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/@nrwl/angular": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nrwl/angular/-/angular-19.8.3.tgz", - "integrity": "sha512-mPVTuUrRD6/cV0dlh0tTKR0t0xG/kkDY067O7GqfYXGeNx9O383803D719n9CaUsiz8QFPuIv+N+fkwjYY5nKQ==", - "dev": true, - "dependencies": { - "@nx/angular": "19.8.3", - "tslib": "^2.3.0" - } - }, - "node_modules/@nrwl/devkit": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.8.3.tgz", - "integrity": "sha512-67vZJRMCEA543A0uz8dPTZ5lX4wsAlgsr24KJafsUxBC2WCf9z4BqcLj0jVWfmRdKJmu2UwaxtD2UB1bekt3sg==", - "dev": true, - "dependencies": { - "@nx/devkit": "19.8.3" - } - }, - "node_modules/@nrwl/js": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-19.8.3.tgz", - "integrity": "sha512-PIRmAkW2lQGllxrzAfA92Gzm8O6kJQzvMcRTNzOI6GHtsgmZ8hIniu11BFr0oVtnppN4efVRnhYZbPyyP7aOoA==", - "dev": true, - "dependencies": { - "@nx/js": "19.8.3" - } - }, - "node_modules/@nrwl/tao": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.8.3.tgz", - "integrity": "sha512-byjBtOXx+xGjMu1wKopJSJbrR3gKqTsCEgp1+YSZ45+iFKxFdXLJrGsyhVqBovCKVBM+5/KtGuEkZoUPlP8JWg==", - "dev": true, - "dependencies": { - "nx": "19.8.3", - "tslib": "^2.3.0" - }, - "bin": { - "tao": "index.js" - } - }, - "node_modules/@nrwl/web": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-19.8.3.tgz", - "integrity": "sha512-IvORa2SYddQaPq6QfdfxJTJfQyhqfO4EMIs5QwS627SAvD12Rv+L23kBd5YrbgKIVbLx0+CA+NfSiEEo6yO/Ow==", - "dev": true, - "dependencies": { - "@nx/web": "19.8.3" - } - }, - "node_modules/@nrwl/webpack": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nrwl/webpack/-/webpack-19.8.3.tgz", - "integrity": "sha512-iMbX/YKSox/Msm267AupwRgeXf18dQq7KJEv/vv+d5NA2NqJ8M+8XhhQ3FQOG+tx8Su0sv1dvzTVqmy+fuX69Q==", - "dev": true, - "dependencies": { - "@nx/webpack": "19.8.3" - } - }, - "node_modules/@nrwl/workspace": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.8.3.tgz", - "integrity": "sha512-mJURS7J1vtfwa2As1ZHzl5wtp+I9zWwmfOJeUGquqSe3ojS/UiNg0e23di265mGxwK2eknEOV7CtU8hKO/nRTA==", + "node_modules/@nx/angular": { + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-20.3.0.tgz", + "integrity": "sha512-QdgHkOza4f3brmyepHoMvpMKFyPXTGvp5R4zImq0hkwX4UguZyKgSEQV5ldOPsDxe9HOAgypXZnGo/CfQAdhmQ==", "dev": true, + "license": "MIT", "dependencies": { - "@nx/workspace": "19.8.3" - } - }, - "node_modules/@nx/angular": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-19.8.3.tgz", - "integrity": "sha512-f1C55hupx+Pe+U8aGEag0jxaH2ChyUMeteo+fWU7qc9aaCvVjC6nIxDjB48sqbh9NyuXRZfv5Ze9ve6T1VgUQg==", - "dev": true, - "dependencies": { - "@module-federation/enhanced": "~0.6.0", - "@nrwl/angular": "19.8.3", - "@nx/devkit": "19.8.3", - "@nx/eslint": "19.8.3", - "@nx/js": "19.8.3", - "@nx/web": "19.8.3", - "@nx/webpack": "19.8.3", - "@nx/workspace": "19.8.3", + "@nx/devkit": "20.3.0", + "@nx/eslint": "20.3.0", + "@nx/js": "20.3.0", + "@nx/module-federation": "20.3.0", + "@nx/web": "20.3.0", + "@nx/webpack": "20.3.0", + "@nx/workspace": "20.3.0", "@phenomnomnominal/tsquery": "~5.0.1", "@typescript-eslint/type-utils": "^8.0.0", "chalk": "^4.1.0", - "find-cache-dir": "^3.3.2", "magic-string": "~0.30.2", "minimatch": "9.0.3", "piscina": "^4.4.0", "semver": "^7.5.3", "tslib": "^2.3.0", - "webpack": "^5.88.0", "webpack-merge": "^5.8.0" }, "peerDependencies": { - "@angular-devkit/build-angular": ">= 16.0.0 < 19.0.0", - "@angular-devkit/core": ">= 16.0.0 < 19.0.0", - "@angular-devkit/schematics": ">= 16.0.0 < 19.0.0", - "@schematics/angular": ">= 16.0.0 < 19.0.0", + "@angular-devkit/build-angular": ">= 17.0.0 < 20.0.0", + "@angular-devkit/core": ">= 17.0.0 < 20.0.0", + "@angular-devkit/schematics": ">= 17.0.0 < 20.0.0", + "@schematics/angular": ">= 17.0.0 < 20.0.0", "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/@nx/angular/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@nx/angular/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5089,32 +4980,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nx/angular/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@nx/angular/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@nx/angular/node_modules/webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -5125,12 +4996,12 @@ } }, "node_modules/@nx/devkit": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.8.3.tgz", - "integrity": "sha512-uX50CAM11tzhwswf0ftN0QfzW2FM3M4Mf/pD/nRRnmsTkcPTdMXVu4LHuLVTp4CMsaO+cOQlqgHXujHYfOIctg==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-20.3.0.tgz", + "integrity": "sha512-u9oRd2F33DLNWPbzpYGW7xuMEYUAOwO9DLP9nGYpxbZXy6Z4AdoKeqhN+KBTyg8+DyQGuKUSEXcWriDyLLgcHw==", "dev": true, + "license": "MIT", "dependencies": { - "@nrwl/devkit": "19.8.3", "ejs": "^3.1.7", "enquirer": "~2.3.6", "ignore": "^5.0.4", @@ -5141,21 +5012,21 @@ "yargs-parser": "21.1.1" }, "peerDependencies": { - "nx": ">= 17 <= 20" + "nx": ">= 19 <= 21" } }, "node_modules/@nx/eslint": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-19.8.3.tgz", - "integrity": "sha512-ohYG6tAXFc3gYvFWzOSno8+UmUZaq3FqC6+eMm7SOnZS+Movwdiw7z2Iv5eQ8YXTR5vEBmgbzqpMCk1o+t63ww==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-20.3.0.tgz", + "integrity": "sha512-QhApF0HAcMm0tc7kXna4XuFUuO3oroWvGmvzGqBSa3GyuXbAz1VJ1RFWYkyQzjAsltaBcMUFCA+ORUM+PN1sWA==", "dev": true, + "license": "MIT", "dependencies": { - "@nx/devkit": "19.8.3", - "@nx/js": "19.8.3", - "@nx/linter": "19.8.3", + "@nx/devkit": "20.3.0", + "@nx/js": "20.3.0", "semver": "^7.5.3", "tslib": "^2.3.0", - "typescript": "~5.4.2" + "typescript": "~5.6.2" }, "peerDependencies": { "@zkochan/js-yaml": "0.0.7", @@ -5168,10 +5039,11 @@ } }, "node_modules/@nx/eslint/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5181,10 +5053,11 @@ } }, "node_modules/@nx/js": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.8.3.tgz", - "integrity": "sha512-hugBafx0jwMa8ebs20XINCkhjvPNz+wW4qgSo4TtmPXu9NLZ/yVSM8nwOfdnZn1D4UOHu7LaYCBwp09Hrf2F9Q==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-20.3.0.tgz", + "integrity": "sha512-hnO1jzJUvO7+bBsC2uaUElpX9gpMiSA3wdt34V8nnPcIBWtdMrjKX7yRFSwZKimeNauesiX0uorTJf+z28R2bg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", "@babel/plugin-proposal-decorators": "^7.22.7", @@ -5193,9 +5066,9 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nrwl/js": "19.8.3", - "@nx/devkit": "19.8.3", - "@nx/workspace": "19.8.3", + "@nx/devkit": "20.3.0", + "@nx/workspace": "20.3.0", + "@zkochan/js-yaml": "0.0.7", "babel-plugin-const-enum": "^1.0.1", "babel-plugin-macros": "^2.8.0", "babel-plugin-transform-typescript-metadata": "^0.3.1", @@ -5203,7 +5076,6 @@ "columnify": "^1.6.0", "detect-port": "^1.5.1", "enquirer": "~2.3.6", - "fast-glob": "3.2.7", "ignore": "^5.0.4", "js-tokens": "^4.0.0", "jsonc-parser": "3.2.0", @@ -5213,6 +5085,7 @@ "ora": "5.3.0", "semver": "^7.5.3", "source-map-support": "0.5.19", + "tinyglobby": "^0.2.10", "ts-node": "10.9.1", "tsconfig-paths": "^4.1.2", "tslib": "^2.3.0" @@ -5226,26 +5099,12 @@ } } }, - "node_modules/@nx/js/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@nx/js/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5262,6 +5121,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -5269,42 +5129,19 @@ "node": ">=8" } }, - "node_modules/@nx/js/node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@nx/js/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@nx/js/node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@nx/js/node_modules/npm-package-arg": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", "dev": true, + "license": "ISC", "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^3.0.0", @@ -5320,6 +5157,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -5335,6 +5173,7 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.0.3", "chalk": "^4.1.0", @@ -5357,6 +5196,7 @@ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -5366,6 +5206,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -5378,13 +5219,15 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@nx/js/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -5394,6 +5237,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -5404,6 +5248,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -5411,99 +5256,264 @@ "node": ">=8" } }, - "node_modules/@nx/js/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@nx/module-federation": { + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-20.3.0.tgz", + "integrity": "sha512-txb3Gs9BkxnCo0Xo0EYqs8dRyScue4p6AcIxHHaTne469JS1qKzr0rGSpkL3j6KH5PAjfDpp8XZHtQg4Yd3TsQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@module-federation/enhanced": "0.7.6", + "@module-federation/node": "2.6.11", + "@module-federation/sdk": "0.7.6", + "@nx/devkit": "20.3.0", + "@nx/js": "20.3.0", + "@nx/web": "20.3.0", + "@rspack/core": "^1.1.5", + "express": "^4.19.2", + "http-proxy-middleware": "^3.0.3", + "picocolors": "^1.1.0", + "tslib": "^2.3.0", + "webpack": "5.88.0" } }, - "node_modules/@nx/linter": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-19.8.3.tgz", - "integrity": "sha512-wo0mXEV1D1WnZsMUYV0kDCIgY0eR8uV9SfP6B0blVNtUL87yDahsr9oEafHHqHFiPBzjSGjSzIMbPt+lXZnoBw==", + "node_modules/@nx/module-federation/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { - "@nx/eslint": "19.8.3" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@nx/nx-darwin-arm64": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.8.3.tgz", - "integrity": "sha512-ORHFFWMZcvFi0xcpCaXccXVEhFwAevSHOIKfW359+12H9w7VW2O42B+2NcVMK1mrDTOjlXTd+0AmAu7P4NzWFA==", - "cpu": [ - "arm64" - ], + "node_modules/@nx/module-federation/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/@nx/nx-darwin-x64": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.8.3.tgz", - "integrity": "sha512-Ji9DPA0tuzygMcypD/FHRDQSPipcRqMNmSaNKxVpcCbozVTWHvqXFk0rloDIUnxnE0+zvE9LN71H2sS4ZHdTQA==", - "cpu": [ - "x64" - ], + "node_modules/@nx/module-federation/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">= 10" + "node": ">=8.0.0" } }, - "node_modules/@nx/nx-freebsd-x64": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.8.3.tgz", - "integrity": "sha512-Ys+PqtBZCS+QBNs7he3fnxVhMWz/lSSaBVUlVHoQcV1Y4clEpP2TWNQSsbaVnnpcB7pdmKN5ymWdaCaAQuqCMw==", - "cpu": [ - "x64" - ], + "node_modules/@nx/module-federation/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "BSD-2-Clause", "engines": { - "node": ">= 10" + "node": ">=4.0" } }, - "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.8.3.tgz", - "integrity": "sha512-hGOlML60ELXkgkqLHB/w/sXbTbXFhOQGSXC72CjaP5G0u1gj8eTQKJ7WEsqPAFMk5SLFFxqM7eid0LmAYYuZWQ==", - "cpu": [ - "arm" - ], + "node_modules/@nx/module-federation/node_modules/http-proxy-middleware": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz", + "integrity": "sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" + }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.8.3.tgz", - "integrity": "sha512-K/5iVbLbhsx28YtZHvveJgF41rbr2kMdabooZeFqy6VReN7U/zGJMjpV1FzDlf3TNr9jyjPDZgVQRS+qXau2qA==", - "cpu": [ + "node_modules/@nx/module-federation/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/module-federation/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/module-federation/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/module-federation/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@nx/module-federation/node_modules/webpack": { + "version": "5.88.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz", + "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.3.0.tgz", + "integrity": "sha512-9PqSe1Sh7qNqA4GL0cZH0t3S0EZzb2Xn14XY9au7yf0+eoxyag1oETjjULrxLeUmSoXW2hDxzNtoqKFE9zF07Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-20.3.0.tgz", + "integrity": "sha512-gsGGhJVvi5QZVVTZie5sNMo1zOAU+A2edm6DGegObdFRLV41Ju/Yrm/gTaSp4yUtywd3UU4S/30C/nI2c55adA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.3.0.tgz", + "integrity": "sha512-DiymYZBBu0upbiskdfn9KRyoXdyvKohezJiV3j4VkeRE8KR2p04NgwRQviDFbeD1cjWrDy9wk8y+G5PabLlqAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.3.0.tgz", + "integrity": "sha512-Aksx66e8jmt/4rGJ/5z34SWXbPcYr9Ht52UonEeuCdQdoEvAOs7yBUbllYOjIcUsfZikEyZgvqfiQslsggSJdQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.3.0.tgz", + "integrity": "sha512-Y5wmYEwF1bl014Ps8QjagI911VbViQSFHSTVOCNSObdAzig9E5o6NOkoWe+doT1UZLrrInnlkrggQUsbtdKjOg==", + "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -5513,13 +5523,14 @@ } }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.8.3.tgz", - "integrity": "sha512-zqzWjFniZDXiI/3MYxbJ0yIenUKr56apLy70oABTBHx++dsUA3/DxLMNypMA82a8KQtsbePWUi3Pgtr+JIMNXw==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.3.0.tgz", + "integrity": "sha512-yGcIkmImyOMfPkQSYH2EVjPmFE0VkLcO71Bbkpr3RlJ1N/vjYxsGbdnqPiBb8Wshib/hmwpiMHf/yzQtKH0SQw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -5529,13 +5540,14 @@ } }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.8.3.tgz", - "integrity": "sha512-W1RRCqsQvpur4BxP5g5cQwjZB6jhxYLSSXi3QQDaU5ITkaV5Pdj/L7D/G6YgRB8lzKZrXc57aLJ5UKY/Z+di7w==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.3.0.tgz", + "integrity": "sha512-nkA2DLI+rpmiuiy7dyXP4l9s7dgHkQWDX7lG1XltiT41RzAReJF1h8qBE6XrsAYE1CtI76DRWVphnc93+iZr+A==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -5545,13 +5557,14 @@ } }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.8.3.tgz", - "integrity": "sha512-waTo0zBBGnmU7fS87IpOnVGx7EHa0umzSMlGG0LUoU6swOeNODezsBn1Vbvaw1o7sStWBzdEBlxLxHOQXRAidg==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.3.0.tgz", + "integrity": "sha512-sPMtTt9iTrCmFEIp9Qv27UX9PeL1aqKck2dz2TAFbXKVtF6+djOdTcNnTYw45KIP6izcUcOXXAq4G0QSQE7CLg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -5561,13 +5574,14 @@ } }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.8.3.tgz", - "integrity": "sha512-lio7ulblEMs1otMtVIrdfdMTBqKRZEHim57AcMHSVnwmtl2ENP6TR3YIgyigjfLlkPanNU7i0QQ4h6Nk2I/FRw==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.3.0.tgz", + "integrity": "sha512-ppfNa/8OfpWA9o26Pz3vArN4ulAC+Hx70/ghPRCP7ed1Mb3Z6yR2Ry9KfBRImbqajvuAExM0TePKMGq9LCdXmg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -5577,13 +5591,14 @@ } }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.8.3.tgz", - "integrity": "sha512-RU11iXJzdrw5CmogT2AwsjxK7g8vWf6Oy23NlrvsQFODtavjqAWoD5qpUY/H16s9lVDwrpzCbGbAXph0lbgLKA==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.3.0.tgz", + "integrity": "sha512-8FOejZ4emtLSVn3pYWs4PIc3n4//qMbwMDPVxmPE8us3ir91Qh0bzr5zRj7Q8sEdSgvneXRXqtBp2grY2KMJsw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -5593,14 +5608,14 @@ } }, "node_modules/@nx/web": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-19.8.3.tgz", - "integrity": "sha512-OID4gbjYvXrLGWUzteNMRaZ30H0Em+FDZyodY3wYMrE5a/99tPw+nVTfcqCwNkmOnjP2VQVdwoQ+OSG+1QU8sA==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-20.3.0.tgz", + "integrity": "sha512-MKmXI9uAX+fdLY0GfF/3rH4EXrEjyLI6FSt3kUuF1/UzAUUUqww6owoM+9EaC1mRcCYDd0nwN7piblVz/wIVLw==", "dev": true, + "license": "MIT", "dependencies": { - "@nrwl/web": "19.8.3", - "@nx/devkit": "19.8.3", - "@nx/js": "19.8.3", + "@nx/devkit": "20.3.0", + "@nx/js": "20.3.0", "detect-port": "^1.5.1", "http-server": "^14.1.0", "picocolors": "^1.1.0", @@ -5608,35 +5623,31 @@ } }, "node_modules/@nx/webpack": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-19.8.3.tgz", - "integrity": "sha512-01DSb6PrhA8wNDdazlw+FT9k3S8D9qx5KgoJtozdbG21wK5iPQ4lDflgOatrPr9rnCvJKHposlKzImxipCRK7w==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-20.3.0.tgz", + "integrity": "sha512-KW04Ge8cQtv5RmezWV6bsIptLwXNhq5d6Ew3GigL5h6BKYPEmyMes5yMSUsNqNGC1SPI5nNPwzRkTxW18b+jnA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", - "@module-federation/enhanced": "^0.6.0", - "@module-federation/sdk": "^0.6.0", - "@nrwl/webpack": "19.8.3", - "@nx/devkit": "19.8.3", - "@nx/js": "19.8.3", + "@nx/devkit": "20.3.0", + "@nx/js": "20.3.0", "@phenomnomnominal/tsquery": "~5.0.1", "ajv": "^8.12.0", "autoprefixer": "^10.4.9", "babel-loader": "^9.1.2", "browserslist": "^4.21.4", - "chalk": "^4.1.0", "copy-webpack-plugin": "^10.2.4", "css-loader": "^6.4.0", "css-minimizer-webpack-plugin": "^5.0.0", - "express": "^4.19.2", "fork-ts-checker-webpack-plugin": "7.2.13", - "http-proxy-middleware": "^3.0.0", "less": "4.1.3", "less-loader": "11.1.0", "license-webpack-plugin": "^4.0.2", "loader-utils": "^2.0.3", "mini-css-extract-plugin": "~2.4.7", "parse5": "4.0.0", + "picocolors": "^1.1.0", "postcss": "^8.4.38", "postcss-import": "~14.1.0", "postcss-loader": "^6.1.1", @@ -5645,7 +5656,7 @@ "sass-loader": "^12.2.0", "source-map-loader": "^5.0.0", "style-loader": "^3.3.0", - "stylus": "^0.59.0", + "stylus": "^0.64.0", "stylus-loader": "^7.1.0", "terser-webpack-plugin": "^5.3.3", "ts-loader": "^9.3.1", @@ -5657,26 +5668,12 @@ "webpack-subresource-integrity": "^5.1.0" } }, - "node_modules/@nx/webpack/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@nx/webpack/node_modules/array-union": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -5684,27 +5681,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/webpack/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@nx/webpack/node_modules/copy-webpack-plugin": { "version": "10.2.4", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", "dev": true, + "license": "MIT", "dependencies": { "fast-glob": "^3.2.7", "glob-parent": "^6.0.1", @@ -5729,6 +5711,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -5745,6 +5728,7 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -5780,6 +5764,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5792,6 +5777,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^3.0.1", "dir-glob": "^3.0.1", @@ -5807,20 +5793,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/webpack/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@nx/webpack/node_modules/less": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -5847,6 +5825,7 @@ "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", "dev": true, + "license": "MIT", "dependencies": { "klona": "^2.0.4" }, @@ -5867,6 +5846,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -5876,35 +5856,12 @@ "node": ">=8.9.0" } }, - "node_modules/@nx/webpack/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@nx/webpack/node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/@nx/webpack/node_modules/mini-css-extract-plugin": { "version": "2.4.7", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", "dev": true, + "license": "MIT", "dependencies": { "schema-utils": "^4.0.0" }, @@ -5923,23 +5880,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "node_modules/@nx/webpack/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } + "license": "MIT" }, "node_modules/@nx/webpack/node_modules/postcss-loader": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "dev": true, + "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.0", "klona": "^2.0.5", @@ -5962,6 +5911,7 @@ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", "dev": true, + "license": "MIT", "dependencies": { "klona": "^2.0.4", "neo-async": "^2.6.2" @@ -6000,6 +5950,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6012,58 +5963,33 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/@nx/webpack/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@nx/workspace": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.8.3.tgz", - "integrity": "sha512-bIUtPwvt2PGu7k5vLUBB6BNpCviOVCDXRk4JXiE11O+RzWpiNr3rMn9w9fPh7InezAkMi1hiyA7D+SrXaLmJlw==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-20.3.0.tgz", + "integrity": "sha512-z8NSAo5SiLEMPuwasDvLdCCtaTGdINh1cSZMCom8HeLbT8F7risbR0IlHVqVrKj9FPKqrAIsH+4knVb4dHHCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "@nrwl/workspace": "19.8.3", - "@nx/devkit": "19.8.3", + "@nx/devkit": "20.3.0", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "19.8.3", + "nx": "20.3.0", "tslib": "^2.3.0", "yargs-parser": "21.1.1" } }, - "node_modules/@nx/workspace/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@nx/workspace/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6075,32 +6001,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nx/workspace/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@nx/workspace/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@phenomnomnominal/tsquery": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", "integrity": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==", "dev": true, + "license": "MIT", "dependencies": { "esquery": "^1.4.0" }, @@ -6360,6 +6266,223 @@ "win32" ] }, + "node_modules/@rspack/binding": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.1.8.tgz", + "integrity": "sha512-+/JzXx1HctfgPj+XtsCTbRkxiaOfAXGZZLEvs7jgp04WgWRSZ5u97WRCePNPvy+sCfOEH/2zw2ZK36Z7oQRGhQ==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.1.8", + "@rspack/binding-darwin-x64": "1.1.8", + "@rspack/binding-linux-arm64-gnu": "1.1.8", + "@rspack/binding-linux-arm64-musl": "1.1.8", + "@rspack/binding-linux-x64-gnu": "1.1.8", + "@rspack/binding-linux-x64-musl": "1.1.8", + "@rspack/binding-win32-arm64-msvc": "1.1.8", + "@rspack/binding-win32-ia32-msvc": "1.1.8", + "@rspack/binding-win32-x64-msvc": "1.1.8" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.1.8.tgz", + "integrity": "sha512-I7avr471ghQ3LAqKm2fuXuJPLgQ9gffn5Q4nHi8rsukuZUtiLDPfYzK1QuupEp2JXRWM1gG5lIbSUOht3cD6Ug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.1.8.tgz", + "integrity": "sha512-vfqf/c+mcx8rr1M8LnqKmzDdnrgguflZnjGerBLjNerAc+dcUp3lCvNxRIvZ2TkSZZBW8BpCMgjj3n70CZ4VLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.8.tgz", + "integrity": "sha512-lZlO/rAJSeozi+qtVLkGSXfe+riPawCwM4FsrflELfNlvvEXpANwtrdJ+LsaNVXcgvhh50ZX2KicTdmx9G2b6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.8.tgz", + "integrity": "sha512-bX7exULSZwy8xtDh6Z65b6sRC4uSxGuyvSLCEKyhmG6AnJkg0gQMxk3hoO0hWnyGEZgdJEn+jEhk0fjl+6ZRAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.8.tgz", + "integrity": "sha512-2Prw2USgTJ3aLdLExfik8pAwAHbX4MZrACBGEmR7Vbb56kLjC+++fXkciRc50pUDK4JFr1VQ7eNZrJuDR6GG6Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.8.tgz", + "integrity": "sha512-bnVGB/mQBKEdzOU/CPmcOE3qEXxGOGGW7/i6iLl2MamVOykJq8fYjL9j86yi6L0r009ja16OgWckykQGc4UqGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.8.tgz", + "integrity": "sha512-u+na3gxhzeksm4xZyAzn1+XWo5a5j7hgWA/KcFPDQ8qQNkRknx4jnQMxVtcZ9pLskAYV4AcOV/AIximx7zvv8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.1.8.tgz", + "integrity": "sha512-FijUxym1INd5fFHwVCLuVP8XEAb4Sk1sMwEEQUlugiDra9ZsLaPw4OgPGxbxkD6SB0DeUz9Zq46Xbcf6d3OgfA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.8.tgz", + "integrity": "sha512-SBzIcND4qpDt71jlu1MCDxt335tqInT3YID9V4DoQ4t8wgM/uad7EgKOWKTK6vc2RRaOIShfS2XzqjNUxPXh4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/core": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.1.8.tgz", + "integrity": "sha512-pcZtcj5iXLCuw9oElTYC47bp/RQADm/MMEb3djHdwJuSlFWfWPQi5QFgJ/lJAxIW9UNHnTFrYtytycfjpuoEcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime-tools": "0.5.1", + "@rspack/binding": "1.1.8", + "@rspack/lite-tapable": "1.0.1", + "caniuse-lite": "^1.0.30001616" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/runtime": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.5.1.tgz", + "integrity": "sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/sdk": "0.5.1" + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/runtime-tools": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.5.1.tgz", + "integrity": "sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.5.1", + "@module-federation/webpack-bundler-runtime": "0.5.1" + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/sdk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.5.1.tgz", + "integrity": "sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rspack/core/node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.5.1.tgz", + "integrity": "sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.5.1", + "@module-federation/sdk": "0.5.1" + } + }, + "node_modules/@rspack/lite-tapable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.1.tgz", + "integrity": "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@schematics/angular": { "version": "18.2.1", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.1.tgz", @@ -6576,7 +6699,8 @@ "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sindresorhus/merge-streams": { "version": "2.3.0", @@ -6597,15 +6721,17 @@ "dev": true }, "node_modules/@spartan-ng/cli": { - "version": "0.0.1-alpha.366", - "resolved": "https://registry.npmjs.org/@spartan-ng/cli/-/cli-0.0.1-alpha.366.tgz", - "integrity": "sha512-f8Xbiax61dS5SgeoB+yrF8YiT35RzCv3m4e7WGpF5N3HOXFzLBrMAvvsUh1gfubXVPGyzPYxNfGpw2pGKFmSKA==", + "version": "0.0.1-alpha.380", + "resolved": "https://registry.npmjs.org/@spartan-ng/cli/-/cli-0.0.1-alpha.380.tgz", + "integrity": "sha512-fletoFUXWyVoPaMBHF4wFXFnZnUBvTuQ168v9YfxM/JA02faGdb3JAc3s+/0LD0VYzgjFNIPUozyTNVcfPcQBg==", "dev": true, "dependencies": { - "@nx/angular": "^19.1.0", - "@nx/devkit": "^19.1.0", - "@nx/js": "^19.1.0", + "@nx/angular": ">=20.0.0", + "@nx/devkit": ">=20.0.0", + "@nx/js": ">=20.0.0", "enquirer": "2.3.6", + "jsonc-eslint-parser": "^2.1.0", + "nx": ">=20.0.0", "semver": "7.5.4" }, "peerDependencies": { @@ -6971,9 +7097,9 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.3.4.tgz", - "integrity": "sha512-1y0yD3upKcyzNwwA6loAGW2cRDqExwl4oAT7GJQA4tmabI+fNwmANSgU/ezLvvSUf4Qo0eJHg2Zcn8y+Apq2eA==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.4.7.tgz", + "integrity": "sha512-mjtD5JxcPuW74T6h7nqMxWTvDneFtokg88p6kQ5OnC1M259iAXb//yiSZgu/quunMHPCXSiqn4FNOSgASTSbsA==", "dev": true, "license": "MIT", "dependencies": { @@ -6988,13 +7114,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-backgrounds": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.4.tgz", - "integrity": "sha512-o3nl7cN3x8erJNxLEv8YptanEQAnbqnaseOAsvSC6/nnSAcRYBSs3BvekKvo4CcpS2mxn7F5NJTBFYnCXzy8EA==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.4.7.tgz", + "integrity": "sha512-I4/aErqtFiazcoWyKafOAm3bLpxTj6eQuH/woSbk1Yx+EzN+Dbrgx1Updy8//bsNtKkcrXETITreqHC+a57DHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7007,19 +7133,18 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-controls": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.4.tgz", - "integrity": "sha512-qQcaK6dczsb6wXkzGZKOjUYNA7FfKBewRv6NvoVKYY6LfhllGOkmUAtYpdtQG8adsZWTSoZaAOJS2vP2uM67lw==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.7.tgz", + "integrity": "sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "dequal": "^2.0.2", - "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, "funding": { @@ -7027,27 +7152,22 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-docs": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.3.4.tgz", - "integrity": "sha512-TWauhqF/gJgfwPuWeM6KM3LwC+ErCOM+K2z16w3vgao9s67sij8lnrdAoQ0hjA+kw2/KAdCakFS6FyciG81qog==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.4.7.tgz", + "integrity": "sha512-NwWaiTDT5puCBSUOVuf6ME7Zsbwz7Y79WF5tMZBx/sLQ60vpmJVQsap6NSjvK1Ravhc21EsIXqemAcBjAWu80w==", "dev": true, "license": "MIT", "dependencies": { "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.3.4", - "@storybook/csf-plugin": "8.3.4", - "@storybook/global": "^5.0.0", - "@storybook/react-dom-shim": "8.3.4", - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "fs-extra": "^11.1.0", + "@storybook/blocks": "8.4.7", + "@storybook/csf-plugin": "8.4.7", + "@storybook/react-dom-shim": "8.4.7", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "rehype-external-links": "^3.0.0", - "rehype-slug": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -7055,40 +7175,25 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" - } - }, - "node_modules/@storybook/addon-docs/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-essentials": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.3.4.tgz", - "integrity": "sha512-C3+3hpmSn/8zdx5sXEP0eE6zMzxgRosHVZYfe9nBcMiEDp6UKVUyHVetWxEULOEgN46ysjcpllZ0bUkRYxi2IQ==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.4.7.tgz", + "integrity": "sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addon-actions": "8.3.4", - "@storybook/addon-backgrounds": "8.3.4", - "@storybook/addon-controls": "8.3.4", - "@storybook/addon-docs": "8.3.4", - "@storybook/addon-highlight": "8.3.4", - "@storybook/addon-measure": "8.3.4", - "@storybook/addon-outline": "8.3.4", - "@storybook/addon-toolbars": "8.3.4", - "@storybook/addon-viewport": "8.3.4", + "@storybook/addon-actions": "8.4.7", + "@storybook/addon-backgrounds": "8.4.7", + "@storybook/addon-controls": "8.4.7", + "@storybook/addon-docs": "8.4.7", + "@storybook/addon-highlight": "8.4.7", + "@storybook/addon-measure": "8.4.7", + "@storybook/addon-outline": "8.4.7", + "@storybook/addon-toolbars": "8.4.7", + "@storybook/addon-viewport": "8.4.7", "ts-dedent": "^2.0.0" }, "funding": { @@ -7096,13 +7201,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-highlight": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.3.4.tgz", - "integrity": "sha512-rxZTeuZyZ7RnU+xmRhS01COFLbGnVEmlUNxBw8ArsrTEZKW5PbKpIxNLTj9F0zdH8H0MfryJGP+Aadcm0oHWlw==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.4.7.tgz", + "integrity": "sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw==", "dev": true, "license": "MIT", "dependencies": { @@ -7113,19 +7218,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.4.tgz", - "integrity": "sha512-ORxqe35wUmF7EDHo45mdDHiju3Ryk2pZ1vO9PyvW6ZItNlHt/IxAr7T/TysGejZ/eTBg6tMZR3ExGky3lTg/CQ==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.7.tgz", + "integrity": "sha512-fnufT3ym8ht3HHUIRVXAH47iOJW/QOb0VSM+j269gDuvyDcY03D1civCu1v+eZLGaXPKJ8vtjr0L8zKQ/4P0JQ==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.3.4", - "@storybook/test": "8.3.4", + "@storybook/instrumenter": "8.4.7", + "@storybook/test": "8.4.7", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -7134,13 +7239,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-links": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.3.4.tgz", - "integrity": "sha512-R1DjARmxRIKJDGIG6uxmQ1yFNyoQbb+QIPUFjgWCak8+AdLJbC7W+Esvo9F5hQfh6czyy0piiM3qj5hpQJVh3A==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.4.7.tgz", + "integrity": "sha512-L/1h4dMeMKF+MM0DanN24v5p3faNYbbtOApMgg7SlcBT/tgo3+cAjkgmNpYA8XtKnDezm+T2mTDhB8mmIRZpIQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7154,7 +7259,7 @@ }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.3.4" + "storybook": "^8.4.7" }, "peerDependenciesMeta": { "react": { @@ -7163,9 +7268,9 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.3.4.tgz", - "integrity": "sha512-IJ6WKEbqmG+r7sukFjo+bVmPB2Zry04sylGx/OGyOh7zIhhqAqpwOwMHP0uQrc3tLNnUM6qB/o83UyYX79ql+A==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.4.7.tgz", + "integrity": "sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw==", "dev": true, "license": "MIT", "dependencies": { @@ -7177,13 +7282,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-onboarding": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.3.4.tgz", - "integrity": "sha512-iz7iryVZWaAmbYyzfAGg79R2/SA0gKf16JpoBgFUdr2Y/lHHBmOtrSPVzpQYUazm8bNcW0DWI4dyW/w6mibsGA==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.4.7.tgz", + "integrity": "sha512-FdC2NV60VNYeMxf6DVe0qV9ucSBAzMh1//C0Qqwq8CcjthMbmKlVZ7DqbVsbIHKnFaSCaUC88eR5olAfMaauCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7194,13 +7299,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-outline": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.3.4.tgz", - "integrity": "sha512-kRRJTTLKM8gMfeh/e83djN5XLlc0hFtr9zKWxuZxaXt9Hmr+9tH/PRFtVK/S4SgqnBDoXk49Wgv6raiwj5/e3A==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.4.7.tgz", + "integrity": "sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA==", "dev": true, "license": "MIT", "dependencies": { @@ -7212,13 +7317,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-themes": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.3.4.tgz", - "integrity": "sha512-6gQeSFhC5VzFg2A0LM1jXhHwOn7+2nYCx+GWXOZgIWzXmtuhkPz5dt4LZ3fP4lJ9EBWnGs3mfYwUk7BZCyD5fQ==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.7.tgz", + "integrity": "sha512-MZa3eWTz0b3BQvF71WqLqvEYzDtbMhQx1IIluWBMMGzJ4sWBzLX85LoNMUlHsNd4EhEmAZ1xQQFIJpDWTBx0nQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7229,13 +7334,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-toolbars": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.3.4.tgz", - "integrity": "sha512-Km1YciVIxqluDbd1xmHjANNFyMonEOtnA6e4MrnBnC9XkPXSigeFlj0JvxyI/zjBsLBoFRmQiwq55W6l3hQ9sA==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.4.7.tgz", + "integrity": "sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw==", "dev": true, "license": "MIT", "funding": { @@ -7243,13 +7348,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.4.tgz", - "integrity": "sha512-fU4LdXSSqIOLbCEh2leq/tZUYlFliXZBWr/+igQHdUoU7HY8RIImXqVUaR9wlCaTb48WezAWT60vJtwNijyIiQ==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.7.tgz", + "integrity": "sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7260,23 +7365,23 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/angular": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-8.3.4.tgz", - "integrity": "sha512-EU09yE4L8sXU/nrenLJQScNpxg7dWF3ausrFIQtLllvji5tkH2H4Dx7sQ66XZRWmOtjGxnerZHRhtsUDk3F2LA==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-8.4.7.tgz", + "integrity": "sha512-PYWWEvoe+sT8riprSQVCyGnQbifbuzT9YNYPi22YBxB8ZGVuIVwjshKjSZvC99ULQbMvJ/g2OPCcBA8hhc3aTg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.3.4", - "@storybook/components": "^8.3.4", - "@storybook/core-webpack": "8.3.4", + "@storybook/builder-webpack5": "8.4.7", + "@storybook/components": "8.4.7", + "@storybook/core-webpack": "8.4.7", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "^8.3.4", - "@storybook/preview-api": "^8.3.4", - "@storybook/theming": "^8.3.4", + "@storybook/manager-api": "8.4.7", + "@storybook/preview-api": "8.4.7", + "@storybook/theming": "8.4.7", "@types/node": "^22.0.0", "@types/react": "^18.0.37", "@types/react-dom": "^18.0.11", @@ -7299,19 +7404,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@angular-devkit/architect": ">=0.1500.0 < 0.1900.0", - "@angular-devkit/build-angular": ">=15.0.0 < 19.0.0", - "@angular-devkit/core": ">=15.0.0 < 19.0.0", - "@angular/cli": ">=15.0.0 < 19.0.0", - "@angular/common": ">=15.0.0 < 19.0.0", - "@angular/compiler": ">=15.0.0 < 19.0.0", - "@angular/compiler-cli": ">=15.0.0 < 19.0.0", - "@angular/core": ">=15.0.0 < 19.0.0", - "@angular/forms": ">=15.0.0 < 19.0.0", - "@angular/platform-browser": ">=15.0.0 < 19.0.0", - "@angular/platform-browser-dynamic": ">=15.0.0 < 19.0.0", + "@angular-devkit/architect": ">=0.1500.0 < 0.2000.0", + "@angular-devkit/build-angular": ">=15.0.0 < 20.0.0", + "@angular-devkit/core": ">=15.0.0 < 20.0.0", + "@angular/cli": ">=15.0.0 < 20.0.0", + "@angular/common": ">=15.0.0 < 20.0.0", + "@angular/compiler": ">=15.0.0 < 20.0.0", + "@angular/compiler-cli": ">=15.0.0 < 20.0.0", + "@angular/core": ">=15.0.0 < 20.0.0", + "@angular/forms": ">=15.0.0 < 20.0.0", + "@angular/platform-browser": ">=15.0.0 < 20.0.0", + "@angular/platform-browser-dynamic": ">=15.0.0 < 20.0.0", "rxjs": "^6.0.0 || ^7.4.0", - "storybook": "^8.3.4", + "storybook": "^8.4.7", "typescript": "^4.0.0 || ^5.0.0", "zone.js": ">= 0.11.1 < 1.0.0" }, @@ -7321,73 +7426,6 @@ } } }, - "node_modules/@storybook/angular/node_modules/@storybook/components": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.3.4.tgz", - "integrity": "sha512-iQzLJd87uGbFBbYNqlrN/ABrnx3dUrL0tjPCarzglzshZoPCNOsllJeJx5TJwB9kCxSZ8zB9TTOgr7NXl+oyVA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.3.4" - } - }, - "node_modules/@storybook/angular/node_modules/@storybook/manager-api": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.4.tgz", - "integrity": "sha512-tBx7MBfPUrKSlD666zmVjtIvoNArwCciZiW/UJ8IWmomrTJRfFBnVvPVM2gp1lkDIzRHYmz5x9BHbYaEDNcZWQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.3.4" - } - }, - "node_modules/@storybook/angular/node_modules/@storybook/preview-api": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.4.tgz", - "integrity": "sha512-/YKQ3QDVSHmtFXXCShf5w0XMlg8wkfTpdYxdGv1CKFV8DU24f3N7KWulAgeWWCWQwBzZClDa9kzxmroKlQqx3A==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.3.4" - } - }, - "node_modules/@storybook/angular/node_modules/@storybook/theming": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.4.tgz", - "integrity": "sha512-D4XVsQgTtpHEHLhwkx59aGy1GBwOedVr/mNns7hFrH8FjEpxrrWCuZQASq1ZpCl8LXlh7uvmT5sM2rOdQbGuGg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.3.4" - } - }, - "node_modules/@storybook/angular/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@storybook/angular/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7404,27 +7442,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/angular/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/angular/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/angular/node_modules/tsconfig-paths-webpack-plugin": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", @@ -7440,26 +7457,15 @@ } }, "node_modules/@storybook/blocks": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.3.4.tgz", - "integrity": "sha512-1g4aCrd5CcN+pVhF2ATu9ZRVvAIgBMb2yF9KkCuTpdvqKDuDNK3sGb0CxjS7jp3LOvyjJr9laTOQsz8v8MQc5A==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.4.7.tgz", + "integrity": "sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA==", "dev": true, "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", - "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.2.10", - "@types/lodash": "^4.14.167", - "color-convert": "^2.0.1", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "markdown-to-jsx": "^7.4.5", - "memoizerific": "^1.11.3", - "polished": "^4.2.2", - "react-colorful": "^5.1.2", - "telejson": "^7.2.0", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "@storybook/icons": "^1.2.12", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", @@ -7468,7 +7474,7 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.3.4" + "storybook": "^8.4.7" }, "peerDependenciesMeta": { "react": { @@ -7480,13 +7486,13 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.4.tgz", - "integrity": "sha512-EI6ULxRap5f4YSHf5xKUQqkoNGm4MVxJR/+GImx8K5fuZ+xYw2SdYdTu6dG8V+zTh1WZ4MDwmRb6aEbXvRcrFw==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.7.tgz", + "integrity": "sha512-O8LpsQ+4g2x5kh7rI9+jEUdX8k1a5egBQU1lbudmHchqsV0IKiVqBD9LL5Gj3wpit4vB8coSW4ZWTFBw8FQb4Q==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.3.4", + "@storybook/core-webpack": "8.4.7", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -7495,9 +7501,7 @@ "constants-browserify": "^1.0.0", "css-loader": "^6.7.1", "es-module-lexer": "^1.5.0", - "express": "^4.19.2", "fork-ts-checker-webpack-plugin": "^8.0.0", - "fs-extra": "^11.1.0", "html-webpack-plugin": "^5.5.0", "magic-string": "^0.30.5", "path-browserify": "^1.0.1", @@ -7519,7 +7523,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" }, "peerDependenciesMeta": { "typescript": { @@ -7554,22 +7558,6 @@ "ajv": "^6.9.1" } }, - "node_modules/@storybook/builder-webpack5/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -7680,21 +7668,6 @@ "webpack": "^5.11.0" } }, - "node_modules/@storybook/builder-webpack5/node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -7715,9 +7688,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7726,17 +7699,7 @@ "universalify": "^2.0.0" }, "engines": { - "node": ">=14.14" - } - }, - "node_modules/@storybook/builder-webpack5/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/@storybook/builder-webpack5/node_modules/json-schema-traverse": { @@ -7759,19 +7722,6 @@ "node": "*" } }, - "node_modules/@storybook/builder-webpack5/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz", @@ -7801,20 +7751,32 @@ } } }, + "node_modules/@storybook/components": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.7.tgz", + "integrity": "sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, "node_modules/@storybook/core": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.3.4.tgz", - "integrity": "sha512-4PZB91JJpuKfcjeOR2LXj3ABaPLLSd2P/SfYOKNCygrDstsQa/yay3/yN5Z9yi1cIG84KRr6/sUW+0x8HsGLPg==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.7.tgz", + "integrity": "sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==", "dev": true, "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", - "@types/express": "^4.17.21", "better-opn": "^3.0.2", "browser-assert": "^1.2.1", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", "esbuild-register": "^3.5.0", - "express": "^4.19.2", "jsdoc-type-pratt-parser": "^4.0.0", "process": "^0.11.10", "recast": "^0.23.5", @@ -7825,12 +7787,20 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, "node_modules/@storybook/core-webpack": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.4.tgz", - "integrity": "sha512-Ftsk/8RANt46roiHT0hTyqfMPUO2/jV7EvlOR5H2XKhSbssA9njK04O2ry+BbfgKItIDIx0LTiz/I575qBCCnQ==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.7.tgz", + "integrity": "sha512-Tj+CjQLpFyBJxhhMms+vbPT3+gTRAiQlrhY3L1IEVwBa3wtRMS0qjozH26d1hK4G6mUIEdwu13L54HMU/w33Sg==", "dev": true, "license": "MIT", "dependencies": { @@ -7842,7 +7812,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/csf": { @@ -7855,9 +7825,9 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.3.4.tgz", - "integrity": "sha512-ZMFWYxeTN4GxCn8dyIH4roECyLDy29yv/QKM+pHM3AC5Ny2HWI35SohWao4fGBAFxPQFbR5hPN8xa6ofHPSSTg==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.4.7.tgz", + "integrity": "sha512-Fgogplu4HImgC+AYDcdGm1rmL6OR1rVdNX1Be9C/NEXwOCpbbBwi0BxTf/2ZxHRk9fCeaPEcOdP5S8QHfltc1g==", "dev": true, "license": "MIT", "dependencies": { @@ -7868,7 +7838,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/global": { @@ -7878,42 +7848,69 @@ "dev": true }, "node_modules/@storybook/icons": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.12.tgz", - "integrity": "sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.3.0.tgz", + "integrity": "sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==", "dev": true, "license": "MIT", "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" } }, "node_modules/@storybook/instrumenter": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.4.tgz", - "integrity": "sha512-jVhfNOPekOyJmta0BTkQl9Z6rgRbFHlc0eV4z1oSrzaawSlc9TFzAeDCtCP57vg3FuBX8ydDYAvyZ7s4xPpLyg==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.7.tgz", + "integrity": "sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@vitest/utils": "^2.0.5", - "util": "^0.12.4" + "@vitest/utils": "^2.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.4.7" + } + }, + "node_modules/@storybook/manager-api": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.7.tgz", + "integrity": "sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, + "peerDependencies": { + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + } + }, + "node_modules/@storybook/preview-api": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.7.tgz", + "integrity": "sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg==", + "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.4.tgz", - "integrity": "sha512-L4llDvjaAzqPx6h4ddZMh36wPr75PrI2S8bXy+flLqAeVRYnRt4WNKGuxqH0t0U6MwId9+vlCZ13JBfFuY7eQQ==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.7.tgz", + "integrity": "sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==", "dev": true, "license": "MIT", "funding": { @@ -7923,32 +7920,45 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.3.4" + "storybook": "^8.4.7" } }, "node_modules/@storybook/test": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.3.4.tgz", - "integrity": "sha512-HRiUenitln8QPHu6DEWUg9s9cEoiGN79lMykzXzw9shaUvdEIhWCsh82YKtmB3GJPj6qcc6dZL/Aio8srxyGAg==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.7.tgz", + "integrity": "sha512-AhvJsu5zl3uG40itSQVuSy5WByp3UVhS6xAnme4FWRwgSxhvZjATJ3AZkkHWOYjnnk+P2/sbz/XuPli1FVCWoQ==", "dev": true, "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.3.4", + "@storybook/instrumenter": "8.4.7", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", "@vitest/expect": "2.0.5", - "@vitest/spy": "2.0.5", - "util": "^0.12.4" + "@vitest/spy": "2.0.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, + "peerDependencies": { + "storybook": "^8.4.7" + } + }, + "node_modules/@storybook/theming": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.7.tgz", + "integrity": "sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==", + "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.3.4" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, "node_modules/@tailwindcss/typography": { @@ -8054,60 +8064,21 @@ "node": ">=18" } }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@testing-library/jest-dom": { @@ -8131,36 +8102,6 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", @@ -8168,29 +8109,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@testing-library/jest-dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/user-event": { "version": "14.5.2", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", @@ -8210,6 +8128,7 @@ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10.13.0" } @@ -8280,6 +8199,7 @@ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" } @@ -8344,6 +8264,28 @@ "@types/node": "*" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -8374,16 +8316,6 @@ "@types/send": "*" } }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -8409,13 +8341,15 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -8425,6 +8359,7 @@ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } @@ -8441,13 +8376,6 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "node_modules/@types/lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/mdx": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", @@ -8582,13 +8510,6 @@ "@types/node": "*" } }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/uuid": { "version": "9.0.8", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", @@ -8622,6 +8543,7 @@ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } @@ -8630,7 +8552,8 @@ "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.2.0", @@ -8757,15 +8680,16 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz", - "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.1.tgz", + "integrity": "sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.8.0", - "@typescript-eslint/utils": "8.8.0", + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/utils": "8.19.1", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8774,17 +8698,17 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", - "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.1.tgz", + "integrity": "sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -8794,19 +8718,20 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz", - "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz", + "integrity": "sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.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": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8815,20 +8740,19 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz", - "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz", + "integrity": "sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.8.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.19.1", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8838,11 +8762,25 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@typescript-eslint/type-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" }, @@ -8853,6 +8791,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/@typescript-eslint/types": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.2.0.tgz", @@ -8910,15 +8861,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz", - "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.1.tgz", + "integrity": "sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.8.0", - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/typescript-estree": "8.8.0" + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8928,17 +8880,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz", - "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.1.tgz", + "integrity": "sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0" + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8949,10 +8903,11 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", - "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.1.tgz", + "integrity": "sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -8962,19 +8917,20 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz", - "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz", + "integrity": "sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.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": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8983,20 +8939,19 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz", - "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz", + "integrity": "sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.8.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.19.1", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9006,11 +8961,25 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "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" }, @@ -9021,6 +8990,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@typescript-eslint/utils/node_modules/ts-api-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/@typescript-eslint/visitor-keys": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.2.0.tgz", @@ -9038,13 +9020,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true, - "license": "ISC" - }, "node_modules/@vitejs/plugin-basic-ssl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", @@ -9103,9 +9078,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.2.tgz", - "integrity": "sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz", + "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9129,14 +9104,14 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.2.tgz", - "integrity": "sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", + "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.2", - "loupe": "^3.1.1", + "@vitest/pretty-format": "2.1.8", + "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" }, "funding": { @@ -9308,16 +9283,17 @@ "dev": true }, "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.46", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", - "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz", + "integrity": "sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "js-yaml": "^3.10.0", "tslib": "^2.4.0" }, "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" } }, "node_modules/@yarnpkg/parsers/node_modules/argparse": { @@ -9325,6 +9301,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -9334,6 +9311,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -9346,13 +9324,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@zkochan/js-yaml": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -9383,10 +9363,11 @@ } }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "devOptional": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -9394,6 +9375,17 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "deprecated": "package has been renamed to acorn-import-attributes", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-import-attributes": { "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", @@ -9429,6 +9421,7 @@ "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -9465,6 +9458,7 @@ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0" } @@ -9596,32 +9590,20 @@ } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-styles/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansi-styles/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -9713,19 +9695,22 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 4.0.0" } @@ -9783,10 +9768,11 @@ } }, "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -9928,6 +9914,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-typescript": "^7.3.3", @@ -9942,6 +9929,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.7.2", "cosmiconfig": "^6.0.0", @@ -10001,6 +9989,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } @@ -10044,6 +10033,7 @@ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.1.2" }, @@ -10055,7 +10045,8 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/batch": { "version": "0.6.1", @@ -10280,6 +10271,7 @@ "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", "dev": true, + "license": "(MIT OR Apache-2.0)", "bin": { "btoa": "bin/btoa.js" }, @@ -10410,6 +10402,7 @@ "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "^2.1.18", "ylru": "^1.2.0" @@ -10419,16 +10412,47 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -10469,6 +10493,7 @@ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", @@ -10506,9 +10531,9 @@ } }, "node_modules/chai": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", - "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", "dev": true, "license": "MIT", "dependencies": { @@ -10523,17 +10548,17 @@ } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/chardet": { @@ -10585,10 +10610,11 @@ } }, "node_modules/chromatic": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.7.1.tgz", - "integrity": "sha512-LvgPimdQdnQB07ZDxLEC2KtxgYeqTw0X71GA7fi3zhgtKLxZcE+BSZ/5I9rrQp1V8ydmfElfw0ZwnUH4fVgUAQ==", + "version": "11.22.0", + "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.22.0.tgz", + "integrity": "sha512-u1kAPR9lj9aFzsCp0iWPXBbsKgcxFU7iJO6mFbgNHGVg+YPBqiJMuvgB8EQHdNbHjk5amFnGnIz/Ww8fK3t9Hw==", "dev": true, + "license": "MIT", "bin": { "chroma": "dist/bin.js", "chromatic": "dist/bin.js", @@ -10627,6 +10653,7 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -10755,21 +10782,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -10864,6 +10876,7 @@ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -10889,7 +10902,8 @@ "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", @@ -10902,6 +10916,7 @@ "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, + "license": "MIT", "dependencies": { "strip-ansi": "^6.0.1", "wcwidth": "^1.0.0" @@ -10915,6 +10930,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10927,6 +10943,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -10949,12 +10966,6 @@ "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -11162,6 +11173,7 @@ "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~2.0.0", "keygrip": "~1.1.0" @@ -11299,6 +11311,7 @@ "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -11308,6 +11321,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", @@ -11340,21 +11354,6 @@ "postcss-media-query-parser": "^0.2.3" } }, - "node_modules/critters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/critters/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -11371,32 +11370,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/critters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/critters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cron-parser": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", "dev": true, + "license": "MIT", "dependencies": { "luxon": "^3.2.1" }, @@ -11422,6 +11401,7 @@ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", "dev": true, + "license": "ISC", "engines": { "node": "^14 || ^16 || >=18" }, @@ -11469,6 +11449,7 @@ "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "cssnano": "^6.0.1", @@ -11529,6 +11510,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -11572,6 +11554,7 @@ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", "dev": true, + "license": "MIT", "dependencies": { "cssnano-preset-default": "^6.1.2", "lilconfig": "^3.1.1" @@ -11592,6 +11575,7 @@ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "css-declaration-sorter": "^7.2.0", @@ -11636,6 +11620,7 @@ "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -11648,6 +11633,7 @@ "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, + "license": "MIT", "dependencies": { "css-tree": "~2.2.0" }, @@ -11661,6 +11647,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" @@ -11674,7 +11661,8 @@ "version": "2.0.28", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/csstype": { "version": "3.1.3", @@ -11733,7 +11721,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deep-is": { "version": "0.1.4", @@ -11836,6 +11825,7 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -11844,7 +11834,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/depd": { "version": "2.0.0", @@ -11895,6 +11886,7 @@ "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", "dev": true, + "license": "MIT", "dependencies": { "address": "^1.0.1", "debug": "4" @@ -11932,6 +11924,7 @@ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -12059,10 +12052,11 @@ } }, "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -12071,12 +12065,13 @@ } }, "node_modules/dotenv-expand": { - "version": "11.0.6", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", - "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "dotenv": "^16.4.4" + "dotenv": "^16.4.5" }, "engines": { "node": ">=12" @@ -12085,11 +12080,20 @@ "url": "https://dotenvx.com" } }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/eastasianwidth": { "version": "0.2.0", @@ -12107,6 +12111,7 @@ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -12178,7 +12183,6 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, - "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } @@ -12188,7 +12192,6 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -12201,6 +12204,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } @@ -12262,6 +12266,7 @@ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -12343,13 +12348,11 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -12369,6 +12372,19 @@ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "dev": true }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz", @@ -12452,6 +12468,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -12589,21 +12606,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -12666,15 +12668,6 @@ "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -12705,18 +12698,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/espree": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", @@ -12884,6 +12865,7 @@ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, + "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.1" }, @@ -13060,11 +13042,27 @@ "walk-up-path": "^3.0.1" } }, + "node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -13092,6 +13090,7 @@ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } @@ -13101,6 +13100,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -13161,28 +13161,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, "node_modules/find-file-up": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", "integrity": "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve-dir": "^1.0.1" }, @@ -13195,6 +13179,7 @@ "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", "integrity": "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==", "dev": true, + "license": "MIT", "dependencies": { "find-file-up": "^2.0.1" }, @@ -13296,6 +13281,7 @@ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "chalk": "^4.1.2", @@ -13330,6 +13316,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -13346,30 +13333,17 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -13380,6 +13354,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13396,6 +13371,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -13412,6 +13388,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -13421,26 +13398,19 @@ "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13453,6 +13423,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -13466,23 +13437,12 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -13527,6 +13487,7 @@ "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", "dev": true, + "license": "MIT", "dependencies": { "js-yaml": "^3.13.1" } @@ -13536,6 +13497,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -13545,6 +13507,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -13557,19 +13520,22 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -13655,33 +13621,43 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "node_modules/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-stream": { @@ -13696,13 +13672,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "dev": true, - "license": "ISC" - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -13768,6 +13737,7 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^1.0.1", "is-windows": "^1.0.1", @@ -13782,6 +13752,7 @@ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -13797,13 +13768,15 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -13841,12 +13814,13 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13871,12 +13845,13 @@ "dev": true }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { @@ -13891,23 +13866,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -13941,48 +13905,6 @@ "node": ">= 0.4" } }, - "node_modules/hast-util-heading-rank": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", - "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-string": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", - "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -13997,6 +13919,7 @@ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, + "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" }, @@ -14069,6 +13992,7 @@ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-encoding": "^2.0.0" }, @@ -14175,6 +14099,7 @@ "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", "dev": true, + "license": "MIT", "dependencies": { "deep-equal": "~1.0.1", "http-errors": "~1.8.0" @@ -14188,6 +14113,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -14197,6 +14123,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", @@ -14213,6 +14140,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -14300,6 +14228,7 @@ "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", "dev": true, + "license": "MIT", "dependencies": { "basic-auth": "^2.0.1", "chalk": "^4.1.2", @@ -14322,26 +14251,12 @@ "node": ">=12" } }, - "node_modules/http-server/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/http-server/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14353,27 +14268,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/http-server/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/http-server/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/https-proxy-agent": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", @@ -14571,28 +14465,15 @@ "node": ">= 0.10" } }, - "node_modules/is-absolute-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", - "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -14805,13 +14686,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -14843,6 +14724,7 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14894,11 +14776,22 @@ "node": ">=0.10.0" } }, + "node_modules/isomorphic-rslog": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.6.tgz", + "integrity": "sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.17.6" + } + }, "node_modules/isomorphic-ws": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", "dev": true, + "license": "MIT", "peerDependencies": { "ws": "*" } @@ -14942,15 +14835,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -14966,18 +14850,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -15033,6 +14905,7 @@ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -15046,26 +14919,12 @@ "node": ">=10" } }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jake/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -15076,6 +14935,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -15087,20 +14947,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jake/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -15108,18 +14960,6 @@ "node": "*" } }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jasmine-core": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.2.0.tgz", @@ -15131,6 +14971,7 @@ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -15141,26 +14982,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -15172,20 +14999,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -15200,6 +15019,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -15211,25 +15031,15 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/jest-get-type": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -15239,6 +15049,7 @@ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -15251,44 +15062,21 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-util/node_modules/picomatch": { @@ -15296,6 +15084,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -15303,23 +15092,12 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -15330,20 +15108,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -15447,6 +15217,43 @@ "node": ">=6" } }, + "node_modules/jsonc-eslint-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz", + "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/jsonc-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/jsonc-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", @@ -15638,21 +15445,6 @@ "source-map-support": "^0.5.5" } }, - "node_modules/karma/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/karma/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -15802,6 +15594,7 @@ "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", "dev": true, + "license": "MIT", "dependencies": { "tsscmp": "1.0.6" }, @@ -15832,6 +15625,7 @@ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -15841,6 +15635,7 @@ "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.3.tgz", "integrity": "sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "^1.3.5", "cache-content-type": "^1.0.0", @@ -15874,13 +15669,15 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/koa-convert": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", "dev": true, + "license": "MIT", "dependencies": { "co": "^4.6.0", "koa-compose": "^4.1.0" @@ -15894,6 +15691,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -15903,6 +15701,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", @@ -15919,6 +15718,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15928,6 +15728,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15994,40 +15795,6 @@ } } }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/less/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -16069,9 +15836,10 @@ } }, "node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", "engines": { "node": ">=14" }, @@ -16084,6 +15852,7 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -16221,7 +15990,8 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", "integrity": "sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -16240,7 +16010,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -16252,7 +16023,8 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", @@ -16270,21 +16042,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -16301,27 +16058,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", @@ -16436,7 +16172,8 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", @@ -16451,14 +16188,11 @@ } }, "node_modules/loupe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", - "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } + "license": "MIT" }, "node_modules/lower-case": { "version": "2.0.2", @@ -16495,6 +16229,7 @@ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } @@ -16519,27 +16254,40 @@ } }, "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "semver": "^6.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", + "optional": true, "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/make-error": { @@ -16585,24 +16333,22 @@ "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", "dev": true }, - "node_modules/markdown-to-jsx": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.5.0.tgz", - "integrity": "sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "react": ">= 0.14.0" + "node": ">= 0.4" } }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/media-typer": { "version": "0.3.0", @@ -17183,6 +16929,27 @@ "dev": true, "optional": true }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -17305,7 +17072,8 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.18", @@ -17317,6 +17085,7 @@ "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", "dev": true, + "license": "MIT", "dependencies": { "cron-parser": "^4.2.0", "long-timeout": "0.1.1", @@ -17490,16 +17259,16 @@ } }, "node_modules/nx": { - "version": "19.8.3", - "resolved": "https://registry.npmjs.org/nx/-/nx-19.8.3.tgz", - "integrity": "sha512-/3FF4tgwPGRu4bV6O+aHqhTnOGHKF0/HNVkApUwjimSC+YzOX9VH1uBx2eReb4XC1scxDWkIzVi9gkFSXSQDjQ==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/nx/-/nx-20.3.0.tgz", + "integrity": "sha512-Nzi4k7tV22zwO2iBLk+pHxorLEWPJpPrVCACtz0SQ63j/LiAgfhoqruJO+VU+V+E9qdyPsvmqIL/Iaf/GRQlqA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@napi-rs/wasm-runtime": "0.2.4", - "@nrwl/tao": "19.8.3", "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "3.0.0-rc.46", + "@yarnpkg/parsers": "3.0.2", "@zkochan/js-yaml": "0.0.7", "axios": "^1.7.4", "chalk": "^4.1.0", @@ -17521,13 +17290,14 @@ "npm-run-path": "^4.0.1", "open": "^8.4.0", "ora": "5.3.0", + "resolve.exports": "2.0.3", "semver": "^7.5.3", "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", "tar-stream": "~2.2.0", "tmp": "~0.2.1", "tsconfig-paths": "^4.1.2", "tslib": "^2.3.0", + "yaml": "^2.6.0", "yargs": "^17.6.2", "yargs-parser": "21.1.1" }, @@ -17536,16 +17306,16 @@ "nx-cloud": "bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "19.8.3", - "@nx/nx-darwin-x64": "19.8.3", - "@nx/nx-freebsd-x64": "19.8.3", - "@nx/nx-linux-arm-gnueabihf": "19.8.3", - "@nx/nx-linux-arm64-gnu": "19.8.3", - "@nx/nx-linux-arm64-musl": "19.8.3", - "@nx/nx-linux-x64-gnu": "19.8.3", - "@nx/nx-linux-x64-musl": "19.8.3", - "@nx/nx-win32-arm64-msvc": "19.8.3", - "@nx/nx-win32-x64-msvc": "19.8.3" + "@nx/nx-darwin-arm64": "20.3.0", + "@nx/nx-darwin-x64": "20.3.0", + "@nx/nx-freebsd-x64": "20.3.0", + "@nx/nx-linux-arm-gnueabihf": "20.3.0", + "@nx/nx-linux-arm64-gnu": "20.3.0", + "@nx/nx-linux-arm64-musl": "20.3.0", + "@nx/nx-linux-x64-gnu": "20.3.0", + "@nx/nx-linux-x64-musl": "20.3.0", + "@nx/nx-win32-arm64-msvc": "20.3.0", + "@nx/nx-win32-x64-msvc": "20.3.0" }, "peerDependencies": { "@swc-node/register": "^1.8.0", @@ -17560,26 +17330,12 @@ } } }, - "node_modules/nx/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/nx/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -17596,6 +17352,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -17608,6 +17365,7 @@ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -17616,22 +17374,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/nx/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/nx/node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -17647,6 +17398,7 @@ "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" } @@ -17656,6 +17408,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -17667,13 +17420,15 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nx/node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -17689,6 +17444,7 @@ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, + "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -17706,6 +17462,7 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.0.3", "chalk": "^4.1.0", @@ -17728,6 +17485,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -17740,13 +17498,15 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/nx/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==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -17761,6 +17521,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -17768,16 +17529,17 @@ "node": ">=8" } }, - "node_modules/nx/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/nx/node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "license": "ISC", + "bin": { + "yaml": "bin.mjs" }, "engines": { - "node": ">=8" + "node": ">= 14" } }, "node_modules/object-assign": { @@ -17888,6 +17650,7 @@ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true, + "license": "(WTFPL OR MIT)", "bin": { "opener": "bin/opener-bin.js" } @@ -17932,21 +17695,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/ora/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -17975,15 +17723,6 @@ "node": ">=8" } }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ora/node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -18030,18 +17769,6 @@ "node": ">=8" } }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ordered-binary": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.2.tgz", @@ -18128,15 +17855,6 @@ "node": ">= 4" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -18239,6 +17957,7 @@ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -18384,9 +18103,10 @@ } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.2", @@ -18425,70 +18145,6 @@ "nice-napi": "^1.0.2" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/polished": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", @@ -18506,6 +18162,7 @@ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", "dev": true, + "license": "MIT", "dependencies": { "async": "^2.6.4", "debug": "^3.2.7", @@ -18520,6 +18177,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.14" } @@ -18529,6 +18187,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -18575,6 +18234,7 @@ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.11", "postcss-value-parser": "^4.2.0" @@ -18591,6 +18251,7 @@ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", @@ -18609,6 +18270,7 @@ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" @@ -18625,6 +18287,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", "dev": true, + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -18637,6 +18300,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", "dev": true, + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -18649,6 +18313,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -18661,6 +18326,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -18673,6 +18339,7 @@ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -18816,6 +18483,7 @@ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^6.1.1" @@ -18832,6 +18500,7 @@ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", @@ -18850,6 +18519,7 @@ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -18865,6 +18535,7 @@ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", "dev": true, + "license": "MIT", "dependencies": { "colord": "^2.9.3", "cssnano-utils": "^4.0.2", @@ -18882,6 +18553,7 @@ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "cssnano-utils": "^4.0.2", @@ -18899,6 +18571,7 @@ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16" }, @@ -18997,6 +18670,7 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -19009,6 +18683,7 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -19024,6 +18699,7 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -19039,6 +18715,7 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -19054,6 +18731,7 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -19069,6 +18747,7 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -19084,6 +18763,7 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" @@ -19100,6 +18780,7 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -19115,6 +18796,7 @@ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -19130,6 +18812,7 @@ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", "dev": true, + "license": "MIT", "dependencies": { "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" @@ -19146,6 +18829,7 @@ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "caniuse-api": "^3.0.0" @@ -19162,6 +18846,7 @@ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -19189,6 +18874,7 @@ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", "svgo": "^3.2.0" @@ -19205,6 +18891,7 @@ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.16" }, @@ -19355,7 +19042,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/prr": { "version": "1.0.1", @@ -19414,10 +19102,11 @@ ] }, "node_modules/rambda": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.3.0.tgz", - "integrity": "sha512-cl/7DCCKNxmsbc0dXZTJTY08rvDdzLhVfE6kPBson1fWzDapLzv0RKSzjpmAqP53fkQqAvq05gpUVHTrUNsuxg==", - "dev": true + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.4.1.tgz", + "integrity": "sha512-awZe9AzmPI8XqizJz+NlaRbAdjhWKvuIaPikqRH6r41/ui9UTUQY5jTVdgQwnVrv1HnSMB6IBAAnNYs8HoVvZg==", + "dev": true, + "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", @@ -19464,17 +19153,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-colorful": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", - "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, "node_modules/react-confetti": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.1.0.tgz", @@ -19687,43 +19365,6 @@ "node": ">=6" } }, - "node_modules/rehype-external-links": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz", - "integrity": "sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-is-element": "^3.0.0", - "is-absolute-url": "^4.0.0", - "space-separated-tokens": "^2.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-slug": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", - "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "github-slugger": "^2.0.0", - "hast-util-heading-rank": "^3.0.0", - "hast-util-to-string": "^3.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -19890,6 +19531,7 @@ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -19946,6 +19588,16 @@ "node": ">=0.10.0" } }, + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/restore-cursor": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", @@ -20166,8 +19818,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "dev": true, - "optional": true + "dev": true }, "node_modules/scheduler": { "version": "0.23.2", @@ -20218,7 +19869,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/select-hose": { "version": "2.0.0", @@ -20650,7 +20302,8 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/source-map": { "version": "0.7.4", @@ -20720,17 +20373,6 @@ "node": ">=0.10.0" } }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -20821,13 +20463,13 @@ } }, "node_modules/storybook": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.3.4.tgz", - "integrity": "sha512-nzvuK5TsEgJwcWGLGgafabBOxKn37lfJVv7ZoUVPgJIjk2mNRyJDFwYRJzUZaD37eiR/c/lQ6MoaeqlGwiXoxw==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.7.tgz", + "integrity": "sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.3.4" + "@storybook/core": "8.4.7" }, "bin": { "getstorybook": "bin/index.cjs", @@ -20837,6 +20479,14 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, "node_modules/streamroller": { @@ -21029,23 +20679,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strong-log-transformer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", - "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", - "dev": true, - "dependencies": { - "duplexer": "^0.1.1", - "minimist": "^1.2.0", - "through": "^2.3.4" - }, - "bin": { - "sl-log-transformer": "bin/sl-log-transformer.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/style-loader": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", @@ -21067,6 +20700,7 @@ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.23.0", "postcss-selector-parser": "^6.0.16" @@ -21079,54 +20713,94 @@ } }, "node_modules/stylus": { - "version": "0.59.0", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", - "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.64.0.tgz", + "integrity": "sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==", "dev": true, + "license": "MIT", "dependencies": { - "@adobe/css-tools": "^4.0.1", + "@adobe/css-tools": "~4.3.3", "debug": "^4.3.2", - "glob": "^7.1.6", - "sax": "~1.2.4", + "glob": "^10.4.5", + "sax": "~1.4.1", "source-map": "^0.7.3" }, "bin": { - "stylus": "bin/stylus" - }, - "engines": { - "node": "*" + "stylus": "bin/stylus" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus-loader": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.1.3.tgz", + "integrity": "sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.12", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" + } + }, + "node_modules/stylus/node_modules/@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylus/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://opencollective.com/stylus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/stylus-loader": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.1.3.tgz", - "integrity": "sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw==", + "node_modules/stylus/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": { - "fast-glob": "^3.2.12", - "normalize-path": "^3.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 14.15.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "stylus": ">=0.52.4", - "webpack": "^5.0.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/stylus/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", @@ -21195,15 +20869,16 @@ } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -21222,6 +20897,7 @@ "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", "dev": true, + "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", @@ -21247,6 +20923,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -21286,32 +20963,33 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", - "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -21340,12 +21018,32 @@ "node": ">=10.13.0" } }, - "node_modules/tailwindcss/node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "node_modules/tailwindcss/node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14" } }, "node_modules/tailwindcss/node_modules/postcss-import": { @@ -21395,6 +21093,7 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -21543,15 +21242,6 @@ "ajv": "^6.9.1" } }, - "node_modules/terser-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -21648,12 +21338,6 @@ "tslib": "^2" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -21667,6 +21351,20 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/tinyrainbow": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", @@ -21696,15 +21394,6 @@ "node": ">=14.14" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -21725,6 +21414,13 @@ "node": ">=0.6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, "node_modules/tree-dump": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", @@ -21781,6 +21477,7 @@ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", @@ -21796,26 +21493,12 @@ "webpack": "^5.0.0" } }, - "node_modules/ts-loader/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/ts-loader/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21827,27 +21510,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ts-loader/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-loader/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -21916,6 +21578,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.7.0", @@ -21925,26 +21588,12 @@ "node": ">=10.13.0" } }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21956,27 +21605,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", @@ -21987,6 +21615,7 @@ "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.x" } @@ -22187,51 +21816,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -22251,25 +21835,17 @@ } }, "node_modules/unplugin": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.14.1.tgz", - "integrity": "sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.0.tgz", + "integrity": "sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.12.1", + "acorn": "^8.14.0", "webpack-virtual-modules": "^0.6.2" }, "engines": { "node": ">=14.0.0" - }, - "peerDependencies": { - "webpack-sources": "^3" - }, - "peerDependenciesMeta": { - "webpack-sources": { - "optional": true - } } }, "node_modules/upath": { @@ -22277,6 +21853,7 @@ "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4", "yarn": "*" @@ -22347,7 +21924,8 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/util": { "version": "0.12.5", @@ -22976,6 +22554,13 @@ "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", "dev": true }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/webpack": { "version": "5.94.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", @@ -23256,6 +22841,7 @@ "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -23402,6 +22988,7 @@ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, @@ -23414,6 +23001,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -23421,6 +23009,17 @@ "node": ">=0.10.0" } }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -23436,16 +23035,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "for-each": "^0.3.3", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -23501,20 +23101,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -23552,21 +23138,6 @@ "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -23732,6 +23303,7 @@ "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } diff --git a/webapp/package.json b/webapp/package.json index 9180289e..cc15bbad 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -71,7 +71,7 @@ "postcss": "8.4.41", "rxjs": "7.8.1", "tailwind-merge": "2.5.2", - "tailwindcss": "3.4.10", + "tailwindcss": "^3.4.17", "tailwindcss-animate": "1.0.7", "tslib": "2.6.3" }, @@ -82,20 +82,20 @@ "@angular/cli": "18.2.1", "@angular/compiler-cli": "18.2.1", "@chromatic-com/storybook": "1.7.0", - "@spartan-ng/cli": "0.0.1-alpha.366", - "@storybook/addon-essentials": "8.3.4", - "@storybook/addon-interactions": "8.3.4", - "@storybook/addon-links": "8.3.4", - "@storybook/addon-onboarding": "8.3.4", - "@storybook/addon-themes": "8.3.4", - "@storybook/angular": "8.3.4", - "@storybook/blocks": "8.3.4", - "@storybook/test": "8.3.4", + "@spartan-ng/cli": "^0.0.1-alpha.380", + "@storybook/addon-essentials": "^8.4.7", + "@storybook/addon-interactions": "^8.4.7", + "@storybook/addon-links": "^8.4.7", + "@storybook/addon-onboarding": "^8.4.7", + "@storybook/addon-themes": "^8.4.7", + "@storybook/angular": "^8.4.7", + "@storybook/blocks": "^8.4.7", + "@storybook/test": "^8.4.7", "@tailwindcss/typography": "0.5.15", "@types/jasmine": "5.1.4", "@typescript-eslint/eslint-plugin": "8.2.0", "@typescript-eslint/parser": "8.2.0", - "chromatic": "11.7.1", + "chromatic": "^11.22.0", "eslint": "9.9.0", "eslint-plugin-prettier": "5.2.1", "jasmine-core": "5.2.0", @@ -105,7 +105,7 @@ "karma-jasmine": "5.1.0", "karma-jasmine-html-reporter": "2.1.0", "prettier": "3.3.3", - "storybook": "8.3.4", + "storybook": "^8.4.7", "typescript": "5.5.4" } } From 98b314c768472d345ffb00c8ffb7f523f2eb67b7 Mon Sep 17 00:00:00 2001 From: GODrums Date: Tue, 7 Jan 2025 15:30:03 +0100 Subject: [PATCH 2/8] chore: update spartan --- webapp/components.json | 3 + webapp/package-lock.json | 526 ++++++++++-------- webapp/package.json | 60 +- .../filter/timeframe/timeframe.component.html | 2 +- .../filter/timeframe/timeframe.component.ts | 4 +- webapp/src/app/mentor/mentor.component.ts | 2 +- webapp/src/app/workspace/layout.component.ts | 8 +- .../teams/table/teams-table.component.html | 4 +- .../teams/table/teams-table.component.ts | 4 +- .../users/table/users-table.component.html | 4 +- .../users/table/users-table.component.ts | 4 +- .../libs/ui/ui-accordion-helm/src/index.ts | 14 +- .../lib/hlm-accordion-content.component.ts | 56 +- .../src/lib/hlm-accordion-icon.directive.ts | 29 +- .../src/lib/hlm-accordion-item.directive.ts | 28 +- .../lib/hlm-accordion-trigger.directive.ts | 28 +- .../src/lib/hlm-accordion.directive.ts | 20 +- webapp/src/libs/ui/ui-alert-helm/src/index.ts | 11 +- .../lib/hlm-alert-description.directive.ts | 16 +- .../src/lib/hlm-alert-icon.directive.ts | 18 +- .../src/lib/hlm-alert-title.directive.ts | 16 +- .../src/lib/hlm-alert.directive.ts | 49 +- .../libs/ui/ui-alertdialog-helm/src/index.ts | 22 +- ...lm-alert-dialog-action-button.directive.ts | 6 +- ...lm-alert-dialog-cancel-button.directive.ts | 27 +- .../lib/hlm-alert-dialog-content.component.ts | 38 +- .../hlm-alert-dialog-description.directive.ts | 16 +- .../lib/hlm-alert-dialog-footer.component.ts | 24 +- .../lib/hlm-alert-dialog-header.component.ts | 24 +- .../lib/hlm-alert-dialog-overlay.directive.ts | 26 +- .../lib/hlm-alert-dialog-title.directive.ts | 16 +- .../src/lib/hlm-alert-dialog.component.ts | 40 +- .../libs/ui/ui-aspectratio-helm/src/index.ts | 4 +- .../lib/helm-aspect-ratio.directive.spec.ts | 74 +++ .../src/lib/helm-aspect-ratio.directive.ts | 62 +-- .../src/libs/ui/ui-avatar-helm/src/index.ts | 4 +- .../hlm-avatar-fallback.directive.spec.ts | 70 +++ .../fallback/hlm-avatar-fallback.directive.ts | 56 +- .../src/lib/hlm-avatar.component.spec.ts | 65 +++ .../src/lib/hlm-avatar.component.ts | 64 ++- .../image/hlm-avatar-image.directive.spec.ts | 44 ++ .../lib/image/hlm-avatar-image.directive.ts | 20 +- webapp/src/libs/ui/ui-badge-helm/src/index.ts | 4 +- .../src/lib/hlm-badge.directive.ts | 117 ++-- .../libs/ui/ui-breadcrumb-helm/src/index.ts | 32 ++ .../src/lib/breadcrumb-ellipsis.component.ts | 23 + .../src/lib/breadcrumb-item.directive.ts | 16 + .../src/lib/breadcrumb-link.directive.ts | 36 ++ .../src/lib/breadcrumb-list.directive.ts | 18 + .../src/lib/breadcrumb-page.directive.ts | 19 + .../src/lib/breadcrumb-separator.component.ts | 30 + .../src/lib/breadcrumb.directive.ts | 19 + .../src/libs/ui/ui-button-helm/src/index.ts | 5 +- .../src/lib/hlm-button.directive.ts | 98 ++-- .../src/lib/hlm-button.token.ts | 22 + .../src/libs/ui/ui-calendar-helm/src/index.ts | 10 + .../src/lib/hlm-calendar.component.ts | 160 ++++++ webapp/src/libs/ui/ui-card-helm/src/index.ts | 16 +- .../src/lib/hlm-card-content.directive.ts | 33 +- .../src/lib/hlm-card-description.directive.ts | 18 +- .../src/lib/hlm-card-footer.directive.ts | 34 +- .../src/lib/hlm-card-header.directive.ts | 34 +- .../src/lib/hlm-card-title.directive.ts | 18 +- .../src/lib/hlm-card.directive.ts | 37 +- .../src/libs/ui/ui-carousel-helm/src/index.ts | 12 +- .../src/lib/hlm-carousel-content.component.ts | 26 +- .../src/lib/hlm-carousel-item.component.ts | 34 +- .../src/lib/hlm-carousel-next.component.ts | 85 +-- .../lib/hlm-carousel-previous.component.ts | 84 +-- .../src/lib/hlm-carousel.component.ts | 146 ++--- .../src/libs/ui/ui-checkbox-helm/src/index.ts | 4 +- .../lib/hlm-checkbox-checkicon.component.ts | 38 +- .../src/lib/hlm-checkbox.component.ts | 215 ++++--- .../src/libs/ui/ui-command-helm/src/index.ts | 28 +- ...m-command-dialog-close-button.directive.ts | 26 +- .../src/lib/hlm-command-dialog.directive.ts | 44 +- .../src/lib/hlm-command-empty.directive.ts | 14 +- .../src/lib/hlm-command-group.directive.ts | 28 +- .../hlm-command-input-wrapper.component.ts | 18 +- .../src/lib/hlm-command-input.directive.ts | 21 +- .../lib/hlm-command-item-icon.directive.ts | 26 +- .../src/lib/hlm-command-item.directive.ts | 38 +- .../src/lib/hlm-command-list.directive.ts | 14 +- .../src/lib/hlm-command-loader.directive.ts | 4 +- .../lib/hlm-command-separator.directive.ts | 10 +- .../src/lib/hlm-command-shortcut.component.ts | 20 +- .../src/lib/hlm-command.directive.ts | 21 +- .../src/libs/ui/ui-dialog-helm/src/index.ts | 20 +- .../src/lib/hlm-dialog-close.directive.ts | 24 +- .../src/lib/hlm-dialog-content.component.ts | 68 +-- .../lib/hlm-dialog-description.directive.ts | 16 +- .../src/lib/hlm-dialog-footer.component.ts | 20 +- .../src/lib/hlm-dialog-header.component.ts | 20 +- .../src/lib/hlm-dialog-overlay.directive.ts | 22 +- .../src/lib/hlm-dialog-title.directive.ts | 16 +- .../src/lib/hlm-dialog.component.ts | 40 +- .../src/lib/hlm-dialog.service.ts | 36 +- .../libs/ui/ui-formfield-helm/src/index.ts | 4 +- .../src/lib/form-field.spec.ts | 136 +++++ .../src/lib/hlm-error.directive.ts | 12 +- .../src/lib/hlm-form-field.component.ts | 59 +- .../src/lib/hlm-hint.directive.ts | 12 +- .../libs/ui/ui-hovercard-helm/src/index.ts | 4 +- .../lib/hlm-hover-card-content.component.ts | 50 +- webapp/src/libs/ui/ui-icon-helm/src/index.ts | 5 +- .../src/lib/hlm-icon.component.spec.ts | 64 +++ .../src/lib/hlm-icon.component.ts | 197 ++++--- .../ui/ui-icon-helm/src/lib/hlm-icon.token.ts | 23 + webapp/src/libs/ui/ui-input-helm/src/index.ts | 4 +- .../src/lib/hlm-input-error.directive.ts | 18 +- .../src/lib/hlm-input.directive.ts | 133 ++--- webapp/src/libs/ui/ui-label-helm/src/index.ts | 4 +- .../src/lib/hlm-label.directive.ts | 114 ++-- webapp/src/libs/ui/ui-menu-helm/src/index.ts | 37 +- .../src/lib/hlm-menu-bar-item.directive.ts | 26 +- .../src/lib/hlm-menu-bar.component.ts | 20 +- .../src/lib/hlm-menu-group.component.ts | 16 +- .../src/lib/hlm-menu-item-check.component.ts | 31 +- .../lib/hlm-menu-item-checkbox.directive.ts | 38 +- .../src/lib/hlm-menu-item-icon.directive.ts | 26 +- .../src/lib/hlm-menu-item-radio.component.ts | 31 +- .../src/lib/hlm-menu-item-radio.directive.ts | 38 +- .../hlm-menu-item-sub-indicator.component.ts | 22 +- .../src/lib/hlm-menu-item.directive.ts | 48 +- .../src/lib/hlm-menu-label.component.ts | 30 +- .../src/lib/hlm-menu-separator.component.ts | 16 +- .../src/lib/hlm-menu-shortcut.component.ts | 20 +- .../src/lib/hlm-menu.component.ts | 54 +- .../src/lib/hlm-sub-menu.component.ts | 30 +- .../libs/ui/ui-pagination-helm/src/index.ts | 21 +- .../lib/hlm-numbered-pagination.component.ts | 269 +++++++++ .../lib/hlm-pagination-content.directive.ts | 19 +- .../lib/hlm-pagination-ellipsis.component.ts | 28 +- .../src/lib/hlm-pagination-item.directive.ts | 20 +- .../src/lib/hlm-pagination-link.directive.ts | 84 +-- .../src/lib/hlm-pagination-next.component.ts | 32 +- .../lib/hlm-pagination-previous.component.ts | 32 +- .../src/lib/hlm-pagination.directive.ts | 24 +- .../src/libs/ui/ui-popover-helm/src/index.ts | 4 +- .../src/lib/hlm-popover-close.directive.ts | 24 +- .../src/lib/hlm-popover-content.directive.ts | 42 +- .../src/libs/ui/ui-progress-helm/src/index.ts | 4 +- .../lib/hlm-progress-indicator.directive.ts | 46 +- .../src/lib/hlm-progress.directive.ts | 16 +- .../libs/ui/ui-radiogroup-helm/src/index.ts | 4 +- .../src/lib/hlm-radio-group.directive.ts | 14 +- .../src/lib/hlm-radio-indicator.component.ts | 26 +- .../src/lib/hlm-radio.directive.ts | 16 +- .../libs/ui/ui-scrollarea-helm/src/index.ts | 4 +- .../src/lib/hlm-scroll-area.component.ts | 106 ++-- .../src/libs/ui/ui-select-helm/src/index.ts | 22 +- .../src/lib/hlm-select-content.directive.ts | 44 +- .../src/lib/hlm-select-group.directive.ts | 16 +- .../src/lib/hlm-select-label.directive.ts | 38 +- .../src/lib/hlm-select-option.component.ts | 68 +-- .../lib/hlm-select-scroll-down.component.ts | 18 +- .../src/lib/hlm-select-scroll-up.component.ts | 18 +- .../src/lib/hlm-select-trigger.component.ts | 83 ++- .../src/lib/hlm-select-value.directive.ts | 21 +- .../src/lib/hlm-select.directive.ts | 14 +- .../libs/ui/ui-separator-helm/src/index.ts | 4 +- .../src/lib/hlm-separator.directive.ts | 24 +- webapp/src/libs/ui/ui-sheet-helm/src/index.ts | 20 +- .../src/lib/hlm-sheet-close.directive.ts | 24 +- .../src/lib/hlm-sheet-content.component.ts | 84 +-- .../lib/hlm-sheet-description.directive.ts | 16 +- .../src/lib/hlm-sheet-footer.component.ts | 20 +- .../src/lib/hlm-sheet-header.component.ts | 18 +- .../src/lib/hlm-sheet-overlay.directive.ts | 36 +- .../src/lib/hlm-sheet-title.directive.ts | 16 +- .../src/lib/hlm-sheet.component.ts | 48 +- .../src/libs/ui/ui-skeleton-helm/src/index.ts | 4 +- .../src/lib/hlm-skeleton.component.ts | 16 +- .../src/libs/ui/ui-slider-helm/src/index.ts | 7 +- .../src/lib/hlm-slider-input.directive.ts | 18 +- .../src/lib/hlm-slider-thumb.directive.ts | 34 +- .../src/lib/hlm-slider-tick-mark.directive.ts | 30 +- .../lib/hlm-slider-tick-marks.directive.ts | 16 +- .../hlm-slider-track-active-fill.directive.ts | 29 +- .../lib/hlm-slider-track-active.directive.ts | 19 +- .../hlm-slider-track-inactive.directive.ts | 16 +- .../src/lib/hlm-slider-track.component.ts | 68 ++- .../src/lib/hlm-slider.component.ts | 34 +- .../src/lib/hlm-toaster.component.ts | 118 ++-- .../src/libs/ui/ui-spinner-helm/src/index.ts | 4 +- .../src/lib/hlm-spinner.component.ts | 76 +-- .../src/libs/ui/ui-switch-helm/src/index.ts | 4 +- ...m-switch-ng-model.component.ignore.spec.ts | 32 ++ .../src/lib/hlm-switch-thumb.directive.ts | 25 +- .../src/lib/hlm-switch.component.ts | 156 +++--- webapp/src/libs/ui/ui-table-helm/src/index.ts | 13 +- .../src/lib/hlm-caption.component.ts | 69 ++- .../src/lib/hlm-table.component.ts | 40 +- .../src/lib/hlm-table.directive.ts | 21 +- .../ui-table-helm/src/lib/hlm-td.component.ts | 60 +- .../ui-table-helm/src/lib/hlm-th.component.ts | 66 ++- .../src/lib/hlm-trow.component.ts | 29 +- webapp/src/libs/ui/ui-tabs-helm/src/index.ts | 12 +- .../src/lib/hlm-tabs-content.directive.ts | 25 +- .../src/lib/hlm-tabs-list.component.ts | 45 +- .../lib/hlm-tabs-paginated-list.component.ts | 147 ++--- .../src/lib/hlm-tabs-trigger.directive.ts | 28 +- .../src/lib/hlm-tabs.component.ts | 22 +- .../src/libs/ui/ui-toggle-helm/src/index.ts | 8 +- .../src/lib/hlm-toggle-group.directive.ts | 24 +- .../src/lib/hlm-toggle.directive.ts | 56 +- .../src/libs/ui/ui-tooltip-helm/src/index.ts | 4 +- .../src/lib/hlm-tooltip-trigger.directive.ts | 67 +-- .../src/lib/hlm-tooltip.component.ts | 24 +- .../src/lib/hlm-blockquote.directive.ts | 14 +- .../src/lib/hlm-code.directive.ts | 14 +- .../src/lib/hlm-h1.directive.ts | 14 +- .../src/lib/hlm-h2.directive.ts | 17 +- .../src/lib/hlm-h3.directive.ts | 14 +- .../src/lib/hlm-h4.directive.ts | 14 +- .../src/lib/hlm-large.directive.ts | 14 +- .../src/lib/hlm-lead.directive.ts | 14 +- .../src/lib/hlm-muted.directive.ts | 14 +- .../src/lib/hlm-p.directive.ts | 14 +- .../src/lib/hlm-small.directive.ts | 14 +- .../src/lib/hlm-ul.directive.ts | 14 +- webapp/tsconfig.json | 6 + 222 files changed, 4754 insertions(+), 3343 deletions(-) create mode 100644 webapp/components.json create mode 100644 webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.spec.ts create mode 100644 webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.spec.ts create mode 100644 webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.spec.ts create mode 100644 webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.spec.ts create mode 100644 webapp/src/libs/ui/ui-breadcrumb-helm/src/index.ts create mode 100644 webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-ellipsis.component.ts create mode 100644 webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-item.directive.ts create mode 100644 webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-link.directive.ts create mode 100644 webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-list.directive.ts create mode 100644 webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-page.directive.ts create mode 100644 webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-separator.component.ts create mode 100644 webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb.directive.ts create mode 100644 webapp/src/libs/ui/ui-button-helm/src/lib/hlm-button.token.ts create mode 100644 webapp/src/libs/ui/ui-calendar-helm/src/index.ts create mode 100644 webapp/src/libs/ui/ui-calendar-helm/src/lib/hlm-calendar.component.ts create mode 100644 webapp/src/libs/ui/ui-formfield-helm/src/lib/form-field.spec.ts create mode 100644 webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.spec.ts create mode 100644 webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.token.ts create mode 100644 webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-numbered-pagination.component.ts create mode 100644 webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-ng-model.component.ignore.spec.ts diff --git a/webapp/components.json b/webapp/components.json new file mode 100644 index 00000000..1d0c315c --- /dev/null +++ b/webapp/components.json @@ -0,0 +1,3 @@ +{ + "componentsPath": "src/libs/ui" +} diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 7edab09d..69e225ff 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -17,44 +17,46 @@ "@angular/platform-browser": "18.2.1", "@angular/platform-browser-dynamic": "18.2.1", "@angular/router": "18.2.1", - "@ng-icons/core": "29.5.0", - "@ng-icons/lucide": "^26.3.0", + "@ng-icons/core": "^29.10.0", + "@ng-icons/lucide": ">=29.0.0", "@ng-icons/octicons": "29.5.0", "@primer/primitives": "9.1.1", "@sentry/angular": "^8.42.0", - "@spartan-ng/ui-accordion-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-alertdialog-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-avatar-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-checkbox-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-collapsible-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-command-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-core": "0.0.1-alpha.356", - "@spartan-ng/ui-dialog-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-formfield-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-forms-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-hovercard-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-label-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-menu-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-popover-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-progress-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-radiogroup-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-select-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-separator-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-sheet-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-switch-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-table-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-tabs-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-toggle-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-tooltip-brain": "0.0.1-alpha.356", + "@spartan-ng/brain": "0.0.1-alpha.374", + "@spartan-ng/ui-accordion-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-alertdialog-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-avatar-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-collapsible-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-command-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-core": "0.0.1-alpha.374", + "@spartan-ng/ui-dialog-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-formfield-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-forms-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-hovercard-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-label-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-menu-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-popover-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-progress-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-radiogroup-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-select-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-separator-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-sheet-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-slider-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-switch-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-table-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-tabs-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-toggle-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-tooltip-brain": "0.0.1-alpha.374", "@tanstack/angular-query-devtools-experimental": "5.52.0", "@tanstack/angular-query-experimental": "5.52.0", "autoprefixer": "10.4.20", + "class-variance-authority": "^0.7.0", "clsx": "2.1.1", "dayjs": "1.11.13", - "embla-carousel-angular": "^14.0.0", + "embla-carousel-angular": "18.0.0", "keycloak-js": "^26.0.0", "lucide-angular": "0.429.0", - "ngx-scrollbar": "^13.0.1", + "ngx-scrollbar": "^13.0.3", "ngx-sonner": "^2.0.0", "postcss": "8.4.41", "rxjs": "7.8.1", @@ -70,7 +72,7 @@ "@angular/cli": "18.2.1", "@angular/compiler-cli": "18.2.1", "@chromatic-com/storybook": "1.7.0", - "@spartan-ng/cli": "^0.0.1-alpha.380", + "@spartan-ng/cli": "^0.0.1-alpha.374", "@storybook/addon-essentials": "^8.4.7", "@storybook/addon-interactions": "^8.4.7", "@storybook/addon-links": "^8.4.7", @@ -278,6 +280,7 @@ "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.7.tgz", "integrity": "sha512-oq6JsVxLP9/w9F2IjKroJwPB9CdlMblu2Xhfq/qQZRSUuM8Ppt1svr2FBTo1HrLIbosqukkVcSSdmKYDneo+cg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", "@angular-devkit/architect": "0.1802.7", @@ -346,6 +349,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -361,6 +365,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.22.tgz", "integrity": "sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/core": "^9.0.10", "@inquirer/type": "^1.5.2" @@ -377,6 +382,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -390,6 +396,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -403,6 +410,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -416,6 +424,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -429,6 +438,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -442,6 +452,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -455,6 +466,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -468,6 +480,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -481,6 +494,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -494,6 +508,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -507,6 +522,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -520,6 +536,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -533,6 +550,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -546,6 +564,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -559,6 +578,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -572,6 +592,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -581,13 +602,15 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@angular-devkit/build-angular/node_modules/rollup": { "version": "4.22.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -929,6 +952,7 @@ "version": "18.2.1", "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.1.tgz", "integrity": "sha512-9KrSpJ65UlJZNXrE18NszcfOwb5LZgG+LYi5Doe7amt218R1bzb3trvuAm0ZzMaoKh4ugtUCkzEOd4FALPEX6w==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -999,6 +1023,7 @@ "version": "18.2.1", "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.1.tgz", "integrity": "sha512-gVyqW6fYnG7oq1DlZSXJMQ2Py2dJQB7g6XVtRcYB1gR4aeowx5N9ws7PjqAi0ih91ASq2MmP4OlSSWLq+eaMGg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -4095,6 +4120,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4108,6 +4134,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4121,6 +4148,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4134,6 +4162,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4147,6 +4176,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4160,6 +4190,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -4483,6 +4514,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4496,6 +4528,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4509,6 +4542,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4522,6 +4556,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4535,6 +4570,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -4548,6 +4584,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -4566,11 +4603,12 @@ } }, "node_modules/@ng-icons/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@ng-icons/core/-/core-29.5.0.tgz", - "integrity": "sha512-MpM8I/7uzUC7SKRt29d4ByCpKjk8sXTlOiLuBCTHG1uyI14jUZdpyhBwpCpGKpkqqmfxDkvN848hjhFiOKlBuA==", + "version": "29.10.0", + "resolved": "https://registry.npmjs.org/@ng-icons/core/-/core-29.10.0.tgz", + "integrity": "sha512-PR6SO00yvFhwDhh37BWhtAgRfzxuXpJQBsAQ44Pg3gjc83fOAwOtMSXizYwtN0uUFIkAYZHZCEuV7Sb8eosK+w==", + "license": "MIT", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "peerDependencies": { "@angular/common": ">=18.0.0", @@ -4579,11 +4617,12 @@ } }, "node_modules/@ng-icons/lucide": { - "version": "26.5.0", - "resolved": "https://registry.npmjs.org/@ng-icons/lucide/-/lucide-26.5.0.tgz", - "integrity": "sha512-rW6iZo2LBlFvnpBLWs400mrKn/34PKt5R+Yfd6ZJz9lxq2TMJfNeJv/V4ylG9vYG3RkPa+KEJ+Q6/8IOceT0NA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@ng-icons/lucide/-/lucide-30.2.0.tgz", + "integrity": "sha512-z8tqUMcgw2MXuJiUHRtdjs4LwUxrxV6xy3MsFBkK6LKCNen9v7FXfOjOPzFvR/HlOJ+ZmgJfxJ6cp5lhwvDM7Q==", + "license": "ISC", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" } }, "node_modules/@ng-icons/octicons": { @@ -4598,6 +4637,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@ngneat/overview/-/overview-5.1.1.tgz", "integrity": "sha512-Dz7yylhS08Mo+A8SXo7KyJBJMxD18Oq/G5v/ndvd5C8Gi3uOrAiXUjxvqRCPMxrg03FlkvEsD5/4TvMKtrUfAQ==", + "license": "MIT", "peer": true, "dependencies": { "tslib": "^2.0.0" @@ -4610,6 +4650,7 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/@ngneat/until-destroy/-/until-destroy-10.0.0.tgz", "integrity": "sha512-xXFAabQ4YVJ82LYxdgUlaKZyR3dSbxqG3woSyaclzxfCgWMEDweCcM/GGYbNiHJa0WwklI98RXHvca+UyCxpeg==", + "license": "MIT", "peer": true, "dependencies": { "tslib": "^2.3.0" @@ -4624,6 +4665,7 @@ "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.7.tgz", "integrity": "sha512-BmnFxss6zGobGyq9Mi7736golbK8RLgF+zYCQZ+4/OfMMA1jKVoELnyJqNyAx+DQn3m1qKVBjtGEL7pTNpPzOw==", "dev": true, + "license": "MIT", "engines": { "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", @@ -4639,6 +4681,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@ngxpert/cmdk/-/cmdk-1.0.0.tgz", "integrity": "sha512-PmZEKINJxWbGEE4GJ+iyB881z2YWETL1s8l2snqnmmVKCzTZjQruCY0JA8rLIAmLz6m9jlXUVj3Ox05i216tCQ==", + "license": "MIT", "peer": true, "dependencies": { "@angular/cdk": ">=16.0.0", @@ -6720,10 +6763,25 @@ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "dev": true }, + "node_modules/@spartan-ng/brain": { + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/brain/-/brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-FUSGY657o03e2Gzjoo8daaE6JX3V0XethJ9ygJdOoy9M/HTbjMwpb3PWb68VscQ/nVb2yCMjlwrJeWCr+hugLg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": ">=18.0.0", + "@angular/common": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@angular/forms": ">=18.0.0", + "@spartan-ng/ui-forms-brain": "0.0.1-alpha.374" + } + }, "node_modules/@spartan-ng/cli": { - "version": "0.0.1-alpha.380", - "resolved": "https://registry.npmjs.org/@spartan-ng/cli/-/cli-0.0.1-alpha.380.tgz", - "integrity": "sha512-fletoFUXWyVoPaMBHF4wFXFnZnUBvTuQ168v9YfxM/JA02faGdb3JAc3s+/0LD0VYzgjFNIPUozyTNVcfPcQBg==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/cli/-/cli-0.0.1-alpha.374.tgz", + "integrity": "sha512-CbwrPp43GERy4MisgaLt+zk8ZXlmFEmeKRiZsPKV2ojJFZZrL6bpLB9gxy4O0umCr6fisuqP+Ka6U3vznCA48w==", "dev": true, "dependencies": { "@nx/angular": ">=20.0.0", @@ -6772,328 +6830,331 @@ "dev": true }, "node_modules/@spartan-ng/ui-accordion-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-accordion-brain/-/ui-accordion-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-Yh8g7zlkr/CfhOAiUgrC45dgkIYOlEfzDFwuSeMFg4LOX0Vb1UqIUJITl8A3OmhLF5xZb5lIft0ibzqlvCxVyw==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-accordion-brain/-/ui-accordion-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-atiLwwtN7PS1iIVeWkRt6EdOkDlqCsz8DFKKc3/ue/6Wwa0+00F/O8RZ5Abbzy56sZMFx8NmpdekIpHIMgce5w==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356" + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@spartan-ng/ui-core": "0.0.1-alpha.374", + "clsx": "^2.1.1", + "rxjs": ">=6.6.0" } }, "node_modules/@spartan-ng/ui-alertdialog-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-alertdialog-brain/-/ui-alertdialog-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-a576b7p7wxue02bwUMZA1HijcSbd68MGhe91Kskc4gVl4nocyEBfKm/5A/tJ90OBPTHYkcQWnDj1Ce/R2UChNQ==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-alertdialog-brain/-/ui-alertdialog-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-lHNtL6Jue285Sgj5sNkhVWP9gScM431SR9fP0ekYgpH9RRBkknjkrhLQZzG+3Wm9idQ8qZbpX9oBiJS5tuOn5g==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356", - "@spartan-ng/ui-dialog-brain": "0.0.1-alpha.356" + "@angular/core": ">=18.0.0", + "@spartan-ng/ui-core": "0.0.1-alpha.374", + "@spartan-ng/ui-dialog-brain": "0.0.1-alpha.374" } }, "node_modules/@spartan-ng/ui-avatar-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-avatar-brain/-/ui-avatar-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-HeY7ihHHNl/X2ogzguOi7fbWY+786bBziALjQAd4ifXVd36VqurxA52u0MwMUsHebJnvXRzRAUFtQwsm1i3tPA==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-avatar-brain/-/ui-avatar-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-yUqxnfl6q19O2TBzOW3qn6Pkn86Lq/nmiZ3teZCUjZfUaQoWyTGbCispNZvBV9kpvk2ckKykkNW+5MZ5o1n/Ng==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0", + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0", "clsx": "^2.1.1" } }, - "node_modules/@spartan-ng/ui-checkbox-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-checkbox-brain/-/ui-checkbox-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-2oaKtZNxbtTmGM/zyuHt+HUk4Sw7IpzeasFEuINJLJfzATcO721f7CcF03NRqQiUFs00btr/cuRugzx7qynU5g==", - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0", - "@angular/forms": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356" - } - }, "node_modules/@spartan-ng/ui-collapsible-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-collapsible-brain/-/ui-collapsible-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-lmOTKc2+QsWQ4dNHNpCIoaD3ZWBBvfgDpy9LikFTMwcqZqu+jxRPjuG6MalAvSAzIWFlaAyPW+jZN6ZvObqtng==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-collapsible-brain/-/ui-collapsible-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-YbGH+tWzOVF0sZB4SUWW11cKuJBbNyPP8Cyc9XqFXE1ta8yvXsINPnyDd65g9cHCENpH8lgjGenUJKw4XRgW+g==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^18.0.0" + "@angular/core": ">=18.0.0" } }, "node_modules/@spartan-ng/ui-command-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-command-brain/-/ui-command-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-JK5oCiOSFUHNAA1CdDStQ+FS2R/Szet4gFkP7gukVgj+N5f4riJH1tvmtrNiijU8gUqqC5SUyCzLGptSKdezhw==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-command-brain/-/ui-command-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-BhO3TpOcGoZMDVJnBWJy5+5n50u5OSNFbN1x2ft9T8l63kTK/uU5EO5mupstkCAQAD1z7N91uGbN5Od2g6HIgg==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0", - "@ngneat/overview": "^5.0.0", + "@angular/common": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@ngneat/overview": "^5.1.1", "@ngneat/until-destroy": "^10.0.0", "@ngxpert/cmdk": "^1.0.0" } }, "node_modules/@spartan-ng/ui-core": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-core/-/ui-core-0.0.1-alpha.356.tgz", - "integrity": "sha512-05e+NCYiZENhwDxeo1Lu7JPX3wmQnICvLm8LoJmy0J9UvJOi0tfP8PjJO5+omo+7O9aCMCgHYiKGSyh5KE87ow==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-core/-/ui-core-0.0.1-alpha.374.tgz", + "integrity": "sha512-wCz74mMbt4Yoh41SxbqE8JFOIB5eWiZ5IktfCMGx6HtCCQyzrogkT/XLDiO/Dz0jObzPXRU4klLj0PXR5FIl4Q==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^18.0.0", + "@angular/core": ">=18.0.0", "clsx": "^2.1.1", - "rxjs": "^7.8.1", - "tailwind-merge": "^2.2.0", - "tailwindcss": "^3.0.2", - "tailwindcss-animate": "^1.0.6" + "rxjs": ">=6.6.0", + "tailwind-merge": "^2.5.2", + "tailwindcss": "^3.4.13", + "tailwindcss-animate": "^1.0.7" } }, "node_modules/@spartan-ng/ui-dialog-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-dialog-brain/-/ui-dialog-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-p6IEwU7I7TjWe9ZzPZ3LqZrBHoNhrkIKhs4ZOQGst8YO0dtERw5qO4RupwjvBY1S2zCRTxSOHnjMBfh5fdiOgg==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-dialog-brain/-/ui-dialog-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-8Z6iICOYpMZxYC/qd4S664R5bc3nLuQsss/chvcP94WkjRLZEpwr6HKcbSvpmTuTDdQzEGbrwcE4LttwERw5kw==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356" + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@spartan-ng/ui-core": "0.0.1-alpha.374", + "rxjs": ">=6.6.0" } }, "node_modules/@spartan-ng/ui-formfield-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-formfield-brain/-/ui-formfield-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-A7wpuCQXYuBPjsS7fL1Se3pZ4le1WB6ilDDIUh8AeCEcDb+eDFKu/18Wloca5AQl71PzINs7wua+b714XQSyuA==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-formfield-brain/-/ui-formfield-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-wKNGP71m9S926tL/JCwVi4ypR+kYW2Jxo/butMm7y8iFIzREa1+JKIux1VnzjEoZafiflD939GqTqF+rUi4PmA==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356", - "class-variance-authority": "^0.6.0", - "clsx": "^2.1.1" + "@angular/core": ">=18.0.0", + "@angular/forms": ">=18.0.0" } }, "node_modules/@spartan-ng/ui-forms-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-forms-brain/-/ui-forms-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-WrsB1JE1qN846W0Be/MWhMtefQZrIlvAXxmzMnMCZ72wygCmZ7g3+UqAS5jlQp8M5Feql0bWBVjvo+tPVqkMxQ==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-forms-brain/-/ui-forms-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-NMMLdq0BNKvqCer57se5u0cw0BeV+yjw9ZylEPB9MgB1zGwgriMHlPyiXx6Mr70LDBn7K0NJbNY2AWul/SbPvg==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356", - "class-variance-authority": "^0.6.0", - "clsx": "^2.1.1" + "@angular/core": ">=18.0.0", + "@angular/forms": ">=18.0.0" } }, "node_modules/@spartan-ng/ui-hovercard-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-hovercard-brain/-/ui-hovercard-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-3kAWZjL2HEdHlwKpx/I1vaLSBkgq2KF+1g+T32X/+pSrtap1zi5s/WPjIRMbVwNllVPVzfYkr3nu3j1RQtuNqw==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-hovercard-brain/-/ui-hovercard-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-CRGHgC29GBnEsRXTBazy4BH5wbwlrPV/HAi5COWTs7AImKSJTjKFeF69dxAprL38kgPXBlG0kJwsy2y49DiRKw==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356" + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@spartan-ng/ui-core": "0.0.1-alpha.374", + "rxjs": ">=6.6.0" } }, "node_modules/@spartan-ng/ui-label-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-label-brain/-/ui-label-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-Z1Isl5SrokcPgf/WQEHSIkMxI9RV9tgDNZuVU/A293LqSDf/McYSBn3i2Ir9UGADl6pIPcUQor99IiX6EE732w==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-label-brain/-/ui-label-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-3mjA4z1+E60iia18K3DeLnP3DT+BqOc/32NL6iZJe5a/T0rLlNuXnnKH4anHVQNrT8DbIHX9i6f9dn4F8olzdQ==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0", - "@angular/forms": "^18.0.0" + "@angular/common": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@angular/forms": ">=18.0.0" } }, "node_modules/@spartan-ng/ui-menu-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-menu-brain/-/ui-menu-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-L/AUVU+arSD2Pndt8ojvfnfXfqDlAQ627arlHqzxiwFepfDk6N6T2s8YEYrAOsge+A23lYr+FFJ9+g19RY73GQ==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-menu-brain/-/ui-menu-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-sS22ExmubTcH6WMR3hCaA74JWU2lDy4+q54isgZBPC0c9fnfPM7vFcNa/JxbnWUN76B+luH0kklfyz4s92lfGA==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/core": "^18.0.0" + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0" } }, "node_modules/@spartan-ng/ui-popover-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-popover-brain/-/ui-popover-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-llAV93SAOrS+lcL98bgktFnt24Q/Fr8tohG9pWOUEUtYZiWRQ4uxTpNBtXX92ZIFy1KhEcFK0z4ngbhVH226mQ==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-popover-brain/-/ui-popover-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-JtKCGGiSdrHvM/YK8RF3Ojg8ZbUKkpOYqEptkEkC20eOfcnOhe3ROsHj5pBng3z34ovDVSuA114Q7OmOjlZEtQ==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356", - "@spartan-ng/ui-dialog-brain": "0.0.1-alpha.356" + "@angular/core": ">=18.0.0", + "@spartan-ng/ui-core": "0.0.1-alpha.374", + "@spartan-ng/ui-dialog-brain": "0.0.1-alpha.374" } }, "node_modules/@spartan-ng/ui-progress-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-progress-brain/-/ui-progress-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-zSHg7V+9owfwpWbooE08v1rOCA7Kah2uiwmZtaVFZqYCGrd+8M/KkK/kC751H3GYJ9K8slgyWMgt3WxsdFScXQ==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-progress-brain/-/ui-progress-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-P6NWo3fzX1CFxhsFcwJt4D3FoZG4G/pq6Ddt5+ped5y0HZFY+0ifDLGwguaeOWXDtBCm2zNCgEoxw/q7ibhtJg==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/core": "^18.0.0" + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0" } }, "node_modules/@spartan-ng/ui-radiogroup-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-radiogroup-brain/-/ui-radiogroup-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-5Q00jdSu0M694QorNX3qkt47I5GeqbadbNqjT7a/X7k4h3QgFoTR/RR/4OJYD3g/aBHbl6slRDJEW8KzQHFBlA==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-radiogroup-brain/-/ui-radiogroup-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-6n0LnFn8wVLVclj415zh2L20O1NZyyh2aF3QOEK6zUXA7Y4R4SYmyrwKV/VyoxcQ+3yxbC4aVX9lh2QvnQRGJg==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/core": "^18.0.0", - "@angular/forms": "^18.0.0" + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@angular/forms": ">=18.0.0", + "@spartan-ng/ui-forms-brain": "0.0.1-alpha.374" } }, "node_modules/@spartan-ng/ui-select-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-select-brain/-/ui-select-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-7DnSvYg2NN7vhZlA1mKMKLS4HZsilKEB2lLzj9tuioHzf2+CqYVWBbgyYerHd9YDKqzch7kJJYojcQp6WE9I3A==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-select-brain/-/ui-select-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-A3cUyShJXOFW3Qs7VleNMKKzLNpPBgb/lEHAnRcfcj+mBXgnBYuIZ+J+ESCNUA5oWhJ1QQVbvlPcpzgCI8C9tA==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0", - "@angular/forms": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356", - "@spartan-ng/ui-formfield-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-forms-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-label-brain": "0.0.1-alpha.356" + "@angular/cdk": ">=18.0.0", + "@angular/common": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@angular/forms": ">=18.0.0", + "@spartan-ng/ui-core": "0.0.1-alpha.374", + "@spartan-ng/ui-formfield-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-forms-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-label-brain": "0.0.1-alpha.374", + "rxjs": ">=6.6.0" } }, "node_modules/@spartan-ng/ui-separator-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-separator-brain/-/ui-separator-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-JdaYy538n4W6TjXEnJ9KPs+bHttcJF1/T/gO70htHXV0RAr+LW6XPWScFRB0zBWaNZb5+t4HPsGUjnDMEE/NYA==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-separator-brain/-/ui-separator-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-IEL/NpVPLuoWi9ximzYApV0Lyf7QT+WYYL8CgPp1aMCqCvZIHKt9JZOQjxfYrTCOM3n6EIvRIcdH6nqLOG/9bA==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^18.0.0" + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0" } }, "node_modules/@spartan-ng/ui-sheet-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-sheet-brain/-/ui-sheet-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-piktu3L/ZSVgYvq4cioEIi8ObcPTDj9lGoLWKs0LPyrqE/9Gv2q6eK/IreoeFQAQdYgv3q4CdYDcNWfIpccUhg==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-sheet-brain/-/ui-sheet-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-W09pn0+3OzwYGn9j6hY4wGjflM3KIuMdgh3LSxqEvDuwUl0ZE1gmZgqp4HVi3JiyNYDrA111hIVRzbRleiVzJg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=18.0.0", + "@spartan-ng/ui-core": "0.0.1-alpha.374", + "@spartan-ng/ui-dialog-brain": "0.0.1-alpha.374" + } + }, + "node_modules/@spartan-ng/ui-slider-brain": { + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-slider-brain/-/ui-slider-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-iXGYLt1JgYjIt7Cx6JZ1UFrlVRv2PtP5qapZpnAxrN5s+IjYpxPmqpjzb14iSGRs0cTaasb3oVPhRxHZ0uDzwA==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356", - "@spartan-ng/ui-dialog-brain": "0.0.1-alpha.356" + "@angular/cdk": ">=18.0.0", + "@angular/common": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@angular/forms": ">=18.0.0", + "@spartan-ng/ui-label-brain": "0.0.1-alpha.374", + "rxjs": ">=6.6.0" } }, "node_modules/@spartan-ng/ui-switch-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-switch-brain/-/ui-switch-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-dwzj/ZSNug3VDZ1JNXxdBJVX613S62mtt6TZfdYHFDPW7iKzeiVVhj22jkK+Jl0iXOkFrCw8Xbo4l+R0yOdH2w==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-switch-brain/-/ui-switch-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-/4pzuvNqvRspcMu/fqGCXoTuhtj7HtacgK3Qg47MMaoy8RfmSZ1fpuS/W71PK9QgsXsxnkpPt0wjedBCghWE1w==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0", - "@angular/forms": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356" + "@angular/cdk": ">=18.0.0", + "@angular/common": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@angular/forms": ">=18.0.0", + "@spartan-ng/ui-forms-brain": "0.0.1-alpha.374" } }, "node_modules/@spartan-ng/ui-table-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-table-brain/-/ui-table-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-7Hm2RpFcUWzYckMY4VIua8FmxVDnkhUdZMgOnBDqPl3vNeDyUkCHkgMU35zGAkeNFHo0ATFKNPWsVFWbOtJRSw==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-table-brain/-/ui-table-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-fYHvgBPKoeOG819KV6lyO/Vxua3X6hCrmtAaaZk7UdsdSz35CsHcUfxmrYB1+PnssyLMnsbTS3NYro1XKx3LbQ==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356" + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@spartan-ng/ui-core": "0.0.1-alpha.374" } }, "node_modules/@spartan-ng/ui-tabs-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-tabs-brain/-/ui-tabs-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-UMY5zDSMtTf/i9yvM0Qlv50EMo0KcSo2gTDvzmn1QZEMmydq+RzhslnSmjrs3EFTeWx3SSl/w3egfatGD+7Pyw==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-tabs-brain/-/ui-tabs-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-tOCjL56mjapIo8MsivV/8yrddEB4uhVs0ynWEvhepRxMjOYmDyTzdmhoqBfEgjqEYfeiH8cVwk2+AXYfYsOQVQ==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356", - "rxjs": "~7.8.0" + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0", + "rxjs": ">=6.6.0" } }, "node_modules/@spartan-ng/ui-toggle-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-toggle-brain/-/ui-toggle-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-sxIMcdIwmf4VhN44c6H19znzs+4Gv9hz7b4b0yG08fbiXBNJ7n+/puERAwugUUdV3FTrcULZSjC+xmZdUKODNQ==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-toggle-brain/-/ui-toggle-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-scDgHydgc/FT+s26uTN7NWr+5PpqiwwPem/cipK5pdhGNY3obfVjJttwJwONxAUg2VmbZb/QlPEZ/cVQfrdV6w==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/core": "^18.0.0", - "@angular/forms": "^18.0.0" + "@angular/cdk": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@angular/forms": ">=18.0.0" } }, "node_modules/@spartan-ng/ui-tooltip-brain": { - "version": "0.0.1-alpha.356", - "resolved": "https://registry.npmjs.org/@spartan-ng/ui-tooltip-brain/-/ui-tooltip-brain-0.0.1-alpha.356.tgz", - "integrity": "sha512-0ydnn+el5791DEzEZhLofQrm1ufRrSAyWD8bvZOaf/ajd63Nsyd9i6+KywYqtKMPUY5dp7JiSI2HI0StgmEhcw==", + "version": "0.0.1-alpha.374", + "resolved": "https://registry.npmjs.org/@spartan-ng/ui-tooltip-brain/-/ui-tooltip-brain-0.0.1-alpha.374.tgz", + "integrity": "sha512-Rj0/VWRhWefTLFc4IhSVmli747dq3XIA/5uMrb3fb28z92IKyyLnMMNEbuyT2ELLURAufoOQkPF8+07LjVMzVw==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0", - "@spartan-ng/ui-core": "0.0.1-alpha.356", - "rxjs": "~7.8.0" + "@angular/cdk": ">=18.0.0", + "@angular/common": ">=18.0.0", + "@angular/core": ">=18.0.0", + "@spartan-ng/ui-core": "0.0.1-alpha.374", + "rxjs": ">=6.6.0" } }, "node_modules/@storybook/addon-actions": { @@ -10666,24 +10727,15 @@ "license": "MIT" }, "node_modules/class-variance-authority": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.6.1.tgz", - "integrity": "sha512-eurOEGc7YVx3majOrOb099PNKgO3KnKSApOprXI4BTq6bcfbqbQXPN2u+rPPmIJ2di23bMwhk0SxCCthBmszEQ==", - "peer": true, + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", "dependencies": { - "clsx": "1.2.1" + "clsx": "^2.1.1" }, "funding": { - "url": "https://joebell.co.uk" - } - }, - "node_modules/class-variance-authority/node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "peer": true, - "engines": { - "node": ">=6" + "url": "https://polar.sh/cva" } }, "node_modules/clean-css": { @@ -11871,6 +11923,7 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=8" } @@ -12133,17 +12186,18 @@ "integrity": "sha512-Ve8dhI4w28qBqR8J+aMtv7rLK89r1ZA5HocwFz6uMB/i5EiC7bGI7y+AM80yAVUJw3qqaZYK7clmZMUR8kM3UA==" }, "node_modules/embla-carousel-angular": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/embla-carousel-angular/-/embla-carousel-angular-14.2.1.tgz", - "integrity": "sha512-qSvI5ExFnuHPMW10387K8ebIGc/x4WvAbIFCV5/tiLP7qG73j/+4n8KntFv5Bn3eY/EOhS69ivehWzCXUHo4WQ==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/embla-carousel-angular/-/embla-carousel-angular-18.0.0.tgz", + "integrity": "sha512-9g6kcEV1BH9JP1txCoLidqIOsbU828kITbZH8zC23A7fF28vzHrhHkRon6G4VDG4g2HKqMN805ZtGJij4TpKGQ==", + "license": "MIT", "dependencies": { - "embla-carousel": "^8.1.8", - "embla-carousel-reactive-utils": "^8.1.8", + "embla-carousel": "^8.3.0", + "embla-carousel-reactive-utils": "^8.3.0", "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": ">=14.0.0", - "@angular/core": ">=14.0.0" + "@angular/common": ">=18.0.0", + "@angular/core": ">=18.0.0" } }, "node_modules/embla-carousel-reactive-utils": { @@ -15915,6 +15969,7 @@ "integrity": "sha512-UGe+BbaSUQtAMZobTb4nHvFMrmvuAQKSeaqAX2meTEQjfsbpl5sxdHD8T72OnwD4GU9uwNhYXIVe4QGs8N9Zyw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "msgpackr": "^1.10.2", "node-addon-api": "^6.1.0", @@ -15938,7 +15993,8 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loader-runner": { "version": "4.3.0", @@ -16735,10 +16791,11 @@ "dev": true }, "node_modules/msgpackr": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.0.tgz", - "integrity": "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz", + "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", "dev": true, + "license": "MIT", "optionalDependencies": { "msgpackr-extract": "^3.0.2" } @@ -16749,6 +16806,7 @@ "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "dependencies": { "node-gyp-build-optional-packages": "5.2.2" @@ -17000,6 +17058,7 @@ "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "dev": true, + "license": "MIT", "dependencies": { "detect-libc": "^2.0.1" }, @@ -17770,10 +17829,11 @@ } }, "node_modules/ordered-binary": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.2.tgz", - "integrity": "sha512-JTo+4+4Fw7FreyAvlSLjb1BBVaxEQAacmjD3jjuyPZclpbEghTvQZbXBb2qPd2LeIMxiHwXBZUcpmG2Gl/mDEA==", - "dev": true + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz", + "integrity": "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==", + "dev": true, + "license": "MIT" }, "node_modules/os-tmpdir": { "version": "1.0.2", @@ -22552,7 +22612,8 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webidl-conversions": { "version": "3.0.1", @@ -23345,6 +23406,7 @@ "version": "0.14.10", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==", + "license": "MIT", "peer": true } } diff --git a/webapp/package.json b/webapp/package.json index cc15bbad..67f81849 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -29,44 +29,46 @@ "@angular/platform-browser": "18.2.1", "@angular/platform-browser-dynamic": "18.2.1", "@angular/router": "18.2.1", - "@ng-icons/core": "29.5.0", - "@ng-icons/lucide": "^26.3.0", + "@ng-icons/core": "^29.10.0", + "@ng-icons/lucide": ">=29.0.0", "@ng-icons/octicons": "29.5.0", "@primer/primitives": "9.1.1", "@sentry/angular": "^8.42.0", - "@spartan-ng/ui-accordion-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-alertdialog-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-avatar-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-checkbox-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-collapsible-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-command-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-core": "0.0.1-alpha.356", - "@spartan-ng/ui-dialog-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-formfield-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-forms-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-hovercard-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-label-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-menu-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-popover-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-progress-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-radiogroup-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-select-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-separator-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-sheet-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-switch-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-table-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-tabs-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-toggle-brain": "0.0.1-alpha.356", - "@spartan-ng/ui-tooltip-brain": "0.0.1-alpha.356", + "@spartan-ng/brain": "0.0.1-alpha.374", + "@spartan-ng/ui-accordion-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-alertdialog-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-avatar-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-collapsible-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-command-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-core": "0.0.1-alpha.374", + "@spartan-ng/ui-dialog-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-formfield-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-forms-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-hovercard-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-label-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-menu-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-popover-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-progress-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-radiogroup-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-select-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-separator-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-sheet-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-slider-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-switch-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-table-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-tabs-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-toggle-brain": "0.0.1-alpha.374", + "@spartan-ng/ui-tooltip-brain": "0.0.1-alpha.374", "@tanstack/angular-query-devtools-experimental": "5.52.0", "@tanstack/angular-query-experimental": "5.52.0", "autoprefixer": "10.4.20", + "class-variance-authority": "^0.7.0", "clsx": "2.1.1", "dayjs": "1.11.13", - "embla-carousel-angular": "^14.0.0", + "embla-carousel-angular": "18.0.0", "keycloak-js": "^26.0.0", "lucide-angular": "0.429.0", - "ngx-scrollbar": "^13.0.1", + "ngx-scrollbar": "^13.0.3", "ngx-sonner": "^2.0.0", "postcss": "8.4.41", "rxjs": "7.8.1", @@ -82,7 +84,7 @@ "@angular/cli": "18.2.1", "@angular/compiler-cli": "18.2.1", "@chromatic-com/storybook": "1.7.0", - "@spartan-ng/cli": "^0.0.1-alpha.380", + "@spartan-ng/cli": "^0.0.1-alpha.374", "@storybook/addon-essentials": "^8.4.7", "@storybook/addon-interactions": "^8.4.7", "@storybook/addon-links": "^8.4.7", diff --git a/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.html b/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.html index c472dbf3..0825b1d2 100644 --- a/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.html +++ b/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.html @@ -3,7 +3,7 @@ Week starts {{ leaderboardSchedule().formatted }} diff --git a/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.ts b/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.ts index 39f7ba44..840c81bb 100644 --- a/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.ts +++ b/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.ts @@ -10,7 +10,7 @@ import { BrnTooltipContentDirective } from '@spartan-ng/ui-tooltip-brain'; import { HlmTooltipComponent, HlmTooltipTriggerDirective } from '@spartan-ng/ui-tooltip-helm'; import { HlmIconComponent } from '@spartan-ng/ui-icon-helm'; import { provideIcons } from '@spartan-ng/ui-icon-helm'; -import { lucideHelpCircle } from '@ng-icons/lucide'; +import { lucideCircleHelp } from '@ng-icons/lucide'; import { injectQuery } from '@tanstack/angular-query-experimental'; import { lastValueFrom } from 'rxjs'; import { MetaService } from '@app/core/modules/openapi'; @@ -38,7 +38,7 @@ function formatLabel(weekIndex: number) { selector: 'app-leaderboard-filter-timeframe', standalone: true, imports: [BrnSelectModule, HlmSelectModule, HlmLabelModule, FormsModule, HlmTooltipComponent, HlmTooltipTriggerDirective, BrnTooltipContentDirective, HlmIconComponent], - providers: [provideIcons({ lucideHelpCircle })], + providers: [provideIcons({ lucideCircleHelp })], templateUrl: './timeframe.component.html' }) export class LeaderboardFilterTimeframeComponent { diff --git a/webapp/src/app/mentor/mentor.component.ts b/webapp/src/app/mentor/mentor.component.ts index 87d90a76..e8720147 100644 --- a/webapp/src/app/mentor/mentor.component.ts +++ b/webapp/src/app/mentor/mentor.component.ts @@ -89,6 +89,6 @@ export class MentorComponent { })); scrollToBottom() { - this.messagesScrollArea()?.scrollbar().scrollTo({ bottom: 0, duration: 300 }); + // this.messagesScrollArea()?.scrollbar().scrollTo({ bottom: 0, duration: 300 }); } } diff --git a/webapp/src/app/workspace/layout.component.ts b/webapp/src/app/workspace/layout.component.ts index 1f554492..fd1daa18 100644 --- a/webapp/src/app/workspace/layout.component.ts +++ b/webapp/src/app/workspace/layout.component.ts @@ -4,20 +4,20 @@ import { ReactiveFormsModule } from '@angular/forms'; import { HlmButtonModule } from '@spartan-ng/ui-button-helm'; import { RouterLinkActive, RouterModule, RouterOutlet } from '@angular/router'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; -import { lucideUserCircle, lucideCog, lucideUsers2 } from '@ng-icons/lucide'; +import { lucideCircleUser, lucideCog, lucideUsers } from '@ng-icons/lucide'; type NavItem = { icon: string; label: string; route: string; exact?: boolean }; @Component({ selector: 'app-workspace-layout', standalone: true, imports: [CommonModule, RouterModule, ReactiveFormsModule, HlmButtonModule, RouterOutlet, RouterLinkActive, HlmIconComponent], - providers: [provideIcons({ lucideUserCircle, lucideCog, lucideUsers2 })], + providers: [provideIcons({ lucideCircleUser, lucideCog, lucideUsers })], templateUrl: './layout.component.html' }) export class WorkspaceLayoutComponent { navItems: NavItem[] = [ { icon: 'lucideCog', label: 'Settings', route: '.', exact: true }, - { icon: 'lucideUserCircle', label: 'Users', route: 'users' }, - { icon: 'lucideUsers2', label: 'Teams', route: 'teams' } + { icon: 'lucideCircleUser', label: 'Users', route: 'users' }, + { icon: 'lucideUsers', label: 'Teams', route: 'teams' } ]; } diff --git a/webapp/src/app/workspace/teams/table/teams-table.component.html b/webapp/src/app/workspace/teams/table/teams-table.component.html index cffe782b..2af4dce9 100644 --- a/webapp/src/app/workspace/teams/table/teams-table.component.html +++ b/webapp/src/app/workspace/teams/table/teams-table.component.html @@ -129,7 +129,7 @@

Repositories

@@ -147,7 +147,7 @@

Repositories

- + No entries found
diff --git a/webapp/src/app/workspace/teams/table/teams-table.component.ts b/webapp/src/app/workspace/teams/table/teams-table.component.ts index fff8fec3..d46b8d24 100644 --- a/webapp/src/app/workspace/teams/table/teams-table.component.ts +++ b/webapp/src/app/workspace/teams/table/teams-table.component.ts @@ -2,7 +2,7 @@ import { SelectionModel } from '@angular/cdk/collections'; import { Component, TrackByFunction, computed, effect, inject, input, signal } from '@angular/core'; import { toObservable, toSignal } from '@angular/core/rxjs-interop'; import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { lucideArrowUpDown, lucideChevronDown, lucideMoreHorizontal, lucideRotateCw, lucideXOctagon, lucidePlus, lucideCheck, lucideTrash2 } from '@ng-icons/lucide'; +import { lucideArrowUpDown, lucideChevronDown, lucideGripHorizontal, lucideRotateCw, lucideOctagonX, lucidePlus, lucideCheck, lucideTrash2 } from '@ng-icons/lucide'; import { HlmButtonModule } from '@spartan-ng/ui-button-helm'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import { HlmInputDirective } from '@spartan-ng/ui-input-helm'; @@ -65,7 +65,7 @@ const LOADING_TEAMS: TeamInfo[] = [ BrnPopoverTriggerDirective, GithubLabelComponent ], - providers: [provideIcons({ lucideChevronDown, lucideMoreHorizontal, lucideArrowUpDown, lucideRotateCw, lucideXOctagon, lucidePlus, lucideCheck, lucideTrash2 })], + providers: [provideIcons({ lucideChevronDown, lucideGripHorizontal, lucideArrowUpDown, lucideRotateCw, lucideOctagonX, lucidePlus, lucideCheck, lucideTrash2 })], templateUrl: './teams-table.component.html' }) export class WorkspaceTeamsTableComponent { diff --git a/webapp/src/app/workspace/users/table/users-table.component.html b/webapp/src/app/workspace/users/table/users-table.component.html index 2f5e2985..760ef4dd 100644 --- a/webapp/src/app/workspace/users/table/users-table.component.html +++ b/webapp/src/app/workspace/users/table/users-table.component.html @@ -85,7 +85,7 @@ @@ -104,7 +104,7 @@
- + No entries found
diff --git a/webapp/src/app/workspace/users/table/users-table.component.ts b/webapp/src/app/workspace/users/table/users-table.component.ts index 065b9493..8b1b734c 100644 --- a/webapp/src/app/workspace/users/table/users-table.component.ts +++ b/webapp/src/app/workspace/users/table/users-table.component.ts @@ -2,7 +2,7 @@ import { SelectionModel } from '@angular/cdk/collections'; import { Component, TrackByFunction, computed, effect, inject, input, signal } from '@angular/core'; import { toObservable, toSignal } from '@angular/core/rxjs-interop'; import { FormsModule } from '@angular/forms'; -import { lucideArrowUpDown, lucideChevronDown, lucideMoreHorizontal, lucideRotateCw, lucideXOctagon } from '@ng-icons/lucide'; +import { lucideArrowUpDown, lucideChevronDown, lucideGripHorizontal, lucideRotateCw, lucideOctagonX } from '@ng-icons/lucide'; import { HlmButtonModule } from '@spartan-ng/ui-button-helm'; import { HlmCheckboxComponent } from '@spartan-ng/ui-checkbox-helm'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; @@ -73,7 +73,7 @@ const LOADING_DATA: UserTeams[] = [ HlmSkeletonModule, GithubLabelComponent ], - providers: [provideIcons({ lucideChevronDown, lucideMoreHorizontal, lucideArrowUpDown, lucideRotateCw, lucideXOctagon })], + providers: [provideIcons({ lucideChevronDown, lucideGripHorizontal, lucideArrowUpDown, lucideRotateCw, lucideOctagonX })], templateUrl: './users-table.component.html' }) export class WorkspaceUsersTableComponent { diff --git a/webapp/src/libs/ui/ui-accordion-helm/src/index.ts b/webapp/src/libs/ui/ui-accordion-helm/src/index.ts index 7c12342d..d029f963 100644 --- a/webapp/src/libs/ui/ui-accordion-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-accordion-helm/src/index.ts @@ -13,15 +13,15 @@ export * from './lib/hlm-accordion-trigger.directive'; export * from './lib/hlm-accordion.directive'; export const HlmAccordionImports = [ - HlmAccordionDirective, - HlmAccordionItemDirective, - HlmAccordionTriggerDirective, - HlmAccordionIconDirective, - HlmAccordionContentComponent + HlmAccordionDirective, + HlmAccordionItemDirective, + HlmAccordionTriggerDirective, + HlmAccordionIconDirective, + HlmAccordionContentComponent, ] as const; @NgModule({ - imports: [...HlmAccordionImports], - exports: [...HlmAccordionImports] + imports: [...HlmAccordionImports], + exports: [...HlmAccordionImports], }) export class HlmAccordionModule {} diff --git a/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-content.component.ts b/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-content.component.ts index 1c3310d0..52af43b6 100644 --- a/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-content.component.ts +++ b/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-content.component.ts @@ -4,35 +4,35 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-accordion-content', - template: ` -
-

- -

-
- `, - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-accordion-content', + template: ` +
+

+ +

+
+ `, + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { + '[class]': '_computedClass()', + }, }) export class HlmAccordionContentComponent extends BrnAccordionContentComponent { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => { - const gridRows = this.state() === 'open' ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'; - return hlm('text-sm transition-all grid', gridRows, this.userClass()); - }); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => { + const gridRows = this.state() === 'open' ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'; + return hlm('text-sm transition-all grid', gridRows, this.userClass()); + }); - constructor() { - super(); - effect( - () => { - this.setClassToCustomElement('pt-1 pb-4'); - }, - { allowSignalWrites: true } - ); - } + constructor() { + super(); + effect( + () => { + this.setClassToCustomElement('pt-1 pb-4'); + }, + { allowSignalWrites: true }, + ); + } } diff --git a/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-icon.directive.ts b/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-icon.directive.ts index c1110121..fe40686f 100644 --- a/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-icon.directive.ts +++ b/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-icon.directive.ts @@ -1,25 +1,20 @@ -import { Directive, computed, inject, input } from '@angular/core'; +import { Directive, computed, input } from '@angular/core'; import { lucideChevronDown } from '@ng-icons/lucide'; import { hlm } from '@spartan-ng/ui-core'; -import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; +import { provideHlmIconConfig, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'hlm-icon[hlmAccordionIcon], hlm-icon[hlmAccIcon]', - standalone: true, - providers: [provideIcons({ lucideChevronDown })], - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-icon[hlmAccordionIcon], hlm-icon[hlmAccIcon]', + standalone: true, + providers: [provideIcons({ lucideChevronDown }), provideHlmIconConfig({ name: 'lucideChevronDown', size: 'none' })], + host: { + '[class]': '_computedClass()', + }, }) export class HlmAccordionIconDirective { - private readonly _hlmIcon = inject(HlmIconComponent); - - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('inline-block h-4 w-4 transition-transform [animation-duration:200]', this.userClass())); - - constructor() { - this._hlmIcon.size = 'none'; - this._hlmIcon.name = 'lucideChevronDown'; - } + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('inline-block h-4 w-4 transition-transform [animation-duration:200]', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-item.directive.ts b/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-item.directive.ts index a38ab899..e004b673 100644 --- a/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-item.directive.ts +++ b/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-item.directive.ts @@ -4,19 +4,21 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmAccordionItem],brn-accordion-item[hlm],hlm-accordion-item', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [ - { - directive: BrnAccordionItemDirective, - inputs: ['isOpened'] - } - ] + selector: '[hlmAccordionItem],brn-accordion-item[hlm],hlm-accordion-item', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [ + { + directive: BrnAccordionItemDirective, + inputs: ['isOpened'], + }, + ], }) export class HlmAccordionItemDirective { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('flex flex-1 flex-col border-b border-border', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm('flex flex-1 flex-col border-b border-border', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-trigger.directive.ts b/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-trigger.directive.ts index dda45e46..5b3c9a2a 100644 --- a/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-trigger.directive.ts +++ b/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion-trigger.directive.ts @@ -4,20 +4,20 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmAccordionTrigger]', - standalone: true, - host: { - '[style.--tw-ring-offset-shadow]': '"0 0 #000"', - '[class]': '_computedClass()' - }, - hostDirectives: [BrnAccordionTriggerDirective] + selector: '[hlmAccordionTrigger]', + standalone: true, + host: { + '[style.--tw-ring-offset-shadow]': '"0 0 #000"', + '[class]': '_computedClass()', + }, + hostDirectives: [BrnAccordionTriggerDirective], }) export class HlmAccordionTriggerDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'w-full focus-visible:outline-none text-sm focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 flex flex-1 items-center justify-between py-4 px-0.5 font-medium underline-offset-4 hover:underline [&[data-state=open]>[hlmAccordionIcon]]:rotate-180 [&[data-state=open]>[hlmAccIcon]]:rotate-180', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'w-full focus-visible:outline-none text-sm focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 flex flex-1 items-center justify-between py-4 px-0.5 font-medium underline-offset-4 hover:underline [&[data-state=open]>[hlmAccordionIcon]]:rotate-180 [&[data-state=open]>[hlmAccIcon]]:rotate-180', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion.directive.ts b/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion.directive.ts index 77fbf669..71e9517e 100644 --- a/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion.directive.ts +++ b/webapp/src/libs/ui/ui-accordion-helm/src/lib/hlm-accordion.directive.ts @@ -4,16 +4,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmAccordion], hlm-accordion', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [{ directive: BrnAccordionDirective, inputs: ['type', 'dir', 'orientation'] }] + selector: '[hlmAccordion], hlm-accordion', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [{ directive: BrnAccordionDirective, inputs: ['type', 'dir', 'orientation'] }], }) export class HlmAccordionDirective { - private readonly _brn = inject(BrnAccordionDirective); + private readonly _brn = inject(BrnAccordionDirective); - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('flex', this._brn.orientation === 'horizontal' ? 'flex-row' : 'flex-col', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm('flex', this._brn.orientation() === 'horizontal' ? 'flex-row' : 'flex-col', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-alert-helm/src/index.ts b/webapp/src/libs/ui/ui-alert-helm/src/index.ts index d2404d80..33172b42 100644 --- a/webapp/src/libs/ui/ui-alert-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-alert-helm/src/index.ts @@ -10,10 +10,15 @@ export * from './lib/hlm-alert-icon.directive'; export * from './lib/hlm-alert-title.directive'; export * from './lib/hlm-alert.directive'; -export const HlmAlertImports = [HlmAlertDirective, HlmAlertTitleDirective, HlmAlertDescriptionDirective, HlmAlertIconDirective] as const; +export const HlmAlertImports = [ + HlmAlertDirective, + HlmAlertTitleDirective, + HlmAlertDescriptionDirective, + HlmAlertIconDirective, +] as const; @NgModule({ - imports: [...HlmAlertImports], - exports: [...HlmAlertImports] + imports: [...HlmAlertImports], + exports: [...HlmAlertImports], }) export class HlmAlertModule {} diff --git a/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-description.directive.ts b/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-description.directive.ts index e5af04e5..f3dc5575 100644 --- a/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-description.directive.ts +++ b/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-description.directive.ts @@ -4,18 +4,18 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const alertDescriptionVariants = cva('text-sm [&_p]:leading-relaxed', { - variants: {} + variants: {}, }); export type AlertDescriptionVariants = VariantProps; @Directive({ - selector: '[hlmAlertDesc],[hlmAlertDescription]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmAlertDesc],[hlmAlertDescription]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmAlertDescriptionDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(alertDescriptionVariants(), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm(alertDescriptionVariants(), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-icon.directive.ts b/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-icon.directive.ts index 65aa5238..e949ddcf 100644 --- a/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-icon.directive.ts +++ b/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-icon.directive.ts @@ -1,15 +1,9 @@ -import { Directive, inject } from '@angular/core'; -import { HlmIconComponent } from '@spartan-ng/ui-icon-helm'; +import { Directive } from '@angular/core'; +import { provideHlmIconConfig } from '@spartan-ng/ui-icon-helm'; @Directive({ - selector: '[hlmAlertIcon]', - standalone: true + selector: '[hlmAlertIcon]', + standalone: true, + providers: [provideHlmIconConfig({ size: 'sm' })], }) -export class HlmAlertIconDirective { - private _icon = inject(HlmIconComponent, { host: true, optional: true }); - - constructor() { - if (!this._icon) return; - this._icon.size = 'sm'; - } -} +export class HlmAlertIconDirective {} diff --git a/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-title.directive.ts b/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-title.directive.ts index 12e9ca15..6425d7d1 100644 --- a/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-title.directive.ts +++ b/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert-title.directive.ts @@ -4,18 +4,18 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const alertTitleVariants = cva('mb-1 font-medium leading-none tracking-tight', { - variants: {} + variants: {}, }); export type AlertTitleVariants = VariantProps; @Directive({ - selector: '[hlmAlertTitle]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmAlertTitle]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmAlertTitleDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(alertTitleVariants(), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm(alertTitleVariants(), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert.directive.ts b/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert.directive.ts index 1d65f55a..539f33ba 100644 --- a/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert.directive.ts +++ b/webapp/src/libs/ui/ui-alert-helm/src/lib/hlm-alert.directive.ts @@ -1,39 +1,36 @@ -import { Directive, Input, computed, input, signal } from '@angular/core'; +import { Directive, computed, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const alertVariants = cva( - 'relative w-full rounded-lg border border-border p-4 [&>[hlmAlertIcon]]:absolute [&>[hlmAlertIcon]]:text-foreground [&>[hlmAlertIcon]]:left-4 [&>[hlmAlertIcon]]:top-4 [&>[hlmAlertIcon]+div]:translate-y-[-3px] [&>[hlmAlertIcon]~*]:pl-7', - { - variants: { - variant: { - default: 'bg-background text-foreground', - destructive: 'text-destructive border-destructive/50 dark:border-destructive [&>[hlmAlertIcon]]:text-destructive text-destructive' - } - }, - defaultVariants: { - variant: 'default' - } - } + 'relative w-full rounded-lg border border-border p-4 [&>[hlmAlertIcon]]:absolute [&>[hlmAlertIcon]]:text-foreground [&>[hlmAlertIcon]]:left-4 [&>[hlmAlertIcon]]:top-4 [&>[hlmAlertIcon]+div]:translate-y-[-3px] [&>[hlmAlertIcon]~*]:pl-7', + { + variants: { + variant: { + default: 'bg-background text-foreground', + destructive: + 'text-destructive border-destructive/50 dark:border-destructive [&>[hlmAlertIcon]]:text-destructive', + }, + }, + defaultVariants: { + variant: 'default', + }, + }, ); export type AlertVariants = VariantProps; @Directive({ - selector: '[hlmAlert]', - standalone: true, - host: { - role: 'alert', - '[class]': '_computedClass()' - } + selector: '[hlmAlert]', + standalone: true, + host: { + role: 'alert', + '[class]': '_computedClass()', + }, }) export class HlmAlertDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(alertVariants({ variant: this._variant() }), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm(alertVariants({ variant: this.variant() }), this.userClass())); - private readonly _variant = signal('default'); - @Input() - set variant(variant: AlertVariants['variant']) { - this._variant.set(variant); - } + public readonly variant = input('default'); } diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/index.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/index.ts index 3d92e83f..6d2bf9f8 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/index.ts @@ -21,19 +21,19 @@ export * from './lib/hlm-alert-dialog-title.directive'; export * from './lib/hlm-alert-dialog.component'; export const HlmAlertDialogImports = [ - HlmAlertDialogContentComponent, - HlmAlertDialogDescriptionDirective, - HlmAlertDialogFooterComponent, - HlmAlertDialogHeaderComponent, - HlmAlertDialogOverlayDirective, - HlmAlertDialogTitleDirective, - HlmAlertDialogActionButtonDirective, - HlmAlertDialogCancelButtonDirective, - HlmAlertDialogComponent + HlmAlertDialogContentComponent, + HlmAlertDialogDescriptionDirective, + HlmAlertDialogFooterComponent, + HlmAlertDialogHeaderComponent, + HlmAlertDialogOverlayDirective, + HlmAlertDialogTitleDirective, + HlmAlertDialogActionButtonDirective, + HlmAlertDialogCancelButtonDirective, + HlmAlertDialogComponent, ] as const; @NgModule({ - imports: [...HlmAlertDialogImports], - exports: [...HlmAlertDialogImports] + imports: [...HlmAlertDialogImports], + exports: [...HlmAlertDialogImports], }) export class HlmAlertDialogModule {} diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-action-button.directive.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-action-button.directive.ts index 4146e5f5..836a11e8 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-action-button.directive.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-action-button.directive.ts @@ -2,8 +2,8 @@ import { Directive } from '@angular/core'; import { HlmButtonDirective } from '@spartan-ng/ui-button-helm'; @Directive({ - selector: 'button[hlmAlertDialogAction]', - standalone: true, - hostDirectives: [HlmButtonDirective] + selector: 'button[hlmAlertDialogAction]', + standalone: true, + hostDirectives: [HlmButtonDirective], }) export class HlmAlertDialogActionButtonDirective {} diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-cancel-button.directive.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-cancel-button.directive.ts index 3334b104..f4702d3d 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-cancel-button.directive.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-cancel-button.directive.ts @@ -1,23 +1,18 @@ -import { Directive, computed, inject, input } from '@angular/core'; -import { HlmButtonDirective } from '@spartan-ng/ui-button-helm'; +import { Directive, computed, input } from '@angular/core'; +import { HlmButtonDirective, provideBrnButtonConfig } from '@spartan-ng/ui-button-helm'; import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'button[hlmAlertDialogCancel]', - standalone: true, - hostDirectives: [HlmButtonDirective], - host: { - '[class]': '_computedClass()' - } + selector: 'button[hlmAlertDialogCancel]', + standalone: true, + hostDirectives: [HlmButtonDirective], + providers: [provideBrnButtonConfig({ variant: 'outline' })], + host: { + '[class]': '_computedClass()', + }, }) export class HlmAlertDialogCancelButtonDirective { - private readonly _hlmBtn = inject(HlmButtonDirective, { host: true }); - - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('mt-2 sm:mt-0', this.userClass())); - - constructor() { - this._hlmBtn.variant = 'outline'; - } + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm('mt-2 sm:mt-0', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-content.component.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-content.component.ts index 5a1008ff..35787f10 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-content.component.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-content.component.ts @@ -3,25 +3,27 @@ import { hlm, injectExposesStateProvider } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-alert-dialog-content', - standalone: true, - host: { - '[class]': '_computedClass()', - '[attr.data-state]': 'state()' - }, - template: ` `, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None + selector: 'hlm-alert-dialog-content', + standalone: true, + host: { + '[class]': '_computedClass()', + '[attr.data-state]': 'state()', + }, + template: ` + + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, }) export class HlmAlertDialogContentComponent { - private readonly _stateProvider = injectExposesStateProvider({ optional: true, host: true }); - public readonly state = this._stateProvider?.state ?? signal('closed'); + private readonly _stateProvider = injectExposesStateProvider({ optional: true, host: true }); + public readonly state = this._stateProvider?.state ?? signal('closed'); - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => - hlm( - 'relative grid w-full max-w-lg gap-4 border-border border bg-background p-6 shadow-lg [animation-duration:200] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%] sm:rounded-lg md:w-full', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm( + 'relative grid w-full max-w-lg gap-4 border-border border bg-background p-6 shadow-lg [animation-duration:200] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%] sm:rounded-lg md:w-full', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-description.directive.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-description.directive.ts index 957699ba..dd955984 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-description.directive.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-description.directive.ts @@ -4,14 +4,14 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmAlertDialogDescription]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnAlertDialogDescriptionDirective] + selector: '[hlmAlertDialogDescription]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnAlertDialogDescriptionDirective], }) export class HlmAlertDialogDescriptionDirective { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('text-sm text-muted-foreground', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm('text-sm text-muted-foreground', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-footer.component.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-footer.component.ts index 7224f4af..c3541cb8 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-footer.component.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-footer.component.ts @@ -3,16 +3,20 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-alert-dialog-footer', - standalone: true, - template: ` `, - host: { - '[class]': '_computedClass()' - }, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None + selector: 'hlm-alert-dialog-footer', + standalone: true, + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, }) export class HlmAlertDialogFooterComponent { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-header.component.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-header.component.ts index a36079cf..07799f4c 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-header.component.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-header.component.ts @@ -3,16 +3,20 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-alert-dialog-header', - standalone: true, - template: ` `, - host: { - '[class]': '_computedClass()' - }, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None + selector: 'hlm-alert-dialog-header', + standalone: true, + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, }) export class HlmAlertDialogHeaderComponent { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('flex flex-col space-y-2 text-center sm:text-left', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm('flex flex-col space-y-2 text-center sm:text-left', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-overlay.directive.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-overlay.directive.ts index 1435d55f..d997b579 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-overlay.directive.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-overlay.directive.ts @@ -3,21 +3,21 @@ import { hlm, injectCustomClassSettable } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmAlertDialogOverlay],brn-alert-dialog-overlay[hlm]', - standalone: true + selector: '[hlmAlertDialogOverlay],brn-alert-dialog-overlay[hlm]', + standalone: true, }) export class HlmAlertDialogOverlayDirective { - private readonly _classSettable = injectCustomClassSettable({ optional: true, host: true }); + private readonly _classSettable = injectCustomClassSettable({ optional: true, host: true }); - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => - hlm( - 'bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm( + 'bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', + this.userClass(), + ), + ); - constructor() { - effect(() => this._classSettable?.setClassToCustomElement(this._computedClass())); - } + constructor() { + effect(() => this._classSettable?.setClassToCustomElement(this._computedClass())); + } } diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-title.directive.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-title.directive.ts index d577bfa2..8e3cc595 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-title.directive.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog-title.directive.ts @@ -4,14 +4,14 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmAlertDialogTitle]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnAlertDialogTitleDirective] + selector: '[hlmAlertDialogTitle]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnAlertDialogTitleDirective], }) export class HlmAlertDialogTitleDirective { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('text-lg font-semibold', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm('text-lg font-semibold', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog.component.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog.component.ts index 02a9c3d2..272fbcfe 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog.component.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog.component.ts @@ -4,26 +4,26 @@ import { BrnDialogComponent } from '@spartan-ng/ui-dialog-brain'; import { HlmAlertDialogOverlayDirective } from './hlm-alert-dialog-overlay.directive'; @Component({ - selector: 'hlm-alert-dialog', - standalone: true, - template: ` - - - `, - providers: [ - { - provide: BrnDialogComponent, - useExisting: forwardRef(() => HlmAlertDialogComponent) - } - ], - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - exportAs: 'hlmAlertDialog', - imports: [BrnAlertDialogOverlayComponent, HlmAlertDialogOverlayDirective] + selector: 'hlm-alert-dialog', + standalone: true, + template: ` + + + `, + providers: [ + { + provide: BrnDialogComponent, + useExisting: forwardRef(() => HlmAlertDialogComponent), + }, + ], + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + exportAs: 'hlmAlertDialog', + imports: [BrnAlertDialogOverlayComponent, HlmAlertDialogOverlayDirective], }) export class HlmAlertDialogComponent extends BrnAlertDialogComponent { - constructor() { - super(); - this.closeDelay = 100; - } + constructor() { + super(); + this.closeDelay = 100; + } } diff --git a/webapp/src/libs/ui/ui-aspectratio-helm/src/index.ts b/webapp/src/libs/ui/ui-aspectratio-helm/src/index.ts index 2bd4cd7a..e7c2b300 100644 --- a/webapp/src/libs/ui/ui-aspectratio-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-aspectratio-helm/src/index.ts @@ -4,7 +4,7 @@ import { HlmAspectRatioDirective } from './lib/helm-aspect-ratio.directive'; export * from './lib/helm-aspect-ratio.directive'; @NgModule({ - imports: [HlmAspectRatioDirective], - exports: [HlmAspectRatioDirective] + imports: [HlmAspectRatioDirective], + exports: [HlmAspectRatioDirective], }) export class HlmAspectRatioModule {} diff --git a/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.spec.ts b/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.spec.ts new file mode 100644 index 00000000..a7ada993 --- /dev/null +++ b/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.spec.ts @@ -0,0 +1,74 @@ +import { Component } from '@angular/core'; +import { type ComponentFixture, TestBed } from '@angular/core/testing'; +import { HlmAspectRatioDirective } from './helm-aspect-ratio.directive'; + +@Component({ + selector: 'hlm-mock', + standalone: true, + imports: [HlmAspectRatioDirective], + template: ` +
+ Sample image +
+ `, +}) +class MockComponent { + public ratio: number | undefined = 16 / 9; +} + +describe('HelmAspectRatioDirective', () => { + let component: MockComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + fixture = TestBed.createComponent(MockComponent); + component = fixture.componentInstance; + }); + + it('should compile', () => { + expect(component).toBeTruthy(); + }); + + it('should show the image', () => { + fixture.detectChanges(); + const img = fixture.nativeElement.querySelector('img'); + expect(img).toBeTruthy(); + }); + + it('should have the correct aspect ratio', () => { + fixture.detectChanges(); + const div = fixture.nativeElement.querySelector('div'); + expect(div.style.paddingBottom).toEqual(`${100 / (component.ratio || 1)}%`); + }); + + it('should default to an aspect ratio of 1', () => { + component.ratio = undefined; + fixture.detectChanges(); + const div = fixture.nativeElement.querySelector('div'); + expect(div.style.paddingBottom).toEqual('100%'); + }); + + it('should fallback to an aspect ratio of 1 if the ratio is 0', () => { + component.ratio = 0; + fixture.detectChanges(); + const div = fixture.nativeElement.querySelector('div'); + expect(div.style.paddingBottom).toEqual('100%'); + }); + + it('should fallback to an aspect ratio of 1 if the ratio is negative', () => { + component.ratio = -1; + fixture.detectChanges(); + const div = fixture.nativeElement.querySelector('div'); + expect(div.style.paddingBottom).toEqual('100%'); + }); + + it('should add the correct styles to the image', () => { + fixture.detectChanges(); + + const img = fixture.nativeElement.querySelector('img') as HTMLImageElement; + expect(img.classList.toString()).toBe('absolute w-full h-full object-cover'); + }); +}); diff --git a/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.ts b/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.ts index a6ea90af..ffcf08a1 100644 --- a/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.ts +++ b/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.ts @@ -1,46 +1,44 @@ import { type NumberInput, coerceNumberProperty } from '@angular/cdk/coercion'; -import { type AfterViewInit, Directive, ElementRef, Input, computed, inject, input, signal } from '@angular/core'; +import { type AfterViewInit, Directive, ElementRef, computed, inject, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; const parseDividedString = (value: NumberInput): NumberInput => { - if (typeof value !== 'string' || !value.includes('/')) return value; - return value - .split('/') - .map((v) => Number.parseInt(v, 10)) - .reduce((a, b) => a / b); + if (typeof value !== 'string' || !value.includes('/')) return value; + return value + .split('/') + .map((v) => Number.parseInt(v, 10)) + .reduce((a, b) => a / b); }; @Directive({ - selector: '[hlmAspectRatio]', - standalone: true, - host: { - '[class]': '_computedClass()', - '[style.padding-bottom]': '_computedPaddingBottom()' - } + selector: '[hlmAspectRatio]', + standalone: true, + host: { + '[class]': '_computedClass()', + '[style.padding-bottom]': '_computedPaddingBottom()', + }, }) export class HlmAspectRatioDirective implements AfterViewInit { - private readonly _ratio = signal(1); - private readonly _el: HTMLElement = inject(ElementRef).nativeElement; + private readonly _el = inject>(ElementRef).nativeElement; - protected readonly _computedPaddingBottom = computed(() => { - return `${100 / this._ratio()}%`; - }); + public readonly ratio = input(1, { + alias: 'hlmAspectRatio', + transform: (value: NumberInput) => { + const coerced = coerceNumberProperty(parseDividedString(value)); + return coerced <= 0 ? 1 : coerced; + }, + }); + protected readonly _computedPaddingBottom = computed(() => `${100 / this.ratio()}%`); - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('relative w-full', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm('relative w-full', this.userClass())); - @Input() - set hlmAspectRatio(value: NumberInput) { - const coerced = coerceNumberProperty(parseDividedString(value)); - this._ratio.set(coerced <= 0 ? 1 : coerced); - } - - ngAfterViewInit() { - // support delayed addition of image to dom - const child = this._el.firstElementChild; - if (child) { - child.classList.add('absolute', 'w-full', 'h-full', 'object-cover'); - } - } + ngAfterViewInit() { + // support delayed addition of image to dom + const child = this._el.firstElementChild; + if (child) { + child.classList.add('absolute', 'w-full', 'h-full', 'object-cover'); + } + } } diff --git a/webapp/src/libs/ui/ui-avatar-helm/src/index.ts b/webapp/src/libs/ui/ui-avatar-helm/src/index.ts index e391b196..d6ecc6f5 100644 --- a/webapp/src/libs/ui/ui-avatar-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-avatar-helm/src/index.ts @@ -11,7 +11,7 @@ export * from './lib/image'; export const HlmAvatarImports = [HlmAvatarFallbackDirective, HlmAvatarImageDirective, HlmAvatarComponent] as const; @NgModule({ - imports: [...HlmAvatarImports], - exports: [...HlmAvatarImports] + imports: [...HlmAvatarImports], + exports: [...HlmAvatarImports], }) export class HlmAvatarModule {} diff --git a/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.spec.ts b/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.spec.ts new file mode 100644 index 00000000..a774d54b --- /dev/null +++ b/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.spec.ts @@ -0,0 +1,70 @@ +import { Component, PLATFORM_ID } from '@angular/core'; +import { type ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; +import { hexColorFor, isBright } from '@spartan-ng/ui-avatar-brain'; +import { HlmAvatarFallbackDirective } from './hlm-avatar-fallback.directive'; + +@Component({ + selector: 'hlm-mock', + standalone: true, + imports: [HlmAvatarFallbackDirective], + template: ` + fallback2 + `, +}) +class HlmMockComponent { + public userCls = ''; + public autoColor = false; +} + +describe('HlmAvatarFallbackDirective', () => { + let component: HlmMockComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + fixture = TestBed.overrideProvider(PLATFORM_ID, { useValue: 'browser' }).createComponent(HlmMockComponent); + component = fixture.componentInstance; + }); + + it('should compile', () => { + expect(component).toBeTruthy(); + }); + + it('should contain the default classes if no inputs are provided', () => { + fixture.detectChanges(); + expect(fixture.nativeElement.querySelector('span').className).toBe( + 'bg-muted flex h-full items-center justify-center rounded-full w-full', + ); + }); + + it('should add any user defined classes', async () => { + component.userCls = 'test-class'; + + fixture.detectChanges(); + expect(fixture.nativeElement.querySelector('span').className).toContain('test-class'); + }); + it('should merge bg-destructive correctly when set as user defined class, therefore removing bg-muted', async () => { + component.userCls = 'bg-destructive '; + + fixture.detectChanges(); + expect(fixture.nativeElement.querySelector('span').className).toContain('bg-destructive'); + }); + + describe('autoColor', () => { + beforeEach(() => { + component.autoColor = true; + fixture.detectChanges(); + }); + + it('should remove the bg-muted class from the component', fakeAsync(() => { + fixture.detectChanges(); + expect(fixture.nativeElement.querySelector('span').className).not.toContain('bg-muted'); + })); + + it('should remove add a text color class and hex backgroundColor style depending on its content', () => { + const hex = hexColorFor('fallback2'); + const textCls = isBright(hex) ? 'text-black' : 'text-white'; + expect(fixture.nativeElement.querySelector('span').className).toContain(textCls); + expect(fixture.nativeElement.querySelector('span').style.backgroundColor).toBe('rgb(144, 53, 149)'); + }); + }); +}); diff --git a/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.ts b/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.ts index 0c2b8136..0a261a7f 100644 --- a/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.ts +++ b/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.ts @@ -3,34 +3,38 @@ import { BrnAvatarFallbackDirective, hexColorFor, isBright } from '@spartan-ng/u import { hlm } from '@spartan-ng/ui-core'; @Directive({ - selector: '[hlmAvatarFallback]', - standalone: true, - exportAs: 'avatarFallback', - hostDirectives: [ - { - directive: BrnAvatarFallbackDirective, - inputs: ['class:class', 'autoColor:autoColor'] - } - ], - host: { - '[class]': '_computedClass()', - '[style.backgroundColor]': "_hex() || ''" - } + selector: '[hlmAvatarFallback]', + standalone: true, + exportAs: 'avatarFallback', + hostDirectives: [ + { + directive: BrnAvatarFallbackDirective, + inputs: ['class:class', 'autoColor:autoColor'], + }, + ], + host: { + '[class]': '_computedClass()', + '[style.backgroundColor]': "_hex() || ''", + }, }) export class HlmAvatarFallbackDirective { - private readonly _brn = inject(BrnAvatarFallbackDirective); - private readonly _hex = computed(() => { - if (!this._brn.useAutoColor() || !this._brn.getTextContent()) return; - return hexColorFor(this._brn.getTextContent()); - }); + private readonly _brn = inject(BrnAvatarFallbackDirective); + private readonly _hex = computed(() => { + if (!this._brn.autoColor() || !this._brn.getTextContent()) return; + return hexColorFor(this._brn.getTextContent()); + }); - private readonly _autoColorTextCls = computed(() => { - const hex = this._hex(); - if (!hex) return; - return `${isBright(hex) ? 'text-black' : 'text-white'}`; - }); + private readonly _autoColorTextCls = computed(() => { + const hex = this._hex(); + if (!hex) return; + return `${isBright(hex) ? 'text-black' : 'text-white'}`; + }); - protected readonly _computedClass = computed(() => { - return hlm('flex h-full w-full items-center justify-center rounded-full', this._autoColorTextCls() ?? 'bg-muted', this._brn?.userCls()); - }); + protected readonly _computedClass = computed(() => { + return hlm( + 'flex h-full w-full items-center justify-center rounded-full', + this._autoColorTextCls() ?? 'bg-muted', + this._brn?.userClass(), + ); + }); } diff --git a/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.spec.ts b/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.spec.ts new file mode 100644 index 00000000..aa9ed2c3 --- /dev/null +++ b/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.spec.ts @@ -0,0 +1,65 @@ +import { Component, Input } from '@angular/core'; +import { type ComponentFixture, TestBed } from '@angular/core/testing'; +import { BrnAvatarFallbackDirective, BrnAvatarImageDirective } from '@spartan-ng/ui-avatar-brain'; +import { HlmAvatarComponent } from './hlm-avatar.component'; + +@Component({ + selector: 'hlm-mock', + imports: [BrnAvatarImageDirective, BrnAvatarFallbackDirective, HlmAvatarComponent], + template: ` + + fallback + + `, + standalone: true, +}) +class MockComponent { + @Input() public class = ''; +} + +describe('HlmAvatarComponent', () => { + let component: HlmAvatarComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + fixture = TestBed.createComponent(HlmAvatarComponent); + component = fixture.componentInstance; + }); + + it('should compile', () => { + expect(component).toBeTruthy(); + }); + + it('should add the default classes if no inputs are provided', () => { + fixture.detectChanges(); + expect(fixture.nativeElement.className).toBe('flex h-10 overflow-hidden relative rounded-full shrink-0 w-10'); + }); + + it('should add any user defined classes', () => { + const mockFixture = TestBed.createComponent(MockComponent); + mockFixture.componentRef.setInput('class', 'test-class'); + mockFixture.detectChanges(); + const avatar = mockFixture.nativeElement.querySelector('hlm-avatar'); + expect(avatar.className).toContain('test-class'); + }); + + it('should change the size when the variant is changed', () => { + fixture.componentRef.setInput('variant', 'small'); + fixture.detectChanges(); + expect(fixture.nativeElement.className).toContain('h-6'); + expect(fixture.nativeElement.className).toContain('w-6'); + expect(fixture.nativeElement.className).toContain('text-xs'); + + fixture.componentRef.setInput('variant', 'large'); + fixture.detectChanges(); + expect(fixture.nativeElement.className).toContain('h-14'); + expect(fixture.nativeElement.className).toContain('w-14'); + expect(fixture.nativeElement.className).toContain('text-lg'); + }); + + it('should support brn directives', () => { + const mockFixture = TestBed.createComponent(MockComponent); + mockFixture.detectChanges(); + expect(mockFixture.nativeElement.querySelector('span').textContent).toBe('fallback'); + }); +}); diff --git a/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.ts b/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.ts index afefdb0d..26dc05d2 100644 --- a/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.ts +++ b/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.ts @@ -1,48 +1,46 @@ -import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, computed, input, signal } from '@angular/core'; +import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core'; import { BrnAvatarComponent } from '@spartan-ng/ui-avatar-brain'; import { hlm } from '@spartan-ng/ui-core'; import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const avatarVariants = cva('relative flex shrink-0 overflow-hidden rounded-full', { - variants: { - variant: { - small: 'h-6 w-6 text-xs', - medium: 'h-10 w-10', - large: 'h-14 w-14 text-lg', + variants: { + variant: { + small: 'h-6 w-6 text-xs', + medium: 'h-10 w-10', + large: 'h-14 w-14 text-lg', extralarge: 'h-32 w-32 lg:h-40 lg:w-40 text-xl md:text-3xl' - } - }, - defaultVariants: { - variant: 'medium' - } + }, + }, + defaultVariants: { + variant: 'medium', + }, }); -type AvatarVariants = VariantProps; +export type AvatarVariants = VariantProps; @Component({ - selector: 'hlm-avatar', - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - standalone: true, - host: { - '[class]': '_computedClass()' - }, - template: ` - @if (image?.canShow()) { - - } @else { - - } - ` + selector: 'hlm-avatar', + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + standalone: true, + host: { + '[class]': '_computedClass()', + }, + template: ` + @if (image()?.canShow()) { + + } @else { + + } + `, }) export class HlmAvatarComponent extends BrnAvatarComponent { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm(avatarVariants({ variant: this._variant() }), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + public readonly variant = input('medium'); - private readonly _variant = signal('medium'); - @Input() - set variant(variant: AvatarVariants['variant']) { - this._variant.set(variant); - } + protected readonly _computedClass = computed(() => + hlm(avatarVariants({ variant: this.variant() }), this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.spec.ts b/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.spec.ts new file mode 100644 index 00000000..7a83f816 --- /dev/null +++ b/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.spec.ts @@ -0,0 +1,44 @@ +import { Component } from '@angular/core'; +import { type ComponentFixture, TestBed } from '@angular/core/testing'; +import { HlmAvatarImageDirective } from './hlm-avatar-image.directive'; + +@Component({ + selector: 'hlm-mock', + standalone: true, + imports: [HlmAvatarImageDirective], + template: ` + Avatar image + `, +}) +class HlmMockComponent { + public userCls = ''; +} + +describe('HlmAvatarImageDirective', () => { + let component: HlmMockComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + fixture = TestBed.createComponent(HlmMockComponent); + component = fixture.componentInstance; + }); + + it('should compile', () => { + expect(component).toBeTruthy(); + }); + + it('should add the default classes if no inputs are provided', () => { + fixture.detectChanges(); + expect(fixture.nativeElement.querySelector('img').className).toBe('aspect-square h-full object-cover w-full'); + }); + + it('should add any user defined classes', async () => { + component.userCls = 'test-class'; + fixture.detectChanges(); + + // fallback uses Promise.resolve().then() so we need to wait for the next tick + setTimeout(() => { + expect(fixture.nativeElement.querySelector('img').className).toContain('test-class'); + }); + }); +}); diff --git a/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.ts b/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.ts index 81ee8d75..09e91574 100644 --- a/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.ts +++ b/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.ts @@ -4,17 +4,17 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'img[hlmAvatarImage]', - standalone: true, - exportAs: 'avatarImage', - hostDirectives: [BrnAvatarImageDirective], - host: { - '[class]': '_computedClass()' - } + selector: 'img[hlmAvatarImage]', + standalone: true, + exportAs: 'avatarImage', + hostDirectives: [BrnAvatarImageDirective], + host: { + '[class]': '_computedClass()', + }, }) export class HlmAvatarImageDirective { - canShow = inject(BrnAvatarImageDirective).canShow; + public canShow = inject(BrnAvatarImageDirective).canShow; - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('aspect-square object-cover h-full w-full', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('aspect-square object-cover h-full w-full', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-badge-helm/src/index.ts b/webapp/src/libs/ui/ui-badge-helm/src/index.ts index 8823e8ab..ad60d353 100644 --- a/webapp/src/libs/ui/ui-badge-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-badge-helm/src/index.ts @@ -4,7 +4,7 @@ import { HlmBadgeDirective } from './lib/hlm-badge.directive'; export * from './lib/hlm-badge.directive'; @NgModule({ - imports: [HlmBadgeDirective], - exports: [HlmBadgeDirective] + imports: [HlmBadgeDirective], + exports: [HlmBadgeDirective], }) export class HlmBadgeModule {} diff --git a/webapp/src/libs/ui/ui-badge-helm/src/lib/hlm-badge.directive.ts b/webapp/src/libs/ui/ui-badge-helm/src/lib/hlm-badge.directive.ts index 9f3ca667..eae034b6 100644 --- a/webapp/src/libs/ui/ui-badge-helm/src/lib/hlm-badge.directive.ts +++ b/webapp/src/libs/ui/ui-badge-helm/src/lib/hlm-badge.directive.ts @@ -1,76 +1,65 @@ -import { Directive, Input, booleanAttribute, computed, input, signal } from '@angular/core'; +import type { BooleanInput } from '@angular/cdk/coercion'; +import { Directive, booleanAttribute, computed, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const badgeVariants = cva( - 'inline-flex items-center border rounded-full px-2.5 py-0.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', - { - variants: { - variant: { - default: 'bg-primary border-transparent text-primary-foreground', - secondary: 'bg-secondary border-transparent text-secondary-foreground', - destructive: 'bg-destructive border-transparent text-destructive-foreground', - outline: 'text-foreground border-border' - }, - size: { - default: 'text-xs', - lg: 'text-sm' - }, - static: { true: '', false: '' } - }, - compoundVariants: [ - { - variant: 'default', - static: false, - class: 'hover:bg-primary/80' - }, - { - variant: 'secondary', - static: false, - class: 'hover:bg-secondary/80' - }, - { - variant: 'destructive', - static: false, - class: 'hover:bg-destructive/80' - } - ], - defaultVariants: { - variant: 'default', - size: 'default', - static: false - } - } + 'inline-flex items-center border rounded-full px-2.5 py-0.5 font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', + { + variants: { + variant: { + default: 'bg-primary border-transparent text-primary-foreground', + secondary: 'bg-secondary border-transparent text-secondary-foreground', + destructive: 'bg-destructive border-transparent text-destructive-foreground', + outline: 'text-foreground border-border', + }, + size: { + default: 'text-xs', + lg: 'text-sm', + }, + static: { true: '', false: '' }, + }, + compoundVariants: [ + { + variant: 'default', + static: false, + class: 'hover:bg-primary/80', + }, + { + variant: 'secondary', + static: false, + class: 'hover:bg-secondary/80', + }, + { + variant: 'destructive', + static: false, + class: 'hover:bg-destructive/80', + }, + ], + defaultVariants: { + variant: 'default', + size: 'default', + static: false, + }, + }, ); -type badgeVariants = VariantProps; +export type BadgeVariants = VariantProps; @Directive({ - selector: '[hlmBadge]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmBadge]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmBadgeDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(badgeVariants({ variant: this._variant(), size: this._size(), static: this._static() }), this.userClass())); + protected readonly _computedClass = computed(() => + hlm(badgeVariants({ variant: this.variant(), size: this.size(), static: this.static() }), this.userClass()), + ); - private readonly _variant = signal('default'); - @Input() - set variant(variant: badgeVariants['variant']) { - this._variant.set(variant); - } - - private readonly _static = signal(false); - @Input({ transform: booleanAttribute }) - set static(value: badgeVariants['static']) { - this._static.set(value); - } - - private readonly _size = signal('default'); - @Input() - set size(size: badgeVariants['size']) { - this._size.set(size); - } + public readonly userClass = input('', { alias: 'class' }); + public readonly variant = input('default'); + public readonly static = input(false, { transform: booleanAttribute }); + public readonly size = input('default'); } diff --git a/webapp/src/libs/ui/ui-breadcrumb-helm/src/index.ts b/webapp/src/libs/ui/ui-breadcrumb-helm/src/index.ts new file mode 100644 index 00000000..aa5e9ed8 --- /dev/null +++ b/webapp/src/libs/ui/ui-breadcrumb-helm/src/index.ts @@ -0,0 +1,32 @@ +import { NgModule } from '@angular/core'; +import { HlmBreadcrumbEllipsisComponent } from './lib/breadcrumb-ellipsis.component'; +import { HlmBreadcrumbItemDirective } from './lib/breadcrumb-item.directive'; +import { HlmBreadcrumbLinkDirective } from './lib/breadcrumb-link.directive'; +import { HlmBreadcrumbListDirective } from './lib/breadcrumb-list.directive'; +import { HlmBreadcrumbPageDirective } from './lib/breadcrumb-page.directive'; +import { HlmBreadcrumbSeparatorComponent } from './lib/breadcrumb-separator.component'; +import { HlmBreadcrumbDirective } from './lib/breadcrumb.directive'; + +export * from './lib/breadcrumb-ellipsis.component'; +export * from './lib/breadcrumb-item.directive'; +export * from './lib/breadcrumb-link.directive'; +export * from './lib/breadcrumb-list.directive'; +export * from './lib/breadcrumb-page.directive'; +export * from './lib/breadcrumb-separator.component'; +export * from './lib/breadcrumb.directive'; + +export const HlmBreadCrumbImports = [ + HlmBreadcrumbDirective, + HlmBreadcrumbEllipsisComponent, + HlmBreadcrumbSeparatorComponent, + HlmBreadcrumbItemDirective, + HlmBreadcrumbLinkDirective, + HlmBreadcrumbPageDirective, + HlmBreadcrumbListDirective, +] as const; + +@NgModule({ + imports: [...HlmBreadCrumbImports], + exports: [...HlmBreadCrumbImports], +}) +export class HlmBreadCrumbModule {} diff --git a/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-ellipsis.component.ts b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-ellipsis.component.ts new file mode 100644 index 00000000..24a52c39 --- /dev/null +++ b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-ellipsis.component.ts @@ -0,0 +1,23 @@ +import { Component, computed, input } from '@angular/core'; +import { lucideEllipsis } from '@ng-icons/lucide'; +import { hlm } from '@spartan-ng/ui-core'; +import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; +import type { ClassValue } from 'clsx'; + +@Component({ + selector: 'hlm-breadcrumb-ellipsis', + standalone: true, + imports: [HlmIconComponent], + providers: [provideIcons({ lucideEllipsis })], + template: ` + + `, +}) +export class HlmBreadcrumbEllipsisComponent { + public readonly userClass = input('', { alias: 'class' }); + + protected readonly _computedClass = computed(() => hlm('flex h-9 w-9 items-center justify-center', this.userClass())); +} diff --git a/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-item.directive.ts b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-item.directive.ts new file mode 100644 index 00000000..e9ebca5e --- /dev/null +++ b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-item.directive.ts @@ -0,0 +1,16 @@ +import { Directive, computed, input } from '@angular/core'; +import { hlm } from '@spartan-ng/ui-core'; +import type { ClassValue } from 'clsx'; + +@Directive({ + selector: '[hlmBreadcrumbItem]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, +}) +export class HlmBreadcrumbItemDirective { + public readonly userClass = input('', { alias: 'class' }); + + protected readonly _computedClass = computed(() => hlm('inline-flex items-center gap-1.5', this.userClass())); +} diff --git a/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-link.directive.ts b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-link.directive.ts new file mode 100644 index 00000000..8df593b2 --- /dev/null +++ b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-link.directive.ts @@ -0,0 +1,36 @@ +import { Directive, computed, input } from '@angular/core'; +import { RouterLink } from '@angular/router'; +import { hlm } from '@spartan-ng/ui-core'; +import type { ClassValue } from 'clsx'; + +@Directive({ + selector: '[hlmBreadcrumbLink]', + standalone: true, + hostDirectives: [ + { + directive: RouterLink, + inputs: [ + 'target', + 'queryParams', + 'fragment', + 'queryParamsHandling', + 'state', + 'info', + 'relativeTo', + 'preserveFragment', + 'skipLocationChange', + 'replaceUrl', + 'routerLink: link', + ], + }, + ], + host: { + '[class]': '_computedClass()', + }, +}) +export class HlmBreadcrumbLinkDirective { + public readonly userClass = input('', { alias: 'class' }); + public readonly link = input(); + + protected readonly _computedClass = computed(() => hlm('transition-colors hover:text-foreground', this.userClass())); +} diff --git a/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-list.directive.ts b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-list.directive.ts new file mode 100644 index 00000000..5ea3d1bb --- /dev/null +++ b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-list.directive.ts @@ -0,0 +1,18 @@ +import { Directive, computed, input } from '@angular/core'; +import { hlm } from '@spartan-ng/ui-core'; +import type { ClassValue } from 'clsx'; + +@Directive({ + selector: '[hlmBreadcrumbList]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, +}) +export class HlmBreadcrumbListDirective { + public readonly userClass = input('', { alias: 'class' }); + + protected readonly _computedClass = computed(() => + hlm('flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5', this.userClass()), + ); +} diff --git a/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-page.directive.ts b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-page.directive.ts new file mode 100644 index 00000000..ecbb34a0 --- /dev/null +++ b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-page.directive.ts @@ -0,0 +1,19 @@ +import { Directive, computed, input } from '@angular/core'; +import { hlm } from '@spartan-ng/ui-core'; +import type { ClassValue } from 'clsx'; + +@Directive({ + selector: '[hlmBreadcrumbPage]', + standalone: true, + host: { + role: 'link', + '[class]': '_computedClass()', + '[attr.aria-disabled]': 'disabled', + '[attr.aria-current]': 'page', + }, +}) +export class HlmBreadcrumbPageDirective { + public readonly userClass = input('', { alias: 'class' }); + + protected readonly _computedClass = computed(() => hlm('font-normal text-foreground', this.userClass())); +} diff --git a/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-separator.component.ts b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-separator.component.ts new file mode 100644 index 00000000..4c98f3dc --- /dev/null +++ b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb-separator.component.ts @@ -0,0 +1,30 @@ +import { Component, computed, input } from '@angular/core'; +import { lucideChevronRight } from '@ng-icons/lucide'; +import { hlm } from '@spartan-ng/ui-core'; +import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; +import type { ClassValue } from 'clsx'; + +@Component({ + // eslint-disable-next-line @angular-eslint/component-selector + selector: '[hlmBreadcrumbSeparator]', + standalone: true, + imports: [HlmIconComponent], + providers: [provideIcons({ lucideChevronRight })], + host: { + role: 'presentation', + '[class]': '_computedClass()', + '[attr.aria-hidden]': 'true', + }, + template: ` + + + + `, +}) +export class HlmBreadcrumbSeparatorComponent { + public readonly userClass = input('', { alias: 'class' }); + + protected readonly _computedClass = computed(() => + hlm('[&>hlm-icon]:w-3.5 [&>hlm-icon]:h-3.5 [&>hlm-icon]:flex', this.userClass()), + ); +} diff --git a/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb.directive.ts b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb.directive.ts new file mode 100644 index 00000000..2604b8a5 --- /dev/null +++ b/webapp/src/libs/ui/ui-breadcrumb-helm/src/lib/breadcrumb.directive.ts @@ -0,0 +1,19 @@ +import { Directive, computed, input } from '@angular/core'; +import { hlm } from '@spartan-ng/ui-core'; +import type { ClassValue } from 'clsx'; + +@Directive({ + selector: '[hlmBreadcrumb]', + standalone: true, + host: { + role: 'navigation', + '[class]': '_computedClass()', + '[attr.aria-label]': 'ariaLabel()', + }, +}) +export class HlmBreadcrumbDirective { + public readonly userClass = input('', { alias: 'class' }); + public readonly ariaLabel = input('breadcrumb', { alias: 'aria-label' }); + + protected readonly _computedClass = computed(() => hlm(this.userClass())); +} diff --git a/webapp/src/libs/ui/ui-button-helm/src/index.ts b/webapp/src/libs/ui/ui-button-helm/src/index.ts index f03a606b..a2b66595 100644 --- a/webapp/src/libs/ui/ui-button-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-button-helm/src/index.ts @@ -1,10 +1,11 @@ import { NgModule } from '@angular/core'; import { HlmButtonDirective } from './lib/hlm-button.directive'; +export * from './lib/hlm-button.token'; export * from './lib/hlm-button.directive'; @NgModule({ - imports: [HlmButtonDirective], - exports: [HlmButtonDirective] + imports: [HlmButtonDirective], + exports: [HlmButtonDirective], }) export class HlmButtonModule {} diff --git a/webapp/src/libs/ui/ui-button-helm/src/lib/hlm-button.directive.ts b/webapp/src/libs/ui/ui-button-helm/src/lib/hlm-button.directive.ts index 157d2ab2..d5ea2a93 100644 --- a/webapp/src/libs/ui/ui-button-helm/src/lib/hlm-button.directive.ts +++ b/webapp/src/libs/ui/ui-button-helm/src/lib/hlm-button.directive.ts @@ -1,62 +1,60 @@ -import { Directive, Input, computed, input, signal } from '@angular/core'; +import { Directive, computed, input, signal } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; +import { injectBrnButtonConfig } from './hlm-button.token'; export const buttonVariants = cva( - 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background', - { - variants: { - variant: { - default: 'bg-primary text-primary-foreground hover:bg-primary/90', - destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90', - outline: 'border border-input hover:bg-accent hover:text-accent-foreground', - secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', - ghost: 'hover:bg-accent hover:text-accent-foreground', - link: 'underline-offset-4 hover:underline text-primary' - }, - size: { - none: '', - default: 'h-10 py-2 px-4', - sm: 'h-9 px-3 rounded-md', - lg: 'h-11 px-8 rounded-md', - icon: 'h-10 w-10' - } - }, - defaultVariants: { - variant: 'default', - size: 'default' - } - } + 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background', + { + variants: { + variant: { + default: 'bg-primary text-primary-foreground hover:bg-primary/90', + destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90', + outline: 'border border-input hover:bg-accent hover:text-accent-foreground', + secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', + ghost: 'hover:bg-accent hover:text-accent-foreground', + link: 'underline-offset-4 hover:underline text-primary', + }, + size: { + default: 'h-10 py-2 px-4', + sm: 'h-9 px-3 rounded-md', + lg: 'h-11 px-8 rounded-md', + icon: 'h-10 w-10', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, ); export type ButtonVariants = VariantProps; @Directive({ - selector: '[hlmBtn]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmBtn]', + standalone: true, + exportAs: 'hlmBtn', + host: { + '[class]': '_computedClass()', + }, }) export class HlmButtonDirective { - public readonly userClass = input('', { alias: 'class' }); - private readonly _settableClass = signal(''); - - protected _computedClass = computed(() => hlm(buttonVariants({ variant: this._variant(), size: this._size() }), this._settableClass(), this.userClass())); - - setClass(value: ClassValue) { - this._settableClass.set(value); - } - - private readonly _variant = signal('default'); - @Input() - set variant(variant: ButtonVariants['variant']) { - this._variant.set(variant); - } - - private readonly _size = signal('default'); - @Input() - set size(size: ButtonVariants['size']) { - this._size.set(size); - } + private readonly _config = injectBrnButtonConfig(); + + private readonly _additionalClasses = signal(''); + + public readonly userClass = input('', { alias: 'class' }); + + protected readonly _computedClass = computed(() => + hlm(buttonVariants({ variant: this.variant(), size: this.size() }), this.userClass(), this._additionalClasses()), + ); + + public readonly variant = input(this._config.variant); + + public readonly size = input(this._config.size); + + setClass(classes: string): void { + this._additionalClasses.set(classes); + } } diff --git a/webapp/src/libs/ui/ui-button-helm/src/lib/hlm-button.token.ts b/webapp/src/libs/ui/ui-button-helm/src/lib/hlm-button.token.ts new file mode 100644 index 00000000..b83d6213 --- /dev/null +++ b/webapp/src/libs/ui/ui-button-helm/src/lib/hlm-button.token.ts @@ -0,0 +1,22 @@ +import { InjectionToken, ValueProvider, inject } from '@angular/core'; +import type { ButtonVariants } from './hlm-button.directive'; + +export interface BrnButtonConfig { + variant: ButtonVariants['variant']; + size: ButtonVariants['size']; +} + +const defaultConfig: BrnButtonConfig = { + variant: 'default', + size: 'default', +}; + +const BrnButtonConfigToken = new InjectionToken('BrnButtonConfig'); + +export function provideBrnButtonConfig(config: Partial): ValueProvider { + return { provide: BrnButtonConfigToken, useValue: { ...defaultConfig, ...config } }; +} + +export function injectBrnButtonConfig(): BrnButtonConfig { + return inject(BrnButtonConfigToken, { optional: true }) ?? defaultConfig; +} diff --git a/webapp/src/libs/ui/ui-calendar-helm/src/index.ts b/webapp/src/libs/ui/ui-calendar-helm/src/index.ts new file mode 100644 index 00000000..ed693408 --- /dev/null +++ b/webapp/src/libs/ui/ui-calendar-helm/src/index.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { HlmCalendarComponent } from './lib/hlm-calendar.component'; + +export * from './lib/hlm-calendar.component'; + +@NgModule({ + imports: [HlmCalendarComponent], + exports: [HlmCalendarComponent], +}) +export class HlmCalendarModule {} diff --git a/webapp/src/libs/ui/ui-calendar-helm/src/lib/hlm-calendar.component.ts b/webapp/src/libs/ui/ui-calendar-helm/src/lib/hlm-calendar.component.ts new file mode 100644 index 00000000..cf9a8cc6 --- /dev/null +++ b/webapp/src/libs/ui/ui-calendar-helm/src/lib/hlm-calendar.component.ts @@ -0,0 +1,160 @@ +import { BooleanInput, NumberInput } from '@angular/cdk/coercion'; +import { Component, booleanAttribute, computed, input, model, numberAttribute, viewChild } from '@angular/core'; +import { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide'; +import { + BrnCalendarCellButtonDirective, + BrnCalendarCellDirective, + BrnCalendarDirective, + BrnCalendarGridDirective, + BrnCalendarHeaderDirective, + BrnCalendarNextButtonDirective, + BrnCalendarPreviousButtonDirective, + BrnCalendarWeekDirective, + BrnCalendarWeekdayDirective, + Weekday, + injectBrnCalendarI18n, +} from '@spartan-ng/brain/calendar'; +import { injectDateAdapter } from '@spartan-ng/brain/date-time'; +import { buttonVariants } from '@spartan-ng/ui-button-helm'; +import { hlm } from '@spartan-ng/ui-core'; +import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; + +@Component({ + standalone: true, + selector: 'hlm-calendar', + imports: [ + BrnCalendarDirective, + BrnCalendarHeaderDirective, + BrnCalendarNextButtonDirective, + BrnCalendarPreviousButtonDirective, + BrnCalendarWeekdayDirective, + BrnCalendarWeekDirective, + BrnCalendarCellButtonDirective, + BrnCalendarCellDirective, + BrnCalendarGridDirective, + HlmIconComponent, + ], + viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })], + template: ` +
+
+ +
+
+
+ {{ heading() }} +
+ +
+ + + +
+
+
+ + + + + + + + + + + @for (date of week; track dateAdapter.getTime(date)) { + + } + + +
+ {{ i18n.formatWeekdayName(weekday) }} +
+ +
+
+
+ `, +}) +export class HlmCalendarComponent { + /** Access the calendar i18n */ + protected readonly i18n = injectBrnCalendarI18n(); + + /** Access the date time adapter */ + protected readonly dateAdapter = injectDateAdapter(); + + /** The minimum date that can be selected.*/ + public readonly min = input(); + + /* * The maximum date that can be selected. */ + public readonly max = input(); + + /** Determine if the date picker is disabled. */ + public readonly disabled = input(false, { + transform: booleanAttribute, + }); + + /** The selected value. */ + public readonly date = model(); + + /** Whether a specific date is disabled. */ + public readonly dateDisabled = input<(date: T) => boolean>(() => false); + + /** The day the week starts on */ + public readonly weekStartsOn = input(0, { + transform: (v: unknown) => numberAttribute(v) as Weekday, + }); + + /** The default focused date. */ + public readonly defaultFocusedDate = input(); + + /** Access the calendar directive */ + private readonly _calendar = viewChild.required(BrnCalendarDirective); + + /** Get the heading for the current month and year */ + protected heading = computed(() => + this.i18n.formatHeader( + this.dateAdapter.getMonth(this._calendar().focusedDate()), + this.dateAdapter.getYear(this._calendar().focusedDate()), + ), + ); + + protected readonly btnClass = hlm( + buttonVariants({ variant: 'ghost' }), + 'h-9 w-9 p-0 font-normal aria-selected:opacity-100', + 'data-[outside]:text-muted-foreground data-[outside]:opacity-50 data-[outside]:aria-selected:bg-accent/50 data-[outside]:aria-selected:text-muted-foreground data-[outside]:aria-selected:opacity-30', + 'data-[today]:bg-accent data-[today]:text-accent-foreground', + 'data-[selected]:bg-primary data-[selected]:text-primary-foreground data-[selected]:hover:bg-primary data-[selected]:hover:text-primary-foreground data-[selected]:focus:bg-primary data-[selected]:focus:text-primary-foreground', + 'data-[disabled]:text-muted-foreground data-[disabled]:opacity-50', + ); +} diff --git a/webapp/src/libs/ui/ui-card-helm/src/index.ts b/webapp/src/libs/ui/ui-card-helm/src/index.ts index dbed086f..b6f2d14d 100644 --- a/webapp/src/libs/ui/ui-card-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-card-helm/src/index.ts @@ -15,16 +15,16 @@ export * from './lib/hlm-card-title.directive'; export * from './lib/hlm-card.directive'; export const HlmCardImports = [ - HlmCardDirective, - HlmCardHeaderDirective, - HlmCardFooterDirective, - HlmCardTitleDirective, - HlmCardDescriptionDirective, - HlmCardContentDirective + HlmCardDirective, + HlmCardHeaderDirective, + HlmCardFooterDirective, + HlmCardTitleDirective, + HlmCardDescriptionDirective, + HlmCardContentDirective, ] as const; @NgModule({ - imports: [...HlmCardImports], - exports: [...HlmCardImports] + imports: [...HlmCardImports], + exports: [...HlmCardImports], }) export class HlmCardModule {} diff --git a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-content.directive.ts b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-content.directive.ts index 07a2d84e..66173f5c 100644 --- a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-content.directive.ts +++ b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-content.directive.ts @@ -1,33 +1,22 @@ -import { Directive, Input, computed, input, signal } from '@angular/core'; +import { Directive, computed, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; -export const cardContentVariants = cva('pt-0', { - variants: { - variant: { - default: 'p-6', - profile: 'flex flex-col gap-1' - } - }, - defaultVariants: {} +export const cardContentVariants = cva('p-6 pt-0', { + variants: {}, + defaultVariants: {}, }); export type CardContentVariants = VariantProps; @Directive({ - selector: '[hlmCardContent]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCardContent]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCardContentDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(cardContentVariants({ variant: this._variant() }), this.userClass())); - - private readonly _variant = signal('default'); - @Input() - set variant(variant: CardContentVariants['variant']) { - this._variant.set(variant); - } + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(cardContentVariants(), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-description.directive.ts b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-description.directive.ts index 20b8a605..a5802aa1 100644 --- a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-description.directive.ts +++ b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-description.directive.ts @@ -4,19 +4,19 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const cardDescriptionVariants = cva('text-sm text-muted-foreground', { - variants: {}, - defaultVariants: {} + variants: {}, + defaultVariants: {}, }); export type CardDescriptionVariants = VariantProps; @Directive({ - selector: '[hlmCardDescription]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCardDescription]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCardDescriptionDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(cardDescriptionVariants(), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(cardDescriptionVariants(), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-footer.directive.ts b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-footer.directive.ts index 81dfcf39..74348044 100644 --- a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-footer.directive.ts +++ b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-footer.directive.ts @@ -4,28 +4,28 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const cardFooterVariants = cva('flex p-6 pt-0', { - variants: { - direction: { - row: 'flex-row items-center space-x-1.5', - column: 'flex-col space-y-1.5' - } - }, - defaultVariants: { - direction: 'row' - } + variants: { + direction: { + row: 'flex-row items-center space-x-1.5', + column: 'flex-col space-y-1.5', + }, + }, + defaultVariants: { + direction: 'row', + }, }); export type CardFooterVariants = VariantProps; @Directive({ - selector: '[hlmCardFooter]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCardFooter]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCardFooterDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(cardFooterVariants({ direction: this.direction() }), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(cardFooterVariants({ direction: this.direction() }), this.userClass())); - public readonly direction = input('row'); + public readonly direction = input('row'); } diff --git a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-header.directive.ts b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-header.directive.ts index 0cfd1740..bbaef4e6 100644 --- a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-header.directive.ts +++ b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-header.directive.ts @@ -4,28 +4,28 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const cardHeaderVariants = cva('flex p-6', { - variants: { - direction: { - row: 'flex-row items-center space-x-1.5', - column: 'flex-col space-y-1.5' - } - }, - defaultVariants: { - direction: 'column' - } + variants: { + direction: { + row: 'flex-row items-center space-x-1.5', + column: 'flex-col space-y-1.5', + }, + }, + defaultVariants: { + direction: 'column', + }, }); export type CardHeaderVariants = VariantProps; @Directive({ - selector: '[hlmCardHeader]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCardHeader]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCardHeaderDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(cardHeaderVariants({ direction: this.direction() }), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(cardHeaderVariants({ direction: this.direction() }), this.userClass())); - public readonly direction = input('column'); + public readonly direction = input('column'); } diff --git a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-title.directive.ts b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-title.directive.ts index 8ed73e8d..e8ba8211 100644 --- a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-title.directive.ts +++ b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card-title.directive.ts @@ -4,19 +4,19 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const cardTitleVariants = cva('text-lg font-semibold leading-none tracking-tight', { - variants: {}, - defaultVariants: {} + variants: {}, + defaultVariants: {}, }); export type CardTitleVariants = VariantProps; @Directive({ - selector: '[hlmCardTitle]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCardTitle]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCardTitleDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(cardTitleVariants(), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(cardTitleVariants(), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card.directive.ts b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card.directive.ts index ad2c2edf..5662a4c1 100644 --- a/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card.directive.ts +++ b/webapp/src/libs/ui/ui-card-helm/src/lib/hlm-card.directive.ts @@ -1,36 +1,25 @@ -import { Directive, Input, computed, input, signal } from '@angular/core'; +import { Directive, computed, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const cardVariants = cva( - 'rounded-lg border border-border bg-card focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-background focus:ring-offset-2 text-card-foreground shadow-sm', - { - variants: { - variant: { - default: '', - profile: 'shadow-md block p-4' - } - }, - defaultVariants: {} - } + 'rounded-lg border border-border bg-card focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-card-foreground shadow-sm', + { + variants: {}, + defaultVariants: {}, + }, ); export type CardVariants = VariantProps; @Directive({ - selector: '[hlmCard]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCard]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCardDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(cardVariants({ variant: this._variant() }), this.userClass())); - - private readonly _variant = signal('default'); - @Input() - set variant(variant: CardVariants['variant']) { - this._variant.set(variant); - } + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(cardVariants(), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-carousel-helm/src/index.ts b/webapp/src/libs/ui/ui-carousel-helm/src/index.ts index 5eec2819..700d182b 100644 --- a/webapp/src/libs/ui/ui-carousel-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-carousel-helm/src/index.ts @@ -11,10 +11,16 @@ export * from './lib/hlm-carousel-next.component'; export * from './lib/hlm-carousel-previous.component'; export * from './lib/hlm-carousel.component'; -export const HlmCarouselImports = [HlmCarouselComponent, HlmCarouselContentComponent, HlmCarouselItemComponent, HlmCarouselPreviousComponent, HlmCarouselNextComponent] as const; +export const HlmCarouselImports = [ + HlmCarouselComponent, + HlmCarouselContentComponent, + HlmCarouselItemComponent, + HlmCarouselPreviousComponent, + HlmCarouselNextComponent, +] as const; @NgModule({ - imports: [...HlmCarouselImports], - exports: [...HlmCarouselImports] + imports: [...HlmCarouselImports], + exports: [...HlmCarouselImports], }) export class HlmCarouselModule {} diff --git a/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-content.component.ts b/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-content.component.ts index bcbd6a87..976061cb 100644 --- a/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-content.component.ts +++ b/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-content.component.ts @@ -4,18 +4,22 @@ import type { ClassValue } from 'clsx'; import { HlmCarouselComponent } from './hlm-carousel.component'; @Component({ - selector: 'hlm-carousel-content', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - host: { - '[class]': '_computedClass()' - }, - template: ` ` + selector: 'hlm-carousel-content', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { + '[class]': '_computedClass()', + }, + template: ` + + `, }) export class HlmCarouselContentComponent { - private orientation = inject(HlmCarouselComponent).orientation; + private readonly _orientation = inject(HlmCarouselComponent).orientation; - _userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('flex', this.orientation() === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', this._userClass())); + public _userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('flex', this._orientation() === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', this._userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-item.component.ts b/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-item.component.ts index 82386126..b690302c 100644 --- a/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-item.component.ts +++ b/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-item.component.ts @@ -4,19 +4,27 @@ import type { ClassValue } from 'clsx'; import { HlmCarouselComponent } from './hlm-carousel.component'; @Component({ - selector: 'hlm-carousel-item', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - host: { - '[class]': '_computedClass()', - role: 'group', - 'aria-roledescription': 'slide' - }, - template: ` ` + selector: 'hlm-carousel-item', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { + '[class]': '_computedClass()', + role: 'group', + 'aria-roledescription': 'slide', + }, + template: ` + + `, }) export class HlmCarouselItemComponent { - _userClass = input('', { alias: 'class' }); - private orientation = inject(HlmCarouselComponent).orientation; - protected _computedClass = computed(() => hlm('min-w-0 shrink-0 grow-0 basis-full', this.orientation() === 'horizontal' ? 'pl-4' : 'pt-4', this._userClass())); + public _userClass = input('', { alias: 'class' }); + private readonly _orientation = inject(HlmCarouselComponent).orientation; + protected _computedClass = computed(() => + hlm( + 'min-w-0 shrink-0 grow-0 basis-full', + this._orientation() === 'horizontal' ? 'pl-4' : 'pt-4', + this._userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-next.component.ts b/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-next.component.ts index a8e7acfe..d95ab187 100644 --- a/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-next.component.ts +++ b/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-next.component.ts @@ -1,51 +1,58 @@ -import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, effect, inject, input, untracked } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + ViewEncapsulation, + computed, + effect, + inject, + input, + untracked, +} from '@angular/core'; import { lucideArrowRight } from '@ng-icons/lucide'; -import { HlmButtonDirective } from '@spartan-ng/ui-button-helm'; +import { HlmButtonDirective, provideBrnButtonConfig } from '@spartan-ng/ui-button-helm'; import { hlm } from '@spartan-ng/ui-core'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; import { HlmCarouselComponent } from './hlm-carousel.component'; @Component({ - // eslint-disable-next-line @angular-eslint/component-selector - selector: 'button[hlm-carousel-next], button[hlmCarouselNext]', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - host: { - '[disabled]': 'isDisabled()', - '(click)': 'carousel.scrollNext()' - }, - hostDirectives: [{ directive: HlmButtonDirective, inputs: ['variant', 'size'] }], - providers: [provideIcons({ lucideArrowRight })], - imports: [HlmIconComponent], - template: ` - - Next slide - ` + // eslint-disable-next-line @angular-eslint/component-selector + selector: 'button[hlm-carousel-next], button[hlmCarouselNext]', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { + '[disabled]': 'isDisabled()', + '(click)': '_carousel.scrollNext()', + }, + hostDirectives: [{ directive: HlmButtonDirective, inputs: ['variant', 'size'] }], + providers: [provideIcons({ lucideArrowRight }), provideBrnButtonConfig({ variant: 'outline', size: 'icon' })], + imports: [HlmIconComponent], + template: ` + + Next slide + `, }) export class HlmCarouselNextComponent { - protected carousel = inject(HlmCarouselComponent); - _userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'absolute h-8 w-8 rounded-full', - this.carousel.orientation() === 'horizontal' ? '-right-12 top-1/2 -translate-y-1/2' : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90', - this._userClass() - ) - ); - protected isDisabled = () => !this.carousel.canScrollNext(); + private readonly _button = inject(HlmButtonDirective); + private readonly _carousel = inject(HlmCarouselComponent); + public readonly userClass = input('', { alias: 'class' }); + private readonly _computedClass = computed(() => + hlm( + 'absolute h-8 w-8 rounded-full', + this._carousel.orientation() === 'horizontal' + ? '-right-12 top-1/2 -translate-y-1/2' + : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90', + this.userClass(), + ), + ); + protected readonly isDisabled = () => !this._carousel.canScrollNext(); - constructor() { - const button = inject(HlmButtonDirective); + constructor() { + effect(() => { + const computedClass = this._computedClass(); - button.variant = 'outline'; - button.size = 'icon'; - - effect(() => { - const computedClass = this._computedClass(); - - untracked(() => button.setClass(computedClass)); - }); - } + untracked(() => this._button.setClass(computedClass)); + }); + } } diff --git a/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.component.ts b/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.component.ts index 5c31c55a..bf3b78a0 100644 --- a/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.component.ts +++ b/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.component.ts @@ -1,51 +1,61 @@ -import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, effect, inject, input, untracked } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + ViewEncapsulation, + computed, + effect, + inject, + input, + untracked, +} from '@angular/core'; import { lucideArrowLeft } from '@ng-icons/lucide'; -import { HlmButtonDirective } from '@spartan-ng/ui-button-helm'; +import { HlmButtonDirective, provideBrnButtonConfig } from '@spartan-ng/ui-button-helm'; import { hlm } from '@spartan-ng/ui-core'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; import { HlmCarouselComponent } from './hlm-carousel.component'; @Component({ - // eslint-disable-next-line @angular-eslint/component-selector - selector: 'button[hlm-carousel-previous], button[hlmCarouselPrevious]', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - host: { - '[disabled]': 'isDisabled()', - '(click)': 'carousel.scrollPrev()' - }, - hostDirectives: [{ directive: HlmButtonDirective, inputs: ['variant', 'size'] }], - providers: [provideIcons({ lucideArrowLeft })], - imports: [HlmIconComponent], - template: ` - - Previous slide - ` + // eslint-disable-next-line @angular-eslint/component-selector + selector: 'button[hlm-carousel-previous], button[hlmCarouselPrevious]', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { + '[disabled]': 'isDisabled()', + '(click)': '_carousel.scrollPrev()', + }, + hostDirectives: [{ directive: HlmButtonDirective, inputs: ['variant', 'size'] }], + providers: [provideIcons({ lucideArrowLeft }), provideBrnButtonConfig({ variant: 'outline', size: 'icon' })], + imports: [HlmIconComponent], + template: ` + + Previous slide + `, }) export class HlmCarouselPreviousComponent { - protected carousel = inject(HlmCarouselComponent); - _userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'absolute h-8 w-8 rounded-full', - this.carousel.orientation() === 'horizontal' ? '-left-12 top-1/2 -translate-y-1/2' : '-top-12 left-1/2 -translate-x-1/2 rotate-90', - this._userClass() - ) - ); - protected isDisabled = () => !this.carousel.canScrollPrev(); + private readonly _button = inject(HlmButtonDirective); - constructor() { - const button = inject(HlmButtonDirective); + protected readonly _carousel = inject(HlmCarouselComponent); - button.variant = 'outline'; - button.size = 'icon'; + public readonly userClass = input('', { alias: 'class' }); - effect(() => { - const computedClass = this._computedClass(); + private readonly _computedClass = computed(() => + hlm( + 'absolute h-8 w-8 rounded-full', + this._carousel.orientation() === 'horizontal' + ? '-left-12 top-1/2 -translate-y-1/2' + : '-top-12 left-1/2 -translate-x-1/2 rotate-90', + this.userClass(), + ), + ); + protected readonly isDisabled = () => !this._carousel.canScrollPrev(); - untracked(() => button.setClass(computedClass)); - }); - } + constructor() { + effect(() => { + const computedClass = this._computedClass(); + + untracked(() => this._button.setClass(computedClass)); + }); + } } diff --git a/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel.component.ts b/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel.component.ts index d235183f..4a00a62c 100644 --- a/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel.component.ts +++ b/webapp/src/libs/ui/ui-carousel-helm/src/lib/hlm-carousel.component.ts @@ -1,82 +1,98 @@ -import { ChangeDetectionStrategy, Component, HostListener, type InputSignal, type Signal, ViewChild, ViewEncapsulation, computed, input, signal } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + HostListener, + type InputSignal, + type Signal, + ViewChild, + ViewEncapsulation, + computed, + input, + signal, +} from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; -import { EmblaCarouselDirective, type EmblaEventType, type EmblaOptionsType, type EmblaPluginType } from 'embla-carousel-angular'; +import { + EmblaCarouselDirective, + type EmblaEventType, + type EmblaOptionsType, + type EmblaPluginType, +} from 'embla-carousel-angular'; @Component({ - selector: 'hlm-carousel', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - host: { - '[class]': '_computedClass()', - role: 'region', - 'aria-roledescription': 'carousel' - }, - imports: [EmblaCarouselDirective], - template: ` -
- -
- - ` + selector: 'hlm-carousel', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { + '[class]': '_computedClass()', + role: 'region', + 'aria-roledescription': 'carousel', + }, + imports: [EmblaCarouselDirective], + template: ` +
+ +
+ + `, }) export class HlmCarouselComponent { - @ViewChild(EmblaCarouselDirective) protected emblaCarousel?: EmblaCarouselDirective; + @ViewChild(EmblaCarouselDirective) protected emblaCarousel?: EmblaCarouselDirective; - _userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('relative', this._userClass())); + public _userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('relative', this._userClass())); - orientation = input<'horizontal' | 'vertical'>('horizontal'); - options: InputSignal | undefined> = input(); - plugins: InputSignal = input([] as EmblaPluginType[]); + public orientation = input<'horizontal' | 'vertical'>('horizontal'); + public options: InputSignal | undefined> = input(); + public plugins: InputSignal = input([] as EmblaPluginType[]); - protected emblaOptions: Signal = computed(() => ({ - ...this.options(), - axis: this.orientation() === 'horizontal' ? 'x' : 'y' - })); + protected emblaOptions: Signal = computed(() => ({ + ...this.options(), + axis: this.orientation() === 'horizontal' ? 'x' : 'y', + })); - private _canScrollPrev = signal(false); - canScrollPrev = this._canScrollPrev.asReadonly(); - private _canScrollNext = signal(false); - canScrollNext = this._canScrollNext.asReadonly(); + private readonly _canScrollPrev = signal(false); + public canScrollPrev = this._canScrollPrev.asReadonly(); + private readonly _canScrollNext = signal(false); + public canScrollNext = this._canScrollNext.asReadonly(); - protected onEmblaEvent(event: EmblaEventType) { - const emblaApi = this.emblaCarousel?.emblaApi; + protected onEmblaEvent(event: EmblaEventType) { + const emblaApi = this.emblaCarousel?.emblaApi; - if (!emblaApi) { - return; - } + if (!emblaApi) { + return; + } - if (event === 'select' || event === 'init' || event === 'reInit') { - this._canScrollPrev.set(emblaApi.canScrollPrev()); - this._canScrollNext.set(emblaApi.canScrollNext()); - } - } + if (event === 'select' || event === 'init' || event === 'reInit') { + this._canScrollPrev.set(emblaApi.canScrollPrev()); + this._canScrollNext.set(emblaApi.canScrollNext()); + } + } - @HostListener('keydown', ['$event']) - protected onKeydown(event: KeyboardEvent) { - if (event.key === 'ArrowLeft') { - event.preventDefault(); - this.emblaCarousel?.scrollPrev(); - } else if (event.key === 'ArrowRight') { - event.preventDefault(); - this.emblaCarousel?.scrollNext(); - } - } + @HostListener('keydown', ['$event']) + protected onKeydown(event: KeyboardEvent) { + if (event.key === 'ArrowLeft') { + event.preventDefault(); + this.emblaCarousel?.scrollPrev(); + } else if (event.key === 'ArrowRight') { + event.preventDefault(); + this.emblaCarousel?.scrollNext(); + } + } - scrollPrev() { - this.emblaCarousel?.scrollPrev(); - } + scrollPrev() { + this.emblaCarousel?.scrollPrev(); + } - scrollNext() { - this.emblaCarousel?.scrollNext(); - } + scrollNext() { + this.emblaCarousel?.scrollNext(); + } } diff --git a/webapp/src/libs/ui/ui-checkbox-helm/src/index.ts b/webapp/src/libs/ui/ui-checkbox-helm/src/index.ts index b70f1220..18374d9d 100644 --- a/webapp/src/libs/ui/ui-checkbox-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-checkbox-helm/src/index.ts @@ -8,7 +8,7 @@ export * from './lib/hlm-checkbox.component'; export const HlmCheckboxImports = [HlmCheckboxComponent, HlmCheckboxCheckIconComponent] as const; @NgModule({ - imports: [...HlmCheckboxImports], - exports: [...HlmCheckboxImports] + imports: [...HlmCheckboxImports], + exports: [...HlmCheckboxImports], }) export class HlmCheckboxModule {} diff --git a/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox-checkicon.component.ts b/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox-checkicon.component.ts index ad39e674..b78fad32 100644 --- a/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox-checkicon.component.ts +++ b/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox-checkicon.component.ts @@ -1,28 +1,34 @@ import { Component, computed, inject, input } from '@angular/core'; import { lucideCheck } from '@ng-icons/lucide'; -import { BrnCheckboxComponent } from '@spartan-ng/ui-checkbox-brain'; +import { BrnCheckboxComponent } from '@spartan-ng/brain/checkbox'; import { hlm } from '@spartan-ng/ui-core'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-checkbox-checkicon', - standalone: true, - imports: [HlmIconComponent], - providers: [provideIcons({ lucideCheck })], - host: { - '[class]': '_computedClass()' - }, - template: ` ` + selector: 'hlm-checkbox-checkicon', + standalone: true, + imports: [HlmIconComponent], + providers: [provideIcons({ lucideCheck })], + host: { + '[class]': '_computedClass()', + }, + template: ` + + `, }) export class HlmCheckboxCheckIconComponent { - private _brnCheckbox = inject(BrnCheckboxComponent); - protected _checked = this._brnCheckbox?.isChecked; - public readonly userClass = input('', { alias: 'class' }); + private readonly _brnCheckbox = inject(BrnCheckboxComponent); + protected _checked = this._brnCheckbox?.isChecked; + public readonly userClass = input('', { alias: 'class' }); - public readonly iconName = input('lucideCheck'); + public readonly iconName = input('lucideCheck'); - protected _computedClass = computed(() => - hlm('h-4 w-4 leading-none group-data-[state=unchecked]:opacity-0', this._checked() === 'indeterminate' ? 'opacity-50' : '', this.userClass()) - ); + protected _computedClass = computed(() => + hlm( + 'h-4 w-4 leading-none group-data-[state=unchecked]:opacity-0', + this._checked() === 'indeterminate' ? 'opacity-50' : '', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox.component.ts b/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox.component.ts index 06d479ee..2afbbfba 100644 --- a/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox.component.ts +++ b/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox.component.ts @@ -1,122 +1,117 @@ -import { Component, EventEmitter, Output, booleanAttribute, computed, effect, forwardRef, input, model, signal } from '@angular/core'; +import { Component, booleanAttribute, computed, forwardRef, input, model, output, signal } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; -import { BrnCheckboxComponent } from '@spartan-ng/ui-checkbox-brain'; +import { BrnCheckboxComponent } from '@spartan-ng/brain/checkbox'; import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; import { HlmCheckboxCheckIconComponent } from './hlm-checkbox-checkicon.component'; export const HLM_CHECKBOX_VALUE_ACCESSOR = { - provide: NG_VALUE_ACCESSOR, - useExisting: forwardRef(() => HlmCheckboxComponent), - multi: true + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => HlmCheckboxComponent), + multi: true, }; @Component({ - selector: 'hlm-checkbox', - standalone: true, - imports: [BrnCheckboxComponent, HlmCheckboxCheckIconComponent], - template: ` - - - - `, - host: { - class: 'contents', - '[attr.id]': 'null', - '[attr.aria-label]': 'null', - '[attr.aria-labelledby]': 'null', - '[attr.aria-describedby]': 'null' - }, - providers: [HLM_CHECKBOX_VALUE_ACCESSOR] + selector: 'hlm-checkbox', + standalone: true, + imports: [BrnCheckboxComponent, HlmCheckboxCheckIconComponent], + template: ` + + + + `, + host: { + class: 'contents', + '[attr.id]': 'null', + '[attr.aria-label]': 'null', + '[attr.aria-labelledby]': 'null', + '[attr.aria-describedby]': 'null', + }, + providers: [HLM_CHECKBOX_VALUE_ACCESSOR], }) export class HlmCheckboxComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'group inline-flex border border-foreground shrink-0 cursor-pointer items-center rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring' + - ' focus-visible:ring-offset-2 focus-visible:ring-offset-background data-[state=checked]:text-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-background', - this.userClass(), - this._disabled() ? 'cursor-not-allowed opacity-50' : '' - ) - ); - - /** Used to set the id on the underlying brn element. */ - public readonly id = input(null); - - /** Used to set the aria-label attribute on the underlying brn element. */ - public readonly ariaLabel = input(null, { alias: 'aria-label' }); - - /** Used to set the aria-labelledby attribute on the underlying brn element. */ - public readonly ariaLabelledby = input(null, { alias: 'aria-labelledby' }); - - /** Used to set the aria-describedby attribute on the underlying brn element. */ - public readonly ariaDescribedby = input(null, { alias: 'aria-describedby' }); - - public readonly checked = model(false); - - public readonly name = input(null); - public readonly required = input(false, { transform: booleanAttribute }); - - protected readonly _disabled = signal(false); - public readonly disabled = input(false, { transform: booleanAttribute }); - - private disableInput = effect( - () => { - this._disabled.set(this.disabled()); - }, - { allowSignalWrites: true } - ); - - // icon inputs - public readonly checkIconName = input('lucideCheck'); - public readonly checkIconClass = input(''); - - @Output() - public changed = new EventEmitter(); - - protected _handleChange(): void { - if (this._disabled()) return; - - const previousChecked = this.checked(); - this.checked.set(previousChecked === 'indeterminate' ? true : !previousChecked); - this._onChange(!previousChecked); - this.changed.emit(!previousChecked); - } - - /** CONROL VALUE ACCESSOR */ - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - writeValue(value: any): void { - this.checked.set(!!value); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars,,@typescript-eslint/no-explicit-any - protected _onChange = (_: any) => {}; - - protected _onTouched = () => {}; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - registerOnChange(fn: any): void { - this._onChange = fn; - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - registerOnTouched(fn: any): void { - this._onTouched = fn; - } - - setDisabledState(isDisabled: boolean): void { - this._disabled.set(isDisabled); - } + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'group inline-flex border border-foreground shrink-0 cursor-pointer items-center rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring' + + ' focus-visible:ring-offset-2 focus-visible:ring-offset-background data-[state=checked]:text-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-background', + this.userClass(), + this.state().disabled() ? 'cursor-not-allowed opacity-50' : '', + ), + ); + + /** Used to set the id on the underlying brn element. */ + public readonly id = input(null); + + /** Used to set the aria-label attribute on the underlying brn element. */ + public readonly ariaLabel = input(null, { alias: 'aria-label' }); + + /** Used to set the aria-labelledby attribute on the underlying brn element. */ + public readonly ariaLabelledby = input(null, { alias: 'aria-labelledby' }); + + /** Used to set the aria-describedby attribute on the underlying brn element. */ + public readonly ariaDescribedby = input(null, { alias: 'aria-describedby' }); + + public readonly checked = model(false); + + public readonly name = input(null); + public readonly required = input(false, { transform: booleanAttribute }); + + public readonly disabled = input(false, { transform: booleanAttribute }); + + protected readonly state = computed(() => ({ + disabled: signal(this.disabled()), + })); + + // icon inputs + public readonly checkIconName = input('lucideCheck'); + public readonly checkIconClass = input(''); + + public readonly changed = output(); + + protected _handleChange(): void { + if (this.state().disabled()) return; + + const previousChecked = this.checked(); + this.checked.set(previousChecked === 'indeterminate' ? true : !previousChecked); + this._onChange(!previousChecked); + this.changed.emit(!previousChecked); + } + + /** CONROL VALUE ACCESSOR */ + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + writeValue(value: any): void { + this.checked.set(!!value); + } + // eslint-disable-next-line @typescript-eslint/no-empty-function,,@typescript-eslint/no-explicit-any + protected _onChange = (_: any) => {}; + // eslint-disable-next-line @typescript-eslint/no-empty-function + protected _onTouched = () => {}; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + registerOnChange(fn: any): void { + this._onChange = fn; + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + registerOnTouched(fn: any): void { + this._onTouched = fn; + } + + setDisabledState(isDisabled: boolean): void { + this.state().disabled.set(isDisabled); + } } diff --git a/webapp/src/libs/ui/ui-command-helm/src/index.ts b/webapp/src/libs/ui/ui-command-helm/src/index.ts index 00e79dad..68962838 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/index.ts @@ -28,22 +28,22 @@ export * from './lib/hlm-command-shortcut.component'; export * from './lib/hlm-command.directive'; export const HlmCommandImports = [ - HlmCommandDirective, - HlmCommandInputDirective, - HlmCommandItemDirective, - HlmCommandSeparatorDirective, - HlmCommandGroupDirective, - HlmCommandListDirective, - HlmCommandShortcutComponent, - HlmCommandItemIconDirective, - HlmCommandEmptyDirective, - HlmCommandInputWrapperComponent, - HlmCommandDialogCloseButtonDirective, - HlmCommandDialogDirective + HlmCommandDirective, + HlmCommandInputDirective, + HlmCommandItemDirective, + HlmCommandSeparatorDirective, + HlmCommandGroupDirective, + HlmCommandListDirective, + HlmCommandShortcutComponent, + HlmCommandItemIconDirective, + HlmCommandEmptyDirective, + HlmCommandInputWrapperComponent, + HlmCommandDialogCloseButtonDirective, + HlmCommandDialogDirective, ] as const; @NgModule({ - imports: [...HlmCommandImports], - exports: [...HlmCommandImports] + imports: [...HlmCommandImports], + exports: [...HlmCommandImports], }) export class HlmCommandModule {} diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-dialog-close-button.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-dialog-close-button.directive.ts index 84a32829..28dfe8f7 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-dialog-close-button.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-dialog-close-button.directive.ts @@ -1,22 +1,18 @@ -import { Directive, computed, inject, input } from '@angular/core'; -import { HlmButtonDirective } from '@spartan-ng/ui-button-helm'; +import { Directive, computed, input } from '@angular/core'; +import { HlmButtonDirective, provideBrnButtonConfig } from '@spartan-ng/ui-button-helm'; import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmCmdDialogCloseBtn]', - standalone: true, - hostDirectives: [HlmButtonDirective], - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCmdDialogCloseBtn]', + standalone: true, + hostDirectives: [HlmButtonDirective], + providers: [provideBrnButtonConfig({ variant: 'ghost' })], + host: { + '[class]': 'computedClass()', + }, }) export class HlmCommandDialogCloseButtonDirective { - private _hlmBtn = inject(HlmButtonDirective, { host: true }); - constructor() { - this._hlmBtn.variant = 'ghost'; - } - - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('!p-1 !h-5 !w-5', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly computedClass = computed(() => hlm('!p-1 !h-5 !w-5', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-dialog.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-dialog.directive.ts index 4e372c63..932427e4 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-dialog.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-dialog.directive.ts @@ -4,30 +4,30 @@ import type { ClassValue } from 'clsx'; import { HlmCommandDirective } from './hlm-command.directive'; @Directive({ - selector: '[hlmCmdDialog]', - standalone: true, - hostDirectives: [HlmCommandDirective], - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCmdDialog]', + standalone: true, + hostDirectives: [HlmCommandDirective], + host: { + '[class]': '_computedClass()', + }, }) export class HlmCommandDialogDirective { - private _stateProvider = injectExposesStateProvider({ host: true }); - public state = this._stateProvider.state ?? signal('closed').asReadonly(); - private _renderer = inject(Renderer2); - private _element = inject(ElementRef); + private readonly _stateProvider = injectExposesStateProvider({ host: true }); + public state = this._stateProvider.state ?? signal('closed').asReadonly(); + private readonly _renderer = inject(Renderer2); + private readonly _element = inject(ElementRef); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%]', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%]', + this.userClass(), + ), + ); - constructor() { - effect(() => { - this._renderer.setAttribute(this._element.nativeElement, 'data-state', this.state()); - }); - } + constructor() { + effect(() => { + this._renderer.setAttribute(this._element.nativeElement, 'data-state', this.state()); + }); + } } diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-empty.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-empty.directive.ts index 41423ed2..3af3ec7f 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-empty.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-empty.directive.ts @@ -3,13 +3,13 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmCmdEmpty]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCmdEmpty]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCommandEmptyDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('py-6 text-center text-sm', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('py-6 text-center text-sm', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-group.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-group.directive.ts index 119d65a9..c3596f21 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-group.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-group.directive.ts @@ -3,20 +3,20 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'brn-cmd-group[hlm],cmdk-group[hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: 'brn-cmd-group[hlm],cmdk-group[hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCommandGroupDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'block [&[cmdk-hidden="true"]]:hidden\n' + - '[&_.cmdk-group-label]:px-2 [&_.cmdk-group-label]:py-1.5 [&_.cmdk-group-label]:text-xs [&_.cmdk-group-label]:font-medium [&_.cmdk-group-label]:text-muted-foreground\n' + - '[&_.cmdk-group-content]:flex [&_.cmdk-group-content]:flex-col [&_.cmdk-group-content]:flex-col overflow-hidden p-1 text-foreground', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'block [&[cmdk-hidden="true"]]:hidden\n' + + '[&_.cmdk-group-label]:px-2 [&_.cmdk-group-label]:py-1.5 [&_.cmdk-group-label]:text-xs [&_.cmdk-group-label]:font-medium [&_.cmdk-group-label]:text-muted-foreground\n' + + '[&_.cmdk-group-content]:flex [&_.cmdk-group-content]:flex-col [&_.cmdk-group-content]:flex-col overflow-hidden p-1 text-foreground', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-input-wrapper.component.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-input-wrapper.component.ts index f4acb176..7fd92717 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-input-wrapper.component.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-input-wrapper.component.ts @@ -3,14 +3,16 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-cmd-input-wrapper', - standalone: true, - template: '', - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-cmd-input-wrapper', + standalone: true, + template: '', + host: { + '[class]': '_computedClass()', + }, }) export class HlmCommandInputWrapperComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('flex space-x-2 items-center border-b border-border px-3 [&_hlm-icon]:h-5 [&_hlm-icon]:w-5', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('flex space-x-2 items-center border-b border-border px-3 [&_hlm-icon]:h-5 [&_hlm-icon]:w-5', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-input.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-input.directive.ts index 44d3b25e..18c01615 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-input.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-input.directive.ts @@ -3,16 +3,19 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlm][brnCmdInput],[hlm][cmdkInput]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlm][brnCmdInput],[hlm][cmdkInput]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCommandInputDirective { - public readonly userClass = input('', { alias: 'class' }); + public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm('h-11 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50', this.userClass()) - ); + protected _computedClass = computed(() => + hlm( + 'h-11 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-item-icon.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-item-icon.directive.ts index 2ec7a612..ad9ad9c8 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-item-icon.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-item-icon.directive.ts @@ -1,23 +1,17 @@ -import { Directive, computed, inject, input } from '@angular/core'; +import { Directive, computed, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; -import { HlmIconComponent } from '@spartan-ng/ui-icon-helm'; +import { provideHlmIconConfig } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmCmdIcon]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCmdIcon]', + standalone: true, + providers: [provideHlmIconConfig({ size: 'none' })], + host: { + '[class]': '_computedClass()', + }, }) export class HlmCommandItemIconDirective { - private _menuIcon = inject(HlmIconComponent, { host: true, optional: true }); - - constructor() { - if (!this._menuIcon) return; - this._menuIcon.size = 'none'; - } - - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('mr-2 h-4 w-4', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('mr-2 h-4 w-4', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-item.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-item.directive.ts index b2bcab1a..0718504f 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-item.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-item.directive.ts @@ -3,26 +3,26 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlm][brnCmdItem],[hlm][cmdkItem]', - standalone: true, - host: { - '[class]': '_computedClass()', - // This is needed after changes to the underlying CMDK library used for the BrnCommand primitive - // Ideally we would remove the dependency on this outside module. If you are open to that please - // reach out and if you are feeling super ambitious you can implement it yourself and open a PR! - '[style.display]': '"flex"' - } + selector: '[hlm][brnCmdItem],[hlm][cmdkItem]', + standalone: true, + host: { + '[class]': '_computedClass()', + // This is needed after changes to the underlying CMDK library used for the BrnCommand primitive + // Ideally we would remove the dependency on this outside module. If you are open to that please + // reach out and if you are feeling super ambitious you can implement it yourself and open a PR! + '[style.display]': '"flex"', + }, }) export class HlmCommandItemDirective { - public readonly userClass = input('', { alias: 'class' }); + public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'items-center relative cursor-default select-none rounded-sm px-2 py-1.5 text-sm outline-none\n' + - 'aria-selected:bg-accent aria-selected:text-accent-foreground\n' + - 'hover:bg-accent/50\n' + - 'disabled:pointer-events-none disabled:opacity-50', - this.userClass() - ) - ); + protected _computedClass = computed(() => + hlm( + 'items-center relative cursor-default select-none rounded-sm px-2 py-1.5 text-sm outline-none\n' + + 'aria-selected:bg-accent aria-selected:text-accent-foreground\n' + + 'hover:bg-accent/50\n' + + 'disabled:pointer-events-none disabled:opacity-50', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-list.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-list.directive.ts index 2fba0c8b..11849782 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-list.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-list.directive.ts @@ -3,13 +3,13 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'cmdk-list[hlm],brn-cmd-list[hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: 'cmdk-list[hlm],brn-cmd-list[hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCommandListDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('max-h-[300px] overflow-y-auto overflow-x-hidden', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('max-h-[300px] overflow-y-auto overflow-x-hidden', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-loader.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-loader.directive.ts index efa5ec26..c4d3c639 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-loader.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-loader.directive.ts @@ -1,7 +1,7 @@ import { Directive } from '@angular/core'; @Directive({ - selector: '[hlmCmdLoader]', - standalone: true + selector: '[hlmCmdLoader]', + standalone: true, }) export class HlmCommandLoaderDirective {} diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-separator.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-separator.directive.ts index 9cc90b33..3edbeac0 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-separator.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-separator.directive.ts @@ -1,10 +1,10 @@ import { Directive } from '@angular/core'; @Directive({ - selector: 'cmdk-separator[hlm],brn-cmd-separator[hlm],[hlmCmdSeparator]', - standalone: true, - host: { - class: '[&_hr]:border-border [&[cmdk-hidden="true"]]:hidden' - } + selector: 'cmdk-separator[hlm],brn-cmd-separator[hlm],[hlmCmdSeparator]', + standalone: true, + host: { + class: '[&_hr]:border-border [&[cmdk-hidden="true"]]:hidden', + }, }) export class HlmCommandSeparatorDirective {} diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-shortcut.component.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-shortcut.component.ts index 5209a23a..3a6132a9 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-shortcut.component.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command-shortcut.component.ts @@ -3,14 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-cmd-shortcut', - standalone: true, - template: ` `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-cmd-shortcut', + standalone: true, + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCommandShortcutComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('ml-auto font-light text-xs tracking-widest opacity-60', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('ml-auto font-light text-xs tracking-widest opacity-60', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command.directive.ts b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command.directive.ts index 70a64ed4..f40adba9 100644 --- a/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command.directive.ts +++ b/webapp/src/libs/ui/ui-command-helm/src/lib/hlm-command.directive.ts @@ -3,15 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'cmdk-command[hlm],brn-cmd[hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: 'cmdk-command[hlm],brn-cmd[hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCommandDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm('flex h-full w-full flex-col overflow-hidden rounded-md border border-border bg-popover text-popover-foreground', this.userClass()) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'flex h-full w-full flex-col overflow-hidden rounded-md border border-border bg-popover text-popover-foreground', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-dialog-helm/src/index.ts b/webapp/src/libs/ui/ui-dialog-helm/src/index.ts index 27235723..fb6b7041 100644 --- a/webapp/src/libs/ui/ui-dialog-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-dialog-helm/src/index.ts @@ -20,18 +20,18 @@ export * from './lib/hlm-dialog.component'; export * from './lib/hlm-dialog.service'; export const HlmDialogImports = [ - HlmDialogComponent, - HlmDialogCloseDirective, - HlmDialogContentComponent, - HlmDialogDescriptionDirective, - HlmDialogFooterComponent, - HlmDialogHeaderComponent, - HlmDialogOverlayDirective, - HlmDialogTitleDirective + HlmDialogComponent, + HlmDialogCloseDirective, + HlmDialogContentComponent, + HlmDialogDescriptionDirective, + HlmDialogFooterComponent, + HlmDialogHeaderComponent, + HlmDialogOverlayDirective, + HlmDialogTitleDirective, ] as const; @NgModule({ - imports: [...HlmDialogImports], - exports: [...HlmDialogImports] + imports: [...HlmDialogImports], + exports: [...HlmDialogImports], }) export class HlmDialogModule {} diff --git a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-close.directive.ts b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-close.directive.ts index fd4fb74f..7ba493ca 100644 --- a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-close.directive.ts +++ b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-close.directive.ts @@ -3,18 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmDialogClose],[brnDialogClose][hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmDialogClose],[brnDialogClose][hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmDialogCloseDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-content.component.ts b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-content.component.ts index b8fed7be..37107fdc 100644 --- a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-content.component.ts +++ b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-content.component.ts @@ -8,44 +8,44 @@ import type { ClassValue } from 'clsx'; import { HlmDialogCloseDirective } from './hlm-dialog-close.directive'; @Component({ - selector: 'hlm-dialog-content', - standalone: true, - imports: [NgComponentOutlet, BrnDialogCloseDirective, HlmDialogCloseDirective, HlmIconComponent], - providers: [provideIcons({ lucideX })], - host: { - '[class]': '_computedClass()', - '[attr.data-state]': 'state()' - }, - template: ` - @if (component) { - - } @else { - - } + selector: 'hlm-dialog-content', + standalone: true, + imports: [NgComponentOutlet, BrnDialogCloseDirective, HlmDialogCloseDirective, HlmIconComponent], + providers: [provideIcons({ lucideX })], + host: { + '[class]': '_computedClass()', + '[attr.data-state]': 'state()', + }, + template: ` + @if (component) { + + } @else { + + } - - `, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None + + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, }) export class HlmDialogContentComponent { - private readonly _dialogRef = inject(BrnDialogRef); - private readonly _dialogContext = injectBrnDialogContext({ optional: true }); + private readonly _dialogRef = inject(BrnDialogRef); + private readonly _dialogContext = injectBrnDialogContext({ optional: true }); - public readonly state = computed(() => this._dialogRef?.state() ?? 'closed'); + public readonly state = computed(() => this._dialogRef?.state() ?? 'closed'); - public readonly component = this._dialogContext?.$component; - private readonly _dynamicComponentClass = this._dialogContext?.$dynamicComponentClass; + public readonly component = this._dialogContext?.$component; + private readonly _dynamicComponentClass = this._dialogContext?.$dynamicComponentClass; - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => - hlm( - 'border-border grid w-full max-w-lg relative gap-4 border bg-background p-6 shadow-lg [animation-duration:200] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%] sm:rounded-lg md:w-full', - this.userClass(), - this._dynamicComponentClass - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm( + 'border-border grid w-full max-w-lg relative gap-4 border bg-background p-6 shadow-lg [animation-duration:200] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%] sm:rounded-lg md:w-full', + this.userClass(), + this._dynamicComponentClass, + ), + ); } diff --git a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-description.directive.ts b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-description.directive.ts index 935ce8f4..784ce18a 100644 --- a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-description.directive.ts +++ b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-description.directive.ts @@ -4,14 +4,14 @@ import { BrnDialogDescriptionDirective } from '@spartan-ng/ui-dialog-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmDialogDescription]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnDialogDescriptionDirective] + selector: '[hlmDialogDescription]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnDialogDescriptionDirective], }) export class HlmDialogDescriptionDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('text-sm text-muted-foreground', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('text-sm text-muted-foreground', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-footer.component.ts b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-footer.component.ts index 32aa773d..ba21d47f 100644 --- a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-footer.component.ts +++ b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-footer.component.ts @@ -3,14 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-dialog-footer', - standalone: true, - template: ` `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-dialog-footer', + standalone: true, + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmDialogFooterComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-header.component.ts b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-header.component.ts index fd4a0f9c..b784a102 100644 --- a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-header.component.ts +++ b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-header.component.ts @@ -3,14 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-dialog-header', - standalone: true, - template: ` `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-dialog-header', + standalone: true, + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmDialogHeaderComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('flex flex-col space-y-1.5 text-center sm:text-left', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('flex flex-col space-y-1.5 text-center sm:text-left', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-overlay.directive.ts b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-overlay.directive.ts index 1b36dc79..c5d8e09b 100644 --- a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-overlay.directive.ts +++ b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-overlay.directive.ts @@ -3,21 +3,21 @@ import { hlm, injectCustomClassSettable } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; export const hlmDialogOverlayClass = - 'bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0'; + 'bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0'; @Directive({ - selector: '[hlmDialogOverlay],brn-dialog-overlay[hlm]', - standalone: true + selector: '[hlmDialogOverlay],brn-dialog-overlay[hlm]', + standalone: true, }) export class HlmDialogOverlayDirective { - private readonly _classSettable = injectCustomClassSettable({ optional: true, host: true }); + private readonly _classSettable = injectCustomClassSettable({ optional: true, host: true }); - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm(hlmDialogOverlayClass, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm(hlmDialogOverlayClass, this.userClass())); - constructor() { - effect(() => { - this._classSettable?.setClassToCustomElement(this._computedClass()); - }); - } + constructor() { + effect(() => { + this._classSettable?.setClassToCustomElement(this._computedClass()); + }); + } } diff --git a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-title.directive.ts b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-title.directive.ts index 576d8d32..4e32adb4 100644 --- a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-title.directive.ts +++ b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog-title.directive.ts @@ -4,14 +4,14 @@ import { BrnDialogTitleDirective } from '@spartan-ng/ui-dialog-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmDialogTitle]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnDialogTitleDirective] + selector: '[hlmDialogTitle]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnDialogTitleDirective], }) export class HlmDialogTitleDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('text-lg font-semibold leading-none tracking-tight', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('text-lg font-semibold leading-none tracking-tight', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog.component.ts b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog.component.ts index 309ab725..74e049c7 100644 --- a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog.component.ts +++ b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog.component.ts @@ -3,26 +3,26 @@ import { BrnDialogComponent, BrnDialogOverlayComponent } from '@spartan-ng/ui-di import { HlmDialogOverlayDirective } from './hlm-dialog-overlay.directive'; @Component({ - selector: 'hlm-dialog', - standalone: true, - imports: [BrnDialogComponent, BrnDialogOverlayComponent, HlmDialogOverlayDirective], - providers: [ - { - provide: BrnDialogComponent, - useExisting: forwardRef(() => HlmDialogComponent) - } - ], - template: ` - - - `, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - exportAs: 'hlmDialog' + selector: 'hlm-dialog', + standalone: true, + imports: [BrnDialogComponent, BrnDialogOverlayComponent, HlmDialogOverlayDirective], + providers: [ + { + provide: BrnDialogComponent, + useExisting: forwardRef(() => HlmDialogComponent), + }, + ], + template: ` + + + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + exportAs: 'hlmDialog', }) export class HlmDialogComponent extends BrnDialogComponent { - constructor() { - super(); - this.closeDelay = 100; - } + constructor() { + super(); + this.closeDelay = 100; + } } diff --git a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog.service.ts b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog.service.ts index b19bbd8b..84c73d7e 100644 --- a/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog.service.ts +++ b/webapp/src/libs/ui/ui-dialog-helm/src/lib/hlm-dialog.service.ts @@ -1,30 +1,36 @@ import type { ComponentType } from '@angular/cdk/portal'; import { Injectable, type TemplateRef, inject } from '@angular/core'; -import { type BrnDialogOptions, BrnDialogService, DEFAULT_BRN_DIALOG_OPTIONS, cssClassesToArray } from '@spartan-ng/ui-dialog-brain'; +import { + type BrnDialogOptions, + BrnDialogService, + DEFAULT_BRN_DIALOG_OPTIONS, + cssClassesToArray, +} from '@spartan-ng/ui-dialog-brain'; import { HlmDialogContentComponent } from './hlm-dialog-content.component'; import { hlmDialogOverlayClass } from './hlm-dialog-overlay.directive'; // eslint-disable-next-line @typescript-eslint/no-explicit-any export type HlmDialogOptions = BrnDialogOptions & { - contentClass?: string; - context?: DialogContext; + contentClass?: string; + context?: DialogContext; }; @Injectable({ - providedIn: 'root' + providedIn: 'root', }) export class HlmDialogService { - private readonly _brnDialogService = inject(BrnDialogService); + private readonly _brnDialogService = inject(BrnDialogService); - public open(component: ComponentType | TemplateRef, options?: Partial) { - options = { - ...DEFAULT_BRN_DIALOG_OPTIONS, - closeDelay: 100, - ...(options ?? {}), - backdropClass: cssClassesToArray(`${hlmDialogOverlayClass} ${options?.backdropClass ?? ''}`), - context: { ...options?.context, $component: component, $dynamicComponentClass: options?.contentClass } - }; + public open(component: ComponentType | TemplateRef, options?: Partial) { + const mergedOptions = { + ...DEFAULT_BRN_DIALOG_OPTIONS, + closeDelay: 100, - return this._brnDialogService.open(HlmDialogContentComponent, undefined, options.context, options); - } + ...(options ?? {}), + backdropClass: cssClassesToArray(`${hlmDialogOverlayClass} ${options?.backdropClass ?? ''}`), + context: { ...options?.context, $component: component, $dynamicComponentClass: options?.contentClass }, + }; + + return this._brnDialogService.open(HlmDialogContentComponent, undefined, mergedOptions.context, mergedOptions); + } } diff --git a/webapp/src/libs/ui/ui-formfield-helm/src/index.ts b/webapp/src/libs/ui/ui-formfield-helm/src/index.ts index f0a92b4f..9c14fd5f 100644 --- a/webapp/src/libs/ui/ui-formfield-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-formfield-helm/src/index.ts @@ -8,7 +8,7 @@ export * from './lib/hlm-form-field.component'; export * from './lib/hlm-hint.directive'; @NgModule({ - imports: [HlmFormFieldComponent, HlmErrorDirective, HlmHintDirective], - exports: [HlmFormFieldComponent, HlmErrorDirective, HlmHintDirective] + imports: [HlmFormFieldComponent, HlmErrorDirective, HlmHintDirective], + exports: [HlmFormFieldComponent, HlmErrorDirective, HlmHintDirective], }) export class HlmFormFieldModule {} diff --git a/webapp/src/libs/ui/ui-formfield-helm/src/lib/form-field.spec.ts b/webapp/src/libs/ui/ui-formfield-helm/src/lib/form-field.spec.ts new file mode 100644 index 00000000..8edf1c52 --- /dev/null +++ b/webapp/src/libs/ui/ui-formfield-helm/src/lib/form-field.spec.ts @@ -0,0 +1,136 @@ +/* eslint-disable @angular-eslint/component-class-suffix */ +/* eslint-disable @angular-eslint/component-selector */ +import { Component } from '@angular/core'; +import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms'; +import { render, screen } from '@testing-library/angular'; +import userEvent from '@testing-library/user-event'; + +import { HlmInputDirective } from '@spartan-ng/ui-input-helm'; + +import { ErrorStateMatcher, ShowOnDirtyErrorStateMatcher } from '@spartan-ng/ui-forms-brain'; +import { HlmErrorDirective } from './hlm-error.directive'; +import { HlmFormFieldComponent } from './hlm-form-field.component'; +import { HlmHintDirective } from './hlm-hint.directive'; + +const DIRECTIVES = [HlmFormFieldComponent, HlmErrorDirective, HlmHintDirective, HlmInputDirective]; + +@Component({ + standalone: true, + selector: 'single-form-field-example', + imports: [ReactiveFormsModule, ...DIRECTIVES], + template: ` + + + Your name is required + This is your public display name. + + `, +}) +class SingleFormFieldMock { + public name = new FormControl('', Validators.required); +} + +@Component({ + standalone: true, + selector: 'single-form-field-dirty-example', + imports: [ReactiveFormsModule, ...DIRECTIVES], + template: ` + + + Your name is required + This is your public display name. + + `, + providers: [{ provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher }], +}) +class SingleFormFieldDirtyMock { + public name = new FormControl('', Validators.required); +} + +describe('Hlm Form Field Component', () => { + const TEXT_HINT = 'This is your public display name.'; + const TEXT_ERROR = 'Your name is required'; + + const setupFormField = async () => { + const { fixture } = await render(SingleFormFieldMock); + return { + user: userEvent.setup(), + fixture, + hint: screen.getByTestId('hlm-hint'), + error: () => screen.queryByTestId('hlm-error'), + trigger: screen.getByTestId('hlm-input'), + }; + }; + + const setupFormFieldWithErrorStateDirty = async () => { + const { fixture } = await render(SingleFormFieldDirtyMock); + return { + user: userEvent.setup(), + fixture, + hint: screen.getByTestId('hlm-hint'), + error: () => screen.queryByTestId('hlm-error'), + trigger: screen.getByTestId('hlm-input'), + }; + }; + + describe('SingleFormField', () => { + it('should show the hint if the errorState is false', async () => { + const { hint } = await setupFormField(); + + expect(hint.textContent).toBe(TEXT_HINT); + }); + + it('should show the error if the errorState is true', async () => { + const { user, error, trigger } = await setupFormField(); + + expect(error()).toBeNull(); + + await user.click(trigger); + + await user.click(document.body); + + expect(screen.queryByTestId('hlm-hint')).toBeNull(); + expect(error()?.textContent?.trim()).toBe(TEXT_ERROR); + }); + }); + + describe('SingleFormFieldDirty', () => { + it('should not display the error if the input does not have the dirty state due to the ErrorStateMatcher', async () => { + const { error, user, trigger } = await setupFormFieldWithErrorStateDirty(); + + await user.click(trigger); + + await user.click(document.body); + + expect(error()).toBeNull(); + }); + + it('should display the error if the input has the dirty state due to the ErrorStateMatcher', async () => { + const { error, user, trigger } = await setupFormFieldWithErrorStateDirty(); + + await user.click(trigger); + await user.type(trigger, 'a'); + await user.clear(trigger); + + await user.click(document.body); + + expect(error()?.textContent?.trim()).toBe(TEXT_ERROR); + }); + }); +}); diff --git a/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-error.directive.ts b/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-error.directive.ts index d425eeb4..aacc9a3f 100644 --- a/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-error.directive.ts +++ b/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-error.directive.ts @@ -1,11 +1,11 @@ import { Directive } from '@angular/core'; @Directive({ - standalone: true, - // eslint-disable-next-line @angular-eslint/directive-selector - selector: 'hlm-error', - host: { - class: 'block text-destructive text-sm font-medium' - } + standalone: true, + // eslint-disable-next-line @angular-eslint/directive-selector + selector: 'hlm-error', + host: { + class: 'block text-destructive text-sm font-medium', + }, }) export class HlmErrorDirective {} diff --git a/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-form-field.component.ts b/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-form-field.component.ts index df3ea162..242b7503 100644 --- a/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-form-field.component.ts +++ b/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-form-field.component.ts @@ -1,41 +1,40 @@ -import { Component, type Signal, computed, contentChild, contentChildren, effect } from '@angular/core'; - +import { Component, computed, contentChild, contentChildren, effect } from '@angular/core'; import { BrnFormFieldControl } from '@spartan-ng/ui-formfield-brain'; import { HlmErrorDirective } from './hlm-error.directive'; @Component({ - selector: 'hlm-form-field', - template: ` - + selector: 'hlm-form-field', + template: ` + - @switch (hasDisplayedMessage()) { - @case ('error') { - - } - @default { - - } - } - `, - standalone: true, - host: { - class: 'space-y-2 block' - } + @switch (hasDisplayedMessage()) { + @case ('error') { + + } + @default { + + } + } + `, + standalone: true, + host: { + class: 'space-y-2 block', + }, }) export class HlmFormFieldComponent { - control = contentChild(BrnFormFieldControl); + public readonly control = contentChild(BrnFormFieldControl); - errorChildren = contentChildren(HlmErrorDirective); + public readonly errorChildren = contentChildren(HlmErrorDirective); - hasDisplayedMessage: Signal<'error' | 'hint'> = computed(() => { - return this.errorChildren() && this.errorChildren().length > 0 && this.control()?.errorState() ? 'error' : 'hint'; - }); + protected readonly hasDisplayedMessage = computed<'error' | 'hint'>(() => + this.errorChildren() && this.errorChildren().length > 0 && this.control()?.errorState() ? 'error' : 'hint', + ); - constructor() { - effect(() => { - if (!this.control()) { - throw new Error('hlm-form-field must contain a BrnFormFieldControl.'); - } - }); - } + constructor() { + effect(() => { + if (!this.control()) { + throw new Error('hlm-form-field must contain a BrnFormFieldControl.'); + } + }); + } } diff --git a/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-hint.directive.ts b/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-hint.directive.ts index b794b26d..596b33be 100644 --- a/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-hint.directive.ts +++ b/webapp/src/libs/ui/ui-formfield-helm/src/lib/hlm-hint.directive.ts @@ -1,11 +1,11 @@ import { Directive } from '@angular/core'; @Directive({ - // eslint-disable-next-line @angular-eslint/directive-selector - selector: 'hlm-hint', - standalone: true, - host: { - class: 'block text-sm text-muted-foreground' - } + // eslint-disable-next-line @angular-eslint/directive-selector + selector: 'hlm-hint', + standalone: true, + host: { + class: 'block text-sm text-muted-foreground', + }, }) export class HlmHintDirective {} diff --git a/webapp/src/libs/ui/ui-hovercard-helm/src/index.ts b/webapp/src/libs/ui/ui-hovercard-helm/src/index.ts index aef08a82..75ad3b0d 100644 --- a/webapp/src/libs/ui/ui-hovercard-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-hovercard-helm/src/index.ts @@ -6,7 +6,7 @@ export { HlmHoverCardContentComponent } from './lib/hlm-hover-card-content.compo export const HlmHoverCardImports = [HlmHoverCardContentComponent] as const; @NgModule({ - imports: [...HlmHoverCardImports], - exports: [...HlmHoverCardImports] + imports: [...HlmHoverCardImports], + exports: [...HlmHoverCardImports], }) export class HlmHoverCardModule {} diff --git a/webapp/src/libs/ui/ui-hovercard-helm/src/lib/hlm-hover-card-content.component.ts b/webapp/src/libs/ui/ui-hovercard-helm/src/lib/hlm-hover-card-content.component.ts index dbd2bf5d..8681e8c4 100644 --- a/webapp/src/libs/ui/ui-hovercard-helm/src/lib/hlm-hover-card-content.component.ts +++ b/webapp/src/libs/ui/ui-hovercard-helm/src/lib/hlm-hover-card-content.component.ts @@ -3,33 +3,35 @@ import { hlm, injectExposedSideProvider, injectExposesStateProvider } from '@spa import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-hover-card-content', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - template: ` ` + selector: 'hlm-hover-card-content', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + template: ` + + `, }) export class HlmHoverCardContentComponent { - private readonly _renderer = inject(Renderer2); - private readonly _element = inject(ElementRef); + private readonly _renderer = inject(Renderer2); + private readonly _element = inject(ElementRef); - public readonly state = injectExposesStateProvider({ host: true }).state ?? signal('closed').asReadonly(); - public readonly side = injectExposedSideProvider({ host: true }).side ?? signal('bottom').asReadonly(); + public readonly state = injectExposesStateProvider({ host: true }).state ?? signal('closed').asReadonly(); + public readonly side = injectExposedSideProvider({ host: true }).side ?? signal('bottom').asReadonly(); - constructor() { - effect(() => { - this._renderer.setAttribute(this._element.nativeElement, 'data-state', this.state()); - this._renderer.setAttribute(this._element.nativeElement, 'data-side', this.side()); - }); - } + constructor() { + effect(() => { + this._renderer.setAttribute(this._element.nativeElement, 'data-state', this.state()); + this._renderer.setAttribute(this._element.nativeElement, 'data-side', this.side()); + }); + } - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => - hlm( - 'z-50 w-64 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none', - 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm( + 'z-50 w-64 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none', + 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-icon-helm/src/index.ts b/webapp/src/libs/ui/ui-icon-helm/src/index.ts index 45eaec02..38602f1d 100644 --- a/webapp/src/libs/ui/ui-icon-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-icon-helm/src/index.ts @@ -3,11 +3,12 @@ import { provideIcons as provideIconsImport } from '@ng-icons/core'; import { HlmIconComponent } from './lib/hlm-icon.component'; export * from './lib/hlm-icon.component'; +export * from './lib/hlm-icon.token'; export const provideIcons = provideIconsImport; @NgModule({ - imports: [HlmIconComponent], - exports: [HlmIconComponent] + imports: [HlmIconComponent], + exports: [HlmIconComponent], }) export class HlmIconModule {} diff --git a/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.spec.ts b/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.spec.ts new file mode 100644 index 00000000..513bf9e2 --- /dev/null +++ b/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.spec.ts @@ -0,0 +1,64 @@ +import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { By } from '@angular/platform-browser'; +import { NgIconComponent, provideIcons } from '@ng-icons/core'; +import { lucideCheck } from '@ng-icons/lucide'; +import { type RenderResult, render } from '@testing-library/angular'; +import { HlmIconComponent } from './hlm-icon.component'; + +@Component({ + selector: 'hlm-mock', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [HlmIconComponent], + providers: [provideIcons({ lucideCheck })], + template: ` + + `, +}) +class HlmMockComponent { + @Input() public size = 'base'; +} + +describe('HlmIconComponent', () => { + let r: RenderResult; + + beforeEach(async () => { + r = await render(HlmMockComponent); + }); + + it('should create', () => { + expect(r).toBeTruthy(); + }); + + it('should render the icon', () => { + expect(r.container.querySelector('svg')).toBeTruthy(); + }); + + it('should pass the size, color and strokeWidth props and the classes to the ng-icon component', () => { + const debugEl = r.fixture.debugElement.query(By.directive(NgIconComponent)); + const component = debugEl.componentInstance as NgIconComponent; + expect(component.color()).toBe('red'); + expect(component.strokeWidth()).toBe('2'); + expect(component.size()).toBe('100%'); + expect(debugEl.nativeElement.classList).toContain('test2'); + }); + + it('should add the appropriate size variant class', () => { + expect(r.container.querySelector('hlm-icon')?.classList).toContain('h-6'); + expect(r.container.querySelector('hlm-icon')?.classList).toContain('w-6'); + }); + + it('should compose the user classes', () => { + expect(r.container.querySelector('hlm-icon')?.classList).toContain('inline-flex'); + expect(r.container.querySelector('hlm-icon')?.classList).toContain('test'); + }); + + it('should forward the size property if the size is not a pre-defined size', async () => { + await r.rerender({ componentInputs: { size: '2rem' } }); + r.fixture.detectChanges(); + const debugEl = r.fixture.debugElement.query(By.directive(NgIconComponent)); + expect(debugEl.componentInstance.size()).toBe('2rem'); + expect(r.container.querySelector('hlm-icon')?.classList).not.toContain('h-6'); + expect(r.container.querySelector('hlm-icon')?.classList).not.toContain('w-6'); + }); +}); diff --git a/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.ts b/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.ts index 60f70960..b3f92e5d 100644 --- a/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.ts +++ b/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.ts @@ -1,121 +1,118 @@ import { isPlatformBrowser } from '@angular/common'; -import { ChangeDetectionStrategy, Component, ElementRef, Input, type OnDestroy, PLATFORM_ID, ViewEncapsulation, computed, inject, signal } from '@angular/core'; -import { type IconName, NgIconComponent } from '@ng-icons/core'; +import { + ChangeDetectionStrategy, + Component, + ElementRef, + type OnDestroy, + PLATFORM_ID, + ViewEncapsulation, + computed, + inject, + input, + signal, +} from '@angular/core'; +import { type IconType, NgIconComponent } from '@ng-icons/core'; import { hlm } from '@spartan-ng/ui-core'; -import { cva } from 'class-variance-authority'; +import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; +import { injectHlmIconConfig } from './hlm-icon.token'; -const DEFINED_SIZES = ['xs', 'sm', 'normal', 'base', 'lg', 'xl', 'none'] as const; +const DEFINED_SIZES = ['xs', 'sm', 'base', 'lg', 'xl', 'none'] as const; type DefinedSizes = (typeof DEFINED_SIZES)[number]; export const iconVariants = cva('inline-flex', { - variants: { - variant: { - xs: 'h-3 w-3', - sm: 'h-4 w-4', - normal: 'h-5 w-5', - base: 'h-6 w-6', - lg: 'h-8 w-8', - xl: 'h-12 w-12', - none: '' - } satisfies Record - }, - defaultVariants: { - variant: 'base' - } + variants: { + variant: { + xs: 'h-3 w-3', + sm: 'h-4 w-4', + base: 'h-6 w-6', + lg: 'h-8 w-8', + xl: 'h-12 w-12', + none: '', + } satisfies Record, + }, + defaultVariants: { + variant: 'base', + }, }); +export type IconVariants = VariantProps; + export type IconSize = DefinedSizes | (Record & string); const isDefinedSize = (size: IconSize): size is DefinedSizes => { - return DEFINED_SIZES.includes(size as DefinedSizes); + return DEFINED_SIZES.includes(size as DefinedSizes); }; const TAILWIND_H_W_PATTERN = /\b(h-\d+|w-\d+)\b/g; @Component({ - selector: 'hlm-icon', - standalone: true, - imports: [NgIconComponent], - encapsulation: ViewEncapsulation.None, - changeDetection: ChangeDetectionStrategy.OnPush, - template: ` `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-icon', + standalone: true, + imports: [NgIconComponent], + encapsulation: ViewEncapsulation.None, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmIconComponent implements OnDestroy { - private readonly _host = inject(ElementRef); - private readonly _platformId = inject(PLATFORM_ID); - - private _mutObs?: MutationObserver; - - private readonly _hostClasses = signal(''); - - protected readonly _name = signal(''); - protected readonly _size = signal('base'); - protected readonly _color = signal(undefined); - protected readonly _strokeWidth = signal(undefined); - protected readonly userCls = signal(''); - protected readonly ngIconSize = computed(() => (isDefinedSize(this._size()) ? '100%' : (this._size() as string))); - protected readonly ngIconCls = signal(''); - - protected readonly _computedClass = computed(() => { - const size: IconSize = this._size(); - const hostClasses = this._hostClasses(); - const userCls = this.userCls(); - const variant = isDefinedSize(size) ? size : 'none'; - const classes = variant === 'none' && size === 'none' ? hostClasses : hostClasses.replace(TAILWIND_H_W_PATTERN, ''); - return hlm(iconVariants({ variant }), userCls, classes); - }); - - constructor() { - if (isPlatformBrowser(this._platformId)) { - this._mutObs = new MutationObserver((mutations: MutationRecord[]) => { - mutations.forEach((mutation: MutationRecord) => { - if (mutation.attributeName !== 'class') return; - this._hostClasses.set((mutation.target as Node & { className?: string })?.className ?? ''); - }); - }); - this._mutObs.observe(this._host.nativeElement, { - attributes: true - }); - } - } - - ngOnDestroy() { - this._mutObs?.disconnect(); - this._mutObs = undefined; - } - - @Input() - set name(value: IconName | string) { - this._name.set(value); - } - - @Input() - set size(value: IconSize) { - this._size.set(value); - } - - @Input() - set color(value: string | undefined) { - this._color.set(value); - } - - @Input() - set strokeWidth(value: string | number | undefined) { - this._strokeWidth.set(value); - } - - @Input() - set ngIconClass(cls: ClassValue) { - this.ngIconCls.set(cls); - } - - @Input() - set class(cls: ClassValue) { - this.userCls.set(cls); - } + private readonly _host = inject(ElementRef); + private readonly _platformId = inject(PLATFORM_ID); + private readonly _config = injectHlmIconConfig(); + + private _mutObs?: MutationObserver; + + private readonly _hostClasses = signal(''); + + public readonly name = input(this._config.name); + + public readonly size = input(this._config.size); + + protected readonly ngIconSize = computed(() => (isDefinedSize(this.size()) ? '100%' : (this.size() as string))); + + public readonly color = input(undefined); + + public readonly strokeWidth = input(undefined); + + public readonly ngIconClass = input(''); + + public readonly userClass = input('', { alias: 'class' }); + + protected readonly _computedClass = computed(() => { + const size: IconSize = this.size(); + const hostClasses = this._hostClasses(); + const variant = isDefinedSize(size) ? size : 'none'; + const classes = variant === 'none' && size === 'none' ? hostClasses : hostClasses.replace(TAILWIND_H_W_PATTERN, ''); + return hlm(iconVariants({ variant }), this.userClass(), classes); + }); + + constructor() { + if (isPlatformBrowser(this._platformId)) { + this._mutObs = new MutationObserver((mutations: MutationRecord[]) => { + mutations.forEach((mutation: MutationRecord) => { + if (mutation.attributeName !== 'class') return; + this._hostClasses.set((mutation.target as Node & { className?: string })?.className ?? ''); + }); + }); + this._mutObs.observe(this._host.nativeElement, { + attributes: true, + }); + } + } + + ngOnDestroy() { + this._mutObs?.disconnect(); + this._mutObs = undefined; + } } diff --git a/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.token.ts b/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.token.ts new file mode 100644 index 00000000..d3ecaaed --- /dev/null +++ b/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.token.ts @@ -0,0 +1,23 @@ +import { InjectionToken, ValueProvider, inject } from '@angular/core'; +import { type IconType } from '@ng-icons/core'; +import type { IconSize } from './hlm-icon.component'; + +export interface HlmIconConfig { + name: IconType; + size: IconSize; +} + +const defaultConfig: HlmIconConfig = { + name: '', + size: 'base', +}; + +const HlmIconConfigToken = new InjectionToken('HlmIconConfig'); + +export function provideHlmIconConfig(config: Partial): ValueProvider { + return { provide: HlmIconConfigToken, useValue: { ...defaultConfig, ...config } }; +} + +export function injectHlmIconConfig(): HlmIconConfig { + return inject(HlmIconConfigToken, { optional: true }) ?? defaultConfig; +} diff --git a/webapp/src/libs/ui/ui-input-helm/src/index.ts b/webapp/src/libs/ui/ui-input-helm/src/index.ts index d505a289..3bf4bec1 100644 --- a/webapp/src/libs/ui/ui-input-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-input-helm/src/index.ts @@ -6,7 +6,7 @@ export * from './lib/hlm-input-error.directive'; export * from './lib/hlm-input.directive'; @NgModule({ - imports: [HlmInputDirective, HlmInputErrorDirective], - exports: [HlmInputDirective, HlmInputErrorDirective] + imports: [HlmInputDirective, HlmInputErrorDirective], + exports: [HlmInputDirective, HlmInputErrorDirective], }) export class HlmInputModule {} diff --git a/webapp/src/libs/ui/ui-input-helm/src/lib/hlm-input-error.directive.ts b/webapp/src/libs/ui/ui-input-helm/src/lib/hlm-input-error.directive.ts index 1472bd02..b643579b 100644 --- a/webapp/src/libs/ui/ui-input-helm/src/lib/hlm-input-error.directive.ts +++ b/webapp/src/libs/ui/ui-input-helm/src/lib/hlm-input-error.directive.ts @@ -4,19 +4,19 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const inputErrorVariants = cva('text-destructive text-sm font-medium', { - variants: {}, - defaultVariants: {} + variants: {}, + defaultVariants: {}, }); export type InputErrorVariants = VariantProps; @Directive({ - selector: '[hlmInputError]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmInputError]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmInputErrorDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(inputErrorVariants(), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(inputErrorVariants(), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-input-helm/src/lib/hlm-input.directive.ts b/webapp/src/libs/ui/ui-input-helm/src/lib/hlm-input.directive.ts index 28d81420..eb7701b3 100644 --- a/webapp/src/libs/ui/ui-input-helm/src/lib/hlm-input.directive.ts +++ b/webapp/src/libs/ui/ui-input-helm/src/lib/hlm-input.directive.ts @@ -1,4 +1,4 @@ -import { Directive, type DoCheck, Injector, Input, computed, effect, inject, input, signal } from '@angular/core'; +import { Directive, type DoCheck, Injector, computed, effect, inject, input, signal } from '@angular/core'; import { FormGroupDirective, NgControl, NgForm } from '@angular/forms'; import { hlm } from '@spartan-ng/ui-core'; import { BrnFormFieldControl } from '@spartan-ng/ui-formfield-brain'; @@ -8,82 +8,89 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const inputVariants = cva( - 'flex rounded-md border font-normal border-input bg-transparent text-sm ring-offset-background file:border-0 file:text-foreground file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', - { - variants: { - size: { - default: 'h-10 py-2 px-4', - sm: 'h-9 px-3', - lg: 'h-11 px-8' - }, - error: { - auto: '[&.ng-invalid.ng-touched]:text-destructive [&.ng-invalid.ng-touched]:border-destructive [&.ng-invalid.ng-touched]:focus-visible:ring-destructive', - true: 'text-destructive border-destructive focus-visible:ring-destructive' - } - }, - defaultVariants: { - size: 'default', - error: 'auto' - } - } + 'flex rounded-md border font-normal border-input bg-transparent text-sm ring-offset-background file:border-0 file:text-foreground file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', + { + variants: { + size: { + default: 'h-10 py-2 px-4', + sm: 'h-9 px-3', + lg: 'h-11 px-8', + }, + error: { + auto: '[&.ng-invalid.ng-touched]:text-destructive [&.ng-invalid.ng-touched]:border-destructive [&.ng-invalid.ng-touched]:focus-visible:ring-destructive', + true: 'text-destructive border-destructive focus-visible:ring-destructive', + }, + }, + defaultVariants: { + size: 'default', + error: 'auto', + }, + }, ); type InputVariants = VariantProps; @Directive({ - selector: '[hlmInput]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - providers: [ - { - provide: BrnFormFieldControl, - useExisting: HlmInputDirective - } - ] + selector: '[hlmInput]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + providers: [ + { + provide: BrnFormFieldControl, + useExisting: HlmInputDirective, + }, + ], }) export class HlmInputDirective implements BrnFormFieldControl, DoCheck { - private readonly _size = signal('default'); - @Input() - set size(value: InputVariants['size']) { - this._size.set(value); - } + public readonly size = input('default'); - private readonly _error = signal('auto'); - @Input() - set error(value: InputVariants['error']) { - this._error.set(value); - } + public readonly error = input('auto'); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(inputVariants({ size: this._size(), error: this._error() }), this.userClass())); + protected readonly state = computed(() => ({ + error: signal(this.error()), + })); - private injector = inject(Injector); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm(inputVariants({ size: this.size(), error: this.state().error() }), this.userClass()), + ); - ngControl: NgControl | null = this.injector.get(NgControl, null); + private readonly _injector = inject(Injector); - errorStateTracker: ErrorStateTracker; + public readonly ngControl: NgControl | null = this._injector.get(NgControl, null); - private defaultErrorStateMatcher = inject(ErrorStateMatcher); - private parentForm = inject(NgForm, { optional: true }); - private parentFormGroup = inject(FormGroupDirective, { optional: true }); + private readonly _errorStateTracker: ErrorStateTracker; - errorState = computed(() => this.errorStateTracker.errorState()); + private readonly _defaultErrorStateMatcher = inject(ErrorStateMatcher); + private readonly _parentForm = inject(NgForm, { optional: true }); + private readonly _parentFormGroup = inject(FormGroupDirective, { optional: true }); - constructor() { - this.errorStateTracker = new ErrorStateTracker(this.defaultErrorStateMatcher, this.ngControl, this.parentFormGroup, this.parentForm); + public readonly errorState = computed(() => this._errorStateTracker.errorState()); - effect( - () => { - if (this.ngControl) { - this.error = this.errorStateTracker.errorState(); - } - }, - { allowSignalWrites: true } - ); - } + constructor() { + this._errorStateTracker = new ErrorStateTracker( + this._defaultErrorStateMatcher, + this.ngControl, + this._parentFormGroup, + this._parentForm, + ); - ngDoCheck() { - this.errorStateTracker.updateErrorState(); - } + effect( + () => { + if (this.ngControl) { + this.setError(this._errorStateTracker.errorState()); + } + }, + { allowSignalWrites: true }, + ); + } + + ngDoCheck() { + this._errorStateTracker.updateErrorState(); + } + + setError(error: InputVariants['error']) { + this.state().error.set(error); + } } diff --git a/webapp/src/libs/ui/ui-label-helm/src/index.ts b/webapp/src/libs/ui/ui-label-helm/src/index.ts index f7b10ba3..a5506be0 100644 --- a/webapp/src/libs/ui/ui-label-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-label-helm/src/index.ts @@ -4,7 +4,7 @@ import { HlmLabelDirective } from './lib/hlm-label.directive'; export * from './lib/hlm-label.directive'; @NgModule({ - imports: [HlmLabelDirective], - exports: [HlmLabelDirective] + imports: [HlmLabelDirective], + exports: [HlmLabelDirective], }) export class HlmLabelModule {} diff --git a/webapp/src/libs/ui/ui-label-helm/src/lib/hlm-label.directive.ts b/webapp/src/libs/ui/ui-label-helm/src/lib/hlm-label.directive.ts index b0724360..78d87f36 100644 --- a/webapp/src/libs/ui/ui-label-helm/src/lib/hlm-label.directive.ts +++ b/webapp/src/libs/ui/ui-label-helm/src/lib/hlm-label.directive.ts @@ -1,69 +1,73 @@ -import { Directive, Input, computed, inject, input, signal } from '@angular/core'; +import { Directive, computed, inject, input, signal } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { BrnLabelDirective } from '@spartan-ng/ui-label-brain'; import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; -export const labelVariants = cva('text-sm font-medium leading-none [&>[hlmInput]]:my-1 [&:has([hlmInput]:disabled)]:cursor-not-allowed [&:has([hlmInput]:disabled)]:opacity-70', { - variants: { - variant: { - default: '' - }, - error: { - auto: '[&:has([hlmInput].ng-invalid.ng-touched)]:text-destructive', - true: 'text-destructive' - }, - disabled: { - auto: '[&:has([hlmInput]:disabled)]:opacity-70', - true: 'opacity-70', - false: '' - } - }, - defaultVariants: { - variant: 'default', - error: 'auto' - } -}); +export const labelVariants = cva( + 'text-sm font-medium leading-none [&>[hlmInput]]:my-1 [&:has([hlmInput]:disabled)]:cursor-not-allowed [&:has([hlmInput]:disabled)]:opacity-70', + { + variants: { + variant: { + default: '', + }, + error: { + auto: '[&:has([hlmInput].ng-invalid.ng-touched)]:text-destructive', + true: 'text-destructive', + }, + disabled: { + auto: '[&:has([hlmInput]:disabled)]:opacity-70', + true: 'opacity-70', + false: '', + }, + }, + defaultVariants: { + variant: 'default', + error: 'auto', + }, + }, +); export type LabelVariants = VariantProps; @Directive({ - selector: '[hlmLabel]', - standalone: true, - hostDirectives: [ - { - directive: BrnLabelDirective, - inputs: ['id'] - } - ], - host: { - '[class]': '_computedClass()' - } + selector: '[hlmLabel]', + standalone: true, + hostDirectives: [ + { + directive: BrnLabelDirective, + inputs: ['id'], + }, + ], + host: { + '[class]': '_computedClass()', + }, }) export class HlmLabelDirective { - private readonly _brn = inject(BrnLabelDirective, { host: true }); + private readonly _brn = inject(BrnLabelDirective, { host: true }); - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => - hlm( - labelVariants({ - variant: this._variant(), - error: this._error(), - disabled: this._brn?.dataDisabled() ?? 'auto' - }), - '[&.ng-invalid.ng-touched]:text-destructive', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); - private readonly _variant = signal('default'); - @Input() - set variant(value: LabelVariants['variant']) { - this._variant.set(value); - } + public readonly variant = input('default'); - private readonly _error = signal('auto'); - @Input() - set error(value: LabelVariants['error']) { - this._error.set(value); - } + public readonly error = input('auto'); + + protected readonly state = computed(() => ({ + error: signal(this.error()), + })); + + protected readonly _computedClass = computed(() => + hlm( + labelVariants({ + variant: this.variant(), + error: this.state().error(), + disabled: this._brn?.dataDisabled() ?? 'auto', + }), + '[&.ng-invalid.ng-touched]:text-destructive', + this.userClass(), + ), + ); + + setError(error: LabelVariants['error']): void { + this.state().error.set(error); + } } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/index.ts b/webapp/src/libs/ui/ui-menu-helm/src/index.ts index 9fdb4de6..cd94bf71 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/index.ts @@ -33,34 +33,39 @@ export * from './lib/hlm-menu.component'; export * from './lib/hlm-sub-menu.component'; export const HlmMenuItemImports = [ - HlmMenuItemDirective, - HlmMenuItemIconDirective, - HlmMenuGroupComponent, - HlmMenuItemSubIndicatorComponent, - HlmMenuItemRadioComponent, - HlmMenuItemCheckComponent, - HlmMenuShortcutComponent, - HlmMenuItemCheckboxDirective, - HlmMenuItemRadioDirective + HlmMenuItemDirective, + HlmMenuItemIconDirective, + HlmMenuGroupComponent, + HlmMenuItemSubIndicatorComponent, + HlmMenuItemRadioComponent, + HlmMenuItemCheckComponent, + HlmMenuShortcutComponent, + HlmMenuItemCheckboxDirective, + HlmMenuItemRadioDirective, ]; export const HlmMenuStructureImports = [HlmMenuLabelComponent, HlmMenuSeparatorComponent] as const; -export const HlmMenuImports = [...HlmMenuItemImports, ...HlmMenuStructureImports, HlmMenuComponent, HlmSubMenuComponent] as const; +export const HlmMenuImports = [ + ...HlmMenuItemImports, + ...HlmMenuStructureImports, + HlmMenuComponent, + HlmSubMenuComponent, +] as const; export const HlmMenuBarImports = [...HlmMenuImports, HlmMenuBarComponent, HlmMenuBarItemDirective] as const; @NgModule({ - imports: [...HlmMenuItemImports], - exports: [...HlmMenuItemImports] + imports: [...HlmMenuItemImports], + exports: [...HlmMenuItemImports], }) export class HlmMenuItemModule {} @NgModule({ - imports: [...HlmMenuImports], - exports: [...HlmMenuImports] + imports: [...HlmMenuImports], + exports: [...HlmMenuImports], }) export class HlmMenuModule {} @NgModule({ - imports: [...HlmMenuBarImports], - exports: [...HlmMenuBarImports] + imports: [...HlmMenuBarImports], + exports: [...HlmMenuBarImports], }) export class HlmMenuBarModule {} diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-bar-item.directive.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-bar-item.directive.ts index 9b5199cc..1ffd1afb 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-bar-item.directive.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-bar-item.directive.ts @@ -4,19 +4,19 @@ import { BrnMenuItemDirective } from '@spartan-ng/ui-menu-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmMenuBarItem]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnMenuItemDirective] + selector: '[hlmMenuBarItem]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnMenuItemDirective], }) export class HlmMenuBarItemDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground aria-expanded:bg-accent aria-expanded:text-accent-foreground', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground aria-expanded:bg-accent aria-expanded:text-accent-foreground', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-bar.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-bar.component.ts index c515b962..c08238a3 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-bar.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-bar.component.ts @@ -4,15 +4,17 @@ import { BrnMenuBarDirective } from '@spartan-ng/ui-menu-brain'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-menu-bar', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnMenuBarDirective], - template: '' + selector: 'hlm-menu-bar', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnMenuBarDirective], + template: '', }) export class HlmMenuBarComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('border-border flex h-10 items-center space-x-1 rounded-md border bg-background p-1', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('border-border flex h-10 items-center space-x-1 rounded-md border bg-background p-1', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-group.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-group.component.ts index 616d520c..aaaad32e 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-group.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-group.component.ts @@ -2,12 +2,14 @@ import { Component } from '@angular/core'; import { BrnMenuGroupDirective } from '@spartan-ng/ui-menu-brain'; @Component({ - selector: 'hlm-menu-group', - standalone: true, - host: { - class: 'block' - }, - hostDirectives: [BrnMenuGroupDirective], - template: ` ` + selector: 'hlm-menu-group', + standalone: true, + host: { + class: 'block', + }, + hostDirectives: [BrnMenuGroupDirective], + template: ` + + `, }) export class HlmMenuGroupComponent {} diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-check.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-check.component.ts index 60efdf94..13172258 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-check.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-check.component.ts @@ -5,19 +5,24 @@ import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-menu-item-check', - standalone: true, - providers: [provideIcons({ lucideCheck })], - imports: [HlmIconComponent], - template: ` - - - `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-menu-item-check', + standalone: true, + providers: [provideIcons({ lucideCheck })], + imports: [HlmIconComponent], + template: ` + + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmMenuItemCheckComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('group-[.checked]:opacity-100 opacity-0 absolute left-2 flex h-3.5 w-3.5 items-center justify-center', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'group-[.checked]:opacity-100 opacity-0 absolute left-2 flex h-3.5 w-3.5 items-center justify-center', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-checkbox.directive.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-checkbox.directive.ts index 09b109a0..13ea5d9a 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-checkbox.directive.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-checkbox.directive.ts @@ -4,25 +4,25 @@ import { BrnMenuItemCheckboxDirective } from '@spartan-ng/ui-menu-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmMenuItemCheckbox]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [ - { - directive: BrnMenuItemCheckboxDirective, - inputs: ['disabled: disabled', 'checked: checked'], - outputs: ['triggered: triggered'] - } - ] + selector: '[hlmMenuItemCheckbox]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [ + { + directive: BrnMenuItemCheckboxDirective, + inputs: ['disabled: disabled', 'checked: checked'], + outputs: ['triggered: triggered'], + }, + ], }) export class HlmMenuItemCheckboxDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'group w-full relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'group w-full relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-icon.directive.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-icon.directive.ts index 831be897..b65f79fd 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-icon.directive.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-icon.directive.ts @@ -1,23 +1,17 @@ -import { Directive, computed, inject, input } from '@angular/core'; +import { Directive, computed, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; -import { HlmIconComponent } from '@spartan-ng/ui-icon-helm'; +import { provideHlmIconConfig } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmMenuIcon]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmMenuIcon]', + standalone: true, + providers: [provideHlmIconConfig({ size: 'none' })], + host: { + '[class]': '_computedClass()', + }, }) export class HlmMenuItemIconDirective { - private _menuIcon = inject(HlmIconComponent, { host: true, optional: true }); - - constructor() { - if (!this._menuIcon) return; - this._menuIcon.size = 'none'; - } - - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('mr-2 h-4 w-4', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('mr-2 h-4 w-4', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.component.ts index 7dc224d1..0acf64ed 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.component.ts @@ -5,19 +5,24 @@ import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-menu-item-radio', - standalone: true, - providers: [provideIcons({ lucideCircle })], - imports: [HlmIconComponent], - template: ` - - - `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-menu-item-radio', + standalone: true, + providers: [provideIcons({ lucideCircle })], + imports: [HlmIconComponent], + template: ` + + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmMenuItemRadioComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('group-[.checked]:opacity-100 opacity-0 absolute left-2 flex h-3.5 w-3.5 items-center justify-center', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'group-[.checked]:opacity-100 opacity-0 absolute left-2 flex h-3.5 w-3.5 items-center justify-center', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.directive.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.directive.ts index c6d56ba8..88166e01 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.directive.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.directive.ts @@ -4,25 +4,25 @@ import { BrnMenuItemRadioDirective } from '@spartan-ng/ui-menu-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmMenuItemRadio]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [ - { - directive: BrnMenuItemRadioDirective, - inputs: ['disabled: disabled', 'checked: checked'], - outputs: ['triggered: triggered'] - } - ] + selector: '[hlmMenuItemRadio]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [ + { + directive: BrnMenuItemRadioDirective, + inputs: ['disabled: disabled', 'checked: checked'], + outputs: ['triggered: triggered'], + }, + ], }) export class HlmMenuItemRadioDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'group w-full relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'group w-full relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-sub-indicator.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-sub-indicator.component.ts index 0ede8e32..7c129a18 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-sub-indicator.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-sub-indicator.component.ts @@ -5,16 +5,18 @@ import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-menu-item-sub-indicator', - standalone: true, - providers: [provideIcons({ lucideChevronRight })], - imports: [HlmIconComponent], - template: ` `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-menu-item-sub-indicator', + standalone: true, + providers: [provideIcons({ lucideChevronRight })], + imports: [HlmIconComponent], + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmMenuItemSubIndicatorComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('inline-block ml-auto h-4 w-4', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('inline-block ml-auto h-4 w-4', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item.directive.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item.directive.ts index 102947ac..8ee49015 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item.directive.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item.directive.ts @@ -5,36 +5,36 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const hlmMenuItemVariants = cva( - 'group w-full relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50', - { - variants: { inset: { true: 'pl-8', false: '' } }, - defaultVariants: { inset: false } - } + 'group w-full relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50', + { + variants: { inset: { true: 'pl-8', false: '' } }, + defaultVariants: { inset: false }, + }, ); export type HlmMenuItemVariants = VariantProps; @Directive({ - selector: '[hlmMenuItem]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [ - { - directive: BrnMenuItemDirective, - inputs: ['disabled: disabled'], - outputs: ['triggered: triggered'] - } - ] + selector: '[hlmMenuItem]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [ + { + directive: BrnMenuItemDirective, + inputs: ['disabled: disabled'], + outputs: ['triggered: triggered'], + }, + ], }) export class HlmMenuItemDirective { - private readonly _inset = signal(false); + private readonly _inset = signal(false); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmMenuItemVariants({ inset: this._inset() }), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmMenuItemVariants({ inset: this._inset() }), this.userClass())); - @Input({ transform: booleanAttribute }) - set inset(value: boolean) { - this._inset.set(value); - } + @Input({ transform: booleanAttribute }) + public set inset(value: boolean) { + this._inset.set(value); + } } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-label.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-label.component.ts index 84dff54f..7da02057 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-label.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-label.component.ts @@ -3,20 +3,24 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-menu-label', - standalone: true, - template: ` `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-menu-label', + standalone: true, + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmMenuLabelComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('block px-2 py-1.5 text-sm font-semibold', this._inset() && 'pl-8', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('block px-2 py-1.5 text-sm font-semibold', this._inset() && 'pl-8', this.userClass()), + ); - private readonly _inset = signal(false); - @Input({ transform: booleanAttribute }) - set inset(value: boolean) { - this._inset.set(value); - } + private readonly _inset = signal(false); + @Input({ transform: booleanAttribute }) + public set inset(value: boolean) { + this._inset.set(value); + } } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-separator.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-separator.component.ts index 53451826..44e41b09 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-separator.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-separator.component.ts @@ -3,14 +3,14 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-menu-separator', - standalone: true, - template: '', - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-menu-separator', + standalone: true, + template: '', + host: { + '[class]': '_computedClass()', + }, }) export class HlmMenuSeparatorComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('block -mx-1 my-1 h-px bg-muted', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('block -mx-1 my-1 h-px bg-muted', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-shortcut.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-shortcut.component.ts index 323f0e63..e7998707 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-shortcut.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-shortcut.component.ts @@ -3,14 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-menu-shortcut', - standalone: true, - template: ` `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-menu-shortcut', + standalone: true, + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmMenuShortcutComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('ml-auto font-light text-xs tracking-widest opacity-60', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('ml-auto font-light text-xs tracking-widest opacity-60', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu.component.ts index d8d42e23..b4e78df3 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu.component.ts @@ -5,37 +5,39 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const menuVariants = cva( - 'block border-border min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', - { - variants: { - variant: { - default: 'my-0.5', - menubar: 'my-2' - } - }, - defaultVariants: { - variant: 'default' - } - } + 'block border-border min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', + { + variants: { + variant: { + default: 'my-0.5', + menubar: 'my-2', + }, + }, + defaultVariants: { + variant: 'default', + }, + }, ); type MenuVariants = VariantProps; @Component({ - selector: 'hlm-menu', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnMenuDirective], - template: ` ` + selector: 'hlm-menu', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnMenuDirective], + template: ` + + `, }) export class HlmMenuComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(menuVariants({ variant: this._variant() }), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(menuVariants({ variant: this._variant() }), this.userClass())); - private readonly _variant = signal('default'); - @Input() - set variant(value: MenuVariants['variant']) { - this._variant.set(value); - } + private readonly _variant = signal('default'); + @Input() + public set variant(value: MenuVariants['variant']) { + this._variant.set(value); + } } diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-sub-menu.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-sub-menu.component.ts index af4cc3c5..40b30d24 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-sub-menu.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-sub-menu.component.ts @@ -4,20 +4,22 @@ import { BrnMenuDirective } from '@spartan-ng/ui-menu-brain'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-sub-menu', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnMenuDirective], - template: ` ` + selector: 'hlm-sub-menu', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnMenuDirective], + template: ` + + `, }) export class HlmSubMenuComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'border-border min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'border-border min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-pagination-helm/src/index.ts b/webapp/src/libs/ui/ui-pagination-helm/src/index.ts index 7eaed49c..77a7ccb4 100644 --- a/webapp/src/libs/ui/ui-pagination-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-pagination-helm/src/index.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; +import { HlmNumberedPaginationComponent } from './lib/hlm-numbered-pagination.component'; import { HlmPaginationContentDirective } from './lib/hlm-pagination-content.directive'; import { HlmPaginationEllipsisComponent } from './lib/hlm-pagination-ellipsis.component'; import { HlmPaginationItemDirective } from './lib/hlm-pagination-item.directive'; @@ -8,6 +9,7 @@ import { HlmPaginationNextComponent } from './lib/hlm-pagination-next.component' import { HlmPaginationPreviousComponent } from './lib/hlm-pagination-previous.component'; import { HlmPaginationDirective } from './lib/hlm-pagination.directive'; +export * from './lib/hlm-numbered-pagination.component'; export * from './lib/hlm-pagination-content.directive'; export * from './lib/hlm-pagination-ellipsis.component'; export * from './lib/hlm-pagination-item.directive'; @@ -17,17 +19,18 @@ export * from './lib/hlm-pagination-previous.component'; export * from './lib/hlm-pagination.directive'; export const HlmPaginationImports = [ - HlmPaginationDirective, - HlmPaginationContentDirective, - HlmPaginationItemDirective, - HlmPaginationLinkDirective, - HlmPaginationPreviousComponent, - HlmPaginationNextComponent, - HlmPaginationEllipsisComponent + HlmPaginationDirective, + HlmPaginationContentDirective, + HlmPaginationItemDirective, + HlmPaginationLinkDirective, + HlmPaginationPreviousComponent, + HlmPaginationNextComponent, + HlmPaginationEllipsisComponent, + HlmNumberedPaginationComponent, ] as const; @NgModule({ - imports: [...HlmPaginationImports], - exports: [...HlmPaginationImports] + imports: [...HlmPaginationImports], + exports: [...HlmPaginationImports], }) export class HlmPaginationModule {} diff --git a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-numbered-pagination.component.ts b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-numbered-pagination.component.ts new file mode 100644 index 00000000..c10e9a93 --- /dev/null +++ b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-numbered-pagination.component.ts @@ -0,0 +1,269 @@ +import { BooleanInput, NumberInput } from '@angular/cdk/coercion'; +import { + ChangeDetectionStrategy, + Component, + booleanAttribute, + computed, + input, + model, + numberAttribute, + untracked, +} from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { BrnSelectImports } from '@spartan-ng/ui-select-brain'; +import { HlmSelectImports } from '@spartan-ng/ui-select-helm'; +import { HlmPaginationContentDirective } from './hlm-pagination-content.directive'; +import { HlmPaginationEllipsisComponent } from './hlm-pagination-ellipsis.component'; +import { HlmPaginationItemDirective } from './hlm-pagination-item.directive'; +import { HlmPaginationLinkDirective } from './hlm-pagination-link.directive'; +import { HlmPaginationNextComponent } from './hlm-pagination-next.component'; +import { HlmPaginationPreviousComponent } from './hlm-pagination-previous.component'; +import { HlmPaginationDirective } from './hlm-pagination.directive'; + +@Component({ + selector: 'hlm-numbered-pagination', + template: ` +
+
+ {{ totalItems() }} + total items | + {{ pages().length }} + pages +
+ + + + + + + + + + @for (pageSize of pageSizesWithCurrent(); track pageSize) { + {{ pageSize }} / page + } + + +
+ `, + standalone: true, + imports: [ + FormsModule, + HlmPaginationDirective, + HlmPaginationContentDirective, + HlmPaginationItemDirective, + HlmPaginationPreviousComponent, + HlmPaginationNextComponent, + HlmPaginationLinkDirective, + HlmPaginationEllipsisComponent, + BrnSelectImports, + HlmSelectImports, + ], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class HlmNumberedPaginationComponent { + /** + * The current (active) page. + */ + public readonly currentPage = model.required(); + + /** + * The number of items per paginated page. + */ + public readonly itemsPerPage = model.required(); + + /** + * The total number of items in the collection. Only useful when + * doing server-side paging, where the collection size is limited + * to a single page returned by the server API. + */ + public readonly totalItems = input.required({ + transform: numberAttribute, + }); + + /** + * The number of page links to show. + */ + public readonly maxSize = input(7, { + transform: numberAttribute, + }); + + /** + * Show the first and last page buttons. + */ + public readonly showEdges = input(true, { + transform: booleanAttribute, + }); + + /** + * The page sizes to show. + * Defaults to [10, 20, 50, 100] + */ + public readonly pageSizes = input([10, 20, 50, 100]); + + protected readonly pageSizesWithCurrent = computed(() => { + const pageSizes = this.pageSizes(); + return pageSizes.includes(this.itemsPerPage()) + ? pageSizes // if current page size is included, return the same array + : [...pageSizes, this.itemsPerPage()].sort((a, b) => a - b); // otherwise, add current page size and sort the array + }); + + protected readonly isFirstPageActive = computed(() => this.currentPage() === 1); + protected readonly isLastPageActive = computed(() => this.currentPage() === this.lastPageNumber()); + + protected readonly lastPageNumber = computed(() => { + if (this.totalItems() < 1) { + // when there are 0 or fewer (an error case) items, there are no "pages" as such, + // but it makes sense to consider a single, empty page as the last page. + return 1; + } + return Math.ceil(this.totalItems() / this.itemsPerPage()); + }); + + protected readonly pages = computed(() => { + const correctedCurrentPage = outOfBoundCorrection(this.totalItems(), this.itemsPerPage(), this.currentPage()); + + if (correctedCurrentPage !== this.currentPage()) { + // update the current page + untracked(() => this.currentPage.set(correctedCurrentPage)); + } + + return createPageArray(correctedCurrentPage, this.itemsPerPage(), this.totalItems(), this.maxSize()); + }); + + protected goToPrevious(): void { + this.currentPage.set(this.currentPage() - 1); + } + + protected goToNext(): void { + this.currentPage.set(this.currentPage() + 1); + } + + protected goToFirst(): void { + this.currentPage.set(1); + } + + protected goToLast(): void { + this.currentPage.set(this.lastPageNumber()); + } +} + +type Page = number | '...'; + +/** + * Checks that the instance.currentPage property is within bounds for the current page range. + * If not, return a correct value for currentPage, or the current value if OK. + * + * Copied from 'ngx-pagination' package + */ +function outOfBoundCorrection(totalItems: number, itemsPerPage: number, currentPage: number): number { + const totalPages = Math.ceil(totalItems / itemsPerPage); + if (totalPages < currentPage && 0 < totalPages) { + return totalPages; + } + + if (currentPage < 1) { + return 1; + } + + return currentPage; +} + +/** + * Returns an array of Page objects to use in the pagination controls. + * + * Copied from 'ngx-pagination' package + */ +function createPageArray( + currentPage: number, + itemsPerPage: number, + totalItems: number, + paginationRange: number, +): Page[] { + // paginationRange could be a string if passed from attribute, so cast to number. + paginationRange = +paginationRange; + const pages: Page[] = []; + + // Return 1 as default page number + // Make sense to show 1 instead of empty when there are no items + const totalPages = Math.max(Math.ceil(totalItems / itemsPerPage), 1); + const halfWay = Math.ceil(paginationRange / 2); + + const isStart = currentPage <= halfWay; + const isEnd = totalPages - halfWay < currentPage; + const isMiddle = !isStart && !isEnd; + + const ellipsesNeeded = paginationRange < totalPages; + let i = 1; + + while (i <= totalPages && i <= paginationRange) { + let label: number | '...'; + const pageNumber = calculatePageNumber(i, currentPage, paginationRange, totalPages); + const openingEllipsesNeeded = i === 2 && (isMiddle || isEnd); + const closingEllipsesNeeded = i === paginationRange - 1 && (isMiddle || isStart); + if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) { + label = '...'; + } else { + label = pageNumber; + } + pages.push(label); + i++; + } + + return pages; +} + +/** + * Given the position in the sequence of pagination links [i], + * figure out what page number corresponds to that position. + * + * Copied from 'ngx-pagination' package + */ +function calculatePageNumber(i: number, currentPage: number, paginationRange: number, totalPages: number) { + const halfWay = Math.ceil(paginationRange / 2); + if (i === paginationRange) { + return totalPages; + } + + if (i === 1) { + return i; + } + + if (paginationRange < totalPages) { + if (totalPages - halfWay < currentPage) { + return totalPages - paginationRange + i; + } + if (halfWay < currentPage) { + return currentPage - halfWay + i; + } + return i; + } + + return i; +} diff --git a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-content.directive.ts b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-content.directive.ts index 1783fd8c..d70e961e 100644 --- a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-content.directive.ts +++ b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-content.directive.ts @@ -1,21 +1,22 @@ import { Directive, computed, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { type VariantProps, cva } from 'class-variance-authority'; +import { ClassValue } from 'clsx'; export const paginationContentVariants = cva('flex flex-row items-center gap-1', { - variants: {}, - defaultVariants: {} + variants: {}, + defaultVariants: {}, }); export type PaginationContentVariants = VariantProps; @Directive({ - selector: '[hlmPaginationContent]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmPaginationContent]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmPaginationContentDirective { - public readonly class = input(''); - protected readonly _computedClass = computed(() => hlm(paginationContentVariants(), this.class())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm(paginationContentVariants(), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-ellipsis.component.ts b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-ellipsis.component.ts index 1c99c0ef..d65d67c0 100644 --- a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-ellipsis.component.ts +++ b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-ellipsis.component.ts @@ -1,23 +1,23 @@ import { Component, computed, input } from '@angular/core'; -import { lucideMoreHorizontal } from '@ng-icons/lucide'; +import { lucideEllipsis } from '@ng-icons/lucide'; import { hlm } from '@spartan-ng/ui-core'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; -import { HlmPaginationLinkDirective } from './hlm-pagination-link.directive'; +import { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-pagination-ellipsis', - standalone: true, - imports: [HlmPaginationLinkDirective, HlmIconComponent], - providers: [provideIcons({ lucideMoreHorizontal })], - template: ` - - - More pages - - ` + selector: 'hlm-pagination-ellipsis', + standalone: true, + imports: [HlmIconComponent], + providers: [provideIcons({ lucideEllipsis })], + template: ` + + + More pages + + `, }) export class HlmPaginationEllipsisComponent { - public readonly class = input(''); + public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('flex h-9 w-9 items-center justify-center', this.class())); + protected readonly _computedClass = computed(() => hlm('flex h-9 w-9 items-center justify-center', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-item.directive.ts b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-item.directive.ts index 642938fc..0be52215 100644 --- a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-item.directive.ts +++ b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-item.directive.ts @@ -1,22 +1,24 @@ import { Directive, computed, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { type VariantProps, cva } from 'class-variance-authority'; +import { ClassValue } from 'clsx'; export const paginationItemVariants = cva('', { - variants: {}, - defaultVariants: {} + variants: {}, + defaultVariants: {}, }); + export type PaginationItemVariants = VariantProps; @Directive({ - selector: '[hlmPaginationItem]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmPaginationItem]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmPaginationItemDirective { - public readonly class = input(''); + public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(paginationItemVariants(), this.class())); + protected readonly _computedClass = computed(() => hlm(paginationItemVariants(), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-link.directive.ts b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-link.directive.ts index 9a162a96..92073871 100644 --- a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-link.directive.ts +++ b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-link.directive.ts @@ -1,56 +1,58 @@ +import { BooleanInput } from '@angular/cdk/coercion'; import { Directive, booleanAttribute, computed, input } from '@angular/core'; import { RouterLink } from '@angular/router'; import { type ButtonVariants, buttonVariants } from '@spartan-ng/ui-button-helm'; import { hlm } from '@spartan-ng/ui-core'; import { type VariantProps, cva } from 'class-variance-authority'; +import { ClassValue } from 'clsx'; export const paginationLinkVariants = cva('', { - variants: {}, - defaultVariants: {} + variants: {}, + defaultVariants: {}, }); export type PaginationLinkVariants = VariantProps; @Directive({ - selector: '[hlmPaginationLink]', - standalone: true, - hostDirectives: [ - { - directive: RouterLink, - inputs: [ - 'target', - 'queryParams', - 'fragment', - 'queryParamsHandling', - 'state', - 'info', - 'relativeTo', - 'preserveFragment', - 'skipLocationChange', - 'replaceUrl', - 'routerLink: link' - ] - } - ], - host: { - '[class]': '_computedClass()', - '[attr.aria-current]': 'isActive() ? "page" : null' - } + selector: '[hlmPaginationLink]', + standalone: true, + hostDirectives: [ + { + directive: RouterLink, + inputs: [ + 'target', + 'queryParams', + 'fragment', + 'queryParamsHandling', + 'state', + 'info', + 'relativeTo', + 'preserveFragment', + 'skipLocationChange', + 'replaceUrl', + 'routerLink: link', + ], + }, + ], + host: { + '[class]': '_computedClass()', + '[attr.aria-current]': 'isActive() ? "page" : null', + }, }) export class HlmPaginationLinkDirective { - public readonly class = input(''); - public readonly isActive = input(false, { transform: booleanAttribute }); - public readonly size = input('icon'); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - public readonly link = input(); + public readonly userClass = input('', { alias: 'class' }); + public readonly isActive = input(false, { transform: booleanAttribute }); + public readonly size = input('icon'); + public readonly link = input(); - protected _computedClass = computed(() => - hlm( - paginationLinkVariants(), - buttonVariants({ - variant: this.isActive() ? 'outline' : 'ghost', - size: this.size() - }), - this.class() - ) - ); + protected readonly _computedClass = computed(() => + hlm( + paginationLinkVariants(), + this.link() === undefined ? 'cursor-pointer' : '', + buttonVariants({ + variant: this.isActive() ? 'outline' : 'ghost', + size: this.size(), + }), + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-next.component.ts b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-next.component.ts index 86ac7167..8bdf055a 100644 --- a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-next.component.ts +++ b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-next.component.ts @@ -1,25 +1,29 @@ import { Component, computed, input } from '@angular/core'; +import { RouterLink } from '@angular/router'; import { lucideChevronRight } from '@ng-icons/lucide'; import { hlm } from '@spartan-ng/ui-core'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; +import { ClassValue } from 'clsx'; import { HlmPaginationLinkDirective } from './hlm-pagination-link.directive'; @Component({ - selector: 'hlm-pagination-next', - standalone: true, - imports: [HlmPaginationLinkDirective, HlmIconComponent], - providers: [provideIcons({ lucideChevronRight })], - template: ` - - Next - - - ` + selector: 'hlm-pagination-next', + standalone: true, + imports: [HlmPaginationLinkDirective, HlmIconComponent], + providers: [provideIcons({ lucideChevronRight })], + template: ` + + {{ text() }} + + + `, }) export class HlmPaginationNextComponent { - public readonly class = input(''); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - public readonly link = input(); + public readonly userClass = input('', { alias: 'class' }); + public readonly link = input(); - protected _computedClass = computed(() => hlm('gap-1 pr-2.5', this.class())); + public readonly ariaLabel = input('Go to next page', { alias: 'aria-label' }); + public readonly text = input('Next'); + + protected readonly _computedClass = computed(() => hlm('gap-1 pr-2.5', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-previous.component.ts b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-previous.component.ts index 0064bf10..4be67bf5 100644 --- a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-previous.component.ts +++ b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination-previous.component.ts @@ -1,25 +1,29 @@ import { Component, computed, input } from '@angular/core'; +import { RouterLink } from '@angular/router'; import { lucideChevronLeft } from '@ng-icons/lucide'; import { hlm } from '@spartan-ng/ui-core'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; +import { ClassValue } from 'clsx'; import { HlmPaginationLinkDirective } from './hlm-pagination-link.directive'; @Component({ - selector: 'hlm-pagination-previous', - standalone: true, - imports: [HlmPaginationLinkDirective, HlmIconComponent], - providers: [provideIcons({ lucideChevronLeft })], - template: ` - - - Previous - - ` + selector: 'hlm-pagination-previous', + standalone: true, + imports: [HlmPaginationLinkDirective, HlmIconComponent], + providers: [provideIcons({ lucideChevronLeft })], + template: ` + + + {{ text() }} + + `, }) export class HlmPaginationPreviousComponent { - public readonly class = input(''); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - public readonly link = input(); + public readonly userClass = input('', { alias: 'class' }); + public readonly link = input(); - protected _computedClass = computed(() => hlm('gap-1 pr-2.5', this.class())); + public readonly ariaLabel = input('Go to previous page', { alias: 'aria-label' }); + public readonly text = input('Previous'); + + protected readonly _computedClass = computed(() => hlm('gap-1 pl-2.5', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination.directive.ts b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination.directive.ts index e431af09..10c9f1ff 100644 --- a/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination.directive.ts +++ b/webapp/src/libs/ui/ui-pagination-helm/src/lib/hlm-pagination.directive.ts @@ -4,22 +4,24 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const paginationVariants = cva('mx-auto flex w-full justify-center', { - variants: {}, - defaultVariants: {} + variants: {}, + defaultVariants: {}, }); export type PaginationVariants = VariantProps; @Directive({ - selector: '[hlmPagination]', - standalone: true, - host: { - '[class]': '_computedClass()', - '[attr.role]': '"navigation"', - '[attr.aria-label]': '"pagination"' - } + selector: '[hlmPagination]', + standalone: true, + host: { + role: 'navigation', + '[class]': '_computedClass()', + '[attr.aria-label]': 'ariaLabel()', + }, }) export class HlmPaginationDirective { - public readonly class = input(''); + public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(paginationVariants(), this.class())); + public readonly ariaLabel = input('pagination', { alias: 'aria-label' }); + + protected readonly _computedClass = computed(() => hlm(paginationVariants(), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-popover-helm/src/index.ts b/webapp/src/libs/ui/ui-popover-helm/src/index.ts index d8e5fd43..7af7813d 100644 --- a/webapp/src/libs/ui/ui-popover-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-popover-helm/src/index.ts @@ -9,7 +9,7 @@ export * from './lib/hlm-popover-content.directive'; export const HlmPopoverImports = [HlmPopoverContentDirective, HlmPopoverCloseDirective] as const; @NgModule({ - imports: [...HlmPopoverImports], - exports: [...HlmPopoverImports] + imports: [...HlmPopoverImports], + exports: [...HlmPopoverImports], }) export class HlmPopoverModule {} diff --git a/webapp/src/libs/ui/ui-popover-helm/src/lib/hlm-popover-close.directive.ts b/webapp/src/libs/ui/ui-popover-helm/src/lib/hlm-popover-close.directive.ts index 88879c15..5ae4aa3d 100644 --- a/webapp/src/libs/ui/ui-popover-helm/src/lib/hlm-popover-close.directive.ts +++ b/webapp/src/libs/ui/ui-popover-helm/src/lib/hlm-popover-close.directive.ts @@ -3,18 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmPopoverClose],[brnPopoverClose][hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmPopoverClose],[brnPopoverClose][hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmPopoverCloseDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-popover-helm/src/lib/hlm-popover-content.directive.ts b/webapp/src/libs/ui/ui-popover-helm/src/lib/hlm-popover-content.directive.ts index be885f64..d5da165a 100644 --- a/webapp/src/libs/ui/ui-popover-helm/src/lib/hlm-popover-content.directive.ts +++ b/webapp/src/libs/ui/ui-popover-helm/src/lib/hlm-popover-content.directive.ts @@ -3,29 +3,29 @@ import { hlm, injectExposesStateProvider } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmPopoverContent],[brnPopoverContent][hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmPopoverContent],[brnPopoverContent][hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmPopoverContentDirective { - private _stateProvider = injectExposesStateProvider({ host: true }); - public state = this._stateProvider.state ?? signal('closed'); - private _renderer = inject(Renderer2); - private _element = inject(ElementRef); + private readonly _stateProvider = injectExposesStateProvider({ host: true }); + public state = this._stateProvider.state ?? signal('closed'); + private readonly _renderer = inject(Renderer2); + private readonly _element = inject(ElementRef); - constructor() { - effect(() => { - this._renderer.setAttribute(this._element.nativeElement, 'data-state', this.state()); - }); - } + constructor() { + effect(() => { + this._renderer.setAttribute(this._element.nativeElement, 'data-state', this.state()); + }); + } - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'relative border-border w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'relative border-border w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-progress-helm/src/index.ts b/webapp/src/libs/ui/ui-progress-helm/src/index.ts index 422aaa68..edd3d027 100644 --- a/webapp/src/libs/ui/ui-progress-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-progress-helm/src/index.ts @@ -9,7 +9,7 @@ export * from './lib/hlm-progress.directive'; export const HlmProgressImports = [HlmProgressDirective, HlmProgressIndicatorDirective] as const; @NgModule({ - imports: [...HlmProgressImports], - exports: [...HlmProgressImports] + imports: [...HlmProgressImports], + exports: [...HlmProgressImports], }) export class HlmProgressModule {} diff --git a/webapp/src/libs/ui/ui-progress-helm/src/lib/hlm-progress-indicator.directive.ts b/webapp/src/libs/ui/ui-progress-helm/src/lib/hlm-progress-indicator.directive.ts index 82639ed8..9dade00d 100644 --- a/webapp/src/libs/ui/ui-progress-helm/src/lib/hlm-progress-indicator.directive.ts +++ b/webapp/src/libs/ui/ui-progress-helm/src/lib/hlm-progress-indicator.directive.ts @@ -1,36 +1,28 @@ -import { Directive, type DoCheck, ElementRef, Renderer2, computed, effect, inject, input, signal } from '@angular/core'; +import { Directive, computed, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; +import { injectBrnProgress } from '@spartan-ng/ui-progress-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmProgressIndicator],brn-progress-indicator[hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmProgressIndicator],brn-progress-indicator[hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + '[class.animate-indeterminate]': 'indeterminate()', + '[style.transform]': 'transform()', + }, }) -export class HlmProgressIndicatorDirective implements DoCheck { - private _element = inject(ElementRef); - private _renderer = inject(Renderer2); - private readonly _value = signal(0); +export class HlmProgressIndicatorDirective { + private readonly _progress = injectBrnProgress(); + public readonly userClass = input('', { alias: 'class' }); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('inline-flex transform-gpu h-full w-full flex-1 bg-primary transition-all', this.userClass())); + protected readonly _computedClass = computed(() => + hlm('inline-flex transform-gpu h-full w-full flex-1 bg-primary transition-all', this.userClass()), + ); - constructor() { - effect(() => { - // using renderer directly as hostbinding is one change detection cycle behind - const currentValue = this._value(); - this._renderer.setStyle(this._element.nativeElement, 'transform', `translateX(-${100 - (currentValue || 100)}%)`); - if (!currentValue) { - this._renderer.addClass(this._element.nativeElement, 'animate-indeterminate'); - } else { - this._renderer.removeClass(this._element.nativeElement, 'animate-indeterminate'); - } - }); - } + protected readonly transform = computed(() => `translateX(-${100 - (this._progress.value() ?? 100)}%)`); - ngDoCheck(): void { - this._value.set(this._element.nativeElement.getAttribute('data-value')); - } + protected readonly indeterminate = computed( + () => this._progress.value() === null || this._progress.value() === undefined, + ); } diff --git a/webapp/src/libs/ui/ui-progress-helm/src/lib/hlm-progress.directive.ts b/webapp/src/libs/ui/ui-progress-helm/src/lib/hlm-progress.directive.ts index b66a1f0d..003f3f17 100644 --- a/webapp/src/libs/ui/ui-progress-helm/src/lib/hlm-progress.directive.ts +++ b/webapp/src/libs/ui/ui-progress-helm/src/lib/hlm-progress.directive.ts @@ -3,13 +3,15 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmProgress],brn-progress[hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmProgress],brn-progress[hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmProgressDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('inline-flex relative h-4 w-full overflow-hidden rounded-full bg-secondary', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm('inline-flex relative h-4 w-full overflow-hidden rounded-full bg-secondary', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-radiogroup-helm/src/index.ts b/webapp/src/libs/ui/ui-radiogroup-helm/src/index.ts index e7797c56..1deea33c 100644 --- a/webapp/src/libs/ui/ui-radiogroup-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-radiogroup-helm/src/index.ts @@ -11,7 +11,7 @@ export * from './lib/hlm-radio.directive'; export const HlmRadioGroupImports = [HlmRadioGroupDirective, HlmRadioDirective, HlmRadioIndicatorComponent]; @NgModule({ - imports: [...HlmRadioGroupImports], - exports: [...HlmRadioGroupImports] + imports: [...HlmRadioGroupImports], + exports: [...HlmRadioGroupImports], }) export class HlmRadioGroupModule {} diff --git a/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio-group.directive.ts b/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio-group.directive.ts index 466def92..d5238d10 100644 --- a/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio-group.directive.ts +++ b/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio-group.directive.ts @@ -3,13 +3,13 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'brn-radio-group[hlm],[hlmRadioGroup]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: 'brn-radio-group[hlm],[hlmRadioGroup]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmRadioGroupDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('block', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('block', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio-indicator.component.ts b/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio-indicator.component.ts index b4b8f419..fa205534 100644 --- a/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio-indicator.component.ts +++ b/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio-indicator.component.ts @@ -3,20 +3,22 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; const btnLike = - 'aspect-square rounded-full ring-offset-background group-[.cdk-keyboard-focused]:ring-2 group-[.cdk-keyboard-focused]:ring-ring group-[.cdk-keyboard-focused]:ring-offset-2 group-[.brn-radio-disabled]:cursor-not-allowed group-[.brn-radio-disabled]:opacity-50'; + 'aspect-square rounded-full ring-offset-background group-[.cdk-keyboard-focused]:ring-2 group-[.cdk-keyboard-focused]:ring-ring group-[.cdk-keyboard-focused]:ring-offset-2 group-[.brn-radio-disabled]:cursor-not-allowed group-[.brn-radio-disabled]:opacity-50'; @Component({ - selector: 'hlm-radio-indicator', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - template: ` - -
- ` + selector: 'hlm-radio-indicator', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + template: ` + +
+ `, }) export class HlmRadioIndicatorComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('relative inline-flex h-4 w-4', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('relative inline-flex h-4 w-4', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio.directive.ts b/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio.directive.ts index f7857101..18c962cf 100644 --- a/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio.directive.ts +++ b/webapp/src/libs/ui/ui-radiogroup-helm/src/lib/hlm-radio.directive.ts @@ -3,13 +3,15 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'brn-radio[hlm],[hlmRadio]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: 'brn-radio[hlm],[hlmRadio]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmRadioDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('group [&.brn-radio-disabled]:text-muted-foreground flex items-center space-x-2', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('group [&.brn-radio-disabled]:text-muted-foreground flex items-center space-x-2', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-scrollarea-helm/src/index.ts b/webapp/src/libs/ui/ui-scrollarea-helm/src/index.ts index a4c3a645..764f1e3e 100644 --- a/webapp/src/libs/ui/ui-scrollarea-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-scrollarea-helm/src/index.ts @@ -4,7 +4,7 @@ import { HlmScrollAreaComponent } from './lib/hlm-scroll-area.component'; export * from './lib/hlm-scroll-area.component'; @NgModule({ - imports: [HlmScrollAreaComponent], - exports: [HlmScrollAreaComponent] + imports: [HlmScrollAreaComponent], + exports: [HlmScrollAreaComponent], }) export class HlmScrollAreaModule {} diff --git a/webapp/src/libs/ui/ui-scrollarea-helm/src/lib/hlm-scroll-area.component.ts b/webapp/src/libs/ui/ui-scrollarea-helm/src/lib/hlm-scroll-area.component.ts index 14615181..1442877c 100644 --- a/webapp/src/libs/ui/ui-scrollarea-helm/src/lib/hlm-scroll-area.component.ts +++ b/webapp/src/libs/ui/ui-scrollarea-helm/src/lib/hlm-scroll-area.component.ts @@ -1,73 +1,49 @@ -import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, booleanAttribute, computed, signal, viewChild } from '@angular/core'; +import { BooleanInput } from '@angular/cdk/coercion'; +import { + ChangeDetectionStrategy, + Component, + ViewEncapsulation, + booleanAttribute, + computed, + input, +} from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; -import { NgScrollbar, NgScrollbarModule } from 'ngx-scrollbar'; +import { NgScrollbarModule } from 'ngx-scrollbar'; @Component({ - selector: 'hlm-scroll-area', - standalone: true, - imports: [NgScrollbarModule], - template: ` - - - - `, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-scroll-area', + standalone: true, + imports: [NgScrollbarModule], + template: ` + + + + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { + '[class]': '_computedClass()', + }, }) export class HlmScrollAreaComponent { - protected readonly _computedClass = computed(() => hlm('block', this._class())); + protected readonly _computedClass = computed(() => hlm('block', this.userClass())); - scrollbar = viewChild.required(NgScrollbar); - - @Input() - set class(value: ClassValue) { - this._class.set(value); - } - - private readonly _class = signal(''); - - @Input() - set track(value: 'vertical' | 'horizontal' | 'all') { - this._track.set(value); - } - - protected readonly _track = signal<'vertical' | 'horizontal' | 'all'>('all'); - - @Input({ transform: booleanAttribute }) - set autoHeightDisabled(value: boolean) { - this._autoHeightDisabled.set(value); - } - - protected readonly _autoHeightDisabled = signal(true); - - @Input({ transform: booleanAttribute }) - set autoWidthDisabled(value: boolean) { - this._autoWidthDisabled.set(value); - } - - protected readonly _autoWidthDisabled = signal(true); - - @Input() - set visibility(value: 'hover' | 'always' | 'native') { - this._visibility.set(value); - } - - protected readonly _visibility = signal<'hover' | 'always' | 'native'>('native'); + public readonly userClass = input('', { alias: 'class' }); + public readonly track = input<'vertical' | 'horizontal' | 'all'>('all'); + public readonly autoHeightDisabled = input(true, { transform: booleanAttribute }); + public readonly autoWidthDisabled = input(true, { transform: booleanAttribute }); + public readonly visibility = input<'hover' | 'always' | 'native'>('native'); } diff --git a/webapp/src/libs/ui/ui-select-helm/src/index.ts b/webapp/src/libs/ui/ui-select-helm/src/index.ts index 08ec4052..1d9260ba 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/index.ts @@ -20,19 +20,19 @@ export * from './lib/hlm-select-value.directive'; export * from './lib/hlm-select.directive'; export const HlmSelectImports = [ - HlmSelectContentDirective, - HlmSelectTriggerComponent, - HlmSelectOptionComponent, - HlmSelectValueDirective, - HlmSelectDirective, - HlmSelectScrollUpComponent, - HlmSelectScrollDownComponent, - HlmSelectLabelDirective, - HlmSelectGroupDirective + HlmSelectContentDirective, + HlmSelectTriggerComponent, + HlmSelectOptionComponent, + HlmSelectValueDirective, + HlmSelectDirective, + HlmSelectScrollUpComponent, + HlmSelectScrollDownComponent, + HlmSelectLabelDirective, + HlmSelectGroupDirective, ] as const; @NgModule({ - imports: [...HlmSelectImports], - exports: [...HlmSelectImports] + imports: [...HlmSelectImports], + exports: [...HlmSelectImports], }) export class HlmSelectModule {} diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-content.directive.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-content.directive.ts index c9da63eb..e5d1bada 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-content.directive.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-content.directive.ts @@ -1,34 +1,26 @@ -import { Directive, Input, computed, input, signal } from '@angular/core'; +import { Directive, computed, input } from '@angular/core'; import { hlm, injectExposedSideProvider, injectExposesStateProvider } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSelectContent], hlm-select-content', - standalone: true, - host: { - '[class]': '_computedClass()', - '[attr.data-state]': '_stateProvider?.state() ?? "open"', - '[attr.data-side]': '_sideProvider?.side() ?? "bottom"' - } + selector: '[hlmSelectContent], hlm-select-content', + standalone: true, + host: { + '[class]': '_computedClass()', + '[attr.data-state]': '_stateProvider?.state() ?? "open"', + '[attr.data-side]': '_sideProvider?.side() ?? "bottom"', + }, }) export class HlmSelectContentDirective { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _stateProvider = injectExposesStateProvider({ optional: true }); - protected readonly _sideProvider = injectExposedSideProvider({ optional: true }); + public readonly userClass = input('', { alias: 'class' }); + public readonly stickyLabels = input(false); + protected readonly _stateProvider = injectExposesStateProvider({ optional: true }); + protected readonly _sideProvider = injectExposedSideProvider({ optional: true }); - protected readonly _computedClass = computed(() => - hlm( - 'w-full relative z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md p-1 data-[side=bottom]:top-[2px] data-[side=top]:bottom-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', - this.userClass() - ) - ); - - private readonly _stickyLabels = signal(false); - @Input() - set stickyLabels(value: boolean) { - this._stickyLabels.set(value); - } - get stickyLabels() { - return this._stickyLabels(); - } + protected readonly _computedClass = computed(() => + hlm( + 'w-full relative z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md p-1 data-[side=bottom]:top-[2px] data-[side=top]:bottom-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-group.directive.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-group.directive.ts index 06bf1884..54ba6673 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-group.directive.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-group.directive.ts @@ -4,14 +4,14 @@ import { BrnSelectGroupDirective } from '@spartan-ng/ui-select-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSelectGroup], hlm-select-group', - hostDirectives: [BrnSelectGroupDirective], - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmSelectGroup], hlm-select-group', + hostDirectives: [BrnSelectGroupDirective], + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSelectGroupDirective { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm(this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm(this.userClass())); } diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-label.directive.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-label.directive.ts index e8f6b239..790640e7 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-label.directive.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-label.directive.ts @@ -1,28 +1,26 @@ -import { Directive, type OnInit, computed, inject, input, signal } from '@angular/core'; +import { Directive, computed, inject, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { BrnSelectLabelDirective } from '@spartan-ng/ui-select-brain'; import type { ClassValue } from 'clsx'; import { HlmSelectContentDirective } from './hlm-select-content.directive'; @Directive({ - selector: '[hlmSelectLabel], hlm-select-label', - hostDirectives: [BrnSelectLabelDirective], - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmSelectLabel], hlm-select-label', + hostDirectives: [BrnSelectLabelDirective], + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) -export class HlmSelectLabelDirective implements OnInit { - private readonly selectContent = inject(HlmSelectContentDirective); - private readonly _stickyLabels = signal(false); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm('pl-8 pr-2 text-sm font-semibold rtl:pl-2 rtl:pr-8', this._stickyLabels() ? 'sticky top-0 bg-popover block z-[2]' : '', this.userClass()) - ); - - ngOnInit(): void { - if (this.selectContent.stickyLabels) { - this._stickyLabels.set(true); - } - } +export class HlmSelectLabelDirective { + private readonly _selectContent = inject(HlmSelectContentDirective); + private readonly _stickyLabels = computed(() => this._selectContent.stickyLabels()); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'pl-8 pr-2 text-sm font-semibold rtl:pl-2 rtl:pr-8', + this._stickyLabels() ? 'sticky top-0 bg-popover block z-[2]' : '', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-option.component.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-option.component.ts index 36d7c2d3..c82ef05c 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-option.component.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-option.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Input, computed, inject, input } from '@angular/core'; +import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'; import { lucideCheck } from '@ng-icons/lucide'; import { hlm } from '@spartan-ng/ui-core'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; @@ -6,43 +6,35 @@ import { BrnSelectOptionDirective } from '@spartan-ng/ui-select-brain'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-option', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - hostDirectives: [BrnSelectOptionDirective], - providers: [provideIcons({ lucideCheck })], - host: { - '[class]': '_computedClass()' - }, - template: ` - - - @if (this._brnSelectOption.selected()) { - - `, - imports: [HlmIconComponent] + selector: 'hlm-option', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + hostDirectives: [{ directive: BrnSelectOptionDirective, inputs: ['disabled', 'value'] }], + providers: [provideIcons({ lucideCheck })], + host: { + '[class]': '_computedClass()', + }, + template: ` + + + @if (this._brnSelectOption.selected()) { + + `, + imports: [HlmIconComponent], }) export class HlmSelectOptionComponent { - protected readonly _brnSelectOption = inject(BrnSelectOptionDirective, { host: true }); - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => - hlm( - 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 rtl:flex-reverse rtl:pr-8 rtl:pl-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', - this.userClass() - ) - ); - - @Input() - set value(value: unknown | null) { - this._brnSelectOption.value = value; - } - - @Input() - public disabled = false; + protected readonly _brnSelectOption = inject(BrnSelectOptionDirective, { host: true }); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm( + 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 rtl:flex-reverse rtl:pr-8 rtl:pl-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-down.component.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-down.component.ts index a3a10c8d..653d5db1 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-down.component.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-down.component.ts @@ -3,13 +3,15 @@ import { lucideChevronDown } from '@ng-icons/lucide'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; @Component({ - selector: 'hlm-select-scroll-down', - standalone: true, - imports: [HlmIconComponent], - providers: [provideIcons({ lucideChevronDown })], - host: { - class: 'flex cursor-default items-center justify-center py-1' - }, - template: ` ` + selector: 'hlm-select-scroll-down', + standalone: true, + imports: [HlmIconComponent], + providers: [provideIcons({ lucideChevronDown })], + host: { + class: 'flex cursor-default items-center justify-center py-1', + }, + template: ` + + `, }) export class HlmSelectScrollDownComponent {} diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-up.component.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-up.component.ts index fb53823e..021e299c 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-up.component.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-up.component.ts @@ -3,13 +3,15 @@ import { lucideChevronUp } from '@ng-icons/lucide'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; @Component({ - selector: 'hlm-select-scroll-up', - standalone: true, - imports: [HlmIconComponent], - providers: [provideIcons({ lucideChevronUp })], - host: { - class: 'flex cursor-default items-center justify-center py-1' - }, - template: ` ` + selector: 'hlm-select-scroll-up', + standalone: true, + imports: [HlmIconComponent], + providers: [provideIcons({ lucideChevronUp })], + host: { + class: 'flex cursor-default items-center justify-center py-1', + }, + template: ` + + `, }) export class HlmSelectScrollUpComponent {} diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-trigger.component.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-trigger.component.ts index 62c383d1..afbe6651 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-trigger.component.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-trigger.component.ts @@ -1,4 +1,4 @@ -import { Component, ContentChild, type ElementRef, ViewChild, computed, inject, input } from '@angular/core'; +import { Component, computed, contentChild, inject, input } from '@angular/core'; import { provideIcons } from '@ng-icons/core'; import { lucideChevronDown } from '@ng-icons/lucide'; import { hlm } from '@spartan-ng/ui-core'; @@ -8,54 +8,53 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const selectTriggerVariants = cva( - 'flex items-center justify-between rounded-md border border-input bg-background text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', - { - variants: { - size: { - default: 'h-10 py-2 px-4', - sm: 'h-9 px-3', - lg: 'h-11 px-8' - }, - error: { - auto: '[&.ng-invalid.ng-touched]:text-destructive [&.ng-invalid.ng-touched]:border-destructive [&.ng-invalid.ng-touched]:focus-visible:ring-destructive', - true: 'text-destructive border-destructive focus-visible:ring-destructive' - } - }, - defaultVariants: { - size: 'default', - error: 'auto' - } - } + 'flex items-center justify-between rounded-md border border-input bg-background text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', + { + variants: { + size: { + default: 'h-10 py-2 px-4', + sm: 'h-9 px-3', + lg: 'h-11 px-8', + }, + error: { + auto: '[&.ng-invalid.ng-touched]:text-destructive [&.ng-invalid.ng-touched]:border-destructive [&.ng-invalid.ng-touched]:focus-visible:ring-destructive', + true: 'text-destructive border-destructive focus-visible:ring-destructive', + }, + }, + defaultVariants: { + size: 'default', + error: 'auto', + }, + }, ); type SelectTriggerVariants = VariantProps; @Component({ - selector: 'hlm-select-trigger', - standalone: true, - imports: [BrnSelectTriggerDirective, HlmIconComponent], - providers: [provideIcons({ lucideChevronDown })], - template: ` - - ` + selector: 'hlm-select-trigger', + standalone: true, + imports: [BrnSelectTriggerDirective, HlmIconComponent], + providers: [provideIcons({ lucideChevronDown })], + + template: ` + + `, }) export class HlmSelectTriggerComponent { - @ViewChild('button', { static: true }) - public buttonEl!: ElementRef; - - @ContentChild(HlmIconComponent, { static: false }) - protected icon!: HlmIconComponent; + protected readonly icon = contentChild(HlmIconComponent); - protected readonly brnSelect = inject(BrnSelectComponent, { optional: true }); + protected readonly brnSelect = inject(BrnSelectComponent, { optional: true }); - public readonly _size = input('default'); - public readonly userClass = input('', { alias: 'class' }); + public readonly _size = input('default'); + public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(selectTriggerVariants({ size: this._size(), error: this.brnSelect?.errorState() }), this.userClass())); + protected _computedClass = computed(() => + hlm(selectTriggerVariants({ size: this._size(), error: this.brnSelect?.errorState() }), this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-value.directive.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-value.directive.ts index f638eb9b..13e707db 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-value.directive.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-value.directive.ts @@ -3,15 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'hlm-select-value,[hlmSelectValue], brn-select-value[hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-select-value,[hlmSelectValue], brn-select-value[hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSelectValueDirective { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => - hlm('!inline-block ltr:text-left rtl:text-right border-border w-[calc(100%)]] min-w-0 pointer-events-none truncate', this.userClass()) - ); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm( + '!inline-block ltr:text-left rtl:text-right border-border w-[calc(100%)]] min-w-0 pointer-events-none truncate', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select.directive.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select.directive.ts index a3c4f5df..11d8f2fe 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select.directive.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select.directive.ts @@ -3,13 +3,13 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'hlm-select, brn-select [hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-select, brn-select [hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSelectDirective { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('space-y-2', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => hlm('space-y-2', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-separator-helm/src/index.ts b/webapp/src/libs/ui/ui-separator-helm/src/index.ts index 00f23042..97cf2a8b 100644 --- a/webapp/src/libs/ui/ui-separator-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-separator-helm/src/index.ts @@ -4,7 +4,7 @@ import { HlmSeparatorDirective } from './lib/hlm-separator.directive'; export * from './lib/hlm-separator.directive'; @NgModule({ - imports: [HlmSeparatorDirective], - exports: [HlmSeparatorDirective] + imports: [HlmSeparatorDirective], + exports: [HlmSeparatorDirective], }) export class HlmSeparatorModule {} diff --git a/webapp/src/libs/ui/ui-separator-helm/src/lib/hlm-separator.directive.ts b/webapp/src/libs/ui/ui-separator-helm/src/lib/hlm-separator.directive.ts index 0b30597c..1c50fbd2 100644 --- a/webapp/src/libs/ui/ui-separator-helm/src/lib/hlm-separator.directive.ts +++ b/webapp/src/libs/ui/ui-separator-helm/src/lib/hlm-separator.directive.ts @@ -4,16 +4,20 @@ import type { ClassValue } from 'clsx'; export type HlmSeparatorOrientation = 'horizontal' | 'vertical'; @Directive({ - selector: '[hlmSeparator],brn-separator[hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmSeparator],brn-separator[hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSeparatorDirective { - public readonly orientation = input('horizontal'); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm('inline-flex shrink-0 border-0 bg-border', this.orientation() === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]', this.userClass()) - ); + public readonly orientation = input('horizontal'); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'inline-flex shrink-0 border-0 bg-border', + this.orientation() === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-sheet-helm/src/index.ts b/webapp/src/libs/ui/ui-sheet-helm/src/index.ts index de465f0c..28f1f895 100644 --- a/webapp/src/libs/ui/ui-sheet-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-sheet-helm/src/index.ts @@ -19,18 +19,18 @@ export * from './lib/hlm-sheet-title.directive'; export * from './lib/hlm-sheet.component'; export const HlmSheetImports = [ - HlmSheetComponent, - HlmSheetCloseDirective, - HlmSheetContentComponent, - HlmSheetDescriptionDirective, - HlmSheetFooterComponent, - HlmSheetHeaderComponent, - HlmSheetOverlayDirective, - HlmSheetTitleDirective + HlmSheetComponent, + HlmSheetCloseDirective, + HlmSheetContentComponent, + HlmSheetDescriptionDirective, + HlmSheetFooterComponent, + HlmSheetHeaderComponent, + HlmSheetOverlayDirective, + HlmSheetTitleDirective, ] as const; @NgModule({ - imports: [...HlmSheetImports], - exports: [...HlmSheetImports] + imports: [...HlmSheetImports], + exports: [...HlmSheetImports], }) export class HlmSheetModule {} diff --git a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-close.directive.ts b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-close.directive.ts index 8bf38de8..550e3b81 100644 --- a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-close.directive.ts +++ b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-close.directive.ts @@ -3,18 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSheetClose],[brnSheetClose][hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmSheetClose],[brnSheetClose][hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSheetCloseDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-content.component.ts b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-content.component.ts index 1033a954..9a844c7b 100644 --- a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-content.component.ts +++ b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-content.component.ts @@ -8,52 +8,54 @@ import type { ClassValue } from 'clsx'; import { HlmSheetCloseDirective } from './hlm-sheet-close.directive'; export const sheetVariants = cva( - 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500', - { - variants: { - side: { - top: 'border-border inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top', - bottom: 'border-border inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom', - left: 'border-border inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm', - right: 'border-border inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm' - } - }, - defaultVariants: { - side: 'right' - } - } + 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500', + { + variants: { + side: { + top: 'border-border inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top', + bottom: + 'border-border inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom', + left: 'border-border inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm', + right: + 'border-border inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm', + }, + }, + defaultVariants: { + side: 'right', + }, + }, ); @Component({ - selector: 'hlm-sheet-content', - standalone: true, - imports: [HlmSheetCloseDirective, BrnSheetCloseDirective, HlmIconComponent], - providers: [provideIcons({ lucideX })], - host: { - '[class]': '_computedClass()', - '[attr.data-state]': 'state()' - }, - template: ` - - - ` + selector: 'hlm-sheet-content', + standalone: true, + imports: [HlmSheetCloseDirective, BrnSheetCloseDirective, HlmIconComponent], + providers: [provideIcons({ lucideX })], + host: { + '[class]': '_computedClass()', + '[attr.data-state]': 'state()', + }, + template: ` + + + `, }) export class HlmSheetContentComponent { - private _stateProvider = injectExposesStateProvider({ host: true }); - private _sideProvider = injectExposedSideProvider({ host: true }); - public state = this._stateProvider.state ?? signal('closed'); - private _renderer = inject(Renderer2); - private _element = inject(ElementRef); + private readonly _stateProvider = injectExposesStateProvider({ host: true }); + private readonly _sideProvider = injectExposedSideProvider({ host: true }); + public state = this._stateProvider.state ?? signal('closed'); + private readonly _renderer = inject(Renderer2); + private readonly _element = inject(ElementRef); - constructor() { - effect(() => { - this._renderer.setAttribute(this._element.nativeElement, 'data-state', this.state()); - }); - } + constructor() { + effect(() => { + this._renderer.setAttribute(this._element.nativeElement, 'data-state', this.state()); + }); + } - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(sheetVariants({ side: this._sideProvider.side() }), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(sheetVariants({ side: this._sideProvider.side() }), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-description.directive.ts b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-description.directive.ts index 3d58b480..f12d8f3e 100644 --- a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-description.directive.ts +++ b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-description.directive.ts @@ -4,14 +4,14 @@ import { BrnSheetDescriptionDirective } from '@spartan-ng/ui-sheet-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSheetDescription]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnSheetDescriptionDirective] + selector: '[hlmSheetDescription]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnSheetDescriptionDirective], }) export class HlmSheetDescriptionDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('text-sm text-muted-foreground', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('text-sm text-muted-foreground', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-footer.component.ts b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-footer.component.ts index e67df7fc..bfeb145b 100644 --- a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-footer.component.ts +++ b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-footer.component.ts @@ -3,14 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-sheet-footer', - standalone: true, - template: ` `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-sheet-footer', + standalone: true, + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSheetFooterComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-header.component.ts b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-header.component.ts index a3ae0fc5..10ec21ff 100644 --- a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-header.component.ts +++ b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-header.component.ts @@ -3,14 +3,16 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-sheet-header', - standalone: true, - template: ` `, - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-sheet-header', + standalone: true, + template: ` + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSheetHeaderComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('flex flex-col space-y-2 text-center sm:text-left', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('flex flex-col space-y-2 text-center sm:text-left', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-overlay.directive.ts b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-overlay.directive.ts index 684f8371..253719d5 100644 --- a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-overlay.directive.ts +++ b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-overlay.directive.ts @@ -3,25 +3,25 @@ import { hlm, injectCustomClassSettable } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSheetOverlay],brn-sheet-overlay[hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmSheetOverlay],brn-sheet-overlay[hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSheetOverlayDirective { - private _classSettable = injectCustomClassSettable({ optional: true, host: true }); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', - this.userClass() - ) - ); + private readonly _classSettable = injectCustomClassSettable({ optional: true, host: true }); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', + this.userClass(), + ), + ); - constructor() { - effect(() => { - this._classSettable?.setClassToCustomElement(this._computedClass()); - }); - } + constructor() { + effect(() => { + this._classSettable?.setClassToCustomElement(this._computedClass()); + }); + } } diff --git a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-title.directive.ts b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-title.directive.ts index f62fd1df..aabe0de6 100644 --- a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-title.directive.ts +++ b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet-title.directive.ts @@ -4,14 +4,14 @@ import { BrnSheetTitleDirective } from '@spartan-ng/ui-sheet-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSheetTitle]', - standalone: true, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnSheetTitleDirective] + selector: '[hlmSheetTitle]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnSheetTitleDirective], }) export class HlmSheetTitleDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('text-lg font-semibold', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('text-lg font-semibold', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet.component.ts b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet.component.ts index 8ee041f4..d9792670 100644 --- a/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet.component.ts +++ b/webapp/src/libs/ui/ui-sheet-helm/src/lib/hlm-sheet.component.ts @@ -4,30 +4,30 @@ import { BrnSheetComponent, BrnSheetOverlayComponent } from '@spartan-ng/ui-shee import { HlmSheetOverlayDirective } from './hlm-sheet-overlay.directive'; @Component({ - selector: 'hlm-sheet', - standalone: true, - imports: [BrnSheetOverlayComponent, HlmSheetOverlayDirective], - providers: [ - { - provide: BrnDialogComponent, - useExisting: forwardRef(() => BrnSheetComponent) - }, - { - provide: BrnSheetComponent, - useExisting: forwardRef(() => HlmSheetComponent) - } - ], - template: ` - - - `, - encapsulation: ViewEncapsulation.None, - changeDetection: ChangeDetectionStrategy.OnPush, - exportAs: 'hlmSheet' + selector: 'hlm-sheet', + standalone: true, + imports: [BrnSheetOverlayComponent, HlmSheetOverlayDirective], + providers: [ + { + provide: BrnDialogComponent, + useExisting: forwardRef(() => BrnSheetComponent), + }, + { + provide: BrnSheetComponent, + useExisting: forwardRef(() => HlmSheetComponent), + }, + ], + template: ` + + + `, + encapsulation: ViewEncapsulation.None, + changeDetection: ChangeDetectionStrategy.OnPush, + exportAs: 'hlmSheet', }) export class HlmSheetComponent extends BrnSheetComponent { - constructor() { - super(); - this.closeDelay = 100; - } + constructor() { + super(); + this.closeDelay = 100; + } } diff --git a/webapp/src/libs/ui/ui-skeleton-helm/src/index.ts b/webapp/src/libs/ui/ui-skeleton-helm/src/index.ts index 16e54e55..5466cd45 100644 --- a/webapp/src/libs/ui/ui-skeleton-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-skeleton-helm/src/index.ts @@ -4,7 +4,7 @@ import { HlmSkeletonComponent } from './lib/hlm-skeleton.component'; export * from './lib/hlm-skeleton.component'; @NgModule({ - imports: [HlmSkeletonComponent], - exports: [HlmSkeletonComponent] + imports: [HlmSkeletonComponent], + exports: [HlmSkeletonComponent], }) export class HlmSkeletonModule {} diff --git a/webapp/src/libs/ui/ui-skeleton-helm/src/lib/hlm-skeleton.component.ts b/webapp/src/libs/ui/ui-skeleton-helm/src/lib/hlm-skeleton.component.ts index 3e0252e1..bc2e381d 100644 --- a/webapp/src/libs/ui/ui-skeleton-helm/src/lib/hlm-skeleton.component.ts +++ b/webapp/src/libs/ui/ui-skeleton-helm/src/lib/hlm-skeleton.component.ts @@ -3,14 +3,14 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-skeleton', - standalone: true, - template: '', - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-skeleton', + standalone: true, + template: '', + host: { + '[class]': '_computedClass()', + }, }) export class HlmSkeletonComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('block animate-pulse rounded-md bg-muted', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm('block animate-pulse rounded-md bg-muted', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-slider-helm/src/index.ts b/webapp/src/libs/ui/ui-slider-helm/src/index.ts index 1fd70127..3f616f2a 100644 --- a/webapp/src/libs/ui/ui-slider-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-slider-helm/src/index.ts @@ -3,4 +3,9 @@ import { HlmSliderThumbDirective } from './lib/hlm-slider-thumb.directive'; import { HlmSliderTrackComponent } from './lib/hlm-slider-track.component'; import { HlmSliderComponent } from './lib/hlm-slider.component'; -export const HlmSliderImports = [HlmSliderComponent, HlmSliderTrackComponent, HlmSliderInputDirective, HlmSliderThumbDirective] as const; +export const HlmSliderImports = [ + HlmSliderComponent, + HlmSliderTrackComponent, + HlmSliderInputDirective, + HlmSliderThumbDirective, +] as const; diff --git a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-input.directive.ts b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-input.directive.ts index 669ae357..06723ab3 100644 --- a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-input.directive.ts +++ b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-input.directive.ts @@ -4,14 +4,16 @@ import { BrnSliderInputDirective } from '@spartan-ng/ui-slider-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'input[hlmSliderInput], input[brnSliderInput]', - standalone: true, - hostDirectives: [BrnSliderInputDirective], - host: { - '[class]': '_computedClass()' - } + selector: 'input[hlmSliderInput], input[brnSliderInput]', + standalone: true, + hostDirectives: [BrnSliderInputDirective], + host: { + '[class]': '_computedClass()', + }, }) export class HlmSliderInputDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('w-full h-5 -top-1.5 left-0 opacity-0 absolute cursor-pointer transition-all', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('w-full h-5 -top-1.5 left-0 opacity-0 absolute cursor-pointer transition-all', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-thumb.directive.ts b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-thumb.directive.ts index d691e38e..79bf2bc6 100644 --- a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-thumb.directive.ts +++ b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-thumb.directive.ts @@ -4,24 +4,24 @@ import { BRN_SLIDER, BrnSliderThumbDirective } from '@spartan-ng/ui-slider-brain import type { ClassValue } from 'clsx'; @Directive({ - selector: 'hlm-slider-thumb, brn-slider-thumb [hlm]', - standalone: true, - host: { - '[class]': '_computedClass()', - '[attr.dir]': '_direction()' - }, - hostDirectives: [BrnSliderThumbDirective] + selector: 'hlm-slider-thumb, brn-slider-thumb [hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + '[attr.dir]': '_direction()', + }, + hostDirectives: [BrnSliderThumbDirective], }) export class HlmSliderThumbDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - '-translate-y-1/2 h-5 w-5 absolute rounded-full top-1/2 ltr:left-0 rtl:right-0 bg-secondary border-2 border-black cursor-pointer pointer-events-none transition-all', - this._brnSlider.brnSliderTrack()?.brnSliderInput()?.isFocused() ? 'ring-2 ring-gray-400' : '', - this.userClass() - ) - ); - protected _direction = computed(() => this._brnSlider.direction()); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + '-translate-y-1/2 h-5 w-5 absolute rounded-full top-1/2 ltr:left-0 rtl:right-0 bg-secondary border-2 border-black cursor-pointer pointer-events-none transition-all', + this._brnSlider.brnSliderTrack()?.brnSliderInput()?.isFocused() ? 'ring-2 ring-gray-400' : '', + this.userClass(), + ), + ); + protected _direction = computed(() => this._brnSlider.direction()); - private readonly _brnSlider = inject(BRN_SLIDER); + private readonly _brnSlider = inject(BRN_SLIDER); } diff --git a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-tick-mark.directive.ts b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-tick-mark.directive.ts index 14863946..78757893 100644 --- a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-tick-mark.directive.ts +++ b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-tick-mark.directive.ts @@ -4,20 +4,26 @@ import { BRN_SLIDER, BrnSliderTickMarkDirective } from '@spartan-ng/ui-slider-br import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSliderTickMark]', - standalone: true, - host: { - '[class]': '_computedClass()', - '[attr.dir]': '_direction()' - }, - hostDirectives: [{ directive: BrnSliderTickMarkDirective, inputs: ['data'] }] + selector: '[hlmSliderTickMark]', + standalone: true, + host: { + '[class]': '_computedClass()', + '[attr.dir]': '_direction()', + }, + hostDirectives: [{ directive: BrnSliderTickMarkDirective, inputs: ['data'] }], }) export class HlmSliderTickMarkDirective { - public readonly userClass = input('', { alias: 'class' }); - public readonly active = input(); + public readonly userClass = input('', { alias: 'class' }); + public readonly active = input(); - protected _computedClass = computed(() => hlm('absolute w-1 h-1 top-0.5 rounded-full rtl:right-0', this.active() ? 'bg-secondary' : 'bg-primary', this.userClass())); - protected _direction = computed(() => this._brnSlider.direction()); + protected _computedClass = computed(() => + hlm( + 'absolute w-1 h-1 top-0.5 rounded-full rtl:right-0', + this.active() ? 'bg-secondary' : 'bg-primary', + this.userClass(), + ), + ); + protected _direction = computed(() => this._brnSlider.direction()); - private readonly _brnSlider = inject(BRN_SLIDER); + private readonly _brnSlider = inject(BRN_SLIDER); } diff --git a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-tick-marks.directive.ts b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-tick-marks.directive.ts index 0ea3ea05..c5f6ae11 100644 --- a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-tick-marks.directive.ts +++ b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-tick-marks.directive.ts @@ -3,13 +3,15 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSliderTickMarks]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmSliderTickMarks]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSliderTickMarksDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('h-full w-full relative -top-4 cursor-pointer pointer-events-none transition-all', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('h-full w-full relative -top-4 cursor-pointer pointer-events-none transition-all', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-active-fill.directive.ts b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-active-fill.directive.ts index c6a6ad62..7967b15a 100644 --- a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-active-fill.directive.ts +++ b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-active-fill.directive.ts @@ -4,20 +4,23 @@ import { BRN_SLIDER, BrnSliderTrackActiveFillDirective } from '@spartan-ng/ui-sl import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSliderTrackActiveFill]', - standalone: true, - hostDirectives: [BrnSliderTrackActiveFillDirective], - host: { - '[class]': '_computedClass()', - '[attr.dir]': '_direction()' - } + selector: '[hlmSliderTrackActiveFill]', + standalone: true, + hostDirectives: [BrnSliderTrackActiveFillDirective], + host: { + '[class]': '_computedClass()', + '[attr.dir]': '_direction()', + }, }) export class HlmSliderTrackActiveFillDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm('h-full w-full absolute top-0 pointer-events-none bg-primary ltr:origin-left rtl:origin-right transition-all scale-x-0', this.userClass()) - ); - protected _direction = computed(() => this._brnSlider.direction()); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'h-full w-full absolute top-0 pointer-events-none bg-primary ltr:origin-left rtl:origin-right transition-all scale-x-0', + this.userClass(), + ), + ); + protected _direction = computed(() => this._brnSlider.direction()); - private readonly _brnSlider = inject(BRN_SLIDER); + private readonly _brnSlider = inject(BRN_SLIDER); } diff --git a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-active.directive.ts b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-active.directive.ts index 6e1fbb8a..56bbe0d6 100644 --- a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-active.directive.ts +++ b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-active.directive.ts @@ -3,13 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSliderTrackActive]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmSliderTrackActive]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSliderTrackActiveDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('h-full w-full relative -top-2 pointer-events-none overflow-hidden rounded-full transition-all', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'h-full w-full relative -top-2 pointer-events-none overflow-hidden rounded-full transition-all', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-inactive.directive.ts b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-inactive.directive.ts index e17655af..81d5a29d 100644 --- a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-inactive.directive.ts +++ b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track-inactive.directive.ts @@ -3,13 +3,15 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmSliderTrackInactive]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmSliderTrackInactive]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSliderTrackInactiveDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('w-full h-full bg-secondary rounded-full transition-all', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('w-full h-full bg-secondary rounded-full transition-all', this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track.component.ts b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track.component.ts index 54a007c5..bd6fb19c 100644 --- a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track.component.ts +++ b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider-track.component.ts @@ -9,35 +9,47 @@ import { HlmSliderTrackActiveDirective } from './hlm-slider-track-active.directi import { HlmSliderTrackInactiveDirective } from './hlm-slider-track-inactive.directive'; @Component({ - selector: 'hlm-slider-track, brn-slider-track [hlm]', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - template: ` - -
-
-
-
-
- @if (_brnSlider.showTickMarks()) { -
- @for (tickMark of _brnSliderTrack.tickMarks(); track $index) { -
- } -
- } -
- `, - host: { - '[class]': '_computedClass()' - }, - hostDirectives: [BrnSliderTrackDirective], - imports: [HlmSliderTrackInactiveDirective, HlmSliderTrackActiveDirective, HlmSliderTrackActiveFillDirective, HlmSliderTickMarksDirective, HlmSliderTickMarkDirective] + selector: 'hlm-slider-track, brn-slider-track [hlm]', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + +
+
+
+
+
+ @if (_brnSlider.showTickMarks()) { +
+ @for (tickMark of _brnSliderTrack.tickMarks(); track $index) { +
+ } +
+ } +
+ `, + host: { + '[class]': '_computedClass()', + }, + hostDirectives: [BrnSliderTrackDirective], + imports: [ + HlmSliderTrackInactiveDirective, + HlmSliderTrackActiveDirective, + HlmSliderTrackActiveFillDirective, + HlmSliderTickMarksDirective, + HlmSliderTickMarkDirective, + ], }) export class HlmSliderTrackComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('flex w-full h-2 px-3 self-center relative transition-all', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('flex w-full h-2 px-3 self-center relative transition-all', this.userClass()), + ); - protected readonly _brnSlider = inject(BRN_SLIDER); - protected readonly _brnSliderTrack = inject(BRN_SLIDER_TRACK, { host: true }); + protected readonly _brnSlider = inject(BRN_SLIDER); + protected readonly _brnSliderTrack = inject(BRN_SLIDER_TRACK, { host: true }); } diff --git a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider.component.ts b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider.component.ts index b2453168..3b7584f2 100644 --- a/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider.component.ts +++ b/webapp/src/libs/ui/ui-slider-helm/src/lib/hlm-slider.component.ts @@ -4,23 +4,25 @@ import { BRN_SLIDER, BrnSliderDirective } from '@spartan-ng/ui-slider-brain'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-slider, brn-slider [hlm]', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - hostDirectives: [ - { - directive: BrnSliderDirective, - inputs: ['brnSliderDisabled: disabled', 'min', 'max', 'step', 'dir', 'label', 'ariaLabel', 'showTickMarks'] - } - ], - template: '', - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-slider, brn-slider [hlm]', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + hostDirectives: [ + { + directive: BrnSliderDirective, + inputs: ['brnSliderDisabled: disabled', 'min', 'max', 'step', 'dir', 'label', 'ariaLabel', 'showTickMarks'], + }, + ], + template: '', + host: { + '[class]': '_computedClass()', + }, }) export class HlmSliderComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('w-full h-5 flex relative', this._brnSlider.disabled() ? 'opacity-40' : '', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm('w-full h-5 flex relative', this._brnSlider.disabled() ? 'opacity-40' : '', this.userClass()), + ); - private readonly _brnSlider = inject(BRN_SLIDER, { host: true }); + private readonly _brnSlider = inject(BRN_SLIDER, { host: true }); } diff --git a/webapp/src/libs/ui/ui-sonner-helm/src/lib/hlm-toaster.component.ts b/webapp/src/libs/ui/ui-sonner-helm/src/lib/hlm-toaster.component.ts index ae5f6987..1bd9f4d1 100644 --- a/webapp/src/libs/ui/ui-sonner-helm/src/lib/hlm-toaster.component.ts +++ b/webapp/src/libs/ui/ui-sonner-helm/src/lib/hlm-toaster.component.ts @@ -1,63 +1,67 @@ -import { ChangeDetectionStrategy, Component, booleanAttribute, input, numberAttribute } from '@angular/core'; +import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input, numberAttribute } from '@angular/core'; +import { hlm } from '@spartan-ng/ui-core'; +import type { ClassValue } from 'clsx'; import { NgxSonnerToaster, type ToasterProps } from 'ngx-sonner'; @Component({ - selector: 'hlm-toaster', - standalone: true, - imports: [NgxSonnerToaster], - template: ` - - `, - changeDetection: ChangeDetectionStrategy.OnPush + selector: 'hlm-toaster', + standalone: true, + imports: [NgxSonnerToaster], + template: ` + + `, + changeDetection: ChangeDetectionStrategy.OnPush, }) export class HlmToasterComponent { - invert = input(false, { - transform: booleanAttribute - }); - theme = input('light'); - position = input('bottom-right'); - hotKey = input(['altKey', 'KeyT']); - richColors = input(false, { - transform: booleanAttribute - }); - expand = input(false, { - transform: booleanAttribute - }); - duration = input(4000, { - transform: numberAttribute - }); - visibleToasts = input(3, { - transform: numberAttribute - }); - closeButton = input(false, { - transform: booleanAttribute - }); - toastOptions = input({ - classes: { - toast: 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg', - description: 'group-[.toast]:text-muted-foreground', - actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground', - cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground' - } - }); - offset = input(null); - dir = input('auto'); - _class = input('', { alias: 'class' }); - _style = input>({}, { alias: 'style' }); + public readonly invert = input(false, { + transform: booleanAttribute, + }); + public readonly theme = input('light'); + public readonly position = input('bottom-right'); + public readonly hotKey = input(['altKey', 'KeyT']); + public readonly richColors = input(false, { + transform: booleanAttribute, + }); + public readonly expand = input(false, { + transform: booleanAttribute, + }); + public readonly duration = input(4000, { + transform: numberAttribute, + }); + public readonly visibleToasts = input(3, { + transform: numberAttribute, + }); + public readonly closeButton = input(false, { + transform: booleanAttribute, + }); + public readonly toastOptions = input({ + classes: { + toast: + 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg', + description: 'group-[.toast]:text-muted-foreground', + actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground', + cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground', + }, + }); + public readonly offset = input(null); + public readonly dir = input('auto'); + public readonly userClass = input('', { alias: 'class' }); + public readonly userStyle = input>({}, { alias: 'style' }); + + protected readonly _computedClass = computed(() => hlm('toaster group', this.userClass())); } diff --git a/webapp/src/libs/ui/ui-spinner-helm/src/index.ts b/webapp/src/libs/ui/ui-spinner-helm/src/index.ts index cb31da45..12846032 100644 --- a/webapp/src/libs/ui/ui-spinner-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-spinner-helm/src/index.ts @@ -4,7 +4,7 @@ import { HlmSpinnerComponent } from './lib/hlm-spinner.component'; export * from './lib/hlm-spinner.component'; @NgModule({ - imports: [HlmSpinnerComponent], - exports: [HlmSpinnerComponent] + imports: [HlmSpinnerComponent], + exports: [HlmSpinnerComponent], }) export class HlmSpinnerModule {} diff --git a/webapp/src/libs/ui/ui-spinner-helm/src/lib/hlm-spinner.component.ts b/webapp/src/libs/ui/ui-spinner-helm/src/lib/hlm-spinner.component.ts index f1abbeb0..02d37bfc 100644 --- a/webapp/src/libs/ui/ui-spinner-helm/src/lib/hlm-spinner.component.ts +++ b/webapp/src/libs/ui/ui-spinner-helm/src/lib/hlm-spinner.component.ts @@ -4,48 +4,48 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const spinnerVariants = cva('inline-block', { - variants: { - variant: { - default: 'animate-spin [&>svg]:text-foreground/30 [&>svg]:fill-accent' - }, - size: { - xs: 'h-4 w-4', - sm: 'h-6 w-6', - default: 'w-8 h-8 ', - lg: 'w-12 h-12', - xl: 'w-16 h-16' - } - }, - defaultVariants: { - variant: 'default', - size: 'default' - } + variants: { + variant: { + default: 'animate-spin [&>svg]:text-foreground/30 [&>svg]:fill-accent', + }, + size: { + xs: 'h-4 w-4', + sm: 'h-6 w-6', + default: 'w-8 h-8 ', + lg: 'w-12 h-12', + xl: 'w-16 h-16', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, }); export type SpinnerVariants = VariantProps; @Component({ - selector: 'hlm-spinner', - standalone: true, - host: { - '[class]': '_computedClass()', - role: 'status' - }, - template: ` - - - ` + selector: 'hlm-spinner', + standalone: true, + host: { + '[class]': '_computedClass()', + role: 'status', + }, + template: ` + + + `, }) export class HlmSpinnerComponent { - public readonly size = input('default'); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(spinnerVariants({ size: this.size() }), this.userClass())); + public readonly size = input('default'); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(spinnerVariants({ size: this.size() }), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-switch-helm/src/index.ts b/webapp/src/libs/ui/ui-switch-helm/src/index.ts index 93ab3f7e..e9af3e16 100644 --- a/webapp/src/libs/ui/ui-switch-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-switch-helm/src/index.ts @@ -8,7 +8,7 @@ export * from './lib/hlm-switch.component'; export const HlmSwitchImports = [HlmSwitchComponent, HlmSwitchThumbDirective] as const; @NgModule({ - imports: [...HlmSwitchImports], - exports: [...HlmSwitchImports] + imports: [...HlmSwitchImports], + exports: [...HlmSwitchImports], }) export class HlmSwitchModule {} diff --git a/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-ng-model.component.ignore.spec.ts b/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-ng-model.component.ignore.spec.ts new file mode 100644 index 00000000..4f3cd6ed --- /dev/null +++ b/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-ng-model.component.ignore.spec.ts @@ -0,0 +1,32 @@ +import { Component, Input } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { HlmSwitchComponent } from './hlm-switch.component'; +@Component({ + selector: 'hlm-switch-ng-model', + standalone: true, + template: ` + + + +

{{ switchValue }}

+

{{ changedValueTo }}

+ `, + imports: [HlmSwitchComponent, FormsModule], +}) +export class SwitchFormComponent { + @Input() + public switchValue = false; + + protected changedValueTo: boolean | undefined; + + handleChange(value: boolean) { + this.changedValueTo = value; + } +} diff --git a/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-thumb.directive.ts b/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-thumb.directive.ts index 4c5c64b3..cb3257a8 100644 --- a/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-thumb.directive.ts +++ b/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-thumb.directive.ts @@ -3,18 +3,19 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'brn-switch-thumb[hlm],[hlmSwitchThumb]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: 'brn-switch-thumb[hlm],[hlmSwitchThumb]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSwitchThumbDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform group-data-[state=checked]:translate-x-5 group-data-[state=unchecked]:translate-x-0', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + + protected readonly _computedClass = computed(() => + hlm( + 'block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform group-data-[state=checked]:translate-x-5 group-data-[state=unchecked]:translate-x-0', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch.component.ts b/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch.component.ts index bdc2cc80..7e497f69 100644 --- a/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch.component.ts +++ b/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch.component.ts @@ -1,109 +1,97 @@ -import { Component, EventEmitter, Input, Output, booleanAttribute, computed, forwardRef, input, signal } from '@angular/core'; +import { BooleanInput } from '@angular/cdk/coercion'; +import { Component, booleanAttribute, computed, forwardRef, input, model, output } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { hlm } from '@spartan-ng/ui-core'; +import { ChangeFn, TouchFn } from '@spartan-ng/ui-forms-brain'; import { BrnSwitchComponent, BrnSwitchThumbComponent } from '@spartan-ng/ui-switch-brain'; import type { ClassValue } from 'clsx'; import { HlmSwitchThumbDirective } from './hlm-switch-thumb.directive'; - export const HLM_SWITCH_VALUE_ACCESSOR = { - provide: NG_VALUE_ACCESSOR, - useExisting: forwardRef(() => HlmSwitchComponent), - multi: true + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => HlmSwitchComponent), + multi: true, }; @Component({ - selector: 'hlm-switch', - imports: [BrnSwitchThumbComponent, BrnSwitchComponent, HlmSwitchThumbDirective], - standalone: true, - host: { - class: 'contents', - '[attr.id]': 'null', - '[attr.aria-label]': 'null', - '[attr.aria-labelledby]': 'null', - '[attr.aria-describedby]': 'null' - }, - template: ` - - - - `, - providers: [HLM_SWITCH_VALUE_ACCESSOR] + selector: 'hlm-switch', + imports: [BrnSwitchThumbComponent, BrnSwitchComponent, HlmSwitchThumbDirective], + standalone: true, + host: { + class: 'contents', + '[attr.id]': 'null', + '[attr.aria-label]': 'null', + '[attr.aria-labelledby]': 'null', + '[attr.aria-describedby]': 'null', + }, + template: ` + + + + `, + providers: [HLM_SWITCH_VALUE_ACCESSOR], }) export class HlmSwitchComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'group inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input', - this._disabled() ? 'cursor-not-allowed opacity-50' : '', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm( + 'group inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input', + this.disabled() ? 'cursor-not-allowed opacity-50' : '', + this.userClass(), + ), + ); - @Output() - public changed = new EventEmitter(); + public readonly checked = model(false); - protected _handleChange(value: boolean): void { - this._checked.set(value); - this._onChange(value); - this.changed.emit(value); - } + public readonly disabled = input(false, { + transform: booleanAttribute, + }); - protected _checked = signal(false); - @Input({ transform: booleanAttribute }) - set checked(value: boolean) { - this._checked.set(value); - } + /** Used to set the id on the underlying brn element. */ + public readonly id = input(null); - protected readonly _disabled = signal(false); - @Input({ transform: booleanAttribute }) - set disabled(value: boolean) { - this._disabled.set(value); - } + /** Used to set the aria-label attribute on the underlying brn element. */ + public readonly ariaLabel = input(null, { alias: 'aria-label' }); - /** Used to set the id on the underlying brn element. */ - @Input() - id: string | null = null; + /** Used to set the aria-labelledby attribute on the underlying brn element. */ + public readonly ariaLabelledby = input(null, { alias: 'aria-labelledby' }); - /** Used to set the aria-label attribute on the underlying brn element. */ - @Input('aria-label') - ariaLabel: string | null = null; + /** Used to set the aria-describedby attribute on the underlying brn element. */ + public readonly ariaDescribedby = input(null, { alias: 'aria-describedby' }); - /** Used to set the aria-labelledby attribute on the underlying brn element. */ - @Input('aria-labelledby') - ariaLabelledby: string | null = null; + public readonly changed = output(); - /** Used to set the aria-describedby attribute on the underlying brn element. */ - @Input('aria-describedby') - ariaDescribedby: string | null = null; + // eslint-disable-next-line @typescript-eslint/no-empty-function + protected _onChange: ChangeFn = () => {}; + // eslint-disable-next-line @typescript-eslint/no-empty-function + protected _onTouched: TouchFn = () => {}; - /** CONROL VALUE ACCESSOR */ + protected handleChange(value: boolean): void { + this.checked.set(value); + this._onChange(value); + this.changed.emit(value); + } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - writeValue(value: any): void { - this.checked = !!value; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars,,@typescript-eslint/no-explicit-any - protected _onChange = (_: any) => {}; + /** CONROL VALUE ACCESSOR */ - protected _onTouched = () => {}; + writeValue(value: boolean): void { + this.checked.set(Boolean(value)); + } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - registerOnChange(fn: any): void { - this._onChange = fn; - } + registerOnChange(fn: ChangeFn): void { + this._onChange = fn; + } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - registerOnTouched(fn: any): void { - this._onTouched = fn; - } + registerOnTouched(fn: TouchFn): void { + this._onTouched = fn; + } } diff --git a/webapp/src/libs/ui/ui-table-helm/src/index.ts b/webapp/src/libs/ui/ui-table-helm/src/index.ts index be665cc6..25f9b81e 100644 --- a/webapp/src/libs/ui/ui-table-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-table-helm/src/index.ts @@ -14,10 +14,17 @@ export { HlmTdComponent } from './lib/hlm-td.component'; export { HlmThComponent } from './lib/hlm-th.component'; export { HlmTrowComponent } from './lib/hlm-trow.component'; -export const HlmTableImports = [HlmTableComponent, HlmTableDirective, HlmCaptionComponent, HlmThComponent, HlmTdComponent, HlmTrowComponent] as const; +export const HlmTableImports = [ + HlmTableComponent, + HlmTableDirective, + HlmCaptionComponent, + HlmThComponent, + HlmTdComponent, + HlmTrowComponent, +] as const; @NgModule({ - imports: [...HlmTableImports], - exports: [...HlmTableImports] + imports: [...HlmTableImports], + exports: [...HlmTableImports], }) export class HlmTableModule {} diff --git a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-caption.component.ts b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-caption.component.ts index fe1bf00b..05a7c9ba 100644 --- a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-caption.component.ts +++ b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-caption.component.ts @@ -1,38 +1,55 @@ -import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, effect, inject, input } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + ViewEncapsulation, + booleanAttribute, + computed, + effect, + inject, + input, +} from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; -import { HlmTableComponent } from '../index'; +import { HlmTableComponent } from './hlm-table.component'; let captionIdSequence = 0; @Component({ - selector: 'hlm-caption', - standalone: true, - host: { - '[class]': '_computedClass()', - '[id]': 'id()' - }, - template: ` `, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None + selector: 'hlm-caption', + standalone: true, + host: { + '[class]': '_computedClass()', + '[id]': 'id()', + }, + template: ` + + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, }) export class HlmCaptionComponent { - private readonly _table = inject(HlmTableComponent, { optional: true }); + private readonly _table = inject(HlmTableComponent, { optional: true }); - protected readonly id = input(`${captionIdSequence++}`); + protected readonly id = input(`${captionIdSequence++}`); - public readonly hidden = input(false, { transform: booleanAttribute }); - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('text-center block mt-4 text-sm text-muted-foreground', this.hidden() ? 'sr-only' : 'order-last', this.userClass())); + public readonly hidden = input(false, { transform: booleanAttribute }); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm( + 'text-center block mt-4 text-sm text-muted-foreground', + this.hidden() ? 'sr-only' : 'order-last', + this.userClass(), + ), + ); - constructor() { - effect( - () => { - const id = this.id(); - if (!this._table) return; - this._table.labeledBy.set(id); - }, - { allowSignalWrites: true } - ); - } + constructor() { + effect( + () => { + const id = this.id(); + if (!this._table) return; + this._table.labeledBy.set(id); + }, + { allowSignalWrites: true }, + ); + } } diff --git a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-table.component.ts b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-table.component.ts index e7a7cb32..0662ff8a 100644 --- a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-table.component.ts +++ b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-table.component.ts @@ -3,26 +3,30 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-table', - standalone: true, - host: { - '[class]': '_computedClass()', - role: 'table', - '[attr.aria-labelledby]': 'labeledBy()' - }, - template: ` `, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None + selector: 'hlm-table', + standalone: true, + host: { + '[class]': '_computedClass()', + role: 'table', + '[attr.aria-labelledby]': 'labeledBy()', + }, + template: ` + + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, }) export class HlmTableComponent { - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('flex flex-col text-sm [&_hlm-trow:last-child]:border-0', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm('flex flex-col text-sm [&_hlm-trow:last-child]:border-0', this.userClass()), + ); - // we aria-labelledby to be settable from outside but use the input by default. - public readonly _labeledByInput = input(undefined, { alias: 'aria-labelledby' }); - public readonly labeledBy = signal(undefined); + // we aria-labelledby to be settable from outside but use the input by default. + public readonly _labeledByInput = input(undefined, { alias: 'aria-labelledby' }); + public readonly labeledBy = signal(undefined); - constructor() { - effect(() => this.labeledBy.set(this._labeledByInput()), { allowSignalWrites: true }); - } + constructor() { + effect(() => this.labeledBy.set(this._labeledByInput()), { allowSignalWrites: true }); + } } diff --git a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-table.directive.ts b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-table.directive.ts index af483dba..bc9c7101 100644 --- a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-table.directive.ts +++ b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-table.directive.ts @@ -3,15 +3,16 @@ import { injectTableClassesSettable } from '@spartan-ng/ui-core'; @Directive({ standalone: true, selector: '[hlmTable],brn-table[hlm]' }) export class HlmTableDirective { - private _tableClassesSettable = injectTableClassesSettable({ host: true, optional: true }); + private readonly _tableClassesSettable = injectTableClassesSettable({ host: true, optional: true }); - constructor() { - this._tableClassesSettable?.setTableClasses({ - table: 'flex flex-col text-sm [&_cdk-row:last-child]:border-0', - headerRow: - 'flex min-w-[100%] w-fit border-b border-border [&.cdk-table-sticky]:bg-background ' + - '[&.cdk-table-sticky>*]:z-[101] [&.cdk-table-sticky]:before:z-0 [&.cdk-table-sticky]:before:block [&.cdk-table-sticky]:hover:before:bg-muted/50 [&.cdk-table-sticky]:before:absolute [&.cdk-table-sticky]:before:inset-0', - bodyRow: 'flex min-w-[100%] w-fit border-b border-border transition-[background-color] hover:bg-muted/50 [&:has([role=checkbox][aria-checked=true])]:bg-muted' - }); - } + constructor() { + this._tableClassesSettable?.setTableClasses({ + table: 'flex flex-col text-sm [&_cdk-row:last-child]:border-0', + headerRow: + 'flex min-w-[100%] w-fit border-b border-border [&.cdk-table-sticky]:bg-background ' + + '[&.cdk-table-sticky>*]:z-[101] [&.cdk-table-sticky]:before:z-0 [&.cdk-table-sticky]:before:block [&.cdk-table-sticky]:hover:before:bg-muted/50 [&.cdk-table-sticky]:before:absolute [&.cdk-table-sticky]:before:inset-0', + bodyRow: + 'flex min-w-[100%] w-fit border-b border-border transition-[background-color] hover:bg-muted/50 [&:has([role=checkbox][aria-checked=true])]:bg-muted', + }); + } } diff --git a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-td.component.ts b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-td.component.ts index 12814603..ec0659c3 100644 --- a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-td.component.ts +++ b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-td.component.ts @@ -1,35 +1,45 @@ import { NgTemplateOutlet } from '@angular/common'; -import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, inject, input } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + ViewEncapsulation, + booleanAttribute, + computed, + inject, + input, +} from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { BrnColumnDefComponent } from '@spartan-ng/ui-table-brain'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-td', - standalone: true, - imports: [NgTemplateOutlet], - host: { - '[class]': '_computedClass()' - }, - template: ` - - - - @if (truncate()) { - - - - } @else { - - } - `, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None + selector: 'hlm-td', + standalone: true, + imports: [NgTemplateOutlet], + host: { + '[class]': '_computedClass()', + }, + template: ` + + + + @if (truncate()) { + + + + } @else { + + } + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, }) export class HlmTdComponent { - private readonly _columnDef? = inject(BrnColumnDefComponent, { optional: true }); - public readonly truncate = input(false, { transform: booleanAttribute }); + private readonly _columnDef? = inject(BrnColumnDefComponent, { optional: true }); + public readonly truncate = input(false, { transform: booleanAttribute }); - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => hlm('flex flex-none p-4 items-center [&:has([role=checkbox])]:pr-0', this._columnDef?.class(), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm('flex flex-none p-4 items-center [&:has([role=checkbox])]:pr-0', this._columnDef?.class(), this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-th.component.ts b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-th.component.ts index 5b4cfd35..48024193 100644 --- a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-th.component.ts +++ b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-th.component.ts @@ -1,37 +1,49 @@ import { NgTemplateOutlet } from '@angular/common'; -import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, inject, input } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + ViewEncapsulation, + booleanAttribute, + computed, + inject, + input, +} from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import { BrnColumnDefComponent } from '@spartan-ng/ui-table-brain'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-th', - standalone: true, - imports: [NgTemplateOutlet], - host: { - '[class]': '_computedClass()' - }, - template: ` - - - - @if (truncate()) { - - - - } @else { - - } - `, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None + selector: 'hlm-th', + standalone: true, + imports: [NgTemplateOutlet], + host: { + '[class]': '_computedClass()', + }, + template: ` + + + + @if (truncate()) { + + + + } @else { + + } + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, }) export class HlmThComponent { - private readonly _columnDef? = inject(BrnColumnDefComponent, { optional: true }); - public readonly truncate = input(false, { transform: booleanAttribute }); + private readonly _columnDef? = inject(BrnColumnDefComponent, { optional: true }); + public readonly truncate = input(false, { transform: booleanAttribute }); - public readonly userClass = input('', { alias: 'class' }); - protected readonly _computedClass = computed(() => - hlm('flex flex-none h-12 px-4 text-sm items-center font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0', this._columnDef?.class(), this.userClass()) - ); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm( + 'flex flex-none h-12 px-4 text-sm items-center font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0', + this._columnDef?.class(), + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-trow.component.ts b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-trow.component.ts index e28eb276..02ea67ea 100644 --- a/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-trow.component.ts +++ b/webapp/src/libs/ui/ui-table-helm/src/lib/hlm-trow.component.ts @@ -3,17 +3,24 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-trow', - standalone: true, - host: { - '[class]': '_computedClass()', - role: 'row' - }, - template: ` `, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None + selector: 'hlm-trow', + standalone: true, + host: { + '[class]': '_computedClass()', + role: 'row', + }, + template: ` + + `, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, }) export class HlmTrowComponent { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('flex border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted', this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'flex flex border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-tabs-helm/src/index.ts b/webapp/src/libs/ui/ui-tabs-helm/src/index.ts index c6d2799a..d8e3f221 100644 --- a/webapp/src/libs/ui/ui-tabs-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-tabs-helm/src/index.ts @@ -12,10 +12,16 @@ export * from './lib/hlm-tabs-paginated-list.component'; export * from './lib/hlm-tabs-trigger.directive'; export * from './lib/hlm-tabs.component'; -export const HlmTabsImports = [HlmTabsComponent, HlmTabsListComponent, HlmTabsTriggerDirective, HlmTabsContentDirective, HlmTabsPaginatedListComponent] as const; +export const HlmTabsImports = [ + HlmTabsComponent, + HlmTabsListComponent, + HlmTabsTriggerDirective, + HlmTabsContentDirective, + HlmTabsPaginatedListComponent, +] as const; @NgModule({ - imports: [...HlmTabsImports], - exports: [...HlmTabsImports] + imports: [...HlmTabsImports], + exports: [...HlmTabsImports], }) export class HlmTabsModule {} diff --git a/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-content.directive.ts b/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-content.directive.ts index 6ad1529d..b1426d7d 100644 --- a/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-content.directive.ts +++ b/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-content.directive.ts @@ -4,18 +4,21 @@ import { BrnTabsContentDirective } from '@spartan-ng/ui-tabs-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmTabsContent]', - standalone: true, - hostDirectives: [{ directive: BrnTabsContentDirective, inputs: ['brnTabsContent: hlmTabsContent'] }], - host: { - '[class]': '_computedClass()' - } + selector: '[hlmTabsContent]', + standalone: true, + hostDirectives: [{ directive: BrnTabsContentDirective, inputs: ['brnTabsContent: hlmTabsContent'] }], + host: { + '[class]': '_computedClass()', + }, }) export class HlmTabsContentDirective { - public readonly contentFor = input.required({ alias: 'hlmTabsContent' }); + public readonly contentFor = input.required({ alias: 'hlmTabsContent' }); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm('mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2', this.userClass()) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-list.component.ts b/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-list.component.ts index b9a789e4..506362f3 100644 --- a/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-list.component.ts +++ b/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-list.component.ts @@ -4,31 +4,34 @@ import { BrnTabsListDirective } from '@spartan-ng/ui-tabs-brain'; import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; -export const listVariants = cva('inline-flex items-center justify-center rounded-md bg-muted p-1 text-muted-foreground', { - variants: { - orientation: { - horizontal: 'h-10 space-x-1', - vertical: 'mt-2 flex-col h-fit space-y-1' - } - }, - defaultVariants: { - orientation: 'horizontal' - } -}); +export const listVariants = cva( + 'inline-flex items-center justify-center rounded-md bg-muted p-1 text-muted-foreground', + { + variants: { + orientation: { + horizontal: 'h-10 space-x-1', + vertical: 'mt-2 flex-col h-fit space-y-1', + }, + }, + defaultVariants: { + orientation: 'horizontal', + }, + }, +); type ListVariants = VariantProps; @Component({ - selector: 'hlm-tabs-list', - standalone: true, - hostDirectives: [BrnTabsListDirective], - template: '', - host: { - '[class]': '_computedClass()' - } + selector: 'hlm-tabs-list', + standalone: true, + hostDirectives: [BrnTabsListDirective], + template: '', + host: { + '[class]': '_computedClass()', + }, }) export class HlmTabsListComponent { - public readonly orientation = input('horizontal'); + public readonly orientation = input('horizontal'); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(listVariants({ orientation: this.orientation() }), this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(listVariants({ orientation: this.orientation() }), this.userClass())); } diff --git a/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-paginated-list.component.ts b/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-paginated-list.component.ts index baeb1cbe..a72e06e8 100644 --- a/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-paginated-list.component.ts +++ b/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-paginated-list.component.ts @@ -1,5 +1,6 @@ import { CdkObserveContent } from '@angular/cdk/observers'; -import { Component, ContentChildren, type ElementRef, type QueryList, ViewChild, computed, input } from '@angular/core'; +import { Component, type ElementRef, computed, contentChildren, input, viewChild } from '@angular/core'; +import { toObservable } from '@angular/core/rxjs-interop'; import { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide'; import { buttonVariants } from '@spartan-ng/ui-button-helm'; import { hlm } from '@spartan-ng/ui-core'; @@ -9,83 +10,85 @@ import type { ClassValue } from 'clsx'; import { listVariants } from './hlm-tabs-list.component'; @Component({ - selector: 'hlm-paginated-tabs-list', - standalone: true, - imports: [CdkObserveContent, HlmIconComponent], - providers: [provideIcons({ lucideChevronRight, lucideChevronLeft })], - template: ` - + selector: 'hlm-paginated-tabs-list', + standalone: true, + imports: [CdkObserveContent, HlmIconComponent], + providers: [provideIcons({ lucideChevronRight, lucideChevronLeft })], + template: ` + -
-
-
- -
-
-
+
+
+
+ +
+
+
- - `, - host: { - '[class]': '_computedClass()' - } + + `, + host: { + '[class]': '_computedClass()', + }, }) export class HlmTabsPaginatedListComponent extends BrnTabsPaginatedListDirective { - @ContentChildren(BrnTabsTriggerDirective, { descendants: false }) - _items!: QueryList; - @ViewChild('tabListContainer', { static: true }) - _tabListContainer!: ElementRef; - @ViewChild('tabList', { static: true }) _tabList!: ElementRef; - @ViewChild('tabListInner', { static: true }) _tabListInner!: ElementRef; - @ViewChild('nextPaginator') _nextPaginator!: ElementRef; - @ViewChild('previousPaginator') _previousPaginator!: ElementRef; + public readonly _items = contentChildren(BrnTabsTriggerDirective, { descendants: false }); + public readonly _itemsChanges = toObservable(this._items); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm('flex overflow-hidden relative flex-shrink-0', this.userClass())); + public readonly _tabListContainer = viewChild.required>('tabListContainer'); + public readonly _tabList = viewChild.required>('tabList'); + public readonly _tabListInner = viewChild.required>('tabListInner'); + public readonly _nextPaginator = viewChild.required>('nextPaginator'); + public readonly _previousPaginator = viewChild.required>('previousPaginator'); - public readonly tabLisClass = input('', { alias: 'class' }); - protected _tabListClass = computed(() => hlm(listVariants(), this.tabLisClass())); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm('flex overflow-hidden relative gap-1 flex-shrink-0', this.userClass()), + ); - public readonly paginationButtonClass = input('', { alias: 'class' }); - protected _paginationButtonClass = computed(() => - hlm( - 'relative z-[2] select-none data-[pagination=previous]:pr-1 data-[pagination=next]:pl-1 disabled:cursor-default', - buttonVariants({ variant: 'ghost', size: 'icon' }), - this.paginationButtonClass() - ) - ); + public readonly tabLisClass = input('', { alias: 'class' }); + protected readonly _tabListClass = computed(() => hlm(listVariants(), this.tabLisClass())); - protected _itemSelected(event: KeyboardEvent) { - event.preventDefault(); - } + public readonly paginationButtonClass = input('', { alias: 'class' }); + protected readonly _paginationButtonClass = computed(() => + hlm( + 'relative z-[2] select-none disabled:cursor-default', + buttonVariants({ variant: 'ghost', size: 'icon' }), + this.paginationButtonClass(), + ), + ); + + protected _itemSelected(event: KeyboardEvent) { + event.preventDefault(); + } } diff --git a/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-trigger.directive.ts b/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-trigger.directive.ts index 44c7d7ba..b2d6bacd 100644 --- a/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-trigger.directive.ts +++ b/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs-trigger.directive.ts @@ -4,21 +4,21 @@ import { BrnTabsTriggerDirective } from '@spartan-ng/ui-tabs-brain'; import type { ClassValue } from 'clsx'; @Directive({ - selector: '[hlmTabsTrigger]', - standalone: true, - hostDirectives: [{ directive: BrnTabsTriggerDirective, inputs: ['brnTabsTrigger: hlmTabsTrigger', 'disabled'] }], - host: { - '[class]': '_computedClass()' - } + selector: '[hlmTabsTrigger]', + standalone: true, + hostDirectives: [{ directive: BrnTabsTriggerDirective, inputs: ['brnTabsTrigger: hlmTabsTrigger', 'disabled'] }], + host: { + '[class]': '_computedClass()', + }, }) export class HlmTabsTriggerDirective { - public readonly triggerFor = input.required({ alias: 'hlmTabsTrigger' }); + public readonly triggerFor = input.required({ alias: 'hlmTabsTrigger' }); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => + hlm( + 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs.component.ts b/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs.component.ts index 19024c77..2742056c 100644 --- a/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs.component.ts +++ b/webapp/src/libs/ui/ui-tabs-helm/src/lib/hlm-tabs.component.ts @@ -2,17 +2,17 @@ import { Component, input } from '@angular/core'; import { BrnTabsDirective } from '@spartan-ng/ui-tabs-brain'; @Component({ - selector: 'hlm-tabs', - standalone: true, - hostDirectives: [ - { - directive: BrnTabsDirective, - inputs: ['orientation', 'direction', 'activationMode', 'brnTabs: tab'], - outputs: ['tabActivated'] - } - ], - template: '' + selector: 'hlm-tabs', + standalone: true, + hostDirectives: [ + { + directive: BrnTabsDirective, + inputs: ['orientation', 'direction', 'activationMode', 'brnTabs: tab'], + outputs: ['tabActivated'], + }, + ], + template: '', }) export class HlmTabsComponent { - public readonly tab = input.required(); + public readonly tab = input.required(); } diff --git a/webapp/src/libs/ui/ui-toggle-helm/src/index.ts b/webapp/src/libs/ui/ui-toggle-helm/src/index.ts index 5f9a75e2..7f4a26c5 100644 --- a/webapp/src/libs/ui/ui-toggle-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-toggle-helm/src/index.ts @@ -5,13 +5,13 @@ import { HlmToggleDirective } from './lib/hlm-toggle.directive'; export * from './lib/hlm-toggle-group.directive'; export * from './lib/hlm-toggle.directive'; @NgModule({ - imports: [HlmToggleDirective], - exports: [HlmToggleDirective] + imports: [HlmToggleDirective], + exports: [HlmToggleDirective], }) export class HlmToggleModule {} @NgModule({ - imports: [HlmToggleDirective, HlmToggleGroupDirective], - exports: [HlmToggleDirective, HlmToggleGroupDirective] + imports: [HlmToggleDirective, HlmToggleGroupDirective], + exports: [HlmToggleDirective, HlmToggleGroupDirective], }) export class HlmToggleGroupModule {} diff --git a/webapp/src/libs/ui/ui-toggle-helm/src/lib/hlm-toggle-group.directive.ts b/webapp/src/libs/ui/ui-toggle-helm/src/lib/hlm-toggle-group.directive.ts index c10668b5..3456d7a6 100644 --- a/webapp/src/libs/ui/ui-toggle-helm/src/lib/hlm-toggle-group.directive.ts +++ b/webapp/src/libs/ui/ui-toggle-helm/src/lib/hlm-toggle-group.directive.ts @@ -3,18 +3,18 @@ import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; @Directive({ - selector: 'brn-toggle-group[hlm],[hlmToggleGroup]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: 'brn-toggle-group[hlm],[hlmToggleGroup]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmToggleGroupDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => - hlm( - 'inline-flex items-center rounded-md [&>[hlm][brnToggle][variant="outline"]]:-mx-[0.5px] [&>[hlm][brnToggle]]:rounded-none focus:[&>[hlm][brnToggle]]:z-10 first-of-type:[&>[hlm][brnToggle]]:rounded-l-md last-of-type:[&>[hlm][brnToggle]]:rounded-r-md', - this.userClass() - ) - ); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm( + 'inline-flex items-center rounded-md [&>[hlm][brnToggle][variant="outline"]]:-mx-[0.5px] [&>[hlm][brnToggle]]:rounded-none focus:[&>[hlm][brnToggle]]:z-10 first-of-type:[&>[hlm][brnToggle]]:rounded-l-md last-of-type:[&>[hlm][brnToggle]]:rounded-r-md', + this.userClass(), + ), + ); } diff --git a/webapp/src/libs/ui/ui-toggle-helm/src/lib/hlm-toggle.directive.ts b/webapp/src/libs/ui/ui-toggle-helm/src/lib/hlm-toggle.directive.ts index a9243782..82864a4f 100644 --- a/webapp/src/libs/ui/ui-toggle-helm/src/lib/hlm-toggle.directive.ts +++ b/webapp/src/libs/ui/ui-toggle-helm/src/lib/hlm-toggle.directive.ts @@ -4,37 +4,39 @@ import { type VariantProps, cva } from 'class-variance-authority'; import type { ClassValue } from 'clsx'; export const toggleVariants = cva( - 'inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground', - { - variants: { - variant: { - default: 'bg-transparent', - outline: 'border border-input bg-transparent hover:bg-accent hover:text-accent-foreground' - }, - size: { - default: 'h-9 px-3', - sm: 'h-8 px-2', - lg: 'h-10 px-3' - } - }, - defaultVariants: { - variant: 'default', - size: 'default' - } - } + 'inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground', + { + variants: { + variant: { + default: 'bg-transparent', + outline: 'border border-input bg-transparent hover:bg-accent hover:text-accent-foreground', + }, + size: { + default: 'h-9 px-3', + sm: 'h-8 px-2', + lg: 'h-10 px-3', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, ); type ToggleVariants = VariantProps; @Directive({ - selector: '[hlmToggle],[brnToggle][hlm]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmToggle],[brnToggle][hlm]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmToggleDirective { - public readonly variant = input('default'); - public readonly size = input('default'); - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(toggleVariants({ variant: this.variant(), size: this.size() }), this.userClass())); + public readonly variant = input('default'); + public readonly size = input('default'); + public readonly userClass = input('', { alias: 'class' }); + protected readonly _computedClass = computed(() => + hlm(toggleVariants({ variant: this.variant(), size: this.size() }), this.userClass()), + ); } diff --git a/webapp/src/libs/ui/ui-tooltip-helm/src/index.ts b/webapp/src/libs/ui/ui-tooltip-helm/src/index.ts index 5486a247..b72dd480 100644 --- a/webapp/src/libs/ui/ui-tooltip-helm/src/index.ts +++ b/webapp/src/libs/ui/ui-tooltip-helm/src/index.ts @@ -8,7 +8,7 @@ export * from './lib/hlm-tooltip.component'; export const HlmTooltipImports = [HlmTooltipComponent, HlmTooltipTriggerDirective] as const; @NgModule({ - imports: [...HlmTooltipImports], - exports: [...HlmTooltipImports] + imports: [...HlmTooltipImports], + exports: [...HlmTooltipImports], }) export class HlmTooltipModule {} diff --git a/webapp/src/libs/ui/ui-tooltip-helm/src/lib/hlm-tooltip-trigger.directive.ts b/webapp/src/libs/ui/ui-tooltip-helm/src/lib/hlm-tooltip-trigger.directive.ts index 3eba4dbc..ffa7759d 100644 --- a/webapp/src/libs/ui/ui-tooltip-helm/src/lib/hlm-tooltip-trigger.directive.ts +++ b/webapp/src/libs/ui/ui-tooltip-helm/src/lib/hlm-tooltip-trigger.directive.ts @@ -1,41 +1,44 @@ import { Directive, Input, type TemplateRef, inject } from '@angular/core'; -import { cn } from '@app/utils'; import { BrnTooltipTriggerDirective } from '@spartan-ng/ui-tooltip-brain'; @Directive({ - selector: '[hlmTooltipTrigger]', - standalone: true, - hostDirectives: [ - { - directive: BrnTooltipTriggerDirective, - inputs: ['brnTooltipDisabled: hlmTooltipDisabled', 'aria-describedby', 'position', 'positionAtOrigin', 'hideDelay', 'showDelay', 'exitAnimationDuration', 'touchGestures'] - } - ] + selector: '[hlmTooltipTrigger]', + standalone: true, + hostDirectives: [ + { + directive: BrnTooltipTriggerDirective, + inputs: [ + 'brnTooltipDisabled: hlmTooltipDisabled', + 'aria-describedby', + 'position', + 'positionAtOrigin', + 'hideDelay', + 'showDelay', + 'exitAnimationDuration', + 'touchGestures', + ], + }, + ], }) export class HlmTooltipTriggerDirective { - private readonly _brnTooltipTrigger: BrnTooltipTriggerDirective = inject(BrnTooltipTriggerDirective, { host: true }); + private readonly _brnTooltipTrigger: BrnTooltipTriggerDirective = inject(BrnTooltipTriggerDirective, { host: true }); - constructor() { - if (this._brnTooltipTrigger) { - this._brnTooltipTrigger.exitAnimationDuration = 150; - this._brnTooltipTrigger.hideDelay = 300; - this._brnTooltipTrigger.showDelay = 150; - this._brnTooltipTrigger.tooltipContentClasses = - 'overflow-hidden rounded-md border border-border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md fade-in-0 zoom-in-95 ' + - 'data-[state=open]:animate-in ' + - 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 ' + - 'data-[side=below]:slide-in-from-top-2 data-[side=above]:slide-in-from-bottom-2 ' + - 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 '; - } - } + constructor() { + if (this._brnTooltipTrigger) { + this._brnTooltipTrigger.exitAnimationDuration = 150; + this._brnTooltipTrigger.hideDelay = 300; + this._brnTooltipTrigger.showDelay = 150; + this._brnTooltipTrigger.tooltipContentClasses = + 'overflow-hidden rounded-md border border-border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md fade-in-0 zoom-in-95 ' + + 'data-[state=open]:animate-in ' + + 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 ' + + 'data-[side=below]:slide-in-from-top-2 data-[side=above]:slide-in-from-bottom-2 ' + + 'data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 '; + } + } - @Input() - set hlmTooltipTrigger(value: string | TemplateRef | null) { - this._brnTooltipTrigger.content = value; - } - - @Input() - set hlmTooltipContentClass(classes: string) { - this._brnTooltipTrigger.tooltipContentClasses = cn(this._brnTooltipTrigger.tooltipContentClasses, classes); - } + @Input() + public set hlmTooltipTrigger(value: string | TemplateRef | null) { + this._brnTooltipTrigger.content = value; + } } diff --git a/webapp/src/libs/ui/ui-tooltip-helm/src/lib/hlm-tooltip.component.ts b/webapp/src/libs/ui/ui-tooltip-helm/src/lib/hlm-tooltip.component.ts index 49e8f107..a9811ead 100644 --- a/webapp/src/libs/ui/ui-tooltip-helm/src/lib/hlm-tooltip.component.ts +++ b/webapp/src/libs/ui/ui-tooltip-helm/src/lib/hlm-tooltip.component.ts @@ -2,16 +2,18 @@ import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/ import { BrnTooltipDirective } from '@spartan-ng/ui-tooltip-brain'; @Component({ - selector: 'hlm-tooltip', - standalone: true, - encapsulation: ViewEncapsulation.None, - changeDetection: ChangeDetectionStrategy.OnPush, - imports: [], - providers: [], - host: { - '[style]': '{display: "contents"}' - }, - hostDirectives: [BrnTooltipDirective], - template: ` ` + selector: 'hlm-tooltip', + standalone: true, + encapsulation: ViewEncapsulation.None, + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [], + providers: [], + host: { + '[style]': '{display: "contents"}', + }, + hostDirectives: [BrnTooltipDirective], + template: ` + + `, }) export class HlmTooltipComponent {} diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-blockquote.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-blockquote.directive.ts index 96f74379..7f9a2f2a 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-blockquote.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-blockquote.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmBlockquote = 'mt-6 border-border border-l-2 pl-6 italic'; @Directive({ - selector: '[hlmBlockquote]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmBlockquote]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmBlockquoteDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmBlockquote, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmBlockquote, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-code.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-code.directive.ts index 3c8168f5..600e7a1a 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-code.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-code.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmCode = 'relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold'; @Directive({ - selector: '[hlmCode]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmCode]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmCodeDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmCode, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmCode, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h1.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h1.directive.ts index 5fa2d5ac..17aacd41 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h1.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h1.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmH1 = 'scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl'; @Directive({ - selector: '[hlmH1]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmH1]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmH1Directive { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmH1, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmH1, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h2.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h2.directive.ts index 8a42a1e5..d31e8835 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h2.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h2.directive.ts @@ -2,16 +2,17 @@ import { Directive, computed, input } from '@angular/core'; import { hlm } from '@spartan-ng/ui-core'; import type { ClassValue } from 'clsx'; -export const hlmH2 = 'scroll-m-20 border-border border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0'; +export const hlmH2 = + 'scroll-m-20 border-border border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0'; @Directive({ - selector: '[hlmH2]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmH2]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmH2Directive { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmH2, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmH2, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h3.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h3.directive.ts index 98efeb01..ad441d04 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h3.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h3.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmH3 = 'scroll-m-20 text-2xl font-semibold tracking-tight'; @Directive({ - selector: '[hlmH3]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmH3]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmH3Directive { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmH3, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmH3, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h4.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h4.directive.ts index cdf66521..05262a34 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h4.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-h4.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmH4 = 'scroll-m-20 text-xl font-semibold tracking-tight'; @Directive({ - selector: '[hlmH4]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmH4]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmH4Directive { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmH4, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmH4, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-large.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-large.directive.ts index fb969c3c..b4d06bc5 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-large.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-large.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmLarge = 'text-lg font-semibold'; @Directive({ - selector: '[hlmLarge]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmLarge]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmLargeDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmLarge, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmLarge, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-lead.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-lead.directive.ts index 2ccb1884..355b3033 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-lead.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-lead.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmLead = 'text-xl text-muted-foreground'; @Directive({ - selector: '[hlmLead]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmLead]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmLeadDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmLead, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmLead, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-muted.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-muted.directive.ts index 3209a977..7000582e 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-muted.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-muted.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmMuted = 'text-sm text-muted-foreground'; @Directive({ - selector: '[hlmMuted]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmMuted]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmMutedDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmMuted, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmMuted, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-p.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-p.directive.ts index 7a5e17d9..96746037 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-p.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-p.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmP = 'leading-7 [&:not(:first-child)]:mt-6'; @Directive({ - selector: '[hlmP]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmP]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmPDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmP, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmP, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-small.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-small.directive.ts index 6564accd..89b0f601 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-small.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-small.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmSmall = 'text-sm font-medium leading-none'; @Directive({ - selector: '[hlmSmall]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmSmall]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmSmallDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmSmall, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmSmall, this.userClass())); } diff --git a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-ul.directive.ts b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-ul.directive.ts index d8a3d11e..ee4db456 100644 --- a/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-ul.directive.ts +++ b/webapp/src/libs/ui/ui-typography-helm/src/lib/hlm-ul.directive.ts @@ -5,13 +5,13 @@ import type { ClassValue } from 'clsx'; export const hlmUl = 'my-6 ml-6 list-disc [&>li]:mt-2'; @Directive({ - selector: '[hlmUl]', - standalone: true, - host: { - '[class]': '_computedClass()' - } + selector: '[hlmUl]', + standalone: true, + host: { + '[class]': '_computedClass()', + }, }) export class HlmUlDirective { - public readonly userClass = input('', { alias: 'class' }); - protected _computedClass = computed(() => hlm(hlmUl, this.userClass())); + public readonly userClass = input('', { alias: 'class' }); + protected _computedClass = computed(() => hlm(hlmUl, this.userClass())); } diff --git a/webapp/tsconfig.json b/webapp/tsconfig.json index 90dcda75..ddbf33e0 100644 --- a/webapp/tsconfig.json +++ b/webapp/tsconfig.json @@ -25,6 +25,12 @@ "@app/*": [ "./app/*" ], + "@spartan-ng/ui-breadcrumb-helm": [ + "./libs/ui/ui-breadcrumb-helm/src/index.ts" + ], + "@spartan-ng/ui-calendar-helm": [ + "./libs/ui/ui-calendar-helm/src/index.ts" + ], "@spartan-ng/ui-accordion-helm": [ "./libs/ui/ui-accordion-helm/src/index.ts" ], From 3bc26e354bc88da23bd2ff8752defd014a7de9c8 Mon Sep 17 00:00:00 2001 From: GODrums Date: Tue, 7 Jan 2025 15:43:00 +0100 Subject: [PATCH 3/8] chore: update to angular v19 --- webapp/package-lock.json | 6135 +++++++++++------ webapp/package.json | 22 +- webapp/src/app/about/about.component.ts | 7 +- webapp/src/app/app.component.ts | 7 +- webapp/src/app/app.config.ts | 19 +- .../src/app/core/footer/footer.component.ts | 7 +- .../header/ai-mentor/ai-mentor.component.ts | 7 +- .../src/app/core/header/header.component.ts | 45 +- .../request-feature.component.ts | 7 +- .../core/theme/theme-switcher.component.ts | 21 +- webapp/src/app/home/home.component.ts | 7 +- .../leaderboard/filter/filter.component.ts | 7 +- .../leaderboard/filter/team/team.component.ts | 7 +- .../filter/timeframe/timeframe.component.ts | 9 +- .../home/leaderboard/leaderboard.component.ts | 35 +- .../leaderboard/legend/legends.component.ts | 27 +- .../reviews-popover.component.ts | 25 +- .../mentor/chat-input/chat-input.component.ts | 7 +- webapp/src/app/mentor/mentor.component.ts | 27 +- .../app/mentor/messages/messages.component.ts | 7 +- .../sessions-card/sessions-card.component.ts | 7 +- .../start-session-card.component.ts | 7 +- webapp/src/app/settings/settings.component.ts | 31 +- .../ui/github-label/github-label.component.ts | 25 +- .../src/app/user/header/header.component.ts | 7 +- .../user/issue-card/issue-card.component.ts | 7 +- .../review-activity-card.component.ts | 9 +- webapp/src/app/user/user-profile.component.ts | 29 +- webapp/src/app/workspace/layout.component.ts | 9 +- .../teams/table/teams-table.component.ts | 49 +- .../app/workspace/teams/teams.component.ts | 7 +- .../users/table/users-table.component.ts | 39 +- .../app/workspace/users/users.component.ts | 7 +- .../src/app/workspace/workspace.component.ts | 47 +- .../src/lib/hlm-alert-dialog.component.ts | 25 +- .../lib/helm-aspect-ratio.directive.spec.ts | 9 +- .../hlm-avatar-fallback.directive.spec.ts | 9 +- .../src/lib/hlm-avatar.component.spec.ts | 9 +- .../image/hlm-avatar-image.directive.spec.ts | 9 +- .../lib/hlm-checkbox-checkicon.component.ts | 17 +- .../src/lib/hlm-checkbox.component.ts | 23 +- .../src/lib/form-field.spec.ts | 18 +- .../src/lib/hlm-icon.component.spec.ts | 13 +- .../src/lib/hlm-icon.component.ts | 17 +- .../src/lib/hlm-menu-item-check.component.ts | 15 +- .../src/lib/hlm-menu-item-radio.component.ts | 15 +- .../hlm-menu-item-sub-indicator.component.ts | 15 +- .../src/lib/hlm-scroll-area.component.ts | 17 +- .../src/lib/hlm-select-option.component.ts | 19 +- .../lib/hlm-select-scroll-down.component.ts | 17 +- .../src/lib/hlm-select-scroll-up.component.ts | 17 +- .../src/lib/hlm-select-trigger.component.ts | 12 +- ...m-switch-ng-model.component.ignore.spec.ts | 7 +- .../src/lib/hlm-switch.component.ts | 23 +- .../ui-table-helm/src/lib/hlm-td.component.ts | 17 +- .../ui-table-helm/src/lib/hlm-th.component.ts | 17 +- .../src/lib/hlm-tooltip.component.ts | 23 +- 57 files changed, 4353 insertions(+), 2725 deletions(-) diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 69e225ff..6e49d835 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -8,15 +8,15 @@ "name": "hephaestus", "version": "0.0.0", "dependencies": { - "@angular/animations": "18.2.1", + "@angular/animations": "19.0.5", "@angular/cdk": "18.2.7", - "@angular/common": "18.2.1", - "@angular/compiler": "18.2.1", - "@angular/core": "18.2.1", - "@angular/forms": "18.2.1", - "@angular/platform-browser": "18.2.1", - "@angular/platform-browser-dynamic": "18.2.1", - "@angular/router": "18.2.1", + "@angular/common": "19.0.5", + "@angular/compiler": "19.0.5", + "@angular/core": "19.0.5", + "@angular/forms": "19.0.5", + "@angular/platform-browser": "19.0.5", + "@angular/platform-browser-dynamic": "19.0.5", + "@angular/router": "19.0.5", "@ng-icons/core": "^29.10.0", "@ng-icons/lucide": ">=29.0.0", "@ng-icons/octicons": "29.5.0", @@ -66,11 +66,11 @@ "tslib": "2.6.3" }, "devDependencies": { - "@angular-devkit/build-angular": "^18.2.7", + "@angular-devkit/build-angular": "^19.0.6", "@angular-eslint/eslint-plugin": "18.3.0", "@angular-eslint/template-parser": "18.3.0", - "@angular/cli": "18.2.1", - "@angular/compiler-cli": "18.2.1", + "@angular/cli": "19.0.6", + "@angular/compiler-cli": "19.0.5", "@chromatic-com/storybook": "1.7.0", "@spartan-ng/cli": "^0.0.1-alpha.374", "@storybook/addon-essentials": "^8.4.7", @@ -133,12 +133,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1802.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.7.tgz", - "integrity": "sha512-kpcgXnepEXcoxDTbqbGj7Hg1WJLWj1HLR3/FKmC5TbpBf1xiLxiqfkQNwz3BbE/W9JWMLdrXr3GI9O3O2gWPLg==", + "version": "0.1900.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1900.6.tgz", + "integrity": "sha512-w11bAXQnNWBawTJfQPjvaTRrzrqsOUm9tK9WNvaia/xjiRFpmO0CfmKtn3axNSEJM8jb/czaNQrgTwG+TGc/8g==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "18.2.7", + "@angular-devkit/core": "19.0.6", "rxjs": "7.8.1" }, "engines": { @@ -147,40 +148,101 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.0.6.tgz", + "integrity": "sha512-WUWJhzQDsovfMY6jtb9Ktz/5sJszsaErj+XV2aXab85f1OweI/Iv2urPZnJwUSilvVN5Ok/fy3IJ6SuihK4Ceg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/architect/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular-devkit/architect/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@angular-devkit/build-angular": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.7.tgz", - "integrity": "sha512-u8PriYdgddK7k+OS/pOFPD1v4Iu5bztUJZXZVcGeXBZFFdnGFFzKmQw9mfcyGvTMJp2ABgBuuJT0YqYgNfAhzw==", + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-19.0.6.tgz", + "integrity": "sha512-dWTAsE6BSI8z0xglQdYBdqTBwg1Q+RWE3OrmlGs+520Dcoq/F0Z41Y1F3MiuHuQPdDAIQr88iB0APkIRW4clMg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1802.7", - "@angular-devkit/build-webpack": "0.1802.7", - "@angular-devkit/core": "18.2.7", - "@angular/build": "18.2.7", - "@babel/core": "7.25.2", - "@babel/generator": "7.25.0", - "@babel/helper-annotate-as-pure": "7.24.7", + "@angular-devkit/architect": "0.1900.6", + "@angular-devkit/build-webpack": "0.1900.6", + "@angular-devkit/core": "19.0.6", + "@angular/build": "19.0.6", + "@babel/core": "7.26.0", + "@babel/generator": "7.26.2", + "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-transform-async-generator-functions": "7.25.0", - "@babel/plugin-transform-async-to-generator": "7.24.7", - "@babel/plugin-transform-runtime": "7.24.7", - "@babel/preset-env": "7.25.3", - "@babel/runtime": "7.25.0", - "@discoveryjs/json-ext": "0.6.1", - "@ngtools/webpack": "18.2.7", + "@babel/plugin-transform-async-generator-functions": "7.25.9", + "@babel/plugin-transform-async-to-generator": "7.25.9", + "@babel/plugin-transform-runtime": "7.25.9", + "@babel/preset-env": "7.26.0", + "@babel/runtime": "7.26.0", + "@discoveryjs/json-ext": "0.6.3", + "@ngtools/webpack": "19.0.6", "@vitejs/plugin-basic-ssl": "1.1.0", "ansi-colors": "4.1.3", "autoprefixer": "10.4.20", - "babel-loader": "9.1.3", + "babel-loader": "9.2.1", "browserslist": "^4.21.5", "copy-webpack-plugin": "12.0.2", - "critters": "0.0.24", "css-loader": "7.1.2", - "esbuild-wasm": "0.23.0", + "esbuild-wasm": "0.24.0", "fast-glob": "3.3.2", - "http-proxy-middleware": "3.0.0", - "https-proxy-agent": "7.0.5", + "http-proxy-middleware": "3.0.3", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", @@ -188,31 +250,26 @@ "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", - "magic-string": "0.30.11", - "mini-css-extract-plugin": "2.9.0", - "mrmime": "2.0.0", + "mini-css-extract-plugin": "2.9.2", "open": "10.1.0", "ora": "5.4.1", - "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", - "piscina": "4.6.1", - "postcss": "8.4.41", + "piscina": "4.7.0", + "postcss": "8.4.49", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.77.6", - "sass-loader": "16.0.0", + "sass": "1.80.7", + "sass-loader": "16.0.3", "semver": "7.6.3", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.31.6", + "terser": "5.36.0", "tree-kill": "1.2.2", - "tslib": "2.6.3", - "vite": "5.4.6", - "watchpack": "2.4.1", - "webpack": "5.94.0", + "tslib": "2.8.1", + "webpack": "5.96.1", "webpack-dev-middleware": "7.4.2", - "webpack-dev-server": "5.0.4", + "webpack-dev-server": "5.1.0", "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, @@ -222,22 +279,23 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.23.0" + "esbuild": "0.24.0" }, "peerDependencies": { - "@angular/compiler-cli": "^18.0.0", - "@angular/localize": "^18.0.0", - "@angular/platform-server": "^18.0.0", - "@angular/service-worker": "^18.0.0", - "@web/test-runner": "^0.18.0", + "@angular/compiler-cli": "^19.0.0", + "@angular/localize": "^19.0.0", + "@angular/platform-server": "^19.0.0", + "@angular/service-worker": "^19.0.0", + "@angular/ssr": "^19.0.6", + "@web/test-runner": "^0.19.0", "browser-sync": "^3.0.2", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "karma": "^6.3.0", - "ng-packagr": "^18.0.0", + "ng-packagr": "^19.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.4 <5.6" + "typescript": ">=5.5 <5.7" }, "peerDependenciesMeta": { "@angular/localize": { @@ -249,6 +307,9 @@ "@angular/service-worker": { "optional": true }, + "@angular/ssr": { + "optional": true + }, "@web/test-runner": { "optional": true }, @@ -275,38 +336,19 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@angular/build": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.7.tgz", - "integrity": "sha512-oq6JsVxLP9/w9F2IjKroJwPB9CdlMblu2Xhfq/qQZRSUuM8Ppt1svr2FBTo1HrLIbosqukkVcSSdmKYDneo+cg==", + "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.0.6.tgz", + "integrity": "sha512-WUWJhzQDsovfMY6jtb9Ktz/5sJszsaErj+XV2aXab85f1OweI/Iv2urPZnJwUSilvVN5Ok/fy3IJ6SuihK4Ceg==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1802.7", - "@babel/core": "7.25.2", - "@babel/helper-annotate-as-pure": "7.24.7", - "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-syntax-import-attributes": "7.24.7", - "@inquirer/confirm": "3.1.22", - "@vitejs/plugin-basic-ssl": "1.1.0", - "browserslist": "^4.23.0", - "critters": "0.0.24", - "esbuild": "0.23.0", - "fast-glob": "3.3.2", - "https-proxy-agent": "7.0.5", - "listr2": "8.2.4", - "lmdb": "3.0.13", - "magic-string": "0.30.11", - "mrmime": "2.0.0", - "parse5-html-rewriting-stream": "7.0.0", + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", "picomatch": "4.0.2", - "piscina": "4.6.1", - "rollup": "4.22.4", - "sass": "1.77.6", - "semver": "7.6.3", - "vite": "5.4.6", - "watchpack": "2.4.1" + "rxjs": "7.8.1", + "source-map": "0.7.4" }, "engines": { "node": "^18.19.1 || ^20.11.1 || >=22.0.0", @@ -314,98 +356,86 @@ "yarn": ">= 1.13.0" }, "peerDependencies": { - "@angular/compiler-cli": "^18.0.0", - "@angular/localize": "^18.0.0", - "@angular/platform-server": "^18.0.0", - "@angular/service-worker": "^18.0.0", - "less": "^4.2.0", - "postcss": "^8.4.0", - "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.4 <5.6" + "chokidar": "^4.0.0" }, "peerDependenciesMeta": { - "@angular/localize": { - "optional": true - }, - "@angular/platform-server": { - "optional": true - }, - "@angular/service-worker": { - "optional": true - }, - "less": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tailwindcss": { + "chokidar": { "optional": true } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@inquirer/confirm": { - "version": "3.1.22", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.22.tgz", - "integrity": "sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.0.10", - "@inquirer/type": "^1.5.2" - }, + "optional": true, + "os": [ + "android" + ], "engines": { "node": ">=18" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", - "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", "cpu": [ - "arm" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", - "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", - "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", "cpu": [ "arm64" ], @@ -414,12 +444,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", - "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", "cpu": [ "x64" ], @@ -428,26 +461,49 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", - "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", "cpu": [ - "arm" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", - "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", "cpu": [ "arm" ], @@ -456,12 +512,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", - "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", "cpu": [ "arm64" ], @@ -470,26 +529,66 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", - "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", "cpu": [ - "arm64" + "ia32" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", - "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", "cpu": [ "ppc64" ], @@ -498,12 +597,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", - "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", "cpu": [ "riscv64" ], @@ -512,12 +614,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", - "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", "cpu": [ "s390x" ], @@ -526,12 +631,855 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1900.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1900.6.tgz", + "integrity": "sha512-WehtVrbBow4fc7hsaUKb+BZ6MDE5lO98/tgv7GR5PkRdGKnyLA0pW1AfPLJJQDgcaKjneramMhDFNc1eGSX0mQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/architect": "0.1900.6", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^5.0.2" + } + }, + "node_modules/@angular-devkit/core": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.7.tgz", + "integrity": "sha512-1ZTi4A6tEC2bkJ/puCIdIPYhesnlCVOMSDJL/lZAd0hC6X22T4pwu0AEvue7mcP5NbXpQDiBaXOZ3MmCA8PwOA==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.0.6.tgz", + "integrity": "sha512-R9hlHfAh1HKoIWgnYJlOEKhUezhTNl0fpUmHxG2252JSY5FLRxmYArTtJYYmbNdBbsBLNg3UHyM/GBPvJSA3NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.0.6", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.12", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.0.6.tgz", + "integrity": "sha512-WUWJhzQDsovfMY6jtb9Ktz/5sJszsaErj+XV2aXab85f1OweI/Iv2urPZnJwUSilvVN5Ok/fy3IJ6SuihK4Ceg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.0.tgz", + "integrity": "sha512-v/59FxUKnMzymVce99gV43huxoqXWMb85aKvzlNvLN+ScDu6ZE4YMiTQNpfapVL2lkxhs0uwB3jH17EYd5TcsA==", + "dev": true + }, + "node_modules/@angular-eslint/eslint-plugin": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.3.0.tgz", + "integrity": "sha512-Vl7gfPMXxvtHTjYdlzR161aj5xrqW6T57wd8ToQ7Gqzm0qHGfY6kE4SQobUa2LCYckTNSlv+zXe48C4ah/dSjw==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.3.0", + "@angular-eslint/utils": "18.3.0" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/template-parser": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.3.0.tgz", + "integrity": "sha512-1mUquqcnugI4qsoxcYZKZ6WMi6RPelDcJZg2YqGyuaIuhWmi3ZqJZLErSSpjP60+TbYZu7wM8Kchqa1bwJtEaQ==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.3.0", + "eslint-scope": "^8.0.2" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/utils": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.0.tgz", + "integrity": "sha512-sCrkHkpxBJZLuCikdboZoawCfc2UgbJv+T14tu2uQCv+Vwzeadnu04vkeY2vTkA8GeBdBij/G9/N/nvwmwVw3g==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.3.0" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular/animations": { + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.0.5.tgz", + "integrity": "sha512-HCOF2CrhUvjoZWusd4nh32VOxpUrg6bV+3Z8Q36Ix3aZdni8v0qoP2rl5wGbotaPtYg5RtyDH60Z2AOPKqlrZg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "19.0.5" + } + }, + "node_modules/@angular/build": { + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.0.6.tgz", + "integrity": "sha512-KEVNLgTZUF2dfpOYQn+yR2HONHUTxq/2rFVhiK9qAvrm/m+uKJNEXx7hGtbRyoqenZff4ScJq+7feITUldfX8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1900.6", + "@babel/core": "7.26.0", + "@babel/helper-annotate-as-pure": "7.25.9", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-syntax-import-attributes": "7.26.0", + "@inquirer/confirm": "5.0.2", + "@vitejs/plugin-basic-ssl": "1.1.0", + "beasties": "0.1.0", + "browserslist": "^4.23.0", + "esbuild": "0.24.0", + "fast-glob": "3.3.2", + "https-proxy-agent": "7.0.5", + "istanbul-lib-instrument": "6.0.3", + "listr2": "8.2.5", + "magic-string": "0.30.12", + "mrmime": "2.0.0", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.2", + "piscina": "4.7.0", + "rollup": "4.26.0", + "sass": "1.80.7", + "semver": "7.6.3", + "vite": "5.4.11", + "watchpack": "2.4.2" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "lmdb": "3.1.5" + }, + "peerDependencies": { + "@angular/compiler": "^19.0.0", + "@angular/compiler-cli": "^19.0.0", + "@angular/localize": "^19.0.0", + "@angular/platform-server": "^19.0.0", + "@angular/service-worker": "^19.0.0", + "@angular/ssr": "^19.0.6", + "less": "^4.2.0", + "postcss": "^8.4.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=5.5 <5.7" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@angular/ssr": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular/build/node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/android-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/android-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/android-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/darwin-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/freebsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-loong64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-mips64el": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-riscv64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-s390x": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/linux-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/netbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular/build/node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", - "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", + "node_modules/@angular/build/node_modules/@esbuild/openbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", "cpu": [ "x64" ], @@ -539,13 +1487,16 @@ "license": "MIT", "optional": true, "os": [ - "linux" - ] + "openbsd" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", - "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", + "node_modules/@angular/build/node_modules/@esbuild/sunos-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", "cpu": [ "x64" ], @@ -553,13 +1504,16 @@ "license": "MIT", "optional": true, "os": [ - "linux" - ] + "sunos" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", - "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", + "node_modules/@angular/build/node_modules/@esbuild/win32-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", "cpu": [ "arm64" ], @@ -568,12 +1522,15 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", - "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", + "node_modules/@angular/build/node_modules/@esbuild/win32-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", "cpu": [ "ia32" ], @@ -582,12 +1539,15 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", - "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", + "node_modules/@angular/build/node_modules/@esbuild/win32-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", "cpu": [ "x64" ], @@ -596,203 +1556,49 @@ "optional": true, "os": [ "win32" - ] - }, - "node_modules/@angular-devkit/build-angular/node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true, - "license": "MIT" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/rollup": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", - "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", + "node_modules/@angular/build/node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@types/estree": "1.0.5" - }, "bin": { - "rollup": "dist/bin/rollup" + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": ">=18" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.4", - "@rollup/rollup-android-arm64": "4.22.4", - "@rollup/rollup-darwin-arm64": "4.22.4", - "@rollup/rollup-darwin-x64": "4.22.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", - "@rollup/rollup-linux-arm-musleabihf": "4.22.4", - "@rollup/rollup-linux-arm64-gnu": "4.22.4", - "@rollup/rollup-linux-arm64-musl": "4.22.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", - "@rollup/rollup-linux-riscv64-gnu": "4.22.4", - "@rollup/rollup-linux-s390x-gnu": "4.22.4", - "@rollup/rollup-linux-x64-gnu": "4.22.4", - "@rollup/rollup-linux-x64-musl": "4.22.4", - "@rollup/rollup-win32-arm64-msvc": "4.22.4", - "@rollup/rollup-win32-ia32-msvc": "4.22.4", - "@rollup/rollup-win32-x64-msvc": "4.22.4", - "fsevents": "~2.3.2" - } - }, - "node_modules/@angular-devkit/build-webpack": { - "version": "0.1802.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.7.tgz", - "integrity": "sha512-VrtbrhZ+dht3f0GjtfRLRGRN4XHN/W+/bA9DqckdxVS6SydsrCWNHonvEPmOs4jJmGIGXIu6tUBMcWleTao2sg==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1802.7", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "webpack": "^5.30.0", - "webpack-dev-server": "^5.0.2" - } - }, - "node_modules/@angular-devkit/core": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.7.tgz", - "integrity": "sha512-1ZTi4A6tEC2bkJ/puCIdIPYhesnlCVOMSDJL/lZAd0hC6X22T4pwu0AEvue7mcP5NbXpQDiBaXOZ3MmCA8PwOA==", - "dev": true, - "dependencies": { - "ajv": "8.17.1", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/schematics": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.1.tgz", - "integrity": "sha512-2t/q0Jcv7yqhAzEdNgsxoGSCmPgD4qfnVOJ7EJw3LNIA+kX1CmtN4FESUS0i49kN4AyNJFAI5O2pV8iJiliKaw==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "18.2.1", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.11", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.1.tgz", - "integrity": "sha512-fSuGj6CxiTFR+yjuVcaWqaVb5Wts39CSBYRO1BlsOlbuWFZ2NKC/BAb5bdxpB31heCBJi7e3XbPvcMMJIcnKlA==", - "dev": true, - "dependencies": { - "ajv": "8.17.1", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.0.tgz", - "integrity": "sha512-v/59FxUKnMzymVce99gV43huxoqXWMb85aKvzlNvLN+ScDu6ZE4YMiTQNpfapVL2lkxhs0uwB3jH17EYd5TcsA==", - "dev": true - }, - "node_modules/@angular-eslint/eslint-plugin": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.3.0.tgz", - "integrity": "sha512-Vl7gfPMXxvtHTjYdlzR161aj5xrqW6T57wd8ToQ7Gqzm0qHGfY6kE4SQobUa2LCYckTNSlv+zXe48C4ah/dSjw==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0", - "@angular-eslint/utils": "18.3.0" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" - } - }, - "node_modules/@angular-eslint/template-parser": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.3.0.tgz", - "integrity": "sha512-1mUquqcnugI4qsoxcYZKZ6WMi6RPelDcJZg2YqGyuaIuhWmi3ZqJZLErSSpjP60+TbYZu7wM8Kchqa1bwJtEaQ==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0", - "eslint-scope": "^8.0.2" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" - } - }, - "node_modules/@angular-eslint/utils": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.0.tgz", - "integrity": "sha512-sCrkHkpxBJZLuCikdboZoawCfc2UgbJv+T14tu2uQCv+Vwzeadnu04vkeY2vTkA8GeBdBij/G9/N/nvwmwVw3g==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" - } - }, - "node_modules/@angular/animations": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.1.tgz", - "integrity": "sha512-jit452yuE6DMVV09E6RAjgapgw64mMVH31ccpPvMDekzPsTuP3KNKtgRFU/k2DFhYJvyczM1AqqlgccE/JGaRw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/core": "18.2.1" + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, "node_modules/@angular/cdk": { @@ -812,24 +1618,25 @@ } }, "node_modules/@angular/cli": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.1.tgz", - "integrity": "sha512-SomUFDHanY4o7k3XBGf1eFt4z1h05IGJHfcbl2vxoc0lY59VN13m/pZsD2AtpqtJTzLQT02XQOUP4rmBbGoQ+Q==", + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-19.0.6.tgz", + "integrity": "sha512-ZEHhgRRVIdn10dbsAjB8TE9Co32hfuL9/im5Jcfa1yrn6KJefmigz6KN8Xu7FXMH5FkdqfQ11QpLBxJSPb9aww==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1802.1", - "@angular-devkit/core": "18.2.1", - "@angular-devkit/schematics": "18.2.1", - "@inquirer/prompts": "5.3.8", - "@listr2/prompt-adapter-inquirer": "2.0.15", - "@schematics/angular": "18.2.1", + "@angular-devkit/architect": "0.1900.6", + "@angular-devkit/core": "19.0.6", + "@angular-devkit/schematics": "19.0.6", + "@inquirer/prompts": "7.1.0", + "@listr2/prompt-adapter-inquirer": "2.0.18", + "@schematics/angular": "19.0.6", "@yarnpkg/lockfile": "1.1.0", - "ini": "4.1.3", + "ini": "5.0.0", "jsonc-parser": "3.3.1", - "listr2": "8.2.4", - "npm-package-arg": "11.0.3", - "npm-pick-manifest": "9.1.0", - "pacote": "18.0.6", + "listr2": "8.2.5", + "npm-package-arg": "12.0.0", + "npm-pick-manifest": "10.0.0", + "pacote": "20.0.0", "resolve": "1.22.8", "semver": "7.6.3", "symbol-observable": "4.0.0", @@ -844,26 +1651,12 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { - "version": "0.1802.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.1.tgz", - "integrity": "sha512-XTnJfCBMDQl3xF4w/eNrq821gbj2Ig1cqbzpRflhz4pqrANTAfHfPoIC7piWEZ60FNlHapzb6fvh6tJUGXG9og==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "18.2.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, "node_modules/@angular/cli/node_modules/@angular-devkit/core": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.1.tgz", - "integrity": "sha512-fSuGj6CxiTFR+yjuVcaWqaVb5Wts39CSBYRO1BlsOlbuWFZ2NKC/BAb5bdxpB31heCBJi7e3XbPvcMMJIcnKlA==", + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.0.6.tgz", + "integrity": "sha512-WUWJhzQDsovfMY6jtb9Ktz/5sJszsaErj+XV2aXab85f1OweI/Iv2urPZnJwUSilvVN5Ok/fy3IJ6SuihK4Ceg==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "8.17.1", "ajv-formats": "3.0.1", @@ -878,7 +1671,7 @@ "yarn": ">= 1.13.0" }, "peerDependencies": { - "chokidar": "^3.5.2" + "chokidar": "^4.0.0" }, "peerDependenciesMeta": { "chokidar": { @@ -886,10 +1679,45 @@ } } }, + "node_modules/@angular/cli/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular/cli/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@angular/common": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.1.tgz", - "integrity": "sha512-N0ZJO1/iU9UhprplZRPvBcdRgA/i6l6Ng5gXs5ymHBJ0lxsB+mDVCmC4jISjR9gAWc426xXwLaOpuP5Gv3f/yg==", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.0.5.tgz", + "integrity": "sha512-fFK+euCj1AjBHBCpj9VnduMSeqoMRhZZHbhPYiND7tucRRJ8vwGU0sYK2KI/Ko+fsrNIXL/0O4F36jVPl09Smg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -897,14 +1725,15 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.1", + "@angular/core": "19.0.5", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.1.tgz", - "integrity": "sha512-5e9ygKEcsBoV6xpaGKVrtsLxLETlrM0oB7twl4qG/xuKYqCLj8cRQMcAKSqDfTPzWMOAQc7pHdk+uFVo/8dWHA==", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.0.5.tgz", + "integrity": "sha512-S8ku5Ljp0kqX3shfmE9DVo09629jeYJSlBRGbj2Glb92dd+VQZPOz7KxqKRTwmAl7lQIV/+4Lr6G/GVTsoC4vg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -912,7 +1741,7 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.1" + "@angular/core": "19.0.5" }, "peerDependenciesMeta": { "@angular/core": { @@ -921,14 +1750,15 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.1.tgz", - "integrity": "sha512-D+Qba0r6RfHfffzrebGYp54h05AxpkagLjit/GczKNgWSP1gIgZxSfi88D+GvFmeWvZxWN1ecAQ+yqft9hJqWg==", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.0.5.tgz", + "integrity": "sha512-KSzuWCTZlvJsoAenxM9cjTOzNM8mrFxDBInj0KVPz7QU83amGS4rcv1pWO/QGYQcErfskcN84TAdMegaRWWCmA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "7.25.2", + "@babel/core": "7.26.0", "@jridgewell/sourcemap-codec": "^1.4.14", - "chokidar": "^3.0.0", + "chokidar": "^4.0.0", "convert-source-map": "^1.5.1", "reflect-metadata": "^0.2.0", "semver": "^7.0.0", @@ -944,14 +1774,44 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "18.2.1", - "typescript": ">=5.4 <5.6" + "@angular/compiler": "19.0.5", + "typescript": ">=5.5 <5.7" + } + }, + "node_modules/@angular/compiler-cli/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@angular/compiler-cli/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/@angular/core": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.1.tgz", - "integrity": "sha512-9KrSpJ65UlJZNXrE18NszcfOwb5LZgG+LYi5Doe7amt218R1bzb3trvuAm0ZzMaoKh4ugtUCkzEOd4FALPEX6w==", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.0.5.tgz", + "integrity": "sha512-Ywc6sPO6G/Y1stfk3y/MallV/h0yzQ0vdOHRWueLrk5kD1DTdbolV4X03Cs3PuVvravgcSVE3nnuuHFuH32emQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -961,13 +1821,14 @@ }, "peerDependencies": { "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.14.10" + "zone.js": "~0.15.0" } }, "node_modules/@angular/forms": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.1.tgz", - "integrity": "sha512-T7z8KUuj2PoPxrMrAruQVJha+x4a9Y6IrKYtArgOQQlTwCEJuqpVYuOk5l3fwWpHE9bVEjvgkAMI1D5YXA/U6w==", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.0.5.tgz", + "integrity": "sha512-OhNFkfOoguqCDq07vNBV28FFrmTM8S11Z3Cd6PQZJJF9TgAtpV5KtF7A3eXBCN92W4pmqluomPjfK7YyImzIYQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -975,16 +1836,17 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.1", - "@angular/core": "18.2.1", - "@angular/platform-browser": "18.2.1", + "@angular/common": "19.0.5", + "@angular/core": "19.0.5", + "@angular/platform-browser": "19.0.5", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.1.tgz", - "integrity": "sha512-hQABX7QotGmCIR3EhCBCDh5ZTvQao+JkuK5CCw2G1PkRfJMBwEpjNqnyhz41hZhWiGlucp9jgbeypppW+mIQEw==", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.0.5.tgz", + "integrity": "sha512-41+Jo5DEil4Ifvv+UE/p1l9YJtYN+xfhx+/C9cahVgvV5D2q+givyK73d0Mnb6XOfe1q+hoV5lZ+XhQYp21//g==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -992,9 +1854,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/animations": "18.2.1", - "@angular/common": "18.2.1", - "@angular/core": "18.2.1" + "@angular/animations": "19.0.5", + "@angular/common": "19.0.5", + "@angular/core": "19.0.5" }, "peerDependenciesMeta": { "@angular/animations": { @@ -1003,9 +1865,10 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.1.tgz", - "integrity": "sha512-tYJHtshbaKrtnRA15k3vrveSVBqkVUGhINvGugFA2vMtdTOfhfPw+hhzYrcwJibgU49rHogCfI9mkIbpNRYntA==", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.0.5.tgz", + "integrity": "sha512-KKFdue/uJVxkWdrntRAXkz+ycp4nD3SuGOH5pPf2svCBxieuHuFlWDi+DYVuFSEpC/ICCmlhrtzIAm44A4qzzQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -1013,16 +1876,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.1", - "@angular/compiler": "18.2.1", - "@angular/core": "18.2.1", - "@angular/platform-browser": "18.2.1" + "@angular/common": "19.0.5", + "@angular/compiler": "19.0.5", + "@angular/core": "19.0.5", + "@angular/platform-browser": "19.0.5" } }, "node_modules/@angular/router": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.1.tgz", - "integrity": "sha512-gVyqW6fYnG7oq1DlZSXJMQ2Py2dJQB7g6XVtRcYB1gR4aeowx5N9ws7PjqAi0ih91ASq2MmP4OlSSWLq+eaMGg==", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-19.0.5.tgz", + "integrity": "sha512-6tNubVVj/rRyTg+OXjQxACfufvCLHAwDQtv9wqt6q/3OYSnysHTik3ho3FaFPwu7fXJ+6p9Rjzkh2VY9QMk4bw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1031,9 +1894,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.1", - "@angular/core": "18.2.1", - "@angular/platform-browser": "18.2.1", + "@angular/common": "19.0.5", + "@angular/core": "19.0.5", + "@angular/platform-browser": "19.0.5", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1053,30 +1916,32 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz", - "integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1107,53 +1972,44 @@ } }, "node_modules/@babel/generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", - "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.0", + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz", - "integrity": "sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", - "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -1193,19 +2049,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -1216,13 +2059,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz", - "integrity": "sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "regexpu-core": "^6.1.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -1232,18 +2076,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -1339,14 +2171,15 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz", - "integrity": "sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-wrap-function": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1355,18 +2188,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-replace-supers": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", @@ -1404,6 +2225,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -1442,27 +2264,29 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz", - "integrity": "sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.25.7", - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", - "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" @@ -1485,13 +2309,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz", - "integrity": "sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1501,12 +2326,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz", - "integrity": "sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1516,12 +2342,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz", - "integrity": "sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1531,14 +2358,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz", - "integrity": "sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/plugin-transform-optional-chaining": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1548,13 +2376,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz", - "integrity": "sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1593,45 +2422,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-decorators": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", @@ -1648,37 +2438,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz", - "integrity": "sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1688,12 +2455,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", - "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1702,30 +2470,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", @@ -1742,108 +2486,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", @@ -1877,12 +2519,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz", - "integrity": "sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1892,15 +2535,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", - "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-remap-async-to-generator": "^7.25.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/traverse": "^7.25.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1910,14 +2553,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1927,12 +2571,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz", - "integrity": "sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1942,12 +2587,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz", - "integrity": "sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1957,13 +2603,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz", - "integrity": "sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1973,14 +2620,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.7.tgz", - "integrity": "sha512-rvUUtoVlkDWtDWxGAiiQj0aNktTPn3eFynBcMC2IhsXweehwgdI9ODe+XjWw515kEmv22sSOTp/rxIRuTiB7zg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1990,16 +2637,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz", - "integrity": "sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/traverse": "^7.25.7", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "engines": { @@ -2009,26 +2657,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz", - "integrity": "sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/template": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2038,12 +2675,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz", - "integrity": "sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2053,13 +2691,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz", - "integrity": "sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2069,12 +2708,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz", - "integrity": "sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2084,13 +2724,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz", - "integrity": "sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2100,13 +2741,13 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.7.tgz", - "integrity": "sha512-UvcLuual4h7/GfylKm2IAA3aph9rwvAM2XBA0uPKU3lca+Maai4jBjjEVUS568ld6kJcgbouuumCBhMd/Yz17w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2116,13 +2757,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz", - "integrity": "sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2132,13 +2773,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.7.tgz", - "integrity": "sha512-h3MDAP5l34NQkkNulsTNyjdaR+OiB0Im67VU//sFupouP8Q6m9Spy7l66DcaAQxtmCqGdanPByLsnwFttxKISQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2148,13 +2789,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz", - "integrity": "sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2164,14 +2806,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz", - "integrity": "sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2181,13 +2824,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.7.tgz", - "integrity": "sha512-Ot43PrL9TEAiCe8C/2erAjXMeVSnE/BLEx6eyrKLNFCCw5jvhTHKyHxdI1pA0kz5njZRYAnMO2KObGqOCRDYSA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2197,12 +2840,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz", - "integrity": "sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2212,13 +2856,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.7.tgz", - "integrity": "sha512-iImzbA55BjiovLyG2bggWS+V+OLkaBorNvc/yJoeeDQGztknRnDdYfp2d/UPmunZYEnZi6Lg8QcTmNMHOB0lGA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2228,12 +2872,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz", - "integrity": "sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2243,13 +2888,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz", - "integrity": "sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2276,15 +2922,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz", - "integrity": "sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2294,13 +2941,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz", - "integrity": "sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2310,13 +2958,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz", - "integrity": "sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2326,12 +2975,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz", - "integrity": "sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2341,13 +2991,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.7.tgz", - "integrity": "sha512-FbuJ63/4LEL32mIxrxwYaqjJxpbzxPVQj5a+Ebrc8JICV6YX8nE53jY+K0RZT3um56GoNWgkS2BQ/uLGTjtwfw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2357,13 +3007,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.7.tgz", - "integrity": "sha512-8CbutzSSh4hmD+jJHIA8vdTNk15kAzOnFLVVgBSMGr28rt85ouT01/rezMecks9pkU939wDInImwCKv4ahU4IA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2373,15 +3023,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.7.tgz", - "integrity": "sha512-1JdVKPhD7Y5PvgfFy0Mv2brdrolzpzSoUq2pr6xsR+m+3viGGeHEokFKsCgOkbeFOQxfB1Vt2F0cPJLRpFI4Zg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.25.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2391,13 +3041,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz", - "integrity": "sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2407,13 +3058,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.7.tgz", - "integrity": "sha512-m9obYBA39mDPN7lJzD5WkGGb0GO54PPLXsbcnj1Hyeu8mSRz7Gb4b1A6zxNX32ZuUySDK4G6it8SDFWD1nCnqg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2423,14 +3074,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.7.tgz", - "integrity": "sha512-h39agClImgPWg4H8mYVAbD1qP9vClFbEjqoJmt87Zen8pjqK8FTPUwrOXAvqu5soytwxrLMd2fx2KSCp2CHcNg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2440,12 +3091,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz", - "integrity": "sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2455,13 +3107,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz", - "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2471,15 +3124,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.7.tgz", - "integrity": "sha512-LzA5ESzBy7tqj00Yjey9yWfs3FKy4EmJyKOSWld144OxkTji81WWnUT8nkLUn+imN/zHL8ZQlOu/MTUAhHaX3g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2488,25 +3141,31 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz", - "integrity": "sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -2515,29 +3174,31 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz", - "integrity": "sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==", + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "regenerator-transform": "^0.15.2" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz", - "integrity": "sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2547,15 +3208,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", - "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz", + "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, @@ -2576,12 +3238,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz", - "integrity": "sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2591,13 +3254,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz", - "integrity": "sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2607,12 +3271,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz", - "integrity": "sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2622,12 +3287,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz", - "integrity": "sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2637,12 +3303,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz", - "integrity": "sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2671,26 +3338,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typescript/node_modules/@babel/helper-annotate-as-pure": { + "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz", - "integrity": "sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2700,13 +3355,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz", - "integrity": "sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2716,13 +3372,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz", - "integrity": "sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2732,13 +3389,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz", - "integrity": "sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2748,93 +3406,80 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.3.tgz", - "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-option": "^7.24.8", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.7", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.0", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.25.0", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-dotall-regex": "^7.24.7", - "@babel/plugin-transform-duplicate-keys": "^7.24.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", - "@babel/plugin-transform-dynamic-import": "^7.24.7", - "@babel/plugin-transform-exponentiation-operator": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.24.7", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-member-expression-literals": "^7.24.7", - "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-modules-systemjs": "^7.25.0", - "@babel/plugin-transform-modules-umd": "^7.24.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-new-target": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-object-super": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-property-literals": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-reserved-words": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.8", - "@babel/plugin-transform-unicode-escapes": "^7.24.7", - "@babel/plugin-transform-unicode-property-regex": "^7.24.7", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.37.1", + "core-js-compat": "^3.38.1", "semver": "^6.3.1" }, "engines": { @@ -2888,10 +3533,11 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", - "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dev": true, + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2950,19 +3596,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@babel/types": { "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", @@ -3026,10 +3659,11 @@ } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz", - "integrity": "sha512-boghen8F0Q8D+0/Q1/1r6DUEieUJ8w2a1gIknExMSHBsJFOr2+0KUfHiVYBvucPwl3+RU5PFBK833FjFCh3BhA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.17.0" } @@ -3633,48 +4267,54 @@ } }, "node_modules/@inquirer/checkbox": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.5.0.tgz", - "integrity": "sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.0.4.tgz", + "integrity": "sha512-fYAKCAcGNMdfjL6hZTRUwkIByQ8EIZCXKrIQZH7XjADnN/xvRUhj8UdBbpC4zoUzvChhkSC/zRKaP/tDs3dZpg==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.2", + "@inquirer/figures": "^1.0.9", + "@inquirer/type": "^3.0.2", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/confirm": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz", - "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.0.2.tgz", + "integrity": "sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" + "@inquirer/core": "^10.1.0", + "@inquirer/type": "^3.0.1" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/core": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", - "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.2.tgz", + "integrity": "sha512-bHd96F3ezHg1mf/J0Rb4CV8ndCN0v28kUlrHqP7+ECm1C/A+paB7Xh2lbMk6x+kweQC+rZOxM/YeKikzxco8bQ==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.5", - "@types/wrap-ansi": "^3.0.0", + "@inquirer/figures": "^1.0.9", + "@inquirer/type": "^3.0.2", "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", + "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^6.2.0", @@ -3684,23 +4324,12 @@ "node": ">=18" } }, - "node_modules/@inquirer/core/node_modules/@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", - "dev": true, - "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@inquirer/core/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3709,158 +4338,196 @@ } }, "node_modules/@inquirer/editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-2.2.0.tgz", - "integrity": "sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.1.tgz", + "integrity": "sha512-xn9aDaiP6nFa432i68JCaL302FyL6y/6EG97nAtfIPnWZ+mWPgCMLGc4XZ2QQMsZtu9q3Jd5AzBPjXh10aX9kA==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.2", + "@inquirer/type": "^3.0.2", "external-editor": "^3.1.0" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/expand": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-2.3.0.tgz", - "integrity": "sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.4.tgz", + "integrity": "sha512-GYocr+BPyxKPxQ4UZyNMqZFSGKScSUc0Vk17II3J+0bDcgGsQm0KYQNooN1Q5iBfXsy3x/VWmHGh20QnzsaHwg==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.2", + "@inquirer/type": "^3.0.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/figures": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.6.tgz", - "integrity": "sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.9.tgz", + "integrity": "sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@inquirer/input": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-2.3.0.tgz", - "integrity": "sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.1.tgz", + "integrity": "sha512-nAXAHQndZcXB+7CyjIW3XuQZZHbQQ0q8LX6miY6bqAWwDzNa9JUioDBYrFmOUNIsuF08o1WT/m2gbBXvBhYVxg==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" + "@inquirer/core": "^10.1.2", + "@inquirer/type": "^3.0.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/number": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-1.1.0.tgz", - "integrity": "sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.4.tgz", + "integrity": "sha512-DX7a6IXRPU0j8kr2ovf+QaaDiIf+zEKaZVzCWdLOTk7XigqSXvoh4cul7x68xp54WTQrgSnW7P1WBJDbyY3GhA==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" + "@inquirer/core": "^10.1.2", + "@inquirer/type": "^3.0.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/password": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-2.2.0.tgz", - "integrity": "sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.4.tgz", + "integrity": "sha512-wiliQOWdjM8FnBmdIHtQV2Ca3S1+tMBUerhyjkRCv1g+4jSvEweGu9GCcvVEgKDhTBT15nrxvk5/bVrGUqSs1w==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.2", + "@inquirer/type": "^3.0.2", "ansi-escapes": "^4.3.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/prompts": { - "version": "5.3.8", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-5.3.8.tgz", - "integrity": "sha512-b2BudQY/Si4Y2a0PdZZL6BeJtl8llgeZa7U2j47aaJSCeAl1e4UI7y8a9bSkO3o/ZbZrgT5muy/34JbsjfIWxA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.1.0.tgz", + "integrity": "sha512-5U/XiVRH2pp1X6gpNAjWOglMf38/Ys522ncEHIKT1voRUvSj/DQnR22OVxHnwu5S+rCFaUiPQ57JOtMFQayqYA==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/checkbox": "^2.4.7", - "@inquirer/confirm": "^3.1.22", - "@inquirer/editor": "^2.1.22", - "@inquirer/expand": "^2.1.22", - "@inquirer/input": "^2.2.9", - "@inquirer/number": "^1.0.10", - "@inquirer/password": "^2.1.22", - "@inquirer/rawlist": "^2.2.4", - "@inquirer/search": "^1.0.7", - "@inquirer/select": "^2.4.7" + "@inquirer/checkbox": "^4.0.2", + "@inquirer/confirm": "^5.0.2", + "@inquirer/editor": "^4.1.0", + "@inquirer/expand": "^4.0.2", + "@inquirer/input": "^4.0.2", + "@inquirer/number": "^3.0.2", + "@inquirer/password": "^4.0.2", + "@inquirer/rawlist": "^4.0.2", + "@inquirer/search": "^3.0.2", + "@inquirer/select": "^4.0.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/rawlist": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-2.3.0.tgz", - "integrity": "sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.4.tgz", + "integrity": "sha512-IsVN2EZdNHsmFdKWx9HaXb8T/s3FlR/U1QPt9dwbSyPtjFbMTlW9CRFvnn0bm/QIsrMRD2oMZqrQpSWPQVbXXg==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.2", + "@inquirer/type": "^3.0.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/search": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-1.1.0.tgz", - "integrity": "sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.4.tgz", + "integrity": "sha512-tSkJk2SDmC2MEdTIjknXWmCnmPr5owTs9/xjfa14ol1Oh95n6xW7SYn5fiPk4/vrJPys0ggSWiISdPze4LTa7A==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.2", + "@inquirer/figures": "^1.0.9", + "@inquirer/type": "^3.0.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/select": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-2.5.0.tgz", - "integrity": "sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.0.4.tgz", + "integrity": "sha512-ZzYLuLoUzTIW9EJm++jBpRiTshGqS3Q1o5qOEQqgzaBlmdsjQr6pA4TUNkwu6OBYgM2mIRbCz6mUhFDfl/GF+w==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.2", + "@inquirer/figures": "^1.0.9", + "@inquirer/type": "^3.0.2", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@inquirer/type": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", - "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.2.tgz", + "integrity": "sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==", "dev": true, - "dependencies": { - "mute-stream": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" } }, "node_modules/@isaacs/cliui": { @@ -3927,6 +4594,19 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -4098,24 +4778,48 @@ "dev": true }, "node_modules/@listr2/prompt-adapter-inquirer": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.15.tgz", - "integrity": "sha512-MZrGem/Ujjd4cPTLYDfCZK2iKKeiO/8OX13S6jqxldLs0Prf2aGqVlJ77nMBqMv7fzqgXEgjrNHLXcKR8l9lOg==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.18.tgz", + "integrity": "sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/type": "^1.5.5" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@inquirer/prompts": ">= 3 < 8" + } + }, + "node_modules/@listr2/prompt-adapter-inquirer/node_modules/@inquirer/type": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", + "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/type": "^1.5.1" + "mute-stream": "^1.0.0" }, "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@inquirer/prompts": ">= 3 < 6" + "node": ">=18" + } + }, + "node_modules/@listr2/prompt-adapter-inquirer/node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.0.13.tgz", - "integrity": "sha512-uiKPB0Fv6WEEOZjruu9a6wnW/8jrjzlZbxXscMB8kuCJ1k6kHpcBnuvaAWcqhbI7rqX5GKziwWEdD+wi2gNLfA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.1.5.tgz", + "integrity": "sha512-ue5PSOzHMCIYrfvPP/MRS6hsKKLzqqhcdAvJCO8uFlDdj598EhgnacuOTuqA6uBK5rgiZXfDWyb7DVZSiBKxBA==", "cpu": [ "arm64" ], @@ -4127,9 +4831,9 @@ ] }, "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.0.13.tgz", - "integrity": "sha512-bEVIIfK5mSQoG1R19qA+fJOvCB+0wVGGnXHT3smchBVahYBdlPn2OsZZKzlHWfb1E+PhLBmYfqB5zQXFP7hJig==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.1.5.tgz", + "integrity": "sha512-CGhsb0R5vE6mMNCoSfxHFD8QTvBHM51gs4DBeigTYHWnYv2V5YpJkC4rMo5qAAFifuUcc0+a8a3SIU0c9NrfNw==", "cpu": [ "x64" ], @@ -4141,9 +4845,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-arm": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.0.13.tgz", - "integrity": "sha512-Yml1KlMzOnXj/tnW7yX8U78iAzTk39aILYvCPbqeewAq1kSzl+w59k/fiVkTBfvDi/oW/5YRxL+Fq+Y1Fr1r2Q==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.1.5.tgz", + "integrity": "sha512-3WeW328DN+xB5PZdhSWmqE+t3+44xWXEbqQ+caWJEZfOFdLp9yklBZEbVqVdqzznkoaXJYxTCp996KD6HmANeg==", "cpu": [ "arm" ], @@ -4155,9 +4859,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.0.13.tgz", - "integrity": "sha512-afbVrsMgZ9dUTNUchFpj5VkmJRxvht/u335jUJ7o23YTbNbnpmXif3VKQGCtnjSh+CZaqm6N3CPG8KO3zwyZ1Q==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.1.5.tgz", + "integrity": "sha512-LAjaoOcBHGj6fiYB8ureiqPoph4eygbXu4vcOF+hsxiY74n8ilA7rJMmGUT0K0JOB5lmRQHSmor3mytRjS4qeQ==", "cpu": [ "arm64" ], @@ -4169,9 +4873,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-x64": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.0.13.tgz", - "integrity": "sha512-vOtxu0xC0SLdQ2WRXg8Qgd8T32ak4SPqk5zjItRszrJk2BdeXqfGxBJbP7o4aOvSPSmSSv46Lr1EP4HXU8v7Kg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.1.5.tgz", + "integrity": "sha512-k/IklElP70qdCXOQixclSl2GPLFiopynGoKX1FqDd1/H0E3Fo1oPwjY2rEVu+0nS3AOw1sryStdXk8CW3cVIsw==", "cpu": [ "x64" ], @@ -4183,9 +4887,9 @@ ] }, "node_modules/@lmdb/lmdb-win32-x64": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.0.13.tgz", - "integrity": "sha512-UCrMJQY/gJnOl3XgbWRZZUvGGBuKy6i0YNSptgMzHBjs+QYDYR1Mt/RLTOPy4fzzves65O1EDmlL//OzEqoLlA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.1.5.tgz", + "integrity": "sha512-KYar6W8nraZfSJspcK7Kp7hdj238X/FNauYbZyrqPBrtsXI1hvI4/KcRcRGP50aQoV7fkKDyJERlrQGMGTZUsA==", "cpu": [ "x64" ], @@ -4453,77 +5157,367 @@ "integrity": "sha512-MFE+RtsHnutZOCp2eKpa3A/yzZ8tOPmjX7QRdVnB2qqR9JA2SH3ZP5+cYq76tzFQZvU1BCWAQVNMvqGOW2yVZQ==", "dev": true, "license": "MIT", - "dependencies": { - "isomorphic-rslog": "0.0.6" + "dependencies": { + "isomorphic-rslog": "0.0.6" + } + }, + "node_modules/@module-federation/third-party-dts-extractor": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.7.6.tgz", + "integrity": "sha512-JME76/rgr41AKXG6kUTQXdQJiMCypN3qHOgPv4VuIag10UdLo/0gdeN6PYronvYmvPOQMfYev80GcEwl4l531A==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" + } + }, + "node_modules/@module-federation/utilities": { + "version": "3.1.29", + "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-3.1.29.tgz", + "integrity": "sha512-yhHOgm3mkZBvQzT4HoBJAVhGIa7Nfhpd4Zdc11g0vYEMapU6lfN5HHipUFdj6bLUzHhDyrY6CaF3syqTuabAfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/sdk": "0.7.6" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18", + "webpack": "^5.40.0" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.7.6.tgz", + "integrity": "sha512-kB9hQ0BfwNAcQWGskDEOxYP2z2bB/1ABXKr8MDomCFl2mbW3vvfYMQrb8UhJmJvE3rbGI/iXhJUdgBLNREnjUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.7.6", + "@module-federation/sdk": "0.7.6" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@napi-rs/nice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.1.tgz", + "integrity": "sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/nice-android-arm-eabi": "1.0.1", + "@napi-rs/nice-android-arm64": "1.0.1", + "@napi-rs/nice-darwin-arm64": "1.0.1", + "@napi-rs/nice-darwin-x64": "1.0.1", + "@napi-rs/nice-freebsd-x64": "1.0.1", + "@napi-rs/nice-linux-arm-gnueabihf": "1.0.1", + "@napi-rs/nice-linux-arm64-gnu": "1.0.1", + "@napi-rs/nice-linux-arm64-musl": "1.0.1", + "@napi-rs/nice-linux-ppc64-gnu": "1.0.1", + "@napi-rs/nice-linux-riscv64-gnu": "1.0.1", + "@napi-rs/nice-linux-s390x-gnu": "1.0.1", + "@napi-rs/nice-linux-x64-gnu": "1.0.1", + "@napi-rs/nice-linux-x64-musl": "1.0.1", + "@napi-rs/nice-win32-arm64-msvc": "1.0.1", + "@napi-rs/nice-win32-ia32-msvc": "1.0.1", + "@napi-rs/nice-win32-x64-msvc": "1.0.1" + } + }, + "node_modules/@napi-rs/nice-android-arm-eabi": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.0.1.tgz", + "integrity": "sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-android-arm64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.0.1.tgz", + "integrity": "sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-darwin-arm64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.0.1.tgz", + "integrity": "sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-darwin-x64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.0.1.tgz", + "integrity": "sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-freebsd-x64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.0.1.tgz", + "integrity": "sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.0.1.tgz", + "integrity": "sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-arm64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.0.1.tgz", + "integrity": "sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/third-party-dts-extractor": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.7.6.tgz", - "integrity": "sha512-JME76/rgr41AKXG6kUTQXdQJiMCypN3qHOgPv4VuIag10UdLo/0gdeN6PYronvYmvPOQMfYev80GcEwl4l531A==", + "node_modules/@napi-rs/nice-linux-arm64-musl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.0.1.tgz", + "integrity": "sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "find-pkg": "2.0.0", - "fs-extra": "9.1.0", - "resolve": "1.22.8" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/utilities": { - "version": "3.1.29", - "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-3.1.29.tgz", - "integrity": "sha512-yhHOgm3mkZBvQzT4HoBJAVhGIa7Nfhpd4Zdc11g0vYEMapU6lfN5HHipUFdj6bLUzHhDyrY6CaF3syqTuabAfQ==", + "node_modules/@napi-rs/nice-linux-ppc64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.0.1.tgz", + "integrity": "sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@module-federation/sdk": "0.7.6" - }, - "peerDependencies": { - "react": "^16 || ^17 || ^18", - "react-dom": "^16 || ^17 || ^18", - "webpack": "^5.40.0" - }, - "peerDependenciesMeta": { - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.7.6.tgz", - "integrity": "sha512-kB9hQ0BfwNAcQWGskDEOxYP2z2bB/1ABXKr8MDomCFl2mbW3vvfYMQrb8UhJmJvE3rbGI/iXhJUdgBLNREnjUg==", + "node_modules/@napi-rs/nice-linux-riscv64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.0.1.tgz", + "integrity": "sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@module-federation/runtime": "0.7.6", - "@module-federation/sdk": "0.7.6" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", - "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "node_modules/@napi-rs/nice-linux-s390x-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.0.1.tgz", + "integrity": "sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==", "cpu": [ - "arm64" + "s390x" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" - ] + "linux" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", - "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "node_modules/@napi-rs/nice-linux-x64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.0.1.tgz", + "integrity": "sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==", "cpu": [ "x64" ], @@ -4531,27 +5525,33 @@ "license": "MIT", "optional": true, "os": [ - "darwin" - ] + "linux" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", - "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "node_modules/@napi-rs/nice-linux-x64-musl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.0.1.tgz", + "integrity": "sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==", "cpu": [ - "arm" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", - "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "node_modules/@napi-rs/nice-win32-arm64-msvc": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.0.1.tgz", + "integrity": "sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==", "cpu": [ "arm64" ], @@ -4559,27 +5559,33 @@ "license": "MIT", "optional": true, "os": [ - "linux" - ] + "win32" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", - "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "node_modules/@napi-rs/nice-win32-ia32-msvc": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.0.1.tgz", + "integrity": "sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==", "cpu": [ - "x64" + "ia32" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" - ] + "win32" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", - "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "node_modules/@napi-rs/nice-win32-x64-msvc": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.0.1.tgz", + "integrity": "sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==", "cpu": [ "x64" ], @@ -4588,7 +5594,10 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": ">= 10" + } }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.4", @@ -4661,9 +5670,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.7.tgz", - "integrity": "sha512-BmnFxss6zGobGyq9Mi7736golbK8RLgF+zYCQZ+4/OfMMA1jKVoELnyJqNyAx+DQn3m1qKVBjtGEL7pTNpPzOw==", + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-19.0.6.tgz", + "integrity": "sha512-eWrIb0tS1CK6+JvFS4GgTD4fN9TtmApKrlaj3pPQXKXKKd42361ec85fuQQXdb4G8eEEq0vyd/bn4NJllh/3vw==", "dev": true, "license": "MIT", "engines": { @@ -4672,8 +5681,8 @@ "yarn": ">= 1.13.0" }, "peerDependencies": { - "@angular/compiler-cli": "^18.0.0", - "typescript": ">=5.4 <5.6", + "@angular/compiler-cli": "^19.0.0", + "typescript": ">=5.5 <5.7", "webpack": "^5.54.0" } }, @@ -4727,10 +5736,11 @@ } }, "node_modules/@npmcli/agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", - "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", + "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==", "dev": true, + "license": "ISC", "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", @@ -4739,45 +5749,48 @@ "socks-proxy-agent": "^8.0.3" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@npmcli/fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", - "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", + "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/git": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", - "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-6.0.1.tgz", + "integrity": "sha512-BBWMMxeQzalmKadyimwb2/VVQyJB01PH0HhVSNLHNBDZN/M/h/02P6f8fxedIiFhpMj11SO9Ep5tKTBE7zL2nw==", "dev": true, + "license": "ISC", "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "ini": "^4.1.3", + "@npmcli/promise-spawn": "^8.0.0", + "ini": "^5.0.0", "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^4.0.0", + "npm-pick-manifest": "^10.0.0", + "proc-log": "^5.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^4.0.0" + "which": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/git/node_modules/isexe": { @@ -4785,6 +5798,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -4793,13 +5807,15 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@npmcli/git/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -4807,50 +5823,53 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/installed-package-contents": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", - "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz", + "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==", "dev": true, + "license": "ISC", "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "npm-bundled": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" }, "bin": { "installed-package-contents": "bin/index.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz", + "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==", "dev": true, + "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/package-json": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", - "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-6.1.0.tgz", + "integrity": "sha512-t6G+6ZInT4X+tqj2i+wlLIeCKnKOTuz9/VFYDtj+TGTur5q7sp/OYrQA19LdBbWfXDOi0Y4jtedV6xtB8zQ9ug==", "dev": true, + "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.0", + "@npmcli/git": "^6.0.0", "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", + "normalize-package-data": "^7.0.0", + "proc-log": "^5.0.0", "semver": "^7.5.3" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/package-json/node_modules/glob": { @@ -4858,6 +5877,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -4873,11 +5893,32 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@npmcli/package-json/node_modules/hosted-git-info": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.2.tgz", + "integrity": "sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@npmcli/package-json/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" }, @@ -4889,15 +5930,16 @@ } }, "node_modules/@npmcli/promise-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", - "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.2.tgz", + "integrity": "sha512-/bNJhjc+o6qL+Dwz/bqfTQClkEO5nTQ1ZEcdCkAQjhkZMHIh22LPG7fNh1enJP1NKWDqYiiABnjFCY7E0zHYtQ==", "dev": true, + "license": "ISC", "dependencies": { - "which": "^4.0.0" + "which": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/promise-spawn/node_modules/isexe": { @@ -4905,15 +5947,17 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } }, "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -4921,33 +5965,35 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/redact": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", - "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.0.0.tgz", + "integrity": "sha512-/1uFzjVcfzqrgCeGW7+SZ4hv0qLWmKXVzFahZGJ6QuJBj6Myt9s17+JL86i76NV9YSnJRcGXJYQbAU0rn1YTCQ==", "dev": true, + "license": "ISC", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/run-script": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", - "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-9.0.2.tgz", + "integrity": "sha512-cJXiUlycdizQwvqE1iaAb4VRUM3RX09/8q46zjvy+ct9GhfZRWd7jXYVc1tn/CfRlGPVkX/u4sstRlepsm7hfw==", "dev": true, + "license": "ISC", "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "proc-log": "^4.0.0", - "which": "^4.0.0" + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "node-gyp": "^11.0.0", + "proc-log": "^5.0.0", + "which": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/run-script/node_modules/isexe": { @@ -4955,15 +6001,17 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } }, "node_modules/@npmcli/run-script/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -4971,7 +6019,7 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@nx/angular": { @@ -5351,52 +6399,24 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@nx/module-federation/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@nx/module-federation/node_modules/http-proxy-middleware": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz", - "integrity": "sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.15", - "debug": "^4.3.6", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.3", - "is-plain-object": "^5.0.0", - "micromatch": "^4.0.8" + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8.0.0" } }, - "node_modules/@nx/module-federation/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/@nx/module-federation/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, "node_modules/@nx/module-federation/node_modules/json-parse-even-better-errors": { @@ -5988,62 +7008,394 @@ } } }, - "node_modules/@nx/webpack/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/@nx/webpack/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/workspace": { + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-20.3.0.tgz", + "integrity": "sha512-z8NSAo5SiLEMPuwasDvLdCCtaTGdINh1cSZMCom8HeLbT8F7risbR0IlHVqVrKj9FPKqrAIsH+4knVb4dHHCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/devkit": "20.3.0", + "chalk": "^4.1.0", + "enquirer": "~2.3.6", + "nx": "20.3.0", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + } + }, + "node_modules/@nx/workspace/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/webpack/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.10.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/workspace": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-20.3.0.tgz", - "integrity": "sha512-z8NSAo5SiLEMPuwasDvLdCCtaTGdINh1cSZMCom8HeLbT8F7risbR0IlHVqVrKj9FPKqrAIsH+4knVb4dHHCnQ==", + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@nx/devkit": "20.3.0", - "chalk": "^4.1.0", - "enquirer": "~2.3.6", - "nx": "20.3.0", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nx/workspace/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10" } }, + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/@phenomnomnominal/tsquery": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", @@ -6102,208 +7454,252 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", - "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.26.0.tgz", + "integrity": "sha512-gJNwtPDGEaOEgejbaseY6xMFu+CPltsc8/T+diUTTbOQLqD+bnrJq9ulH6WD69TqwqWmrfRAtUv30cCFZlbGTQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", - "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.26.0.tgz", + "integrity": "sha512-YJa5Gy8mEZgz5JquFruhJODMq3lTHWLm1fOy+HIANquLzfIOzE9RA5ie3JjCdVb9r46qfAQY/l947V0zfGJ0OQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", - "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.26.0.tgz", + "integrity": "sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", - "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.26.0.tgz", + "integrity": "sha512-wbgkYDHcdWW+NqP2mnf2NOuEbOLzDblalrOWcPyY6+BRbVhliavon15UploG7PpBRQ2bZJnbmh8o3yLoBvDIHA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.26.0.tgz", + "integrity": "sha512-Y9vpjfp9CDkAG4q/uwuhZk96LP11fBz/bYdyg9oaHYhtGZp7NrbkQrj/66DYMMP2Yo/QPAsVHkV891KyO52fhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.26.0.tgz", + "integrity": "sha512-A/jvfCZ55EYPsqeaAt/yDAG4q5tt1ZboWMHEvKAH9Zl92DWvMIbnZe/f/eOXze65aJaaKbL+YeM0Hz4kLQvdwg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", - "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.26.0.tgz", + "integrity": "sha512-paHF1bMXKDuizaMODm2bBTjRiHxESWiIyIdMugKeLnjuS1TCS54MF5+Y5Dx8Ui/1RBPVRE09i5OUlaLnv8OGnA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", - "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.26.0.tgz", + "integrity": "sha512-cwxiHZU1GAs+TMxvgPfUDtVZjdBdTsQwVnNlzRXC5QzIJ6nhfB4I1ahKoe9yPmoaA/Vhf7m9dB1chGPpDRdGXg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", - "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.26.0.tgz", + "integrity": "sha512-4daeEUQutGRCW/9zEo8JtdAgtJ1q2g5oHaoQaZbMSKaIWKDQwQ3Yx0/3jJNmpzrsScIPtx/V+1AfibLisb3AMQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", - "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.26.0.tgz", + "integrity": "sha512-eGkX7zzkNxvvS05ROzJ/cO/AKqNvR/7t1jA3VZDi2vRniLKwAWxUr85fH3NsvtxU5vnUUKFHKh8flIBdlo2b3Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", - "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.26.0.tgz", + "integrity": "sha512-Odp/lgHbW/mAqw/pU21goo5ruWsytP7/HCC/liOt0zcGG0llYWKrd10k9Fj0pdj3prQ63N5yQLCLiE7HTX+MYw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", - "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.26.0.tgz", + "integrity": "sha512-MBR2ZhCTzUgVD0OJdTzNeF4+zsVogIR1U/FsyuFerwcqjZGvg2nYe24SAHp8O5sN8ZkRVbHwlYeHqcSQ8tcYew==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", - "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.26.0.tgz", + "integrity": "sha512-YYcg8MkbN17fMbRMZuxwmxWqsmQufh3ZJFxFGoHjrE7bv0X+T6l3glcdzd7IKLiwhT+PZOJCblpnNlz1/C3kGQ==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", - "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.26.0.tgz", + "integrity": "sha512-ZuwpfjCwjPkAOxpjAEjabg6LRSfL7cAJb6gSQGZYjGhadlzKKywDkCUnJ+KEfrNY1jH5EEoSIKLCb572jSiglA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", - "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.26.0.tgz", + "integrity": "sha512-+HJD2lFS86qkeF8kNu0kALtifMpPCZU80HvwztIKnYwym3KnA1os6nsX4BGSTLtS2QVAGG1P3guRgsYyMA0Yhg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", - "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.26.0.tgz", + "integrity": "sha512-WUQzVFWPSw2uJzX4j6YEbMAiLbs0BUysgysh8s817doAYhR5ybqTI1wtKARQKo6cGop3pHnrUJPFCsXdoFaimQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", - "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.26.0.tgz", + "integrity": "sha512-D4CxkazFKBfN1akAIY6ieyOqzoOoBV1OICxgUblWxff/pSjCA2khXlASUx7mK6W1oP4McqhgcCsu6QaLj3WMWg==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", - "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.26.0.tgz", + "integrity": "sha512-2x8MO1rm4PGEP0xWbubJW5RtbNLk3puzAMaLQd3B3JHVw4KcHlmXcO+Wewx9zCoo7EUFiMlu/aZbCJ7VjMzAag==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -6527,13 +7923,14 @@ } }, "node_modules/@schematics/angular": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.1.tgz", - "integrity": "sha512-bBV7I+MCbdQmBPUFF4ECg37VReM0+AdQsxgwkjBBSYExmkErkDoDgKquwL/tH7stDCc5IfTd0g9BMeosRgDMug==", + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-19.0.6.tgz", + "integrity": "sha512-HicclmbW/+mlljU7a4PzbyIWG+7tognoL5LsgMFJQUDzJXHNjRt1riL0vk57o8Pcprnz9FheeWZXO1KRhXkQuw==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "18.2.1", - "@angular-devkit/schematics": "18.2.1", + "@angular-devkit/core": "19.0.6", + "@angular-devkit/schematics": "19.0.6", "jsonc-parser": "3.3.1" }, "engines": { @@ -6543,10 +7940,11 @@ } }, "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.1.tgz", - "integrity": "sha512-fSuGj6CxiTFR+yjuVcaWqaVb5Wts39CSBYRO1BlsOlbuWFZ2NKC/BAb5bdxpB31heCBJi7e3XbPvcMMJIcnKlA==", + "version": "19.0.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.0.6.tgz", + "integrity": "sha512-WUWJhzQDsovfMY6jtb9Ktz/5sJszsaErj+XV2aXab85f1OweI/Iv2urPZnJwUSilvVN5Ok/fy3IJ6SuihK4Ceg==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "8.17.1", "ajv-formats": "3.0.1", @@ -6561,7 +7959,7 @@ "yarn": ">= 1.13.0" }, "peerDependencies": { - "chokidar": "^3.5.2" + "chokidar": "^4.0.0" }, "peerDependenciesMeta": { "chokidar": { @@ -6569,6 +7967,40 @@ } } }, + "node_modules/@schematics/angular/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@schematics/angular/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@sentry-internal/browser-utils": { "version": "8.42.0", "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.42.0.tgz", @@ -6665,24 +8097,26 @@ } }, "node_modules/@sigstore/bundle": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", - "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-3.0.0.tgz", + "integrity": "sha512-XDUYX56iMPAn/cdgh/DTJxz5RWmqKV4pwvUAEKEWJl+HzKdCd/24wUa9JYNMlDSCb7SUHAdtksxYX779Nne/Zg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sigstore/core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", - "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-2.0.0.tgz", + "integrity": "sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sigstore/protobuf-specs": { @@ -6690,52 +8124,56 @@ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/sign": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", - "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-3.0.0.tgz", + "integrity": "sha512-UjhDMQOkyDoktpXoc5YPJpJK6IooF2gayAr5LvXI4EL7O0vd58okgfRcxuaH+YTdhvb5aa1Q9f+WJ0c2sVuYIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", "@sigstore/protobuf-specs": "^0.3.2", - "make-fetch-happen": "^13.0.1", - "proc-log": "^4.2.0", + "make-fetch-happen": "^14.0.1", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sigstore/tuf": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", - "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-3.0.0.tgz", + "integrity": "sha512-9Xxy/8U5OFJu7s+OsHzI96IX/OzjF/zj0BSSaWhgJgTqtlBhQIV2xdrQI5qxLD7+CWWDepadnXAxzaZ3u9cvRw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.3.2", - "tuf-js": "^2.2.1" + "tuf-js": "^3.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sigstore/verify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", - "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-2.0.0.tgz", + "integrity": "sha512-Ggtq2GsJuxFNUvQzLoXqRwS4ceRfLAJnrIHUDrzAD0GgnOhwujJkKkxM/s5Bako07c3WtAs/sZo5PJq7VHjeDg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.1.0", + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sinclair/typebox": { @@ -8223,21 +9661,23 @@ "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "dev": true, + "license": "MIT", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@tufjs/models": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", - "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-3.0.1.tgz", + "integrity": "sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA==", "dev": true, + "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.4" + "minimatch": "^9.0.5" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@tufjs/models/node_modules/minimatch": { @@ -8245,6 +9685,7 @@ "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" }, @@ -8450,15 +9891,6 @@ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, - "node_modules/@types/mute-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", - "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/node": { "version": "22.7.4", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", @@ -8584,12 +10016,6 @@ "integrity": "sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==", "dev": true }, - "node_modules/@types/wrap-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", - "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", - "dev": true - }, "node_modules/@types/ws": { "version": "8.5.12", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", @@ -9086,6 +10512,7 @@ "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.6.0" }, @@ -9406,6 +10833,7 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -9447,15 +10875,6 @@ "acorn": "^8" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -9525,30 +10944,15 @@ } }, "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, + "license": "MIT", "engines": { "node": ">= 14" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -9608,6 +11012,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -9623,6 +11028,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -9841,10 +11247,11 @@ } }, "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", "dev": true, + "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -10096,25 +11503,71 @@ "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/beasties": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.1.0.tgz", + "integrity": "sha512-+Ssscd2gVG24qRNC+E2g88D+xsQW4xwakWtKAiGEQ3Pw54/FGdyo9RrfxhGhEv6ilFVbB7r3Lgx+QnAxnSpECw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "htmlparser2": "^9.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-media-query-parser": "^0.2.3" + } + }, + "node_modules/beasties/node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">= 0.8" + "node": "^10 || ^12 || >=14" } }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, "node_modules/better-opn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", @@ -10395,12 +11848,13 @@ } }, "node_modules/cacache": { - "version": "18.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", - "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "version": "19.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz", + "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==", "dev": true, + "license": "ISC", "dependencies": { - "@npmcli/fs": "^3.1.0", + "@npmcli/fs": "^4.0.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", @@ -10408,13 +11862,23 @@ "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "p-map": "^7.0.2", + "ssri": "^12.0.0", + "tar": "^7.4.3", + "unique-filename": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/cacache/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/cacache/node_modules/glob": { @@ -10422,6 +11886,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -10441,13 +11906,15 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/cacache/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" }, @@ -10458,6 +11925,50 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/cacache/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/cacache/node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "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", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cacache/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/cache-content-type": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", @@ -10626,7 +12137,8 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/check-error": { "version": "2.1.1", @@ -10666,6 +12178,7 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -10759,20 +12272,12 @@ "node": ">=0.10.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^5.0.0" }, @@ -10800,6 +12305,7 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, + "license": "MIT", "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" @@ -10816,6 +12322,7 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, + "license": "ISC", "engines": { "node": ">= 12" } @@ -11391,37 +12898,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "devOptional": true }, - "node_modules/critters": { - "version": "0.0.24", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.24.tgz", - "integrity": "sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "css-select": "^5.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.2", - "htmlparser2": "^8.0.2", - "postcss": "^8.4.23", - "postcss-media-query-parser": "^0.2.3" - } - }, - "node_modules/critters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/cron-parser": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", @@ -11819,18 +13295,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/defaults": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", @@ -11924,6 +13388,7 @@ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "dev": true, "license": "Apache-2.0", + "optional": true, "engines": { "node": ">=8" } @@ -12212,7 +13677,8 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -12366,6 +13832,7 @@ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -12377,7 +13844,8 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/errno": { "version": "0.1.8", @@ -12492,10 +13960,11 @@ } }, "node_modules/esbuild-wasm": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.23.0.tgz", - "integrity": "sha512-6jP8UmWy6R6TUUV8bMuC3ZyZ6lZKI56x0tkxyCIqWwRRJ/DgeQKneh/Oid5EoGoPFLrGNkz47ZEtWAYuiY/u9g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.24.0.tgz", + "integrity": "sha512-xhNn5tL1AhkPg4ft59yXT6FkwKXiPSYyz1IeinJHUJpjvOHOIPvdmFQc0pGdjxlKSbzZc2mNmtVOWAR1EF/JAg==", "dev": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -12870,50 +14339,6 @@ "node": ">=0.8.x" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -12931,7 +14356,8 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/express": { "version": "4.21.0", @@ -13001,6 +14427,7 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -13015,6 +14442,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, + "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -13605,6 +15033,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -13664,10 +15093,11 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -13714,18 +15144,6 @@ "node": ">= 0.4" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -14130,9 +15548,9 @@ } }, "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -14141,11 +15559,12 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "domutils": "^3.1.0", + "entities": "^4.5.0" } }, "node_modules/http-assert": { @@ -14203,7 +15622,8 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/http-deceiver": { "version": "1.2.7", @@ -14252,6 +15672,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -14261,22 +15682,33 @@ } }, "node_modules/http-proxy-middleware": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", - "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz", + "integrity": "sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.10", - "debug": "^4.3.4", + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.5" + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/http-proxy-middleware/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/http-server": { "version": "14.1.1", "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", @@ -14327,6 +15759,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -14335,15 +15768,6 @@ "node": ">= 14" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, "node_modules/hyperdyperid": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", @@ -14407,15 +15831,16 @@ } }, "node_modules/ignore-walk": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", - "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-7.0.0.tgz", + "integrity": "sha512-T4gbf83A4NH95zvhVYZc+qWocBBGlpzUXLPGurJggw/WIOwicfXJChLDP/iBZnN5WqROSu5Bm3hhle4z8a8YGQ==", "dev": true, + "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/image-size": { @@ -14432,10 +15857,11 @@ } }, "node_modules/immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", - "dev": true + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "dev": true, + "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.0", @@ -14489,12 +15915,13 @@ "dev": true }, "node_modules/ini": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", - "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz", + "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==", "dev": true, + "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/ip-address": { @@ -14502,6 +15929,7 @@ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -14608,6 +16036,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -14668,12 +16097,6 @@ "node": ">=8" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, "node_modules/is-network-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", @@ -14727,18 +16150,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", @@ -15208,7 +16619,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.1.0", @@ -15221,15 +16633,16 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { @@ -15239,12 +16652,13 @@ "dev": true }, "node_modules/json-parse-even-better-errors": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", + "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==", "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/json-schema-traverse": { @@ -15333,7 +16747,8 @@ "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/karma": { "version": "6.4.4", @@ -15912,10 +17327,11 @@ } }, "node_modules/listr2": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", - "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", "dev": true, + "license": "MIT", "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", @@ -15933,6 +17349,7 @@ "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" }, @@ -15944,13 +17361,15 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/listr2/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", @@ -15964,38 +17383,32 @@ } }, "node_modules/lmdb": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.0.13.tgz", - "integrity": "sha512-UGe+BbaSUQtAMZobTb4nHvFMrmvuAQKSeaqAX2meTEQjfsbpl5sxdHD8T72OnwD4GU9uwNhYXIVe4QGs8N9Zyw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.1.5.tgz", + "integrity": "sha512-46Mch5Drq+A93Ss3gtbg+Xuvf5BOgIuvhKDWoGa3HcPHI6BL2NCOkRdSx1D4VfzwrxhnsjbyIVsLRlQHu6URvw==", "dev": true, "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { - "msgpackr": "^1.10.2", + "msgpackr": "^1.11.2", "node-addon-api": "^6.1.0", "node-gyp-build-optional-packages": "5.2.2", - "ordered-binary": "^1.4.1", + "ordered-binary": "^1.5.3", "weak-lru-cache": "^1.2.2" }, "bin": { "download-lmdb-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.0.13", - "@lmdb/lmdb-darwin-x64": "3.0.13", - "@lmdb/lmdb-linux-arm": "3.0.13", - "@lmdb/lmdb-linux-arm64": "3.0.13", - "@lmdb/lmdb-linux-x64": "3.0.13", - "@lmdb/lmdb-win32-x64": "3.0.13" + "@lmdb/lmdb-darwin-arm64": "3.1.5", + "@lmdb/lmdb-darwin-x64": "3.1.5", + "@lmdb/lmdb-linux-arm": "3.1.5", + "@lmdb/lmdb-linux-arm64": "3.1.5", + "@lmdb/lmdb-linux-x64": "3.1.5", + "@lmdb/lmdb-win32-x64": "3.1.5" } }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dev": true, - "license": "MIT" - }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -16119,6 +17532,7 @@ "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", @@ -16138,6 +17552,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, + "license": "MIT", "dependencies": { "environment": "^1.0.0" }, @@ -16153,6 +17568,7 @@ "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" }, @@ -16165,6 +17581,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", "dev": true, + "license": "MIT", "dependencies": { "get-east-asian-width": "^1.0.0" }, @@ -16180,6 +17597,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" @@ -16196,6 +17614,7 @@ "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", @@ -16301,10 +17720,11 @@ } }, "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -16353,26 +17773,36 @@ "devOptional": true }, "node_modules/make-fetch-happen": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", - "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz", + "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==", "dev": true, + "license": "ISC", "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", + "@npmcli/agent": "^3.0.0", + "cacache": "^19.0.1", "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", + "minipass-fetch": "^4.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "proc-log": "^4.2.0", + "negotiator": "^1.0.0", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1", - "ssri": "^10.0.0" + "ssri": "^12.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/make-fetch-happen/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, "node_modules/make-synchronized": { @@ -16538,6 +17968,7 @@ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -16556,10 +17987,11 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", - "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", + "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", "dev": true, + "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -16618,6 +18050,7 @@ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -16626,17 +18059,18 @@ } }, "node_modules/minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.0.tgz", + "integrity": "sha512-2v6aXUXwLP1Epd/gc32HAMIWoczx+fZwEPRHm/VwtrJzRGwR1qGZXEYV3Zp8ZjjbwaZhMrM6uHV4KVkk+XCc2w==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "minizlib": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" }, "optionalDependencies": { "encoding": "^0.1.13" @@ -16647,6 +18081,7 @@ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -16659,6 +18094,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -16670,13 +18106,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -16689,6 +18127,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -16700,13 +18139,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -16719,6 +18160,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -16730,38 +18172,75 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", + "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "minipass": "^7.0.4", + "rimraf": "^5.0.5" }, "engines": { - "node": ">= 8" + "node": ">= 18" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/minizlib/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minizlib/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/minizlib/node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/mkdirp": { "version": "0.5.6", @@ -16780,6 +18259,7 @@ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -16796,6 +18276,7 @@ "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", "dev": true, "license": "MIT", + "optional": true, "optionalDependencies": { "msgpackr-extract": "^3.0.2" } @@ -16837,12 +18318,13 @@ } }, "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, + "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/mz": { @@ -16949,21 +18431,6 @@ "@angular/core": ">=18.0.0" } }, - "node_modules/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "!win32" - ], - "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -16981,10 +18448,11 @@ "dev": true }, "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/node-fetch": { @@ -17018,39 +18486,28 @@ } }, "node_modules/node-gyp": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.2.0.tgz", - "integrity": "sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.0.0.tgz", + "integrity": "sha512-zQS+9MTTeCMgY0F3cWPyJyRFAkVltQ1uXm+xXu/ES6KFgC6Czo1Seb9vQW2wNxSX2OrDTiqL0ojtkFxBQ0ypIw==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^4.1.0", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5", - "tar": "^6.2.1", - "which": "^4.0.0" + "tar": "^7.4.3", + "which": "^5.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", - "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/node-gyp-build-optional-packages": { @@ -17059,6 +18516,7 @@ "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "detect-libc": "^2.0.1" }, @@ -17068,11 +18526,22 @@ "node-gyp-build-optional-packages-test": "build-test.js" } }, + "node_modules/node-gyp/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/node-gyp/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -17093,6 +18562,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -17102,6 +18572,7 @@ "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" }, @@ -17112,11 +18583,46 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/node-gyp/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/node-gyp/node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "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", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/node-gyp/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -17124,7 +18630,17 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/node-machine-id": { @@ -17155,10 +18671,11 @@ } }, "node_modules/nopt": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", - "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.0.0.tgz", + "integrity": "sha512-1L/fTJ4UmV/lUxT2Uf006pfZKTvAgCF+chz+0OgBHO8u2Z67pE7AaAUUj7CJy0lXqHmymUvGFt6NE9R3HER0yw==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "^2.0.0" }, @@ -17166,23 +18683,44 @@ "nopt": "bin/nopt.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-7.0.0.tgz", + "integrity": "sha512-k6U0gKRIuNCTkwHGZqblCfLfBRh+w1vI6tBo+IeJwq2M8FUiOqhX7GH+GArQGScA7azd1WfyRCvxoXDO3hQDIA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^7.0.0", + "hosted-git-info": "^8.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.2.tgz", + "integrity": "sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -17200,97 +18738,134 @@ } }, "node_modules/npm-bundled": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", - "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz", + "integrity": "sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==", "dev": true, + "license": "ISC", "dependencies": { - "npm-normalize-package-bin": "^3.0.0" + "npm-normalize-package-bin": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-install-checks": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", - "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.1.tgz", + "integrity": "sha512-u6DCwbow5ynAX5BdiHQ9qvexme4U3qHW3MWe5NqH+NeBm0LbiH6zvGjNNew1fY+AZZUtVHbOPF3j7mJxbUzpXg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", - "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz", + "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==", "dev": true, + "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-package-arg": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", - "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.0.tgz", + "integrity": "sha512-ZTE0hbwSdTNL+Stx2zxSqdu2KZfNDcrtrLdIk7XGnQFYBWYDho/ORvXtn5XEePcL3tFpGjHCV3X3xrtDh7eZ+A==", "dev": true, + "license": "ISC", "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^4.0.0", + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "validate-npm-package-name": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm-packlist": { + "node_modules/npm-package-arg/node_modules/hosted-git-info": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", - "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.2.tgz", + "integrity": "sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==", "dev": true, + "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.4" + "lru-cache": "^10.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-6.0.0.tgz", + "integrity": "sha512-d7KLgL1LD3U3fgnvWEY1cQXoO/q6EQ1BSz48Sa149V/5zVTAbgmZIpyI8TRi6U9/JNyeYLlTKsEMPtLC27RFUg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-packlist": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-9.0.0.tgz", + "integrity": "sha512-8qSayfmHJQTx3nJWYbbUmflpyarbLMBc6LCAjYsiGtXxDB68HaZpb8re6zeaLGxZzDuMdhsg70jryJe+RrItVQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^7.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-pick-manifest": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz", - "integrity": "sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz", + "integrity": "sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==", "dev": true, + "license": "ISC", "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", + "npm-install-checks": "^7.1.0", + "npm-normalize-package-bin": "^4.0.0", + "npm-package-arg": "^12.0.0", "semver": "^7.3.5" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-registry-fetch": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", - "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-18.0.2.tgz", + "integrity": "sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==", "dev": true, + "license": "ISC", "dependencies": { - "@npmcli/redact": "^2.0.0", + "@npmcli/redact": "^3.0.0", "jsonparse": "^1.3.1", - "make-fetch-happen": "^13.0.0", + "make-fetch-happen": "^14.0.0", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" + "minipass-fetch": "^4.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^12.0.0", + "proc-log": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-run-path": { @@ -17670,6 +19245,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-function": "^5.0.0" }, @@ -17833,13 +19409,15 @@ "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz", "integrity": "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -17875,15 +19453,13 @@ } }, "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -17921,34 +19497,35 @@ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" }, "node_modules/pacote": { - "version": "18.0.6", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", - "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-20.0.0.tgz", + "integrity": "sha512-pRjC5UFwZCgx9kUFDVM9YEahv4guZ1nSLqwmWiLUnDbGsjs+U5w7z6Uc8HNR1a6x8qnu5y9xtGE6D1uAuYz+0A==", "dev": true, + "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/package-json": "^5.1.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^8.0.0", - "cacache": "^18.0.0", + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^17.0.0", - "proc-log": "^4.0.0", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", "tar": "^6.1.11" }, "bin": { "pacote": "bin/index.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/param-case": { @@ -18039,6 +19616,7 @@ "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^4.3.0", "parse5": "^7.0.0", @@ -18053,6 +19631,7 @@ "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", "dev": true, + "license": "MIT", "dependencies": { "parse5": "^7.0.0" }, @@ -18197,12 +19776,13 @@ } }, "node_modules/piscina": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.6.1.tgz", - "integrity": "sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.7.0.tgz", + "integrity": "sha512-b8hvkpp9zS0zsfa939b/jXbe64Z2gZv0Ha7FYPNUiDIB1y2AtxcOZdfP8xN8HFjUaqQiT9gRlfjAsoL8vdJ1Iw==", "dev": true, + "license": "MIT", "optionalDependencies": { - "nice-napi": "^1.0.2" + "@napi-rs/nice": "^1.0.1" } }, "node_modules/polished": { @@ -18536,7 +20116,8 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-merge-longhand": { "version": "6.0.5", @@ -19042,12 +20623,13 @@ } }, "node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", + "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", "dev": true, + "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/process": { @@ -19070,13 +20652,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, + "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -19343,13 +20927,15 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -19368,6 +20954,7 @@ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } @@ -19379,15 +20966,16 @@ "dev": true }, "node_modules/regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -19399,13 +20987,15 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.0.tgz", - "integrity": "sha512-vTbzVAjQDzwQdKuvj7qEq6OlAprCjE656khuGQ4QaBLg7abQ9I9ISpmLuc6inWe7zP75AECjqUa4g4sdQvOXhg==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~3.0.2" }, @@ -19418,6 +21008,7 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -19663,6 +21254,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" @@ -19679,6 +21271,7 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -19715,10 +21308,11 @@ } }, "node_modules/rollup": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", - "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.26.0.tgz", + "integrity": "sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.6" }, @@ -19730,22 +21324,24 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.0", - "@rollup/rollup-android-arm64": "4.24.0", - "@rollup/rollup-darwin-arm64": "4.24.0", - "@rollup/rollup-darwin-x64": "4.24.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", - "@rollup/rollup-linux-arm-musleabihf": "4.24.0", - "@rollup/rollup-linux-arm64-gnu": "4.24.0", - "@rollup/rollup-linux-arm64-musl": "4.24.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", - "@rollup/rollup-linux-riscv64-gnu": "4.24.0", - "@rollup/rollup-linux-s390x-gnu": "4.24.0", - "@rollup/rollup-linux-x64-gnu": "4.24.0", - "@rollup/rollup-linux-x64-musl": "4.24.0", - "@rollup/rollup-win32-arm64-msvc": "4.24.0", - "@rollup/rollup-win32-ia32-msvc": "4.24.0", - "@rollup/rollup-win32-x64-msvc": "4.24.0", + "@rollup/rollup-android-arm-eabi": "4.26.0", + "@rollup/rollup-android-arm64": "4.26.0", + "@rollup/rollup-darwin-arm64": "4.26.0", + "@rollup/rollup-darwin-x64": "4.26.0", + "@rollup/rollup-freebsd-arm64": "4.26.0", + "@rollup/rollup-freebsd-x64": "4.26.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.26.0", + "@rollup/rollup-linux-arm-musleabihf": "4.26.0", + "@rollup/rollup-linux-arm64-gnu": "4.26.0", + "@rollup/rollup-linux-arm64-musl": "4.26.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.26.0", + "@rollup/rollup-linux-riscv64-gnu": "4.26.0", + "@rollup/rollup-linux-s390x-gnu": "4.26.0", + "@rollup/rollup-linux-x64-gnu": "4.26.0", + "@rollup/rollup-linux-x64-musl": "4.26.0", + "@rollup/rollup-win32-arm64-msvc": "4.26.0", + "@rollup/rollup-win32-ia32-msvc": "4.26.0", + "@rollup/rollup-win32-x64-msvc": "4.26.0", "fsevents": "~2.3.2" } }, @@ -19818,13 +21414,14 @@ "dev": true }, "node_modules/sass": { - "version": "1.77.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", - "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "version": "1.80.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.7.tgz", + "integrity": "sha512-MVWvN0u5meytrSjsU7AWsbhoXi1sc58zADXFllfZzbsBT1GHjjar6JwBINYPRrkx/zqnQ6uqbQuHgE95O+C+eQ==", "dev": true, + "license": "MIT", "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -19832,13 +21429,17 @@ }, "engines": { "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, "node_modules/sass-loader": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.0.tgz", - "integrity": "sha512-n13Z+3rU9A177dk4888czcVFiC8CL9dii4qpXWUg3YIIgZEvi9TCFKjOQcbK0kJM7DJu9VucrZFddvNfYCPwtw==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.3.tgz", + "integrity": "sha512-gosNorT1RCkuCMyihv6FBRR7BMV06oKRAs+l4UMp1mlcVg9rWN6KMmUj3igjQwmYys4mDP3etEYJgiHRbgHCHA==", "dev": true, + "license": "MIT", "dependencies": { "neo-async": "^2.6.2" }, @@ -19874,6 +21475,36 @@ } } }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -20206,20 +21837,21 @@ } }, "node_modules/sigstore": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", - "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-3.0.0.tgz", + "integrity": "sha512-PHMifhh3EN4loMcHCz6l3v/luzgT3za+9f8subGgeMNjbJjzH4Ij/YoX3Gvu+kaouJRIlVdTHHCREADYf+ZteA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", "@sigstore/protobuf-specs": "^0.3.2", - "@sigstore/sign": "^2.3.2", - "@sigstore/tuf": "^2.3.4", - "@sigstore/verify": "^1.2.1" + "@sigstore/sign": "^3.0.0", + "@sigstore/tuf": "^3.0.0", + "@sigstore/verify": "^2.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/slash": { @@ -20236,6 +21868,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" @@ -20252,6 +21885,7 @@ "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" }, @@ -20264,6 +21898,7 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -20335,6 +21970,7 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, + "license": "MIT", "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -20345,12 +21981,13 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", - "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "^7.1.1", + "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" }, @@ -20438,6 +22075,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -20447,13 +22085,15 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -20463,7 +22103,8 @@ "version": "3.0.20", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/spdy": { "version": "4.0.2", @@ -20499,18 +22140,20 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz", + "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/statuses": { @@ -20609,6 +22252,7 @@ "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", @@ -20705,15 +22349,6 @@ "node": ">=4" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -21136,6 +22771,7 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -21170,6 +22806,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -21182,6 +22819,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -21194,6 +22832,34 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { "node": ">=8" } @@ -21203,6 +22869,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -21214,7 +22881,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/telejson": { "version": "7.2.0", @@ -21226,10 +22894,11 @@ } }, "node_modules/terser": { - "version": "5.31.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", - "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -21681,17 +23350,18 @@ } }, "node_modules/tuf-js": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", - "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-3.0.1.tgz", + "integrity": "sha512-+68OP1ZzSF84rTckf3FA95vJ1Zlx/uaXyiiKyPd1pA4rZNkpEvDAKmsu1xUSmbF/chCRYgZ6UZkDwC7PmzmAyA==", "dev": true, + "license": "MIT", "dependencies": { - "@tufjs/models": "2.0.1", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.1" + "@tufjs/models": "3.0.1", + "debug": "^4.3.6", + "make-fetch-happen": "^14.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/tween-functions": { @@ -21793,6 +23463,7 @@ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -21802,6 +23473,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -21815,6 +23487,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -21824,6 +23497,7 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -21853,27 +23527,29 @@ } }, "node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz", + "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==", "dev": true, + "license": "ISC", "dependencies": { - "unique-slug": "^4.0.0" + "unique-slug": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz", + "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/universalify": { @@ -22046,6 +23722,7 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -22070,10 +23747,11 @@ } }, "node_modules/vite": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz", - "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==", + "version": "5.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -22136,6 +23814,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -22152,6 +23831,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -22168,6 +23848,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -22184,6 +23865,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -22200,6 +23882,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -22216,6 +23899,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -22232,6 +23916,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -22248,6 +23933,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -22264,6 +23950,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -22280,6 +23967,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -22296,6 +23984,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -22312,6 +24001,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -22328,6 +24018,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -22344,6 +24035,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -22360,6 +24052,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -22376,6 +24069,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -22392,6 +24086,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -22408,6 +24103,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -22424,6 +24120,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -22440,6 +24137,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -22456,6 +24154,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -22472,6 +24171,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -22488,6 +24188,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -22502,6 +24203,7 @@ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -22535,9 +24237,9 @@ } }, "node_modules/vite/node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -22553,9 +24255,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -22578,10 +24281,11 @@ "dev": true }, "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -22613,7 +24317,8 @@ "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/webidl-conversions": { "version": "3.0.1", @@ -22623,18 +24328,19 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "^1.0.5", + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", @@ -22717,10 +24423,11 @@ } }, "node_modules/webpack-dev-server": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", - "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.1.0.tgz", + "integrity": "sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", @@ -22735,8 +24442,7 @@ "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.19.2", "graceful-fs": "^4.2.6", "html-entities": "^2.4.0", "http-proxy-middleware": "^2.0.3", @@ -22744,14 +24450,13 @@ "launch-editor": "^2.6.1", "open": "^10.0.3", "p-retry": "^6.2.0", - "rimraf": "^5.0.5", "schema-utils": "^4.2.0", "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^7.1.0", - "ws": "^8.16.0" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" @@ -22775,26 +24480,6 @@ } } }, - "node_modules/webpack-dev-server/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", @@ -22828,34 +24513,26 @@ "node": ">= 10" } }, - "node_modules/webpack-dev-server/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/webpack-dev-server/node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "dev": true, - "dependencies": { - "glob": "^10.3.7" + "node": ">=10.0.0" }, - "bin": { - "rimraf": "dist/esm/bin.mjs" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/webpack-hot-middleware": { @@ -23136,6 +24813,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -23203,13 +24881,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi/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" } @@ -23219,6 +24899,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -23233,6 +24914,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -23395,6 +25077,7 @@ "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -23403,9 +25086,9 @@ } }, "node_modules/zone.js": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", - "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.0.tgz", + "integrity": "sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==", "license": "MIT", "peer": true } diff --git a/webapp/package.json b/webapp/package.json index 67f81849..38357c06 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -20,15 +20,15 @@ "node": ">=20.16 <23" }, "dependencies": { - "@angular/animations": "18.2.1", + "@angular/animations": "19.0.5", "@angular/cdk": "18.2.7", - "@angular/common": "18.2.1", - "@angular/compiler": "18.2.1", - "@angular/core": "18.2.1", - "@angular/forms": "18.2.1", - "@angular/platform-browser": "18.2.1", - "@angular/platform-browser-dynamic": "18.2.1", - "@angular/router": "18.2.1", + "@angular/common": "19.0.5", + "@angular/compiler": "19.0.5", + "@angular/core": "19.0.5", + "@angular/forms": "19.0.5", + "@angular/platform-browser": "19.0.5", + "@angular/platform-browser-dynamic": "19.0.5", + "@angular/router": "19.0.5", "@ng-icons/core": "^29.10.0", "@ng-icons/lucide": ">=29.0.0", "@ng-icons/octicons": "29.5.0", @@ -78,11 +78,11 @@ "tslib": "2.6.3" }, "devDependencies": { - "@angular-devkit/build-angular": "^18.2.7", + "@angular-devkit/build-angular": "^19.0.6", "@angular-eslint/eslint-plugin": "18.3.0", "@angular-eslint/template-parser": "18.3.0", - "@angular/cli": "18.2.1", - "@angular/compiler-cli": "18.2.1", + "@angular/cli": "19.0.6", + "@angular/compiler-cli": "19.0.5", "@chromatic-com/storybook": "1.7.0", "@spartan-ng/cli": "^0.0.1-alpha.374", "@storybook/addon-essentials": "^8.4.7", diff --git a/webapp/src/app/about/about.component.ts b/webapp/src/app/about/about.component.ts index a3977696..8ba980fa 100644 --- a/webapp/src/app/about/about.component.ts +++ b/webapp/src/app/about/about.component.ts @@ -6,10 +6,9 @@ import { GitHub } from 'app/@types/github'; import { HlmAvatarModule } from '@spartan-ng/ui-avatar-helm'; @Component({ - selector: 'app-about', - standalone: true, - imports: [HlmAvatarModule], - templateUrl: './about.component.html' + selector: 'app-about', + imports: [HlmAvatarModule], + templateUrl: './about.component.html' }) export class AboutComponent { http = inject(HttpClient); diff --git a/webapp/src/app/app.component.ts b/webapp/src/app/app.component.ts index 48d18c45..793d7db5 100644 --- a/webapp/src/app/app.component.ts +++ b/webapp/src/app/app.component.ts @@ -6,10 +6,9 @@ import { FooterComponent } from './core/footer/footer.component'; import { SentryErrorHandler } from './core/sentry/sentry.error-handler'; @Component({ - selector: 'app-root', - standalone: true, - imports: [RouterOutlet, AngularQueryDevtools, HeaderComponent, FooterComponent], - templateUrl: './app.component.html' + selector: 'app-root', + imports: [RouterOutlet, AngularQueryDevtools, HeaderComponent, FooterComponent], + templateUrl: './app.component.html' }) export class AppComponent { title = 'Hephaestus'; diff --git a/webapp/src/app/app.config.ts b/webapp/src/app/app.config.ts index 3da5f04e..a63bb238 100644 --- a/webapp/src/app/app.config.ts +++ b/webapp/src/app/app.config.ts @@ -1,4 +1,4 @@ -import { APP_INITIALIZER, ApplicationConfig, ErrorHandler, provideExperimentalZonelessChangeDetection } from '@angular/core'; +import { ApplicationConfig, ErrorHandler, provideExperimentalZonelessChangeDetection, inject, provideAppInitializer } from '@angular/core'; import { provideRouter, Router } from '@angular/router'; import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; import { provideHttpClient, withInterceptors } from '@angular/common/http'; @@ -25,14 +25,17 @@ export const appConfig: ApplicationConfig = { provideHttpClient(withInterceptors([securityInterceptor])), provideAnimationsAsync(), { provide: BASE_PATH, useValue: environment.serverUrl }, - { provide: APP_INITIALIZER, useFactory: initializeAnalytics, multi: true, deps: [AnalyticsService] }, + provideAppInitializer(() => { + const initializerFn = initializeAnalytics(inject(AnalyticsService)); + return initializerFn(); + }), { provide: ErrorHandler, useClass: SentryErrorHandler }, { provide: TraceService, deps: [Router] }, - { - provide: APP_INITIALIZER, - useFactory: () => () => {}, - deps: [TraceService], - multi: true - } + provideAppInitializer(() => { + const initializerFn = (() => () => { + inject(TraceService); + })(); + return initializerFn(); + }) ] }; diff --git a/webapp/src/app/core/footer/footer.component.ts b/webapp/src/app/core/footer/footer.component.ts index 8f5f5539..d2e4e379 100644 --- a/webapp/src/app/core/footer/footer.component.ts +++ b/webapp/src/app/core/footer/footer.component.ts @@ -2,9 +2,8 @@ import { Component } from '@angular/core'; import { RouterModule } from '@angular/router'; @Component({ - selector: 'app-footer', - imports: [RouterModule], - standalone: true, - templateUrl: './footer.component.html' + selector: 'app-footer', + imports: [RouterModule], + templateUrl: './footer.component.html' }) export class FooterComponent {} diff --git a/webapp/src/app/core/header/ai-mentor/ai-mentor.component.ts b/webapp/src/app/core/header/ai-mentor/ai-mentor.component.ts index c56d1274..eb805239 100644 --- a/webapp/src/app/core/header/ai-mentor/ai-mentor.component.ts +++ b/webapp/src/app/core/header/ai-mentor/ai-mentor.component.ts @@ -6,10 +6,9 @@ import { HlmTooltipComponent, HlmTooltipTriggerDirective } from '@spartan-ng/ui- import { LucideAngularModule, BotMessageSquare } from 'lucide-angular'; @Component({ - selector: 'app-ai-mentor', - standalone: true, - imports: [LucideAngularModule, HlmButtonModule, HlmTooltipComponent, HlmTooltipTriggerDirective, BrnTooltipContentDirective, RouterModule], - templateUrl: './ai-mentor.component.html' + selector: 'app-ai-mentor', + imports: [LucideAngularModule, HlmButtonModule, HlmTooltipComponent, HlmTooltipTriggerDirective, BrnTooltipContentDirective, RouterModule], + templateUrl: './ai-mentor.component.html' }) export class AiMentorComponent { protected BotMessageSquare = BotMessageSquare; diff --git a/webapp/src/app/core/header/header.component.ts b/webapp/src/app/core/header/header.component.ts index 59a6dfb7..d0f8765c 100644 --- a/webapp/src/app/core/header/header.component.ts +++ b/webapp/src/app/core/header/header.component.ts @@ -15,29 +15,28 @@ import { provideIcons } from '@ng-icons/core'; import { AiMentorComponent } from './ai-mentor/ai-mentor.component'; @Component({ - selector: 'app-header', - templateUrl: './header.component.html', - standalone: true, - imports: [ - RouterLink, - RouterModule, - LucideAngularModule, - ThemeSwitcherComponent, - HlmButtonModule, - RequestFeatureComponent, - HlmAvatarModule, - HlmMenuModule, - BrnMenuTriggerDirective, - HlmIconComponent, - AiMentorComponent - ], - providers: [ - provideIcons({ - lucideUser, - lucideLogOut, - lucideSettings - }) - ] + selector: 'app-header', + templateUrl: './header.component.html', + imports: [ + RouterLink, + RouterModule, + LucideAngularModule, + ThemeSwitcherComponent, + HlmButtonModule, + RequestFeatureComponent, + HlmAvatarModule, + HlmMenuModule, + BrnMenuTriggerDirective, + HlmIconComponent, + AiMentorComponent + ], + providers: [ + provideIcons({ + lucideUser, + lucideLogOut, + lucideSettings + }) + ] }) export class HeaderComponent { protected Hammer = Hammer; diff --git a/webapp/src/app/core/header/request-feature/request-feature.component.ts b/webapp/src/app/core/header/request-feature/request-feature.component.ts index 4bbb6ae4..c84cc44e 100644 --- a/webapp/src/app/core/header/request-feature/request-feature.component.ts +++ b/webapp/src/app/core/header/request-feature/request-feature.component.ts @@ -5,10 +5,9 @@ import { HlmTooltipComponent, HlmTooltipTriggerDirective } from '@spartan-ng/ui- import { LucideAngularModule, Sparkles } from 'lucide-angular'; @Component({ - selector: 'app-request-feature', - standalone: true, - imports: [LucideAngularModule, HlmButtonModule, HlmTooltipComponent, HlmTooltipTriggerDirective, BrnTooltipContentDirective], - templateUrl: './request-feature.component.html' + selector: 'app-request-feature', + imports: [LucideAngularModule, HlmButtonModule, HlmTooltipComponent, HlmTooltipTriggerDirective, BrnTooltipContentDirective], + templateUrl: './request-feature.component.html' }) export class RequestFeatureComponent { protected Sparkles = Sparkles; diff --git a/webapp/src/app/core/theme/theme-switcher.component.ts b/webapp/src/app/core/theme/theme-switcher.component.ts index 436749e3..69965369 100644 --- a/webapp/src/app/core/theme/theme-switcher.component.ts +++ b/webapp/src/app/core/theme/theme-switcher.component.ts @@ -5,17 +5,16 @@ import { animate, state, style, transition, trigger } from '@angular/animations' import { HlmButtonModule } from '@spartan-ng/ui-button-helm'; @Component({ - selector: 'app-theme-switcher', - standalone: true, - imports: [HlmButtonModule, LucideAngularModule], - templateUrl: './theme-switcher.component.html', - animations: [ - trigger('iconTrigger', [ - state('*', style({ transform: 'rotate(0deg)' })), - transition('light => dark', animate('0.25s ease-out', style({ transform: 'rotate(90deg)' }))), - transition('dark => light', animate('0.25s ease-out', style({ transform: 'rotate(360deg)' }))) - ]) - ] + selector: 'app-theme-switcher', + imports: [HlmButtonModule, LucideAngularModule], + templateUrl: './theme-switcher.component.html', + animations: [ + trigger('iconTrigger', [ + state('*', style({ transform: 'rotate(0deg)' })), + transition('light => dark', animate('0.25s ease-out', style({ transform: 'rotate(90deg)' }))), + transition('dark => light', animate('0.25s ease-out', style({ transform: 'rotate(360deg)' }))) + ]) + ] }) export class ThemeSwitcherComponent { themeSwitcherService = inject(ThemeSwitcherService); diff --git a/webapp/src/app/home/home.component.ts b/webapp/src/app/home/home.component.ts index 8a884ab1..4c08df0b 100644 --- a/webapp/src/app/home/home.component.ts +++ b/webapp/src/app/home/home.component.ts @@ -17,10 +17,9 @@ import { LeaderboardLegendComponent } from './leaderboard/legend/legends.compone dayjs.extend(isoWeek); @Component({ - selector: 'app-home', - standalone: true, - imports: [LeaderboardComponent, LeaderboardFilterComponent, HlmAlertModule, LucideAngularModule, LeaderboardLegendComponent], - templateUrl: './home.component.html' + selector: 'app-home', + imports: [LeaderboardComponent, LeaderboardFilterComponent, HlmAlertModule, LucideAngularModule, LeaderboardLegendComponent], + templateUrl: './home.component.html' }) export class HomeComponent { protected CircleX = CircleX; diff --git a/webapp/src/app/home/leaderboard/filter/filter.component.ts b/webapp/src/app/home/leaderboard/filter/filter.component.ts index 19f3cf54..5525d8a3 100644 --- a/webapp/src/app/home/leaderboard/filter/filter.component.ts +++ b/webapp/src/app/home/leaderboard/filter/filter.component.ts @@ -5,10 +5,9 @@ import { LeaderboardFilterTimeframeComponent } from './timeframe/timeframe.compo import { LeaderboardFilterTeamComponent } from './team/team.component'; @Component({ - selector: 'app-leaderboard-filter', - standalone: true, - imports: [LucideAngularModule, FormsModule, LeaderboardFilterTimeframeComponent, LeaderboardFilterTeamComponent], - templateUrl: './filter.component.html' + selector: 'app-leaderboard-filter', + imports: [LucideAngularModule, FormsModule, LeaderboardFilterTimeframeComponent, LeaderboardFilterTeamComponent], + templateUrl: './filter.component.html' }) export class LeaderboardFilterComponent { protected ListFilter = ListFilter; diff --git a/webapp/src/app/home/leaderboard/filter/team/team.component.ts b/webapp/src/app/home/leaderboard/filter/team/team.component.ts index cd8a4e1d..477bf813 100644 --- a/webapp/src/app/home/leaderboard/filter/team/team.component.ts +++ b/webapp/src/app/home/leaderboard/filter/team/team.component.ts @@ -12,10 +12,9 @@ interface SelectOption { } @Component({ - selector: 'app-leaderboard-filter-team', - standalone: true, - imports: [BrnSelectModule, HlmSelectModule, HlmLabelModule, FormsModule], - templateUrl: './team.component.html' + selector: 'app-leaderboard-filter-team', + imports: [BrnSelectModule, HlmSelectModule, HlmLabelModule, FormsModule], + templateUrl: './team.component.html' }) export class LeaderboardFilterTeamComponent { teams = input.required(); diff --git a/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.ts b/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.ts index 840c81bb..6f8ba87a 100644 --- a/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.ts +++ b/webapp/src/app/home/leaderboard/filter/timeframe/timeframe.component.ts @@ -35,11 +35,10 @@ function formatLabel(weekIndex: number) { } @Component({ - selector: 'app-leaderboard-filter-timeframe', - standalone: true, - imports: [BrnSelectModule, HlmSelectModule, HlmLabelModule, FormsModule, HlmTooltipComponent, HlmTooltipTriggerDirective, BrnTooltipContentDirective, HlmIconComponent], - providers: [provideIcons({ lucideCircleHelp })], - templateUrl: './timeframe.component.html' + selector: 'app-leaderboard-filter-timeframe', + imports: [BrnSelectModule, HlmSelectModule, HlmLabelModule, FormsModule, HlmTooltipComponent, HlmTooltipTriggerDirective, BrnTooltipContentDirective, HlmIconComponent], + providers: [provideIcons({ lucideCircleHelp })], + templateUrl: './timeframe.component.html' }) export class LeaderboardFilterTimeframeComponent { private readonly route = inject(ActivatedRoute); diff --git a/webapp/src/app/home/leaderboard/leaderboard.component.ts b/webapp/src/app/home/leaderboard/leaderboard.component.ts index 583495a9..3b285787 100644 --- a/webapp/src/app/home/leaderboard/leaderboard.component.ts +++ b/webapp/src/app/home/leaderboard/leaderboard.component.ts @@ -18,24 +18,23 @@ import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import { lucideAward } from '@ng-icons/lucide'; @Component({ - selector: 'app-leaderboard', - standalone: true, - imports: [ - HlmAvatarModule, - HlmSkeletonModule, - TableComponent, - TableBodyDirective, - TableCellDirective, - TableHeaderDirective, - TableHeadDirective, - TableRowDirective, - ReviewsPopoverComponent, - NgIconComponent, - HlmIconComponent, - RouterLink - ], - providers: [provideIcons({ lucideAward })], - templateUrl: './leaderboard.component.html' + selector: 'app-leaderboard', + imports: [ + HlmAvatarModule, + HlmSkeletonModule, + TableComponent, + TableBodyDirective, + TableCellDirective, + TableHeaderDirective, + TableHeadDirective, + TableRowDirective, + ReviewsPopoverComponent, + NgIconComponent, + HlmIconComponent, + RouterLink + ], + providers: [provideIcons({ lucideAward })], + templateUrl: './leaderboard.component.html' }) export class LeaderboardComponent { securityStore = inject(SecurityStore); diff --git a/webapp/src/app/home/leaderboard/legend/legends.component.ts b/webapp/src/app/home/leaderboard/legend/legends.component.ts index d25d87dc..2b127c5a 100644 --- a/webapp/src/app/home/leaderboard/legend/legends.component.ts +++ b/webapp/src/app/home/leaderboard/legend/legends.component.ts @@ -3,7 +3,6 @@ import { NgIconComponent } from '@ng-icons/core'; import { octFileDiff, octCheck, octComment, octCommentDiscussion, octGitPullRequest } from '@ng-icons/octicons'; import { HlmIconComponent } from '@spartan-ng/ui-icon-helm'; import { HlmCardModule } from '@spartan-ng/ui-card-helm'; -import { HlmButtonDirective } from '@spartan-ng/ui-button-helm'; import { HlmAccordionContentComponent, HlmAccordionDirective, @@ -13,20 +12,18 @@ import { } from '@spartan-ng/ui-accordion-helm'; @Component({ - selector: 'app-leaderboard-legend', - standalone: true, - imports: [ - HlmAccordionDirective, - HlmAccordionItemDirective, - HlmAccordionTriggerDirective, - HlmAccordionContentComponent, - HlmAccordionIconDirective, - HlmCardModule, - NgIconComponent, - HlmIconComponent, - HlmButtonDirective - ], - templateUrl: './legend.component.html' + selector: 'app-leaderboard-legend', + imports: [ + HlmAccordionDirective, + HlmAccordionItemDirective, + HlmAccordionTriggerDirective, + HlmAccordionContentComponent, + HlmAccordionIconDirective, + HlmCardModule, + NgIconComponent, + HlmIconComponent, + ], + templateUrl: './legend.component.html' }) export class LeaderboardLegendComponent { protected octFileDiff = octFileDiff; diff --git a/webapp/src/app/home/leaderboard/reviews-popover/reviews-popover.component.ts b/webapp/src/app/home/leaderboard/reviews-popover/reviews-popover.component.ts index 48f25ec8..aa64b1fb 100644 --- a/webapp/src/app/home/leaderboard/reviews-popover/reviews-popover.component.ts +++ b/webapp/src/app/home/leaderboard/reviews-popover/reviews-popover.component.ts @@ -18,19 +18,18 @@ interface PullRequestInfo { } @Component({ - selector: 'app-reviews-popover', - standalone: true, - imports: [ - HlmPopoverModule, - BrnPopoverComponent, - BrnPopoverContentDirective, - BrnPopoverTriggerDirective, - HlmScrollAreaComponent, - HlmButtonModule, - NgIconComponent, - LucideAngularModule - ], - templateUrl: './reviews-popover.component.html' + selector: 'app-reviews-popover', + imports: [ + HlmPopoverModule, + BrnPopoverComponent, + BrnPopoverContentDirective, + BrnPopoverTriggerDirective, + HlmScrollAreaComponent, + HlmButtonModule, + NgIconComponent, + LucideAngularModule + ], + templateUrl: './reviews-popover.component.html' }) export class ReviewsPopoverComponent { protected ClipboardCopy = ClipboardCopy; diff --git a/webapp/src/app/mentor/chat-input/chat-input.component.ts b/webapp/src/app/mentor/chat-input/chat-input.component.ts index 25531134..012c7d28 100644 --- a/webapp/src/app/mentor/chat-input/chat-input.component.ts +++ b/webapp/src/app/mentor/chat-input/chat-input.component.ts @@ -9,10 +9,9 @@ import { HlmSpinnerComponent } from '@spartan-ng/ui-spinner-helm'; import { HlmInputDirective } from '@spartan-ng/ui-input-helm'; @Component({ - selector: 'app-chat-input', - templateUrl: './chat-input.component.html', - standalone: true, - imports: [CommonModule, HlmButtonModule, HlmSpinnerComponent, FormsModule, HlmCardModule, HlmInputDirective, LucideAngularModule] + selector: 'app-chat-input', + templateUrl: './chat-input.component.html', + imports: [CommonModule, HlmButtonModule, HlmSpinnerComponent, FormsModule, HlmCardModule, HlmInputDirective, LucideAngularModule] }) export class ChatInputComponent { protected Send = Send; diff --git a/webapp/src/app/mentor/mentor.component.ts b/webapp/src/app/mentor/mentor.component.ts index e8720147..02a3495d 100644 --- a/webapp/src/app/mentor/mentor.component.ts +++ b/webapp/src/app/mentor/mentor.component.ts @@ -13,20 +13,19 @@ import { HlmAlertModule } from '@spartan-ng/ui-alert-helm'; import { HlmScrollAreaComponent } from '@spartan-ng/ui-scrollarea-helm'; @Component({ - selector: 'app-mentor', - templateUrl: './mentor.component.html', - standalone: true, - imports: [ - CommonModule, - StartSessionCardComponent, - SessionsCardComponent, - MessagesComponent, - ChatInputComponent, - HlmButtonModule, - HlmAlertModule, - HlmScrollAreaComponent, - LucideAngularModule - ] + selector: 'app-mentor', + templateUrl: './mentor.component.html', + imports: [ + CommonModule, + StartSessionCardComponent, + SessionsCardComponent, + MessagesComponent, + ChatInputComponent, + HlmButtonModule, + HlmAlertModule, + HlmScrollAreaComponent, + LucideAngularModule + ] }) export class MentorComponent { protected CircleX = CircleX; diff --git a/webapp/src/app/mentor/messages/messages.component.ts b/webapp/src/app/mentor/messages/messages.component.ts index bbba89ff..ee01f7fe 100644 --- a/webapp/src/app/mentor/messages/messages.component.ts +++ b/webapp/src/app/mentor/messages/messages.component.ts @@ -7,10 +7,9 @@ import { Message } from '@app/core/modules/openapi'; import { HlmSkeletonComponent } from '@spartan-ng/ui-skeleton-helm'; @Component({ - selector: 'app-messages', - templateUrl: './messages.component.html', - standalone: true, - imports: [CommonModule, LucideAngularModule, HlmAvatarModule, HlmSkeletonComponent] + selector: 'app-messages', + templateUrl: './messages.component.html', + imports: [CommonModule, LucideAngularModule, HlmAvatarModule, HlmSkeletonComponent] }) export class MessagesComponent { protected BotMessageSquare = BotMessageSquare; diff --git a/webapp/src/app/mentor/sessions-card/sessions-card.component.ts b/webapp/src/app/mentor/sessions-card/sessions-card.component.ts index 3261301f..7dd3974a 100644 --- a/webapp/src/app/mentor/sessions-card/sessions-card.component.ts +++ b/webapp/src/app/mentor/sessions-card/sessions-card.component.ts @@ -9,10 +9,9 @@ import { HlmCardDirective } from '@spartan-ng/ui-card-helm'; import { HlmSkeletonComponent } from '@spartan-ng/ui-skeleton-helm'; @Component({ - standalone: true, - selector: 'app-sessions-card', - templateUrl: './sessions-card.component.html', - imports: [CommonModule, HlmSkeletonComponent, LucideAngularModule, BrnToggleDirective, HlmToggleDirective, HlmButtonModule, HlmCardDirective] + selector: 'app-sessions-card', + templateUrl: './sessions-card.component.html', + imports: [CommonModule, HlmSkeletonComponent, LucideAngularModule, BrnToggleDirective, HlmToggleDirective, HlmButtonModule, HlmCardDirective] }) export class SessionsCardComponent { protected Plus = Plus; diff --git a/webapp/src/app/mentor/start-session-card/start-session-card.component.ts b/webapp/src/app/mentor/start-session-card/start-session-card.component.ts index 96ebc725..7a3cae4c 100644 --- a/webapp/src/app/mentor/start-session-card/start-session-card.component.ts +++ b/webapp/src/app/mentor/start-session-card/start-session-card.component.ts @@ -4,10 +4,9 @@ import { HlmButtonModule } from '@spartan-ng/ui-button-helm'; import { HlmSkeletonComponent } from '@spartan-ng/ui-skeleton-helm'; @Component({ - selector: 'app-start-session-card', - standalone: true, - templateUrl: './start-session-card.component.html', - imports: [LucideAngularModule, HlmButtonModule, HlmSkeletonComponent] + selector: 'app-start-session-card', + templateUrl: './start-session-card.component.html', + imports: [LucideAngularModule, HlmButtonModule, HlmSkeletonComponent] }) export class StartSessionCardComponent { protected Plus = Plus; diff --git a/webapp/src/app/settings/settings.component.ts b/webapp/src/app/settings/settings.component.ts index 3f7917e4..9d968943 100644 --- a/webapp/src/app/settings/settings.component.ts +++ b/webapp/src/app/settings/settings.component.ts @@ -18,22 +18,21 @@ import { import { HlmButtonDirective } from '@spartan-ng/ui-button-helm'; @Component({ - selector: 'app-settings', - standalone: true, - imports: [ - BrnAlertDialogTriggerDirective, - BrnAlertDialogContentDirective, - HlmAlertDialogComponent, - HlmAlertDialogHeaderComponent, - HlmAlertDialogFooterComponent, - HlmAlertDialogTitleDirective, - HlmAlertDialogDescriptionDirective, - HlmAlertDialogCancelButtonDirective, - HlmAlertDialogActionButtonDirective, - HlmAlertDialogContentComponent, - HlmButtonDirective - ], - template: ` + selector: 'app-settings', + imports: [ + BrnAlertDialogTriggerDirective, + BrnAlertDialogContentDirective, + HlmAlertDialogComponent, + HlmAlertDialogHeaderComponent, + HlmAlertDialogFooterComponent, + HlmAlertDialogTitleDirective, + HlmAlertDialogDescriptionDirective, + HlmAlertDialogCancelButtonDirective, + HlmAlertDialogActionButtonDirective, + HlmAlertDialogContentComponent, + HlmButtonDirective + ], + template: `

Settings

diff --git a/webapp/src/app/ui/github-label/github-label.component.ts b/webapp/src/app/ui/github-label/github-label.component.ts index 9a1a57fd..4deca768 100644 --- a/webapp/src/app/ui/github-label/github-label.component.ts +++ b/webapp/src/app/ui/github-label/github-label.component.ts @@ -3,19 +3,18 @@ import type { LabelInfo } from '@app/core/modules/openapi'; import { HlmSkeletonModule } from '@spartan-ng/ui-skeleton-helm'; @Component({ - selector: 'app-github-label', - standalone: true, - imports: [HlmSkeletonModule], - styleUrls: ['./github-label.component.scss'], - host: { - '[style.--label-r]': 'colors().r', - '[style.--label-g]': 'colors().g', - '[style.--label-b]': 'colors().b', - '[style.--label-h]': 'colors().h', - '[style.--label-s]': 'colors().s', - '[style.--label-l]': 'colors().l' - }, - template: ` + selector: 'app-github-label', + imports: [HlmSkeletonModule], + styleUrls: ['./github-label.component.scss'], + host: { + '[style.--label-r]': 'colors().r', + '[style.--label-g]': 'colors().g', + '[style.--label-b]': 'colors().b', + '[style.--label-h]': 'colors().h', + '[style.--label-s]': 'colors().s', + '[style.--label-l]': 'colors().l' + }, + template: ` @if (isLoading()) { } @else { diff --git a/webapp/src/app/user/header/header.component.ts b/webapp/src/app/user/header/header.component.ts index f232a8a5..6504de34 100644 --- a/webapp/src/app/user/header/header.component.ts +++ b/webapp/src/app/user/header/header.component.ts @@ -20,10 +20,9 @@ const repoImages: { [key: string]: string } = { }; @Component({ - selector: 'app-user-header', - standalone: true, - imports: [NgIconComponent, HlmAvatarModule, HlmSkeletonModule, HlmIconModule, HlmTooltipComponent, HlmTooltipTriggerDirective, BrnTooltipContentDirective, HlmButtonModule], - templateUrl: './header.component.html' + selector: 'app-user-header', + imports: [NgIconComponent, HlmAvatarModule, HlmSkeletonModule, HlmIconModule, HlmTooltipComponent, HlmTooltipTriggerDirective, BrnTooltipContentDirective, HlmButtonModule], + templateUrl: './header.component.html' }) export class UserHeaderComponent { protected octClockFill = octClockFill; diff --git a/webapp/src/app/user/issue-card/issue-card.component.ts b/webapp/src/app/user/issue-card/issue-card.component.ts index a4b93fbb..21ba9dc0 100644 --- a/webapp/src/app/user/issue-card/issue-card.component.ts +++ b/webapp/src/app/user/issue-card/issue-card.component.ts @@ -9,10 +9,9 @@ import dayjs from 'dayjs'; import { cn } from '@app/utils'; @Component({ - selector: 'app-issue-card', - templateUrl: './issue-card.component.html', - imports: [NgIcon, HlmCardModule, HlmSkeletonComponent, GithubLabelComponent], - standalone: true + selector: 'app-issue-card', + templateUrl: './issue-card.component.html', + imports: [NgIcon, HlmCardModule, HlmSkeletonComponent, GithubLabelComponent] }) export class IssueCardComponent { protected readonly octCheck = octCheck; diff --git a/webapp/src/app/user/review-activity-card/review-activity-card.component.ts b/webapp/src/app/user/review-activity-card/review-activity-card.component.ts index 241e5c90..fbc94eb6 100644 --- a/webapp/src/app/user/review-activity-card/review-activity-card.component.ts +++ b/webapp/src/app/user/review-activity-card/review-activity-card.component.ts @@ -22,11 +22,10 @@ type ReviewStateCases = { }; @Component({ - selector: 'app-review-activity-card', - templateUrl: './review-activity-card.component.html', - imports: [NgIcon, HlmCardModule, HlmSkeletonComponent, HlmIconComponent, HlmTooltipTriggerDirective, HlmButtonModule], - providers: [provideIcons({ lucideAward })], - standalone: true + selector: 'app-review-activity-card', + templateUrl: './review-activity-card.component.html', + imports: [NgIcon, HlmCardModule, HlmSkeletonComponent, HlmIconComponent, HlmTooltipTriggerDirective, HlmButtonModule], + providers: [provideIcons({ lucideAward })] }) export class ReviewActivityCardComponent { protected readonly octCheck = octCheck; diff --git a/webapp/src/app/user/user-profile.component.ts b/webapp/src/app/user/user-profile.component.ts index ac38e422..f70c81c2 100644 --- a/webapp/src/app/user/user-profile.component.ts +++ b/webapp/src/app/user/user-profile.component.ts @@ -15,21 +15,20 @@ import { CircleX, LucideAngularModule, Info } from 'lucide-angular'; import { UserHeaderComponent } from './header/header.component'; @Component({ - selector: 'app-user-profile', - standalone: true, - imports: [ - LucideAngularModule, - ReviewActivityCardComponent, - IssueCardComponent, - HlmAvatarModule, - HlmSkeletonModule, - HlmIconModule, - HlmButtonModule, - HlmScrollAreaComponent, - UserHeaderComponent, - HlmAlertModule - ], - templateUrl: './user-profile.component.html' + selector: 'app-user-profile', + imports: [ + LucideAngularModule, + ReviewActivityCardComponent, + IssueCardComponent, + HlmAvatarModule, + HlmSkeletonModule, + HlmIconModule, + HlmButtonModule, + HlmScrollAreaComponent, + UserHeaderComponent, + HlmAlertModule + ], + templateUrl: './user-profile.component.html' }) export class UserProfileComponent { userService = inject(UserService); diff --git a/webapp/src/app/workspace/layout.component.ts b/webapp/src/app/workspace/layout.component.ts index fd1daa18..8dda2239 100644 --- a/webapp/src/app/workspace/layout.component.ts +++ b/webapp/src/app/workspace/layout.component.ts @@ -8,11 +8,10 @@ import { lucideCircleUser, lucideCog, lucideUsers } from '@ng-icons/lucide'; type NavItem = { icon: string; label: string; route: string; exact?: boolean }; @Component({ - selector: 'app-workspace-layout', - standalone: true, - imports: [CommonModule, RouterModule, ReactiveFormsModule, HlmButtonModule, RouterOutlet, RouterLinkActive, HlmIconComponent], - providers: [provideIcons({ lucideCircleUser, lucideCog, lucideUsers })], - templateUrl: './layout.component.html' + selector: 'app-workspace-layout', + imports: [CommonModule, RouterModule, ReactiveFormsModule, HlmButtonModule, RouterOutlet, RouterLinkActive, HlmIconComponent], + providers: [provideIcons({ lucideCircleUser, lucideCog, lucideUsers })], + templateUrl: './layout.component.html' }) export class WorkspaceLayoutComponent { navItems: NavItem[] = [ diff --git a/webapp/src/app/workspace/teams/table/teams-table.component.ts b/webapp/src/app/workspace/teams/table/teams-table.component.ts index d46b8d24..6191eeb4 100644 --- a/webapp/src/app/workspace/teams/table/teams-table.component.ts +++ b/webapp/src/app/workspace/teams/table/teams-table.component.ts @@ -42,31 +42,30 @@ const LOADING_TEAMS: TeamInfo[] = [ ]; @Component({ - selector: 'app-workspace-teams-table', - standalone: true, - imports: [ - FormsModule, - ReactiveFormsModule, - BrnMenuTriggerDirective, - HlmMenuModule, - BrnTableModule, - HlmTableModule, - HlmButtonModule, - HlmIconComponent, - HlmInputDirective, - HlmScrollAreaComponent, - BrnSelectModule, - HlmSelectModule, - HlmSkeletonModule, - HlmCardModule, - HlmPopoverModule, - BrnPopoverComponent, - BrnPopoverContentDirective, - BrnPopoverTriggerDirective, - GithubLabelComponent - ], - providers: [provideIcons({ lucideChevronDown, lucideGripHorizontal, lucideArrowUpDown, lucideRotateCw, lucideOctagonX, lucidePlus, lucideCheck, lucideTrash2 })], - templateUrl: './teams-table.component.html' + selector: 'app-workspace-teams-table', + imports: [ + FormsModule, + ReactiveFormsModule, + BrnMenuTriggerDirective, + HlmMenuModule, + BrnTableModule, + HlmTableModule, + HlmButtonModule, + HlmIconComponent, + HlmInputDirective, + HlmScrollAreaComponent, + BrnSelectModule, + HlmSelectModule, + HlmSkeletonModule, + HlmCardModule, + HlmPopoverModule, + BrnPopoverComponent, + BrnPopoverContentDirective, + BrnPopoverTriggerDirective, + GithubLabelComponent + ], + providers: [provideIcons({ lucideChevronDown, lucideGripHorizontal, lucideArrowUpDown, lucideRotateCw, lucideOctagonX, lucidePlus, lucideCheck, lucideTrash2 })], + templateUrl: './teams-table.component.html' }) export class WorkspaceTeamsTableComponent { protected workspaceService = inject(WorkspaceService); diff --git a/webapp/src/app/workspace/teams/teams.component.ts b/webapp/src/app/workspace/teams/teams.component.ts index 530be6af..a3362f7b 100644 --- a/webapp/src/app/workspace/teams/teams.component.ts +++ b/webapp/src/app/workspace/teams/teams.component.ts @@ -5,10 +5,9 @@ import { injectQuery } from '@tanstack/angular-query-experimental'; import { WorkspaceTeamsTableComponent } from './table/teams-table.component'; @Component({ - selector: 'app-workspace-teams', - standalone: true, - imports: [WorkspaceTeamsTableComponent], - template: ` + selector: 'app-workspace-teams', + imports: [WorkspaceTeamsTableComponent], + template: `

Teams

` diff --git a/webapp/src/app/workspace/users/table/users-table.component.ts b/webapp/src/app/workspace/users/table/users-table.component.ts index 8b1b734c..cea830c8 100644 --- a/webapp/src/app/workspace/users/table/users-table.component.ts +++ b/webapp/src/app/workspace/users/table/users-table.component.ts @@ -55,26 +55,25 @@ const LOADING_DATA: UserTeams[] = [ ]; @Component({ - selector: 'app-workspace-users-table', - standalone: true, - imports: [ - FormsModule, - RouterLink, - BrnMenuTriggerDirective, - HlmMenuModule, - BrnTableModule, - HlmTableModule, - HlmButtonModule, - HlmIconComponent, - HlmInputDirective, - HlmCheckboxComponent, - BrnSelectModule, - HlmSelectModule, - HlmSkeletonModule, - GithubLabelComponent - ], - providers: [provideIcons({ lucideChevronDown, lucideGripHorizontal, lucideArrowUpDown, lucideRotateCw, lucideOctagonX })], - templateUrl: './users-table.component.html' + selector: 'app-workspace-users-table', + imports: [ + FormsModule, + RouterLink, + BrnMenuTriggerDirective, + HlmMenuModule, + BrnTableModule, + HlmTableModule, + HlmButtonModule, + HlmIconComponent, + HlmInputDirective, + HlmCheckboxComponent, + BrnSelectModule, + HlmSelectModule, + HlmSkeletonModule, + GithubLabelComponent + ], + providers: [provideIcons({ lucideChevronDown, lucideGripHorizontal, lucideArrowUpDown, lucideRotateCw, lucideOctagonX })], + templateUrl: './users-table.component.html' }) export class WorkspaceUsersTableComponent { protected workspaceService = inject(WorkspaceService); diff --git a/webapp/src/app/workspace/users/users.component.ts b/webapp/src/app/workspace/users/users.component.ts index 38816f09..db6c2f9e 100644 --- a/webapp/src/app/workspace/users/users.component.ts +++ b/webapp/src/app/workspace/users/users.component.ts @@ -5,10 +5,9 @@ import { injectQuery } from '@tanstack/angular-query-experimental'; import { WorkspaceUsersTableComponent } from './table/users-table.component'; @Component({ - selector: 'app-workspace-users', - standalone: true, - imports: [WorkspaceUsersTableComponent], - template: ` + selector: 'app-workspace-users', + imports: [WorkspaceUsersTableComponent], + template: `

Users

` diff --git a/webapp/src/app/workspace/workspace.component.ts b/webapp/src/app/workspace/workspace.component.ts index 189b58f8..53684d5c 100644 --- a/webapp/src/app/workspace/workspace.component.ts +++ b/webapp/src/app/workspace/workspace.component.ts @@ -25,30 +25,29 @@ import { LucideAngularModule, Trash2 } from 'lucide-angular'; import { FormsModule } from '@angular/forms'; @Component({ - selector: 'app-workspace', - standalone: true, - imports: [ - FormsModule, - CommonModule, - RouterModule, - HlmCardModule, - HlmInputDirective, - HlmSkeletonModule, - HlmScrollAreaModule, - BrnAlertDialogTriggerDirective, - BrnAlertDialogContentDirective, - HlmAlertDialogComponent, - HlmAlertDialogHeaderComponent, - HlmAlertDialogFooterComponent, - HlmAlertDialogTitleDirective, - HlmAlertDialogDescriptionDirective, - HlmAlertDialogCancelButtonDirective, - HlmAlertDialogActionButtonDirective, - HlmAlertDialogContentComponent, - HlmButtonDirective, - LucideAngularModule - ], - templateUrl: './workspace.component.html' + selector: 'app-workspace', + imports: [ + FormsModule, + CommonModule, + RouterModule, + HlmCardModule, + HlmInputDirective, + HlmSkeletonModule, + HlmScrollAreaModule, + BrnAlertDialogTriggerDirective, + BrnAlertDialogContentDirective, + HlmAlertDialogComponent, + HlmAlertDialogHeaderComponent, + HlmAlertDialogFooterComponent, + HlmAlertDialogTitleDirective, + HlmAlertDialogDescriptionDirective, + HlmAlertDialogCancelButtonDirective, + HlmAlertDialogActionButtonDirective, + HlmAlertDialogContentComponent, + HlmButtonDirective, + LucideAngularModule + ], + templateUrl: './workspace.component.html' }) export class WorkspaceComponent { protected Trash2 = Trash2; diff --git a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog.component.ts b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog.component.ts index 272fbcfe..1736d659 100644 --- a/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog.component.ts +++ b/webapp/src/libs/ui/ui-alertdialog-helm/src/lib/hlm-alert-dialog.component.ts @@ -4,22 +4,21 @@ import { BrnDialogComponent } from '@spartan-ng/ui-dialog-brain'; import { HlmAlertDialogOverlayDirective } from './hlm-alert-dialog-overlay.directive'; @Component({ - selector: 'hlm-alert-dialog', - standalone: true, - template: ` + selector: 'hlm-alert-dialog', + template: ` `, - providers: [ - { - provide: BrnDialogComponent, - useExisting: forwardRef(() => HlmAlertDialogComponent), - }, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - exportAs: 'hlmAlertDialog', - imports: [BrnAlertDialogOverlayComponent, HlmAlertDialogOverlayDirective], + providers: [ + { + provide: BrnDialogComponent, + useExisting: forwardRef(() => HlmAlertDialogComponent), + }, + ], + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + exportAs: 'hlmAlertDialog', + imports: [BrnAlertDialogOverlayComponent, HlmAlertDialogOverlayDirective] }) export class HlmAlertDialogComponent extends BrnAlertDialogComponent { constructor() { diff --git a/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.spec.ts b/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.spec.ts index a7ada993..864008b7 100644 --- a/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.spec.ts +++ b/webapp/src/libs/ui/ui-aspectratio-helm/src/lib/helm-aspect-ratio.directive.spec.ts @@ -3,17 +3,16 @@ import { type ComponentFixture, TestBed } from '@angular/core/testing'; import { HlmAspectRatioDirective } from './helm-aspect-ratio.directive'; @Component({ - selector: 'hlm-mock', - standalone: true, - imports: [HlmAspectRatioDirective], - template: ` + selector: 'hlm-mock', + imports: [HlmAspectRatioDirective], + template: `
Sample image
- `, + ` }) class MockComponent { public ratio: number | undefined = 16 / 9; diff --git a/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.spec.ts b/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.spec.ts index a774d54b..c4ff37ac 100644 --- a/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.spec.ts +++ b/webapp/src/libs/ui/ui-avatar-helm/src/lib/fallback/hlm-avatar-fallback.directive.spec.ts @@ -4,12 +4,11 @@ import { hexColorFor, isBright } from '@spartan-ng/ui-avatar-brain'; import { HlmAvatarFallbackDirective } from './hlm-avatar-fallback.directive'; @Component({ - selector: 'hlm-mock', - standalone: true, - imports: [HlmAvatarFallbackDirective], - template: ` + selector: 'hlm-mock', + imports: [HlmAvatarFallbackDirective], + template: ` fallback2 - `, + ` }) class HlmMockComponent { public userCls = ''; diff --git a/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.spec.ts b/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.spec.ts index aa9ed2c3..211859b0 100644 --- a/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.spec.ts +++ b/webapp/src/libs/ui/ui-avatar-helm/src/lib/hlm-avatar.component.spec.ts @@ -4,14 +4,13 @@ import { BrnAvatarFallbackDirective, BrnAvatarImageDirective } from '@spartan-ng import { HlmAvatarComponent } from './hlm-avatar.component'; @Component({ - selector: 'hlm-mock', - imports: [BrnAvatarImageDirective, BrnAvatarFallbackDirective, HlmAvatarComponent], - template: ` + selector: 'hlm-mock', + imports: [BrnAvatarImageDirective, BrnAvatarFallbackDirective, HlmAvatarComponent], + template: ` fallback - `, - standalone: true, + ` }) class MockComponent { @Input() public class = ''; diff --git a/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.spec.ts b/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.spec.ts index 7a83f816..7f5429cc 100644 --- a/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.spec.ts +++ b/webapp/src/libs/ui/ui-avatar-helm/src/lib/image/hlm-avatar-image.directive.spec.ts @@ -3,12 +3,11 @@ import { type ComponentFixture, TestBed } from '@angular/core/testing'; import { HlmAvatarImageDirective } from './hlm-avatar-image.directive'; @Component({ - selector: 'hlm-mock', - standalone: true, - imports: [HlmAvatarImageDirective], - template: ` + selector: 'hlm-mock', + imports: [HlmAvatarImageDirective], + template: ` Avatar image - `, + ` }) class HlmMockComponent { public userCls = ''; diff --git a/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox-checkicon.component.ts b/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox-checkicon.component.ts index b78fad32..13564bcc 100644 --- a/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox-checkicon.component.ts +++ b/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox-checkicon.component.ts @@ -6,16 +6,15 @@ import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-checkbox-checkicon', - standalone: true, - imports: [HlmIconComponent], - providers: [provideIcons({ lucideCheck })], - host: { - '[class]': '_computedClass()', - }, - template: ` + selector: 'hlm-checkbox-checkicon', + imports: [HlmIconComponent], + providers: [provideIcons({ lucideCheck })], + host: { + '[class]': '_computedClass()', + }, + template: ` - `, + ` }) export class HlmCheckboxCheckIconComponent { private readonly _brnCheckbox = inject(BrnCheckboxComponent); diff --git a/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox.component.ts b/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox.component.ts index 2afbbfba..f241038f 100644 --- a/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox.component.ts +++ b/webapp/src/libs/ui/ui-checkbox-helm/src/lib/hlm-checkbox.component.ts @@ -12,10 +12,9 @@ export const HLM_CHECKBOX_VALUE_ACCESSOR = { }; @Component({ - selector: 'hlm-checkbox', - standalone: true, - imports: [BrnCheckboxComponent, HlmCheckboxCheckIconComponent], - template: ` + selector: 'hlm-checkbox', + imports: [BrnCheckboxComponent, HlmCheckboxCheckIconComponent], + template: ` `, - host: { - class: 'contents', - '[attr.id]': 'null', - '[attr.aria-label]': 'null', - '[attr.aria-labelledby]': 'null', - '[attr.aria-describedby]': 'null', - }, - providers: [HLM_CHECKBOX_VALUE_ACCESSOR], + host: { + class: 'contents', + '[attr.id]': 'null', + '[attr.aria-label]': 'null', + '[attr.aria-labelledby]': 'null', + '[attr.aria-describedby]': 'null', + }, + providers: [HLM_CHECKBOX_VALUE_ACCESSOR] }) export class HlmCheckboxComponent { public readonly userClass = input('', { alias: 'class' }); diff --git a/webapp/src/libs/ui/ui-formfield-helm/src/lib/form-field.spec.ts b/webapp/src/libs/ui/ui-formfield-helm/src/lib/form-field.spec.ts index 8edf1c52..ddb0a4b3 100644 --- a/webapp/src/libs/ui/ui-formfield-helm/src/lib/form-field.spec.ts +++ b/webapp/src/libs/ui/ui-formfield-helm/src/lib/form-field.spec.ts @@ -15,10 +15,9 @@ import { HlmHintDirective } from './hlm-hint.directive'; const DIRECTIVES = [HlmFormFieldComponent, HlmErrorDirective, HlmHintDirective, HlmInputDirective]; @Component({ - standalone: true, - selector: 'single-form-field-example', - imports: [ReactiveFormsModule, ...DIRECTIVES], - template: ` + selector: 'single-form-field-example', + imports: [ReactiveFormsModule, ...DIRECTIVES], + template: ` Your name is required This is your public display name. - `, + ` }) class SingleFormFieldMock { public name = new FormControl('', Validators.required); } @Component({ - standalone: true, - selector: 'single-form-field-dirty-example', - imports: [ReactiveFormsModule, ...DIRECTIVES], - template: ` + selector: 'single-form-field-dirty-example', + imports: [ReactiveFormsModule, ...DIRECTIVES], + template: ` This is your public display name. `, - providers: [{ provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher }], + providers: [{ provide: ErrorStateMatcher, useClass: ShowOnDirtyErrorStateMatcher }] }) class SingleFormFieldDirtyMock { public name = new FormControl('', Validators.required); diff --git a/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.spec.ts b/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.spec.ts index 513bf9e2..cc3c0943 100644 --- a/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.spec.ts +++ b/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.spec.ts @@ -6,14 +6,13 @@ import { type RenderResult, render } from '@testing-library/angular'; import { HlmIconComponent } from './hlm-icon.component'; @Component({ - selector: 'hlm-mock', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - imports: [HlmIconComponent], - providers: [provideIcons({ lucideCheck })], - template: ` + selector: 'hlm-mock', + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [HlmIconComponent], + providers: [provideIcons({ lucideCheck })], + template: ` - `, + ` }) class HlmMockComponent { @Input() public size = 'base'; diff --git a/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.ts b/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.ts index b3f92e5d..97e2511f 100644 --- a/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.ts +++ b/webapp/src/libs/ui/ui-icon-helm/src/lib/hlm-icon.component.ts @@ -48,12 +48,11 @@ const isDefinedSize = (size: IconSize): size is DefinedSizes => { const TAILWIND_H_W_PATTERN = /\b(h-\d+|w-\d+)\b/g; @Component({ - selector: 'hlm-icon', - standalone: true, - imports: [NgIconComponent], - encapsulation: ViewEncapsulation.None, - changeDetection: ChangeDetectionStrategy.OnPush, - template: ` + selector: 'hlm-icon', + imports: [NgIconComponent], + encapsulation: ViewEncapsulation.None, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` `, - host: { - '[class]': '_computedClass()', - }, + host: { + '[class]': '_computedClass()', + } }) export class HlmIconComponent implements OnDestroy { private readonly _host = inject(ElementRef); diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-check.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-check.component.ts index 13172258..fc132b6f 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-check.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-check.component.ts @@ -5,17 +5,16 @@ import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-menu-item-check', - standalone: true, - providers: [provideIcons({ lucideCheck })], - imports: [HlmIconComponent], - template: ` + selector: 'hlm-menu-item-check', + providers: [provideIcons({ lucideCheck })], + imports: [HlmIconComponent], + template: ` `, - host: { - '[class]': '_computedClass()', - }, + host: { + '[class]': '_computedClass()', + } }) export class HlmMenuItemCheckComponent { public readonly userClass = input('', { alias: 'class' }); diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.component.ts index 0acf64ed..0c985510 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-radio.component.ts @@ -5,17 +5,16 @@ import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-menu-item-radio', - standalone: true, - providers: [provideIcons({ lucideCircle })], - imports: [HlmIconComponent], - template: ` + selector: 'hlm-menu-item-radio', + providers: [provideIcons({ lucideCircle })], + imports: [HlmIconComponent], + template: ` `, - host: { - '[class]': '_computedClass()', - }, + host: { + '[class]': '_computedClass()', + } }) export class HlmMenuItemRadioComponent { public readonly userClass = input('', { alias: 'class' }); diff --git a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-sub-indicator.component.ts b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-sub-indicator.component.ts index 7c129a18..cd6dae72 100644 --- a/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-sub-indicator.component.ts +++ b/webapp/src/libs/ui/ui-menu-helm/src/lib/hlm-menu-item-sub-indicator.component.ts @@ -5,16 +5,15 @@ import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-menu-item-sub-indicator', - standalone: true, - providers: [provideIcons({ lucideChevronRight })], - imports: [HlmIconComponent], - template: ` + selector: 'hlm-menu-item-sub-indicator', + providers: [provideIcons({ lucideChevronRight })], + imports: [HlmIconComponent], + template: ` `, - host: { - '[class]': '_computedClass()', - }, + host: { + '[class]': '_computedClass()', + } }) export class HlmMenuItemSubIndicatorComponent { public readonly userClass = input('', { alias: 'class' }); diff --git a/webapp/src/libs/ui/ui-scrollarea-helm/src/lib/hlm-scroll-area.component.ts b/webapp/src/libs/ui/ui-scrollarea-helm/src/lib/hlm-scroll-area.component.ts index 1442877c..1cdba07b 100644 --- a/webapp/src/libs/ui/ui-scrollarea-helm/src/lib/hlm-scroll-area.component.ts +++ b/webapp/src/libs/ui/ui-scrollarea-helm/src/lib/hlm-scroll-area.component.ts @@ -12,10 +12,9 @@ import type { ClassValue } from 'clsx'; import { NgScrollbarModule } from 'ngx-scrollbar'; @Component({ - selector: 'hlm-scroll-area', - standalone: true, - imports: [NgScrollbarModule], - template: ` + selector: 'hlm-scroll-area', + imports: [NgScrollbarModule], + template: ` `, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation.None, - host: { - '[class]': '_computedClass()', - }, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation.None, + host: { + '[class]': '_computedClass()', + } }) export class HlmScrollAreaComponent { protected readonly _computedClass = computed(() => hlm('block', this.userClass())); diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-option.component.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-option.component.ts index c82ef05c..e0e578d7 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-option.component.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-option.component.ts @@ -6,15 +6,14 @@ import { BrnSelectOptionDirective } from '@spartan-ng/ui-select-brain'; import type { ClassValue } from 'clsx'; @Component({ - selector: 'hlm-option', - standalone: true, - changeDetection: ChangeDetectionStrategy.OnPush, - hostDirectives: [{ directive: BrnSelectOptionDirective, inputs: ['disabled', 'value'] }], - providers: [provideIcons({ lucideCheck })], - host: { - '[class]': '_computedClass()', - }, - template: ` + selector: 'hlm-option', + changeDetection: ChangeDetectionStrategy.OnPush, + hostDirectives: [{ directive: BrnSelectOptionDirective, inputs: ['disabled', 'value'] }], + providers: [provideIcons({ lucideCheck })], + host: { + '[class]': '_computedClass()', + }, + template: ` `, - imports: [HlmIconComponent], + imports: [HlmIconComponent] }) export class HlmSelectOptionComponent { protected readonly _brnSelectOption = inject(BrnSelectOptionDirective, { host: true }); diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-down.component.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-down.component.ts index 653d5db1..0a7cf315 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-down.component.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-down.component.ts @@ -3,15 +3,14 @@ import { lucideChevronDown } from '@ng-icons/lucide'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; @Component({ - selector: 'hlm-select-scroll-down', - standalone: true, - imports: [HlmIconComponent], - providers: [provideIcons({ lucideChevronDown })], - host: { - class: 'flex cursor-default items-center justify-center py-1', - }, - template: ` + selector: 'hlm-select-scroll-down', + imports: [HlmIconComponent], + providers: [provideIcons({ lucideChevronDown })], + host: { + class: 'flex cursor-default items-center justify-center py-1', + }, + template: ` - `, + ` }) export class HlmSelectScrollDownComponent {} diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-up.component.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-up.component.ts index 021e299c..69c8867a 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-up.component.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-scroll-up.component.ts @@ -3,15 +3,14 @@ import { lucideChevronUp } from '@ng-icons/lucide'; import { HlmIconComponent, provideIcons } from '@spartan-ng/ui-icon-helm'; @Component({ - selector: 'hlm-select-scroll-up', - standalone: true, - imports: [HlmIconComponent], - providers: [provideIcons({ lucideChevronUp })], - host: { - class: 'flex cursor-default items-center justify-center py-1', - }, - template: ` + selector: 'hlm-select-scroll-up', + imports: [HlmIconComponent], + providers: [provideIcons({ lucideChevronUp })], + host: { + class: 'flex cursor-default items-center justify-center py-1', + }, + template: ` - `, + ` }) export class HlmSelectScrollUpComponent {} diff --git a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-trigger.component.ts b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-trigger.component.ts index afbe6651..8f396f77 100644 --- a/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-trigger.component.ts +++ b/webapp/src/libs/ui/ui-select-helm/src/lib/hlm-select-trigger.component.ts @@ -30,12 +30,10 @@ export const selectTriggerVariants = cva( type SelectTriggerVariants = VariantProps; @Component({ - selector: 'hlm-select-trigger', - standalone: true, - imports: [BrnSelectTriggerDirective, HlmIconComponent], - providers: [provideIcons({ lucideChevronDown })], - - template: ` + selector: 'hlm-select-trigger', + imports: [BrnSelectTriggerDirective, HlmIconComponent], + providers: [provideIcons({ lucideChevronDown })], + template: ` - `, + ` }) export class HlmSelectTriggerComponent { protected readonly icon = contentChild(HlmIconComponent); diff --git a/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-ng-model.component.ignore.spec.ts b/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-ng-model.component.ignore.spec.ts index 4f3cd6ed..55e981ab 100644 --- a/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-ng-model.component.ignore.spec.ts +++ b/webapp/src/libs/ui/ui-switch-helm/src/lib/hlm-switch-ng-model.component.ignore.spec.ts @@ -2,9 +2,8 @@ import { Component, Input } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { HlmSwitchComponent } from './hlm-switch.component'; @Component({ - selector: 'hlm-switch-ng-model', - standalone: true, - template: ` + selector: 'hlm-switch-ng-model', + template: `