From 83838777970baa5c805d60aa7569110c1c661862 Mon Sep 17 00:00:00 2001 From: kamask Date: Sat, 5 Sep 2026 12:46:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=BD=D0=BE=D0=B3=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=BD=D0=B8=D0=B5=20=D0=B8=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Обновлены Angular и зависимости до последней версии (22.1.5, postcss, zod и т.д.) - Заменена загрузка данных в конструкторе на API resource() в task-list и task-details - Переименовать селекторы компонентов из app-* в ksk-crm-* - Добавлены конфиги окружения с настраиваемым API URL - Подключены @ng-icons/lucide для иконок - Добавлен шрифт Inter и CSS-переменные для темизации - Обновлён target tsconfig до ES2023 (для доступности методов в js) --- angular.json | 19 +- package.json | 5 +- pnpm-lock.yaml | 537 +++++++++++--------- pnpm-workspace.yaml | 5 + src/app/app.config.ts | 3 +- src/app/app.ts | 24 +- src/app/features/tasks/task-details.ts | 32 +- src/app/features/tasks/task-item.ts | 3 +- src/app/features/tasks/task-list.ts | 37 +- src/app/features/tasks/task-new.ts | 2 +- src/app/features/tasks/task-service.ts | 4 +- src/environments/environment.development.ts | 4 + src/environments/environment.ts | 4 + src/index.html | 2 +- src/styles.css | 19 + tsconfig.json | 2 +- 16 files changed, 394 insertions(+), 308 deletions(-) create mode 100644 pnpm-workspace.yaml create mode 100644 src/environments/environment.development.ts create mode 100644 src/environments/environment.ts diff --git a/angular.json b/angular.json index 5f96c3e..ad66641 100644 --- a/angular.json +++ b/angular.json @@ -12,7 +12,7 @@ "schematics": {}, "root": "", "sourceRoot": "src", - "prefix": "app", + "prefix": "ksk-crm", "architect": { "build": { "builder": "@angular/build:application", @@ -25,9 +25,7 @@ "input": "public" } ], - "styles": [ - "src/styles.css" - ] + "styles": ["src/styles.css"] }, "configurations": { "production": { @@ -48,7 +46,13 @@ "development": { "optimization": false, "extractLicenses": false, - "sourceMap": true + "sourceMap": true, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.development.ts" + } + ] } }, "defaultConfiguration": "production" @@ -63,6 +67,11 @@ "buildTarget": "kskcrmspa:build:development" } }, + "options": { + "host": "0.0.0.0", + "port": 4200, + "allowedHosts": true + }, "defaultConfiguration": "development" }, "test": { diff --git a/package.json b/package.json index afef125..932aa5b 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,9 @@ "@angular/forms": "^22.1.0", "@angular/platform-browser": "^22.1.0", "@angular/router": "^22.1.0", + "@fontsource/inter": "^5.3.0", + "@ng-icons/core": "^36.0.0", + "@ng-icons/lucide": "^36.0.0", "pocketbase": "^0.28.0", "rxjs": "~7.8.0", "tslib": "^2.3.0" @@ -30,4 +33,4 @@ "typescript": "~6.0.2", "vitest": "^4.0.8" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9df7396..dc8312b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,22 +10,31 @@ importers: dependencies: '@angular/common': specifier: ^22.1.0 - version: 22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2) + version: 22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2) '@angular/compiler': specifier: ^22.1.0 - version: 22.1.3 + version: 22.1.5 '@angular/core': specifier: ^22.1.0 - version: 22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2) + version: 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) '@angular/forms': specifier: ^22.1.0 - version: 22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(@angular/platform-browser@22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)))(rxjs@7.8.2) + version: 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/platform-browser': specifier: ^22.1.0 - version: 22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)) + version: 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)) '@angular/router': specifier: ^22.1.0 - version: 22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(@angular/platform-browser@22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)))(rxjs@7.8.2) + version: 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2) + '@fontsource/inter': + specifier: ^5.3.0 + version: 5.3.0 + '@ng-icons/core': + specifier: ^36.0.0 + version: 36.0.0(@angular-devkit/schematics@22.1.7(chokidar@5.0.0))(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@schematics/angular@22.1.7(chokidar@5.0.0))(rxjs@7.8.2) + '@ng-icons/lucide': + specifier: ^36.0.0 + version: 36.0.0(@ng-icons/core@36.0.0(@angular-devkit/schematics@22.1.7(chokidar@5.0.0))(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@schematics/angular@22.1.7(chokidar@5.0.0))(rxjs@7.8.2)) pocketbase: specifier: ^0.28.0 version: 0.28.0 @@ -38,13 +47,13 @@ importers: devDependencies: '@angular/build': specifier: ^22.1.5 - version: 22.1.5(@angular/compiler-cli@22.1.3(@angular/compiler@22.1.3)(typescript@6.0.3))(@angular/compiler@22.1.3)(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(@angular/platform-browser@22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)))(chokidar@5.0.0)(postcss@8.5.26)(tslib@2.8.1)(typescript@6.0.3)(vitest@4.1.11(jsdom@28.1.0)(vite@8.1.5(esbuild@0.28.2)(sass@1.101.0))) + version: 22.1.7(@angular/compiler-cli@22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3))(@angular/compiler@22.1.5)(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(chokidar@5.0.0)(postcss@8.5.28)(tslib@2.8.1)(typescript@6.0.3)(vitest@4.1.11(jsdom@28.1.0)(vite@8.1.5(esbuild@0.28.2)(sass@1.101.0))) '@angular/cli': specifier: ^22.1.5 - version: 22.1.5(chokidar@5.0.0) + version: 22.1.7(chokidar@5.0.0) '@angular/compiler-cli': specifier: ^22.1.0 - version: 22.1.3(@angular/compiler@22.1.3)(typescript@6.0.3) + version: 22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3) jsdom: specifier: ^28.0.0 version: 28.1.0 @@ -67,13 +76,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.5': - resolution: {integrity: sha512-DAticcJ2tw3M+D1CH4HhlCgMK5tAb0CwSsnczNMJB9QgQsBC/JhOozQTvgnyCvagitX9u+408YcwEW/Wo2pnzA==} + '@angular-devkit/architect@0.2201.7': + resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/core@22.1.5': - resolution: {integrity: sha512-HiY6d5dkIdJs5grP9OHvgkf14QOcDIo+hbuT7YKuLItQ++ZxCwUabJMLCCJ5R0KrstE5NqED0dNcyk5WD01t5Q==} + '@angular-devkit/core@22.1.7': + resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -81,12 +90,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.5': - resolution: {integrity: sha512-HTmo9y8wjXKtJGVTYomTjZsjWzhirpu1pPRAzsVob3eiYOuxv1qDRAgWiHXNGp5CpnbHunZweXY/WffNGOFRyA==} + '@angular-devkit/schematics@22.1.7': + resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.5': - resolution: {integrity: sha512-YqsbHZK3/HFmLLhwxa5SpN+3ABoVo5GFLV0fiEXCQg2KC7gw2pL15x692jxrq8gEGzT7O27bnjWkvFZ0bBHCnw==} + '@angular/build@22.1.7': + resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -96,7 +105,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.5 + '@angular/ssr': ^22.1.7 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -137,38 +146,38 @@ packages: vitest: optional: true - '@angular/cli@22.1.5': - resolution: {integrity: sha512-YZkhI64INQHJkZ13h2n0/0PBrQ5ZZvFGiprrDiCOLAD0y1fehguL0PGp9HxF3ZWf+xWRyP//tIte2gmyAaiWLw==} + '@angular/cli@22.1.7': + resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@22.1.3': - resolution: {integrity: sha512-QtMkjhiRd0EnmKR50bw3WbCWYTi6CmA72nnSz1BLQPpaLSi2goloCrPPniHz8fP+w2ESrmmlOWxs1Da3COgnQg==} + '@angular/common@22.1.5': + resolution: {integrity: sha512-KgB+MTDotlTn67YK4sCTNFLja+G+EMCqHo5bB1cvRKw7Gd9AtAi5kgDmYzMk7ftJ9qJ2O30zXR56Hpw37J2CTQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/core': 22.1.3 + '@angular/core': 22.1.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@22.1.3': - resolution: {integrity: sha512-37lLaDp0RHWZ/lmJqCmIEr0HOM2D5ulHy61gqTBm7KRj3Y6ZaxR8B/JqZmeIpPzKFILVsga+NQ4A8apBUkmezw==} + '@angular/compiler-cli@22.1.5': + resolution: {integrity: sha512-XyeLlCqngUiZK8EMQo2DFfDxDoFdlsOe98eK7++N9Cs7qETTaMM3mu8iZbT2o6KhEwzjabW+mqipts1/ecEhyQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} hasBin: true peerDependencies: - '@angular/compiler': 22.1.3 + '@angular/compiler': 22.1.5 typescript: '>=6.0 <6.1' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@22.1.3': - resolution: {integrity: sha512-L8Mw2r7bGG/obqgQC+RU3mdFJ3NtLgO5gWhEC1ylcHpLCMPIAXYsMKJIL8dnS78S1wXo/omXwmJ4FiIlCwWahg==} + '@angular/compiler@22.1.5': + resolution: {integrity: sha512-GvM0oNCuI09Up5Lk0ZQCX5yA2cGyHYB/rZsa/EGTnzwuxgLDlhOOa19QaVaoxDCo9vO43Ix9rG7SLppEv+qd1w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} - '@angular/core@22.1.3': - resolution: {integrity: sha512-313+Xkf970AmStJE0E/zNJW/9xvDExQG+6TNltBBl+KJsW0q5dffK2w2PQfV4mtTquBqYoeHSRsms4WgjBKL8g==} + '@angular/core@22.1.5': + resolution: {integrity: sha512-uiL+xVL4264NEuc3E5ILd6meSv9I4Xt82VQHvYlAVYlcjHlWY49yVe0/apzncUOGxUKzvK8/GDbyFEH7WfJYFw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/compiler': 22.1.3 + '@angular/compiler': 22.1.5 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: @@ -177,33 +186,33 @@ packages: zone.js: optional: true - '@angular/forms@22.1.3': - resolution: {integrity: sha512-b4ual9pgfNqcnEHord50w960DDFIytG3Qb3bu2aCgzmagvRlg9wrtwQNqY+oqY2FVq7c9McNUN7MZRcWl9HNdQ==} + '@angular/forms@22.1.5': + resolution: {integrity: sha512-E7pDEKtSvO1MNw222ZcvphzT4GAQ9D725v2Rq7ft8orT2qvHS6RlVnEc5ioPDhYTAD0HmbwDmutxkcuxqc16VA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/common': 22.1.3 - '@angular/core': 22.1.3 - '@angular/platform-browser': 22.1.3 + '@angular/common': 22.1.5 + '@angular/core': 22.1.5 + '@angular/platform-browser': 22.1.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/platform-browser@22.1.3': - resolution: {integrity: sha512-A8McE6AclwZa2ese4jMfZZu+qZfBFQ4Hl6CaMpzJ1C6Vv6+sXkLu9pouTosJEsUE+etVdepDsqau90lhzgw3Eg==} + '@angular/platform-browser@22.1.5': + resolution: {integrity: sha512-xRX7TvHzFcur5bhZUqT7QPkezcSuWRzcltcsrqh3UsZnEJ2p+olilFyLq5yAneO13hffNifFkxngoSxVwKwnHw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/animations': 22.1.3 - '@angular/common': 22.1.3 - '@angular/core': 22.1.3 + '@angular/animations': 22.1.5 + '@angular/common': 22.1.5 + '@angular/core': 22.1.5 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/router@22.1.3': - resolution: {integrity: sha512-23owvZKCpdL7Yh3EzBj4OLf3x0z+jT9b57Qk96wdwI8Lsyf9L78/RJPYCutJ5r+zq3pFM/BHVKyd+2hkfH7N6Q==} + '@angular/router@22.1.5': + resolution: {integrity: sha512-RYgL2iTGpMFcqZtXjcjxGVqGraDfOdk/epbLK8z/vy5cI+W2uVdiu5ait7xhv82KoaWT8lUU3sDc4jdI17qHcg==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} peerDependencies: - '@angular/common': 22.1.3 - '@angular/core': 22.1.3 - '@angular/platform-browser': 22.1.3 + '@angular/common': 22.1.5 + '@angular/core': 22.1.5 + '@angular/platform-browser': 22.1.5 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@5.1.11': @@ -312,8 +321,8 @@ packages: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@4.2.0': - resolution: {integrity: sha512-5+5LEmFuY1AjXdYhmgjTJogtQnP1evJ1zrBZGUNZ0thkpwnnmKxcHdAMn/OtFjAb25zA+jKDVYVRl+5G7rjv1A==} + '@csstools/css-color-parser@4.2.2': + resolution: {integrity: sha512-3QKjR/vxyjcSXBLgb6lP0S3MGdvwbmqSsvLPbYdVORqPDc8FX1HAJ0Spk38bxaRXgvENTA47tlhhbb5Z2e8hEg==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 @@ -325,8 +334,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.8': - resolution: {integrity: sha512-CpMLjAvwQg3BL5S0IeqsZNMH7EQrEWi0kLKOC13ZBF0ZwERiLWlibNPJr8G1kdU3Ms/r2KiNrF81pUh2HwAHdg==} + '@csstools/css-syntax-patches-for-csstree@1.1.12': + resolution: {integrity: sha512-3vLQK+dXxhBMR2Wx99PTCifE+vHtW2ndZWyla8yK813ev6oGhyn8Lja8jCyGAWTJ+LEYZK7EVtJxrDj8ztevJw==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -517,6 +526,9 @@ packages: '@noble/hashes': optional: true + '@fontsource/inter@5.3.0': + resolution: {integrity: sha512-RofMylZmjlJEfELXeNHFWBRcSs75rGU/6bV2S2jfnvv/3rPXPGe0LgUJTklcHZ9lM4OZmAVFhcJPnACfb91A3g==} + '@harperfast/extended-iterable@1.0.3': resolution: {integrity: sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==} @@ -526,12 +538,12 @@ packages: peerDependencies: hono: ^4 - '@inquirer/ansi@2.0.7': - resolution: {integrity: sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==} + '@inquirer/ansi@2.0.8': + resolution: {integrity: sha512-WpQM+Ti6Z40EFwwt+uL2p4UabT+W179zHp6HhLVOzfbwnVn05IPO/eXIZXGNqcT1jbQ15SujNLzQ39k4QPPxBQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} - '@inquirer/checkbox@5.2.2': - resolution: {integrity: sha512-Y5/bAScMy5Y+9isCx0SKbyJebMCaXXX5em0kxkj115eZNscgV9srOHrgyfS0e5xAVymIfOh9piYBKDILktsMMg==} + '@inquirer/checkbox@5.2.4': + resolution: {integrity: sha512-oKT5RNeO9oKYizSyOxKb66IrKUsYVMQD2tnjllYW4wmSOe9WawfL3OE2p82JuvAyo+/nDIEem5P4Bm/ZIVYVew==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -548,8 +560,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@6.2.0': - resolution: {integrity: sha512-SKXarWrYhtpqOEctf9XGCGy29QjsvJAM0Aq9ZR9z4Ns94OmpqudOly+aSEfNqUf9SwsQaUgY9+Z8hyzG0xX8fw==} + '@inquirer/confirm@6.3.1': + resolution: {integrity: sha512-HvnOHal39DTenOVoRpIy8Z+n4YYfNa3Qhi/P8zFqn9/d1crpmQG0DPx34rwOeOFvotgKr9Vov/14OmKR/Iwfjw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -566,8 +578,8 @@ packages: '@types/node': optional: true - '@inquirer/core@12.0.0': - resolution: {integrity: sha512-+nnvFEXIB08CZNVXpvW3B+zHW96QXvGUjNKJ8NJIPqAZi5Kd4WhYt2S3C234ReepG1qw2HOlEUbjYVHBowXObA==} + '@inquirer/core@12.0.2': + resolution: {integrity: sha512-9pBhkxE14uUlnHhs8lOt7qVPtS4caRY6CjADl8COejl9Mf7w8i6Uoe3DrljCqYtmYM3Iv2Q6EmPxx/oTYbvTAQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -575,8 +587,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@5.3.0': - resolution: {integrity: sha512-nnsP/IdJ8s83q7ZuObmgn12QM+uLCkab9E0Oordojbn62WUg1c+v9Ou/F/057pgh0ppX0W+Hj5bO/Dp5hsxQtA==} + '@inquirer/editor@5.3.2': + resolution: {integrity: sha512-7ruKO5d/wxhGHxdCQ3eyP/aBNrPTZ+Ju7ERtnAwuIsu0RSLs6kotlTRkOxHatbD6sDaEEdwsD82pzFiT9ESIyQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -584,8 +596,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@5.1.2': - resolution: {integrity: sha512-OWIH1IyyWqEKIyqC9Xy+Bnga7NkGMovFdo4atYZMUOTRqf6rO2WCv9E/1MyzvOErDBCxs+9UFliRUDc50xs/jw==} + '@inquirer/expand@5.1.4': + resolution: {integrity: sha512-12o4aYnjWouoq0fyVhYIL+hwXAaga+kntA/wrijFmVvn2heinkdvkbEXRt1Ob/9IOJ285US5tntjfI/Ukt2YkA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -593,8 +605,8 @@ packages: '@types/node': optional: true - '@inquirer/external-editor@3.0.4': - resolution: {integrity: sha512-tZbbaK2ovq6vlrRBNQvjrypmrED/p5x2ncIHQ79cD55tei3dD96v5glMMA+6tiq7K104i/25DVYKWVPJuV6ptA==} + '@inquirer/external-editor@3.0.5': + resolution: {integrity: sha512-f3QQJRIX5ZEneBHNUIuPjmbdzHnmRFJA8r2dkcb8q+OM5Uv5KtnuAttQumnrjcBVBM3mcTX1CkmtAkU58VRZxg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -602,12 +614,12 @@ packages: '@types/node': optional: true - '@inquirer/figures@2.0.8': - resolution: {integrity: sha512-tApbon79GM9ry56ja/Ud3SY2CL4TQsao9fIwDQbgTeNY55025GdMzQ2+UdegV/lx51VNGUB59M0v0nMpybYY4Q==} + '@inquirer/figures@2.0.9': + resolution: {integrity: sha512-EAWgUTGQ/Umgga51dE3B2PUHbufuXarDfg86uVgoSgNHNNQnyFKcOrQLWVqYMghuSyHh8+2HUH0Js9cTC1WAdg==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} - '@inquirer/input@5.1.3': - resolution: {integrity: sha512-F/BZHtyEzP+HO+IGVd4AjBRgvX/ywm42bx8S0+dENk2YclzE9tJ3X/15THwtT6ehApmKvdYDMsVTuyyDod0gOQ==} + '@inquirer/input@5.1.5': + resolution: {integrity: sha512-2MkYYFD1Owt1eRBwHhsLSutysRodWasA4DVpl42KJKGmzwBTXRYAIXujisrt0UW0UohUlMjNjLfMDbw4emRbfw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -615,8 +627,8 @@ packages: '@types/node': optional: true - '@inquirer/number@4.2.0': - resolution: {integrity: sha512-ew+fSDijsQ/WhD4TV3XLb+if400cDuzTzHfGR8sTNBXkK9CYDWoGE8fhaO8GbT312pNv1AJEOsDxy/z/HVettA==} + '@inquirer/number@4.2.2': + resolution: {integrity: sha512-tjW1gMIQsFb/9Ie11i8SpuPARBdyCVfC5XOeVugWovrdm8CpjzN+A1CBX5QwCCN2mtNmpgDDCnuLCCT94cQ5zA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -624,8 +636,8 @@ packages: '@types/node': optional: true - '@inquirer/password@5.1.2': - resolution: {integrity: sha512-nSdufycW8xynEVssFkNQEYIzTySilog0UlfOVRwh3pXzPSk4frXUT2jZWjHnKae6RU9PaoF9wfy1pGwewQuqGw==} + '@inquirer/password@5.2.1': + resolution: {integrity: sha512-InA6nJxMCXPavPBiTKYHIsYiWz/mkIsk1rkI6pKp5w18gVawqrZOj7eSzSmPJa3j0pVxXm6RlrFP1BE9YeOixA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -642,8 +654,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@5.3.2': - resolution: {integrity: sha512-oPSKrYK1X1bMkjXDzIKHUkJp195LFSfgbnVtXnjSKGFjrCbS6I+wyvfAZTwKE9BSt3HwWgfD7JfsXALBgCogzQ==} + '@inquirer/rawlist@5.3.4': + resolution: {integrity: sha512-c4fDwOpQsjJDHjXdHJE1/xXH6w9/BAiyu3QKzH9Ww5Xm1q37mzyUNa20L7qdtM1ECi4e+oUEKjhK8hR37OMAMQ==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -651,8 +663,8 @@ packages: '@types/node': optional: true - '@inquirer/search@4.3.0': - resolution: {integrity: sha512-HFxXE5w727ctSUcAwrDquftJGjMgu36OeV5SHEXMlr2j/ahzmRX9xSEeVolV8tzYnTf45cg6vGkdMMRdm3RPhQ==} + '@inquirer/search@4.3.2': + resolution: {integrity: sha512-YIaEhWmfkdHEWOKwhF/oJar35FFTTrAdzNbJDo9lSsRT6E/obRPx9oVm4rkTMtlcJSqGYttNtLbcHQef9Qw2yw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -660,8 +672,8 @@ packages: '@types/node': optional: true - '@inquirer/select@5.2.2': - resolution: {integrity: sha512-RkI8dRHWt+bh04oLixvF1kFzKC7e5rqJoHKkzcqSHATebBXFC6GmrT8ddbVkgSzLV0HnHs2cPFuBINr8otij8Q==} + '@inquirer/select@5.2.4': + resolution: {integrity: sha512-L9ubNaJdoBsiom/AfPKq0QLHTkhhCFCtszzdVidGremrlJjPZfGlmvp+IULKIbnYjtVFWnvb4mhiEdNTZ12ugA==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -669,8 +681,8 @@ packages: '@types/node': optional: true - '@inquirer/type@4.0.7': - resolution: {integrity: sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==} + '@inquirer/type@4.1.1': + resolution: {integrity: sha512-yJoHYrMnxIsJZCY+0Vb66Dy3he3kL3e2wOBKhoSwWWAzZAY82emlxwgprCtp6yRixvNRNq9ztfRWQYPNr3Go7A==} engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' @@ -685,8 +697,8 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -893,6 +905,20 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + '@ng-icons/core@36.0.0': + resolution: {integrity: sha512-u4BxD2MTeZNbugAHQcUrG2lhOFDmfbiZwqvxA2uABHrYQmTG1xjnTe7kivJJ/Cl2MfTy8U8aIL3u0eryaPavCA==} + peerDependencies: + '@angular-devkit/schematics': '>=22.0.0' + '@angular/common': '>=22.0.0' + '@angular/core': '>=22.0.0' + '@schematics/angular': '>=22.0.0' + rxjs: ^6.5.3 || ^7.4.0 + + '@ng-icons/lucide@36.0.0': + resolution: {integrity: sha512-fxZ8nOyUAhD3Ty6IM02h3kgVfCQ09NbyJkoS2BiaPd1BnU3oCX90RfbmJYkOBSJc/1gl0IkA7CTR0Xmi/g0zvg==} + peerDependencies: + '@ng-icons/core': ^36.0.0 + '@oxc-parser/binding-android-arm-eabi@0.142.0': resolution: {integrity: sha512-ZiRGDutGsv1G6bL/ozy/koC0Sv39T1DqyoC4KD1DOy9ZoACm1O5UWhEK2c02Qdk+4lfLVkvFa/mQ0fm/4h1BtQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1304,8 +1330,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.5': - resolution: {integrity: sha512-3UXlO4YoGgQ6nEBbCTGRRHTfQuDcKgHbRaiivzSinHzOYigsskwvloMsa0LCBCO/3uJpDIjJIyTW0XKhDti0iA==} + '@schematics/angular@22.1.7': + resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@standard-schema/spec@1.1.0': @@ -1403,8 +1429,8 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - baseline-browser-mapping@2.11.19: - resolution: {integrity: sha512-Grytf1xOxOEMTGRwx6rLGKkTabd4vMg3VrKdj/7joCmV0qgh4QwMMO6xh34YEXQqirAuUdgQGa5orJQQ+69RBw==} + baseline-browser-mapping@2.11.20: + resolution: {integrity: sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw==} engines: {node: '>=6.0.0'} hasBin: true @@ -1573,8 +1599,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.414: - resolution: {integrity: sha512-aYlviXiaXBbzvKgyALpcMmqa3Np3sDr0XnZbEG62n2UpZFbEcjQ4EEMOLGzVPhwVnwTz0lvKY+GcARbunuHekw==} + electron-to-chromium@1.5.420: + resolution: {integrity: sha512-2yD6XreGusOfNV+dUcvipJEXc3n/n7fgr7996aszTG+YY5E4mqM4tOq/3uhP129cazL9YHbVWSpc79ePotWtPA==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1649,8 +1675,8 @@ packages: resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} - express-rate-limit@8.6.2: - resolution: {integrity: sha512-YH4ru+eOJxQABscKFfRCy9R7x9QFGdezclVMwwgFFndzS2Xnm0uo6B0ABZsLhcpeptGv2qvuJVWlQr9gQZoC3A==} + express-rate-limit@8.7.0: + resolution: {integrity: sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' @@ -1668,8 +1694,8 @@ packages: fast-string-width@3.0.2: resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - fast-uri@3.1.6: - resolution: {integrity: sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==} + fast-uri@3.1.7: + resolution: {integrity: sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==} fast-wrap-ansi@0.2.2: resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} @@ -1738,8 +1764,8 @@ packages: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} - hono@4.13.4: - resolution: {integrity: sha512-AGEwKIyRMHRv1t8Wjwa3LHxQ61X5CqrdFT+4BRNTpqS5aJNnpl5WLjADb7vFlJzI/8uK7T5QLVApCMQKNa3LgQ==} + hono@4.13.5: + resolution: {integrity: sha512-O6+/eCYRkzzzy0rPWwKLiGBR1nFuUPZynnwjxN1MBA62NNqbT0wQEzQyK2gSO5yDIDB336sXQleAhOHrzlYyKw==} engines: {node: '>=16.9.0'} hosted-git-info@10.1.1: @@ -1782,8 +1808,8 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ip-address@10.5.0: - resolution: {integrity: sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==} + ip-address@10.7.0: + resolution: {integrity: sha512-BGFsyJd5mpXp3rK6jIdADLNgpJUK1jnjzvYF8lK+VyDab9JAmqN0YOKDdP17HlgKb2+ehPgDc8EtnRLbGCAMhA==} engines: {node: '>= 12'} ipaddr.js@1.9.1: @@ -2017,8 +2043,8 @@ packages: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true - node-releases@2.0.53: - resolution: {integrity: sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==} + node-releases@2.0.54: + resolution: {integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==} engines: {node: '>=18'} npm-package-arg@14.0.0: @@ -2116,8 +2142,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss@8.5.26: - resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} + postcss@8.5.28: + resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} engines: {node: ^10 || ^12 || >=14} prettier@3.9.6: @@ -2146,8 +2172,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.15.3: - resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==} + qs@6.16.0: + resolution: {integrity: sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==} engines: {node: '>=0.6'} range-parser@1.3.0: @@ -2300,8 +2326,8 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.3.0: - resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} engines: {node: '>=18'} tinyglobby@0.2.17: @@ -2351,8 +2377,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - update-browserslist-db@1.3.1: - resolution: {integrity: sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==} + update-browserslist-db@1.3.2: + resolution: {integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -2524,6 +2550,9 @@ packages: zod@4.4.3: resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + zod@4.5.4: + resolution: {integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==} + snapshots: '@acemir/cssom@0.9.31': {} @@ -2533,14 +2562,14 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.5(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.5(chokidar@5.0.0) + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.5(chokidar@5.0.0)': + '@angular-devkit/core@22.1.7(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -2551,9 +2580,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.5(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.5(chokidar@5.0.0) + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -2561,12 +2590,12 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.5(@angular/compiler-cli@22.1.3(@angular/compiler@22.1.3)(typescript@6.0.3))(@angular/compiler@22.1.3)(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(@angular/platform-browser@22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)))(chokidar@5.0.0)(postcss@8.5.26)(tslib@2.8.1)(typescript@6.0.3)(vitest@4.1.11(jsdom@28.1.0)(vite@8.1.5(esbuild@0.28.2)(sass@1.101.0)))': + '@angular/build@22.1.7(@angular/compiler-cli@22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3))(@angular/compiler@22.1.5)(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(chokidar@5.0.0)(postcss@8.5.28)(tslib@2.8.1)(typescript@6.0.3)(vitest@4.1.11(jsdom@28.1.0)(vite@8.1.5(esbuild@0.28.2)(sass@1.101.0)))': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.5(chokidar@5.0.0) - '@angular/compiler': 22.1.3 - '@angular/compiler-cli': 22.1.3(@angular/compiler@22.1.3)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular/compiler': 22.1.5 + '@angular/compiler-cli': 22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3) '@babel/core': 8.0.1 '@babel/helper-annotate-as-pure': 8.0.0 '@babel/helper-split-export-declaration': 7.24.7 @@ -2594,10 +2623,10 @@ snapshots: vite: 8.1.5(esbuild@0.28.2)(sass@1.101.0) watchpack: 2.5.2 optionalDependencies: - '@angular/core': 22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2) - '@angular/platform-browser': 22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) + '@angular/platform-browser': 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)) lmdb: 3.5.6 - postcss: 8.5.26 + postcss: 8.5.28 vitest: 4.1.11(jsdom@28.1.0)(vite@8.1.5(esbuild@0.28.2)(sass@1.101.0)) transitivePeerDependencies: - '@types/node' @@ -2613,15 +2642,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.5(chokidar@5.0.0)': + '@angular/cli@22.1.7(chokidar@5.0.0)': dependencies: - '@angular-devkit/architect': 0.2201.5(chokidar@5.0.0) - '@angular-devkit/core': 22.1.5(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.5(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) '@inquirer/prompts': 8.5.2 '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(zod@4.4.3) - '@schematics/angular': 22.1.5(chokidar@5.0.0) + '@schematics/angular': 22.1.7(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -2635,17 +2664,17 @@ snapshots: - chokidar - supports-color - '@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2)': + '@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2)': dependencies: - '@angular/core': 22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@22.1.3(@angular/compiler@22.1.3)(typescript@6.0.3)': + '@angular/compiler-cli@22.1.5(@angular/compiler@22.1.5)(typescript@6.0.3)': dependencies: - '@angular/compiler': 22.1.3 + '@angular/compiler': 22.1.5 '@babel/core': 8.0.1 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 chokidar: 5.0.0 convert-source-map: 1.9.0 reflect-metadata: 0.2.2 @@ -2655,38 +2684,38 @@ snapshots: optionalDependencies: typescript: 6.0.3 - '@angular/compiler@22.1.3': + '@angular/compiler@22.1.5': dependencies: tslib: 2.8.1 - '@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)': + '@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 22.1.3 + '@angular/compiler': 22.1.5 - '@angular/forms@22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(@angular/platform-browser@22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)))(rxjs@7.8.2)': + '@angular/forms@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2)': dependencies: - '@angular/common': 22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2) - '@angular/core': 22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2) - '@angular/platform-browser': 22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)) + '@angular/common': 22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) + '@angular/platform-browser': 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)) '@standard-schema/spec': 1.1.0 rxjs: 7.8.2 tslib: 2.8.1 - zod: 4.4.3 + zod: 4.5.4 - '@angular/platform-browser@22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))': + '@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))': dependencies: - '@angular/common': 22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2) - '@angular/core': 22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2) + '@angular/common': 22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) tslib: 2.8.1 - '@angular/router@22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(@angular/platform-browser@22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)))(rxjs@7.8.2)': + '@angular/router@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@angular/platform-browser@22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)))(rxjs@7.8.2)': dependencies: - '@angular/common': 22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2) - '@angular/core': 22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2) - '@angular/platform-browser': 22.1.3(@angular/common@22.1.3(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.3(@angular/compiler@22.1.3)(rxjs@7.8.2)) + '@angular/common': 22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) + '@angular/platform-browser': 22.1.5(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2)) rxjs: 7.8.2 tslib: 2.8.1 @@ -2694,7 +2723,7 @@ snapshots: dependencies: '@asamuzakjp/generational-cache': 1.0.1 '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-color-parser': 4.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.2.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 @@ -2819,7 +2848,7 @@ snapshots: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@4.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-color-parser@4.2.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/color-helpers': 6.1.1 '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) @@ -2830,7 +2859,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.8(css-tree@3.2.1)': + '@csstools/css-syntax-patches-for-csstree@1.1.12(css-tree@3.2.1)': optionalDependencies: css-tree: 3.2.1 @@ -2943,137 +2972,139 @@ snapshots: '@exodus/bytes@1.15.1': {} + '@fontsource/inter@5.3.0': {} + '@harperfast/extended-iterable@1.0.3': optional: true - '@hono/node-server@2.1.1(hono@4.13.4)': + '@hono/node-server@2.1.1(hono@4.13.5)': dependencies: - hono: 4.13.4 + hono: 4.13.5 - '@inquirer/ansi@2.0.7': {} + '@inquirer/ansi@2.0.8': {} - '@inquirer/checkbox@5.2.2': + '@inquirer/checkbox@5.2.4': dependencies: - '@inquirer/ansi': 2.0.7 - '@inquirer/core': 12.0.0 - '@inquirer/figures': 2.0.8 - '@inquirer/type': 4.0.7 + '@inquirer/ansi': 2.0.8 + '@inquirer/core': 12.0.2 + '@inquirer/figures': 2.0.9 + '@inquirer/type': 4.1.1 '@inquirer/confirm@6.1.1': dependencies: '@inquirer/core': 11.2.1 - '@inquirer/type': 4.0.7 + '@inquirer/type': 4.1.1 - '@inquirer/confirm@6.2.0': + '@inquirer/confirm@6.3.1': dependencies: - '@inquirer/core': 12.0.0 - '@inquirer/type': 4.0.7 + '@inquirer/core': 12.0.2 + '@inquirer/type': 4.1.1 '@inquirer/core@11.2.1': dependencies: - '@inquirer/ansi': 2.0.7 - '@inquirer/figures': 2.0.8 - '@inquirer/type': 4.0.7 + '@inquirer/ansi': 2.0.8 + '@inquirer/figures': 2.0.9 + '@inquirer/type': 4.1.1 cli-width: 4.1.0 fast-wrap-ansi: 0.2.2 mute-stream: 3.0.0 signal-exit: 4.1.0 - '@inquirer/core@12.0.0': + '@inquirer/core@12.0.2': dependencies: - '@inquirer/ansi': 2.0.7 - '@inquirer/figures': 2.0.8 - '@inquirer/type': 4.0.7 + '@inquirer/ansi': 2.0.8 + '@inquirer/figures': 2.0.9 + '@inquirer/type': 4.1.1 cli-width: 4.1.0 fast-wrap-ansi: 0.2.2 mute-stream: 3.0.0 signal-exit: 4.1.0 - '@inquirer/editor@5.3.0': + '@inquirer/editor@5.3.2': dependencies: - '@inquirer/core': 12.0.0 - '@inquirer/external-editor': 3.0.4 - '@inquirer/type': 4.0.7 + '@inquirer/core': 12.0.2 + '@inquirer/external-editor': 3.0.5 + '@inquirer/type': 4.1.1 - '@inquirer/expand@5.1.2': + '@inquirer/expand@5.1.4': dependencies: - '@inquirer/core': 12.0.0 - '@inquirer/type': 4.0.7 + '@inquirer/core': 12.0.2 + '@inquirer/type': 4.1.1 - '@inquirer/external-editor@3.0.4': + '@inquirer/external-editor@3.0.5': dependencies: chardet: 2.2.0 iconv-lite: 0.7.3 - '@inquirer/figures@2.0.8': {} + '@inquirer/figures@2.0.9': {} - '@inquirer/input@5.1.3': + '@inquirer/input@5.1.5': dependencies: - '@inquirer/core': 12.0.0 - '@inquirer/type': 4.0.7 + '@inquirer/core': 12.0.2 + '@inquirer/type': 4.1.1 - '@inquirer/number@4.2.0': + '@inquirer/number@4.2.2': dependencies: - '@inquirer/core': 12.0.0 - '@inquirer/type': 4.0.7 + '@inquirer/core': 12.0.2 + '@inquirer/type': 4.1.1 - '@inquirer/password@5.1.2': + '@inquirer/password@5.2.1': dependencies: - '@inquirer/ansi': 2.0.7 - '@inquirer/core': 12.0.0 - '@inquirer/type': 4.0.7 + '@inquirer/ansi': 2.0.8 + '@inquirer/core': 12.0.2 + '@inquirer/type': 4.1.1 '@inquirer/prompts@8.5.2': dependencies: - '@inquirer/checkbox': 5.2.2 - '@inquirer/confirm': 6.2.0 - '@inquirer/editor': 5.3.0 - '@inquirer/expand': 5.1.2 - '@inquirer/input': 5.1.3 - '@inquirer/number': 4.2.0 - '@inquirer/password': 5.1.2 - '@inquirer/rawlist': 5.3.2 - '@inquirer/search': 4.3.0 - '@inquirer/select': 5.2.2 + '@inquirer/checkbox': 5.2.4 + '@inquirer/confirm': 6.3.1 + '@inquirer/editor': 5.3.2 + '@inquirer/expand': 5.1.4 + '@inquirer/input': 5.1.5 + '@inquirer/number': 4.2.2 + '@inquirer/password': 5.2.1 + '@inquirer/rawlist': 5.3.4 + '@inquirer/search': 4.3.2 + '@inquirer/select': 5.2.4 - '@inquirer/rawlist@5.3.2': + '@inquirer/rawlist@5.3.4': dependencies: - '@inquirer/core': 12.0.0 - '@inquirer/type': 4.0.7 + '@inquirer/core': 12.0.2 + '@inquirer/type': 4.1.1 - '@inquirer/search@4.3.0': + '@inquirer/search@4.3.2': dependencies: - '@inquirer/core': 12.0.0 - '@inquirer/figures': 2.0.8 - '@inquirer/type': 4.0.7 + '@inquirer/core': 12.0.2 + '@inquirer/figures': 2.0.9 + '@inquirer/type': 4.1.1 - '@inquirer/select@5.2.2': + '@inquirer/select@5.2.4': dependencies: - '@inquirer/ansi': 2.0.7 - '@inquirer/core': 12.0.0 - '@inquirer/figures': 2.0.8 - '@inquirer/type': 4.0.7 + '@inquirer/ansi': 2.0.8 + '@inquirer/core': 12.0.2 + '@inquirer/figures': 2.0.9 + '@inquirer/type': 4.1.1 - '@inquirer/type@4.0.7': {} + '@inquirer/type@4.1.1': {} '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@listr2/prompt-adapter-inquirer@4.2.5(@inquirer/prompts@8.5.2)(listr2@11.0.0)': dependencies: '@inquirer/prompts': 8.5.2 - '@inquirer/type': 4.0.7 + '@inquirer/type': 4.1.1 listr2: 11.0.0 transitivePeerDependencies: - '@types/node' @@ -3101,7 +3132,7 @@ snapshots: '@modelcontextprotocol/sdk@1.30.0(zod@4.4.3)': dependencies: - '@hono/node-server': 2.1.1(hono@4.13.4) + '@hono/node-server': 2.1.1(hono@4.13.5) ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) content-type: 1.0.5 @@ -3110,8 +3141,8 @@ snapshots: eventsource: 3.0.7 eventsource-parser: 3.1.1 express: 5.2.1 - express-rate-limit: 8.6.2(express@5.2.1) - hono: 4.13.4 + express-rate-limit: 8.7.0(express@5.2.1) + hono: 4.13.5 jose: 6.2.10 json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 @@ -3225,6 +3256,20 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@ng-icons/core@36.0.0(@angular-devkit/schematics@22.1.7(chokidar@5.0.0))(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@schematics/angular@22.1.7(chokidar@5.0.0))(rxjs@7.8.2)': + dependencies: + '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular/common': 22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2) + '@schematics/angular': 22.1.7(chokidar@5.0.0) + rxjs: 7.8.2 + tslib: 2.8.1 + + '@ng-icons/lucide@36.0.0(@ng-icons/core@36.0.0(@angular-devkit/schematics@22.1.7(chokidar@5.0.0))(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@schematics/angular@22.1.7(chokidar@5.0.0))(rxjs@7.8.2))': + dependencies: + '@ng-icons/core': 36.0.0(@angular-devkit/schematics@22.1.7(chokidar@5.0.0))(@angular/common@22.1.5(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@22.1.5(@angular/compiler@22.1.5)(rxjs@7.8.2))(@schematics/angular@22.1.7(chokidar@5.0.0))(rxjs@7.8.2) + tslib: 2.8.1 + '@oxc-parser/binding-android-arm-eabi@0.142.0': optional: true @@ -3452,10 +3497,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.5(chokidar@5.0.0)': + '@schematics/angular@22.1.7(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.5(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.5(chokidar@5.0.0) + '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: @@ -3542,7 +3587,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.6 + fast-uri: 3.1.7 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -3556,7 +3601,7 @@ snapshots: assertion-error@2.0.1: {} - baseline-browser-mapping@2.11.19: {} + baseline-browser-mapping@2.11.20: {} beasties@0.4.3: dependencies: @@ -3566,9 +3611,9 @@ snapshots: domhandler: 5.0.3 htmlparser2: 10.1.0 picocolors: 1.1.1 - postcss: 8.5.26 + postcss: 8.5.28 postcss-media-query-parser: 0.2.3 - postcss-safe-parser: 7.0.1(postcss@8.5.26) + postcss-safe-parser: 7.0.1(postcss@8.5.28) bidi-js@1.0.3: dependencies: @@ -3582,7 +3627,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.7.3 on-finished: 2.4.1 - qs: 6.15.3 + qs: 6.16.0 raw-body: 3.0.2 type-is: 2.1.0 transitivePeerDependencies: @@ -3592,11 +3637,11 @@ snapshots: browserslist@4.28.8: dependencies: - baseline-browser-mapping: 2.11.19 + baseline-browser-mapping: 2.11.20 caniuse-lite: 1.0.30001810 - electron-to-chromium: 1.5.414 - node-releases: 2.0.53 - update-browserslist-db: 1.3.1(browserslist@4.28.8) + electron-to-chromium: 1.5.420 + node-releases: 2.0.54 + update-browserslist-db: 1.3.2(browserslist@4.28.8) buffer-from@1.1.2: {} @@ -3686,7 +3731,7 @@ snapshots: cssstyle@6.2.0: dependencies: '@asamuzakjp/css-color': 5.1.11 - '@csstools/css-syntax-patches-for-csstree': 1.1.8(css-tree@3.2.1) + '@csstools/css-syntax-patches-for-csstree': 1.1.12(css-tree@3.2.1) css-tree: 3.2.1 lru-cache: 11.5.2 @@ -3733,7 +3778,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.414: {} + electron-to-chromium@1.5.420: {} emoji-regex@10.6.0: {} @@ -3806,11 +3851,11 @@ snapshots: expect-type@1.4.0: {} - express-rate-limit@8.6.2(express@5.2.1): + express-rate-limit@8.7.0(express@5.2.1): dependencies: debug: 4.4.3 express: 5.2.1 - ip-address: 10.5.0 + ip-address: 10.7.0 transitivePeerDependencies: - supports-color @@ -3836,7 +3881,7 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.15.3 + qs: 6.16.0 range-parser: 1.3.0 router: 2.2.0 send: 1.2.1 @@ -3855,7 +3900,7 @@ snapshots: dependencies: fast-string-truncated-width: 3.0.3 - fast-uri@3.1.6: {} + fast-uri@3.1.7: {} fast-wrap-ansi@0.2.2: dependencies: @@ -3919,7 +3964,7 @@ snapshots: dependencies: function-bind: 1.1.2 - hono@4.13.4: {} + hono@4.13.5: {} hosted-git-info@10.1.1: dependencies: @@ -3979,7 +4024,7 @@ snapshots: inherits@2.0.4: {} - ip-address@10.5.0: {} + ip-address@10.7.0: {} ipaddr.js@1.9.1: {} @@ -4137,11 +4182,11 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 magic-string@1.0.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 math-intrinsics@1.1.0: {} @@ -4199,7 +4244,7 @@ snapshots: detect-libc: 2.1.2 optional: true - node-releases@2.0.53: {} + node-releases@2.0.54: {} npm-package-arg@14.0.0: dependencies: @@ -4307,11 +4352,11 @@ snapshots: postcss-media-query-parser@0.2.3: {} - postcss-safe-parser@7.0.1(postcss@8.5.26): + postcss-safe-parser@7.0.1(postcss@8.5.28): dependencies: - postcss: 8.5.26 + postcss: 8.5.28 - postcss@8.5.26: + postcss@8.5.28: dependencies: nanoid: 3.3.18 picocolors: 1.1.1 @@ -4330,7 +4375,7 @@ snapshots: punycode@2.3.1: {} - qs@6.15.3: + qs@6.16.0: dependencies: es-define-property: 1.0.1 side-channel: 1.1.1 @@ -4535,7 +4580,7 @@ snapshots: tinybench@2.9.0: {} - tinyexec@1.3.0: {} + tinyexec@1.3.1: {} tinyglobby@0.2.17: dependencies: @@ -4574,7 +4619,7 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.3.1(browserslist@4.28.8): + update-browserslist-db@1.3.2(browserslist@4.28.8): dependencies: browserslist: 4.28.8 escalade: 3.2.0 @@ -4588,7 +4633,7 @@ snapshots: dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 - postcss: 8.5.26 + postcss: 8.5.28 rolldown: 1.1.5 tinyglobby: 0.2.17 optionalDependencies: @@ -4613,7 +4658,7 @@ snapshots: picomatch: 4.0.7 std-env: 4.2.0 tinybench: 2.9.0 - tinyexec: 1.3.0 + tinyexec: 1.3.1 tinyglobby: 0.2.17 tinyrainbow: 3.1.1 vite: 8.1.5(esbuild@0.28.2)(sass@1.101.0) @@ -4692,3 +4737,5 @@ snapshots: zod: 4.4.3 zod@4.4.3: {} + + zod@4.5.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..dc8c1bc --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +allowBuilds: + '@parcel/watcher': true + esbuild: true + lmdb: true + msgpackr-extract: true diff --git a/src/app/app.config.ts b/src/app/app.config.ts index 0f4fd64..cb1270e 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -2,11 +2,10 @@ import { ApplicationConfig, provideBrowserGlobalErrorListeners } from '@angular/ import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; -import { provideClientHydration } from '@angular/platform-browser'; export const appConfig: ApplicationConfig = { providers: [ provideBrowserGlobalErrorListeners(), - provideRouter(routes), provideClientHydration() + provideRouter(routes) ] }; diff --git a/src/app/app.ts b/src/app/app.ts index 7b3b76b..f90179a 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -2,31 +2,27 @@ import { Component } from '@angular/core'; import { RouterLink, RouterOutlet } from '@angular/router'; @Component({ - selector: 'app-root', - imports: [RouterOutlet, RouterLink], + selector: 'ksk-crm-root', + imports: [RouterOutlet], template: `
- На главную  -
- -
+
`, styles: ` :host { display: flex; flex-direction: column; - justify-content: center; align-items: center; - padding: 20px; - min-height: 100vh; - background: #2e2e2e; + padding: 8px; + min-height: 100dvh; + background: var(--bg-base); main { - width: 60%; - min-height: 500px; - background: white; - padding: 20px; + width: 100%; + background: var(--surface); + padding: 1ch; + border-radius: 5px; } } `, diff --git a/src/app/features/tasks/task-details.ts b/src/app/features/tasks/task-details.ts index 17ecf23..48e149d 100644 --- a/src/app/features/tasks/task-details.ts +++ b/src/app/features/tasks/task-details.ts @@ -1,31 +1,25 @@ -import { ChangeDetectorRef, Component, inject } from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; +import { ActivatedRoute, RouterLink } from '@angular/router'; import { TaskService } from './task-service'; import { Task } from './task'; +import { Component, inject, resource, signal } from '@angular/core'; @Component({ - selector: 'app-task-details', - imports: [], + selector: 'ksk-crm-task-details', + imports: [RouterLink], template: ` -

{{ task?.name }}

-

{{ task?.numberPhone }}

-

{{ task?.streetAddress }}

+ На главную  +

{{ taskResource.value()?.name }}

+

{{ taskResource.value()?.numberPhone }}

+

{{ taskResource.value()?.streetAddress }}

`, styles: ``, }) export class TaskDetails { route: ActivatedRoute = inject(ActivatedRoute); - taskId = ''; taskService: TaskService = inject(TaskService); - changeDetectorRef = inject(ChangeDetectorRef); - task: Task | undefined; - constructor() { - this.taskId = this.route.snapshot.params['id']; - this.taskService.getTaskById(this.taskId).then(task => { - if (task) { - this.task = task; - this.changeDetectorRef.markForCheck() - } - }); - } + taskId = signal(this.route.snapshot.params['id']); + taskResource = resource({ + params: () => this.taskId(), + loader: ({ params: id }) => this.taskService.getTaskById(id), + }); } diff --git a/src/app/features/tasks/task-item.ts b/src/app/features/tasks/task-item.ts index d5028a7..644cf6e 100644 --- a/src/app/features/tasks/task-item.ts +++ b/src/app/features/tasks/task-item.ts @@ -3,14 +3,13 @@ import { Task } from './task'; import { RouterLink } from '@angular/router'; @Component({ - selector: 'app-task-item', + selector: 'ksk-crm-task-item', imports: [ RouterLink ], template: `

{{ task().name }}

{{ task().city }}, {{ task().streetAddress }}

-

{{ task().numberPhone }}

Подробнее...

`, styles: ` diff --git a/src/app/features/tasks/task-list.ts b/src/app/features/tasks/task-list.ts index 51dca5a..30eff4c 100644 --- a/src/app/features/tasks/task-list.ts +++ b/src/app/features/tasks/task-list.ts @@ -1,21 +1,24 @@ -import { Component, computed, inject, signal } from '@angular/core'; +import { Component, computed, inject, linkedSignal, resource, signal } from '@angular/core'; import { TaskItem } from './task-item'; import { Task } from './task'; import { TaskService } from './task-service'; import { RouterLink } from '@angular/router'; import { FormsModule } from '@angular/forms'; +import { NgIcon, provideIcons } from '@ng-icons/core'; +import { lucideSquarePlus } from '@ng-icons/lucide'; @Component({ - selector: 'app-home-page', - imports: [TaskItem, RouterLink, FormsModule], + selector: 'ksk-crm-home-page', + imports: [TaskItem, RouterLink, FormsModule, NgIcon], + providers: [provideIcons({ lucideSquarePlus })], template: `
- Добавить
+
@for (task of filteredTasks(); track $index) { - + }
`, @@ -34,13 +37,23 @@ import { FormsModule } from '@angular/forms'; `, }) export class TaskList { - tasks: Task[] = []; taskService: TaskService = inject(TaskService); + + tasks = resource({ + params: signal(null), + loader: () => this.taskService.getAllTasks(), + }); + searchInput = signal(''); + filteredTasks = computed(() => { const s = this.searchInput(); - if (s === '') return this.tasks; - return this.tasks.filter( + const tasks = this.tasks.value(); + + if (!tasks) return []; + if (s === '') return tasks; + + return tasks.filter( (task) => task.name.includes(s) || task.city.includes(s) || @@ -48,12 +61,4 @@ export class TaskList { task.numberPhone.includes(s), ); }); - - constructor() { - this.taskService.getAllTasks().then(tasks => { - this.tasks = tasks; - this.searchInput.update(_ => " ") - this.searchInput.update(_ => ''); - }); - } } diff --git a/src/app/features/tasks/task-new.ts b/src/app/features/tasks/task-new.ts index 5f4596d..96bea8e 100644 --- a/src/app/features/tasks/task-new.ts +++ b/src/app/features/tasks/task-new.ts @@ -4,7 +4,7 @@ import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { Router } from '@angular/router'; @Component({ - selector: 'app-task-new', + selector: 'ksk-crm-task-new', imports: [ ReactiveFormsModule ], diff --git a/src/app/features/tasks/task-service.ts b/src/app/features/tasks/task-service.ts index f29a63d..706e6b9 100644 --- a/src/app/features/tasks/task-service.ts +++ b/src/app/features/tasks/task-service.ts @@ -1,10 +1,12 @@ import { Service } from '@angular/core'; import { Task } from './task'; import PocketBase from 'pocketbase' +import { environment } from '../../../environments/environment' @Service() export class TaskService { - pbTasks = new PocketBase('http://127.0.0.1:8090').collection('tasks'); + private apiUrl = environment.apiUrl; + private pbTasks = new PocketBase(this.apiUrl).collection('tasks'); async getAllTasks(): Promise { return await this.pbTasks.getFullList(); diff --git a/src/environments/environment.development.ts b/src/environments/environment.development.ts new file mode 100644 index 0000000..9b768b4 --- /dev/null +++ b/src/environments/environment.development.ts @@ -0,0 +1,4 @@ +export const environment = { + production: false, + apiUrl: "http://192.168.1.22:8090", +}; diff --git a/src/environments/environment.ts b/src/environments/environment.ts new file mode 100644 index 0000000..751ae35 --- /dev/null +++ b/src/environments/environment.ts @@ -0,0 +1,4 @@ +export const environment = { + production: true, + apiUrl: 'http://192.168.1.22:8090', +}; diff --git a/src/index.html b/src/index.html index 977bb18..ce787d1 100644 --- a/src/index.html +++ b/src/index.html @@ -9,6 +9,6 @@ - + diff --git a/src/styles.css b/src/styles.css index cca57b3..213ad96 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1,5 +1,24 @@ +@import '@fontsource/inter/400.css'; +@import '@fontsource/inter/500.css'; +@import '@fontsource/inter/600.css'; +@import '@fontsource/inter/700.css'; + +:root { + --gray: oklch(28% 0 0); + --white: white; + + --font-family-base: 'Inter'; + + --bg-base: var(--gray); + --surface: var(--white); +} + * { margin: 0; padding: 0; box-sizing: border-box; } + +body { + font-family: var(--font-family-base), system-ui, -apple-system, sans-serif; +} diff --git a/tsconfig.json b/tsconfig.json index d2fbb9c..27a3bd7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,7 +11,7 @@ "isolatedModules": true, "experimentalDecorators": true, "importHelpers": true, - "target": "ES2022", + "target": "ES2023", "module": "preserve" }, "angularCompilerOptions": {