diff --git a/angular.json b/angular.json
index 36f83ecd..77656ca1 100644
--- a/angular.json
+++ b/angular.json
@@ -131,5 +131,31 @@
},
"cli": {
"analytics": false
+ },
+ "schematics": {
+ "@schematics/angular:component": {
+ "type": "component"
+ },
+ "@schematics/angular:directive": {
+ "type": "directive"
+ },
+ "@schematics/angular:service": {
+ "type": "service"
+ },
+ "@schematics/angular:guard": {
+ "typeSeparator": "."
+ },
+ "@schematics/angular:interceptor": {
+ "typeSeparator": "."
+ },
+ "@schematics/angular:module": {
+ "typeSeparator": "."
+ },
+ "@schematics/angular:pipe": {
+ "typeSeparator": "."
+ },
+ "@schematics/angular:resolver": {
+ "typeSeparator": "."
+ }
}
}
diff --git a/package-lock.json b/package-lock.json
index 6901c2ec..78d12e29 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,16 +8,16 @@
"name": "refresh-web",
"version": "0.0.0",
"dependencies": {
- "@angular/animations": "^22.2.1",
- "@angular/common": "^22.2.1",
- "@angular/compiler": "^22.2.1",
- "@angular/core": "^22.2.1",
- "@angular/forms": "^22.2.1",
- "@angular/platform-browser": "^22.2.1",
- "@angular/platform-browser-dynamic": "^22.2.1",
- "@angular/platform-server": "^22.2.1",
- "@angular/router": "^22.2.1",
- "@angular/ssr": "^22.2.2",
+ "@angular/animations": "^22.2.3",
+ "@angular/common": "^22.2.3",
+ "@angular/compiler": "^22.2.3",
+ "@angular/core": "^22.2.3",
+ "@angular/forms": "^22.2.3",
+ "@angular/platform-browser": "^22.2.3",
+ "@angular/platform-browser-dynamic": "^22.2.3",
+ "@angular/platform-server": "^22.2.3",
+ "@angular/router": "^22.2.3",
+ "@angular/ssr": "^22.2.3",
"@fortawesome/angular-fontawesome": "^5.1.0",
"@fortawesome/fontawesome-svg-core": "^7.3.1",
"@fortawesome/free-solid-svg-icons": "^7.3.1",
@@ -28,14 +28,14 @@
"zone.js": "^0.16.3"
},
"devDependencies": {
- "@angular/build": "^22.2.2",
- "@angular/cli": "^22.2.1",
- "@angular/compiler-cli": "^22.2.1",
+ "@angular/build": "^22.2.3",
+ "@angular/cli": "^22.2.3",
+ "@angular/compiler-cli": "^22.2.3",
"@types/express": "^5.0.6",
"@types/node": "^26.6.4",
- "postcss": "^8.5.3",
+ "postcss": "^8.5.29",
"tailwindcss": "^4.3.3",
- "typescript": "^6.0.0"
+ "typescript": "^6.0.3"
}
},
"node_modules/@alloc/quick-lru": {
@@ -65,13 +65,13 @@
}
},
"node_modules/@angular-devkit/architect": {
- "version": "0.2202.2",
- "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2202.2.tgz",
- "integrity": "sha512-7ScBo47haHyRGG5M5ZEpbhwHgO2LEDbCLwNCjpjwhtRFDIEmAFbULM1OQjIybN3x+wOyY1kWRK7KvihCbs371g==",
+ "version": "0.2202.3",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2202.3.tgz",
+ "integrity": "sha512-/605FxTg8Kt5fqNuIBVZMfuiNwIf+CTNsiYnHY85/7OTqCNkEwdkXKc3DiFM2KlR/AV2g64GkvHgHqxHzYh34g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "22.2.2",
+ "@angular-devkit/core": "22.2.3",
"rxjs": "7.8.2"
},
"bin": {
@@ -84,9 +84,9 @@
}
},
"node_modules/@angular-devkit/core": {
- "version": "22.2.2",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-22.2.2.tgz",
- "integrity": "sha512-iQexb5xUON9AkTzvBiMftrHWLguIlYv6M/BOH/sj7U5L8eOPMu8N269WF74xPo4n/X5tusFLqniGI0zolT2Sjg==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-22.2.3.tgz",
+ "integrity": "sha512-bi1oBjJeg1XCgRrBYSuJikaJV4sO/mcnyFE/0a1H646yHhQpVYoU/M2Vh69Qv8h+YoMfC7RuSxT4LZHaubhhLw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -112,13 +112,13 @@
}
},
"node_modules/@angular-devkit/schematics": {
- "version": "22.2.2",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-22.2.2.tgz",
- "integrity": "sha512-uCpFZbQgFUrOjKHLeYSCaYCJdufauYom8yFGggm67yetMAGKPbmRvUEko8i8auNFoBQ+1w1CivjSTwtmXQzZkA==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-22.2.3.tgz",
+ "integrity": "sha512-+XfBViIGqiFQK8KJXA6PgANX9tLuMO/x8GFjlzEmA4LIe9ikAtpGZw+Ezo547BIJQoJBIKCJYR0knE4BmbFeSQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "22.2.2",
+ "@angular-devkit/core": "22.2.3",
"jsonc-parser": "3.3.1",
"magic-string": "1.4.1",
"ora": "9.4.1",
@@ -130,10 +130,20 @@
"yarn": ">= 1.13.0"
}
},
+ "node_modules/@angular-devkit/schematics/node_modules/magic-string": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.1.tgz",
+ "integrity": "sha512-8lyCu36ErXR0J9uaGKlKQoiLZKmtI63YGLE8G2o9jyRPdr4X47LusSOwgOJOzcVtp81fTAAjxR7BwKz682Jhow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.6.0"
+ }
+ },
"node_modules/@angular/animations": {
- "version": "22.2.1",
- "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-22.2.1.tgz",
- "integrity": "sha512-vTxZN6uL/m61lv7ZCvfmQ3VuFb4o/tniGLpc3SpkNHE6MLM8WN0IjfNBRLMYMovd1uUBSPwhcG4Llcmucr9dmw==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-22.2.3.tgz",
+ "integrity": "sha512-sslKnTrKwHwtTvT/pWj7UoYq0cfuX3PijZM7v0JtCajQkK1Nj0Ljob0mebxXBXUVBrOixfCnfBS0EG4JNEznFA==",
"deprecated": "@angular/animations is deprecated. Use `animate.enter` and `animate.leave` instead. For more information see: https://v22.angular.dev/guide/animations.",
"license": "MIT",
"dependencies": {
@@ -143,18 +153,18 @@
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
},
"peerDependencies": {
- "@angular/core": "22.2.1"
+ "@angular/core": "22.2.3"
}
},
"node_modules/@angular/build": {
- "version": "22.2.2",
- "resolved": "https://registry.npmjs.org/@angular/build/-/build-22.2.2.tgz",
- "integrity": "sha512-QHJWkZdEWTqqb3+HiSp8lnuS4iQJCa7yTK9gg5TaMIjCoZzP9mD9L417stiVDZGj2J3Y9mrml044nEVvSbW0ig==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/build/-/build-22.2.3.tgz",
+ "integrity": "sha512-EtNEuPBUCyIuzdXrQ/nINvgFzW8bUI5AkAZtJiSn7nsFOlvaygaKN0kENNTO3zRl3T9B4GDog+Ks5Nec3FBkhg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "2.3.0",
- "@angular-devkit/architect": "0.2202.2",
+ "@angular-devkit/architect": "0.2202.3",
"@babel/core": "8.0.5",
"@inquirer/confirm": "6.3.2",
"@parcel/watcher": "2.6.0",
@@ -197,7 +207,7 @@
"@angular/platform-browser": "^22.0.0",
"@angular/platform-server": "^22.0.0",
"@angular/service-worker": "^22.0.0",
- "@angular/ssr": "^22.2.2",
+ "@angular/ssr": "^22.2.3",
"istanbul-lib-instrument": "^6.0.0",
"karma": "^6.4.0",
"less": "^4.2.0",
@@ -254,27 +264,37 @@
}
}
},
+ "node_modules/@angular/build/node_modules/magic-string": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.1.tgz",
+ "integrity": "sha512-8lyCu36ErXR0J9uaGKlKQoiLZKmtI63YGLE8G2o9jyRPdr4X47LusSOwgOJOzcVtp81fTAAjxR7BwKz682Jhow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.6.0"
+ }
+ },
"node_modules/@angular/cli": {
- "version": "22.2.2",
- "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-22.2.2.tgz",
- "integrity": "sha512-AALIN+zai0CiA7HgSCGVPHyZyiw3yFWliCfbaS4ueHDJHVZ8QhVjRUrnfGZc3EJnigcyQ0w2DKeTxjwqpDjKew==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-22.2.3.tgz",
+ "integrity": "sha512-ObTX0DxJ0/PMl4pkUKI+uWPr7UC7Je94KpHP8l1lr3exhundapgr7VvNsozprJb1hMlOMDab6+quTReSYvF85Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/architect": "0.2202.2",
- "@angular-devkit/core": "22.2.2",
- "@angular-devkit/schematics": "22.2.2",
+ "@angular-devkit/architect": "0.2202.3",
+ "@angular-devkit/core": "22.2.3",
+ "@angular-devkit/schematics": "22.2.3",
"@inquirer/prompts": "8.7.2",
"@listr2/prompt-adapter-inquirer": "4.2.7",
"@modelcontextprotocol/server": "2.3.1",
- "@schematics/angular": "22.2.2",
+ "@schematics/angular": "22.2.3",
"jsonc-parser": "3.3.1",
"listr2": "11.1.0",
"npm-package-arg": "14.0.0",
"parse5-html-rewriting-stream": "8.0.1",
"semver": "7.8.5",
"yargs": "18.1.0",
- "zod": "4.6.5"
+ "zod": "4.6.6"
},
"bin": {
"ng": "bin/ng.js"
@@ -286,9 +306,9 @@
}
},
"node_modules/@angular/common": {
- "version": "22.2.1",
- "resolved": "https://registry.npmjs.org/@angular/common/-/common-22.2.1.tgz",
- "integrity": "sha512-OqBH3EY4i8e3PvnYDugZGipSs1HWs2ZrqoClndKtFDS9mQULSSuLoxjG9nF1J/c+yUqhuyZlHjkXWS0n32pEfw==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/common/-/common-22.2.3.tgz",
+ "integrity": "sha512-sRzcvxzurbkCDVFJMguNVgsHds3NvDj5qbZ44NHjH7J9MBk5oZYXHppdHVm8AolBhCXAWvMk0vx+NO8Bt4rS7A==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -297,14 +317,14 @@
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
},
"peerDependencies": {
- "@angular/core": "22.2.1",
+ "@angular/core": "22.2.3",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/compiler": {
- "version": "22.2.1",
- "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-22.2.1.tgz",
- "integrity": "sha512-KRSz0c/T5eEiFa+F1l9OppAebJj9pT8kU3ArBMlxR3v/vzhpCfuQsFVQ4xEFC7dEm3zZIdv9ASKAP6ocNC4D/Q==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-22.2.3.tgz",
+ "integrity": "sha512-GjDkmOBqW+6RJTeW5mlLRivf6Zy7Ed0auVh+DYD67d4UF4Sk17F1vIt8puF4CQ2PIezlHh7oOnermCBNHAOGkQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -314,9 +334,9 @@
}
},
"node_modules/@angular/compiler-cli": {
- "version": "22.2.1",
- "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-22.2.1.tgz",
- "integrity": "sha512-Nh8sCBl0JF6x+H7/1hemY76JeTRC66EfMULT4B3ryF9srRSLYc6X6RfPRtYvrIyjgr6h3jZgrNHlV76wiJaOcA==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-22.2.3.tgz",
+ "integrity": "sha512-em7Ht0Dv7cN7vZgvl2fl1yscAs+zUG2Vr2YKpVZ/rOWuTL2JZyT1qIfKhC4wQoo/3lN8fiUIwQMpflSGzIEPng==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -337,7 +357,7 @@
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
},
"peerDependencies": {
- "@angular/compiler": "22.2.1",
+ "@angular/compiler": "22.2.3",
"typescript": ">=6.0 <6.1"
},
"peerDependenciesMeta": {
@@ -386,9 +406,9 @@
"license": "MIT"
},
"node_modules/@angular/core": {
- "version": "22.2.1",
- "resolved": "https://registry.npmjs.org/@angular/core/-/core-22.2.1.tgz",
- "integrity": "sha512-a8WlYTRiaMPz1KvLE5xjeWrLyZUuQX8bh6Ak7zajUci9iWsTUQefschjSwP1WKlin3JhM3XjmsTEDyZvSLIfRg==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/core/-/core-22.2.3.tgz",
+ "integrity": "sha512-ponarFrAZsPutT+htRt3PEmkt2/IB7DyrBy2f48sxsIx3ZA6xw09i2HOEBo+VBphlN6B/ynK9q+o04HPhdJ+dQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -397,7 +417,7 @@
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
},
"peerDependencies": {
- "@angular/compiler": "22.2.1",
+ "@angular/compiler": "22.2.3",
"rxjs": "^6.5.3 || ^7.4.0",
"zone.js": "~0.15.0 || ~0.16.0"
},
@@ -411,9 +431,9 @@
}
},
"node_modules/@angular/forms": {
- "version": "22.2.1",
- "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-22.2.1.tgz",
- "integrity": "sha512-xHM+PhrvYDJ+edPxh6PWhkE99tXWbsMcxdXCWF6QcyByX+bsW2rVlNZ7dumOsUle9MYa8Yj0lZFACUWbwFw+4w==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-22.2.3.tgz",
+ "integrity": "sha512-TKP8FpeRCY/++vKWsY8GC1J2sNtEkdNNBPdgnMAMLTwheW5JzjwVatuQlbuZEx3WaAjbll1Ux3d+eHeqAVrtQg==",
"license": "MIT",
"dependencies": {
"@standard-schema/spec": "^1.0.0",
@@ -424,16 +444,16 @@
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
},
"peerDependencies": {
- "@angular/common": "22.2.1",
- "@angular/core": "22.2.1",
- "@angular/platform-browser": "22.2.1",
+ "@angular/common": "22.2.3",
+ "@angular/core": "22.2.3",
+ "@angular/platform-browser": "22.2.3",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/platform-browser": {
- "version": "22.2.1",
- "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-22.2.1.tgz",
- "integrity": "sha512-KQ3oguemaSqyNP00yqEvPouY7NC4Lji+6S8yfjaWaUZjSth/GckpeP/Fo9HtMqd04y6MZ6lEb2hbQtTqFcSdEQ==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-22.2.3.tgz",
+ "integrity": "sha512-eWZGsbG4bSrSg9UB/NE8wORGVrh1u+x6rirPGpMWqq/mTi6q+nS+pnPxAxmiEs8wmPH5nCz5b2pRKQeYUkhAGA==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -442,9 +462,9 @@
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
},
"peerDependencies": {
- "@angular/animations": "22.2.1",
- "@angular/common": "22.2.1",
- "@angular/core": "22.2.1"
+ "@angular/animations": "22.2.3",
+ "@angular/common": "22.2.3",
+ "@angular/core": "22.2.3"
},
"peerDependenciesMeta": {
"@angular/animations": {
@@ -453,10 +473,9 @@
}
},
"node_modules/@angular/platform-browser-dynamic": {
- "version": "22.2.1",
- "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-22.2.1.tgz",
- "integrity": "sha512-Yg0JcTy3OzhvAM0LQT/XCx8eN3gFsR/BmnQ75Fg0Cvyog7NvFxVXxv/MWE2DNW96lRZNV8ECaVNdcU893ZITTw==",
- "deprecated": "@angular/platform-browser-dynamic is deprecated. Use `@angular/platform-browser` instead.",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-22.2.3.tgz",
+ "integrity": "sha512-+WBe2JjaEeK0NpMlBzV7UBkO+ltUBYTDtMfGYkew2xHdIviITnzXX7yUXijB1Y6jxALgz3jEuJa9iLid8s11rg==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -465,16 +484,16 @@
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
},
"peerDependencies": {
- "@angular/common": "22.2.1",
- "@angular/compiler": "22.2.1",
- "@angular/core": "22.2.1",
- "@angular/platform-browser": "22.2.1"
+ "@angular/common": "22.2.3",
+ "@angular/compiler": "22.2.3",
+ "@angular/core": "22.2.3",
+ "@angular/platform-browser": "22.2.3"
}
},
"node_modules/@angular/platform-server": {
- "version": "22.2.1",
- "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-22.2.1.tgz",
- "integrity": "sha512-nnk4wuwI0u6AmMZpmpQXvJic+aFwG7+tkoWMtAr9kY2V9yl/WZIOhk8r4QtYHOzmxT3k7YRIpQ4BOlIg+jUXNw==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-22.2.3.tgz",
+ "integrity": "sha512-ROuJklv7iQVI1zIulo4MBDnk3Z0ZzihBWuN4nxFY8MTWxVMk97p92j1Wuyt4Kmx2kb5PB+kpcR1Jl6e13idftA==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0",
@@ -484,17 +503,17 @@
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
},
"peerDependencies": {
- "@angular/common": "22.2.1",
- "@angular/compiler": "22.2.1",
- "@angular/core": "22.2.1",
- "@angular/platform-browser": "22.2.1",
+ "@angular/common": "22.2.3",
+ "@angular/compiler": "22.2.3",
+ "@angular/core": "22.2.3",
+ "@angular/platform-browser": "22.2.3",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/router": {
- "version": "22.2.1",
- "resolved": "https://registry.npmjs.org/@angular/router/-/router-22.2.1.tgz",
- "integrity": "sha512-HJfJ4yA1znKd9YFtbDOJfKmD12x0PhS7LkmYdWlJRu2WkQZRBVrdGKdmbvV5UvrqCRllVWKpzw1TIZJM69rlcw==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/router/-/router-22.2.3.tgz",
+ "integrity": "sha512-h4C3iJ3OXM9HItErmTo9fFrFRDj1DSqbvweHAWl8eYJvyuhDD80gBNgdpN8/5gpt9K1HV+PXk0YbyjyQ0zMfPA==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -503,16 +522,16 @@
"node": "^22.22.3 || ^24.15.0 || >=26.0.0"
},
"peerDependencies": {
- "@angular/common": "22.2.1",
- "@angular/core": "22.2.1",
- "@angular/platform-browser": "22.2.1",
+ "@angular/common": "22.2.3",
+ "@angular/core": "22.2.3",
+ "@angular/platform-browser": "22.2.3",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/ssr": {
- "version": "22.2.2",
- "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-22.2.2.tgz",
- "integrity": "sha512-iMcwT5ZynIj33R0XSq+AtC5Ra6FGKOvV3qU0sjRr+lUaGfL6MjygPovPFsKLi8HzuGOA5dYDKffJfPedsC9Rxg==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-22.2.3.tgz",
+ "integrity": "sha512-u/jeHCvSBMf9H72/rxrzON0UQLXux73pgft2Az4lgyhEgnFq+ttTUVoDSABcUoqZJKfh4pSTiCuFZJCpYB+xJQ==",
"license": "MIT",
"dependencies": {
"beasties": "0.5.4",
@@ -594,14 +613,14 @@
"license": "MIT"
},
"node_modules/@babel/generator": {
- "version": "8.0.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.6.tgz",
- "integrity": "sha512-/pcanjdRsonCexCuxgGD8fKnBLLzk2i9uM4kmcmGyyev2R5YDs+rafMYZ89RvaGY1mW8T7C5au0TyYaEeHBGng==",
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.5.tgz",
+ "integrity": "sha512-f/TuhuMAxJqhwxEGNsJrswuG9VHmh0oNFoQoo6TbpgtFAz9wYZXcTAcWZMHfp7ljesr0RG04bp3Aos9GI59L7w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^8.0.6",
- "@babel/types": "^8.0.6",
+ "@babel/parser": "^8.0.5",
+ "@babel/types": "^8.0.5",
"@jridgewell/gen-mapping": "0.4.0-beta.0",
"@jridgewell/trace-mapping": "^0.3.31",
"@types/jsesc": "^2.5.0",
@@ -756,6 +775,35 @@
"node": "^22.18.0 || >=24.11.0"
}
},
+ "node_modules/@babel/traverse/node_modules/@babel/generator": {
+ "version": "8.0.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.6.tgz",
+ "integrity": "sha512-/pcanjdRsonCexCuxgGD8fKnBLLzk2i9uM4kmcmGyyev2R5YDs+rafMYZ89RvaGY1mW8T7C5au0TyYaEeHBGng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^8.0.6",
+ "@babel/types": "^8.0.6",
+ "@jridgewell/gen-mapping": "0.4.0-beta.0",
+ "@jridgewell/trace-mapping": "^0.3.31",
+ "@types/jsesc": "^2.5.0",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": "^22.18.0 || >=24.11.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": {
+ "version": "0.4.0-beta.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.4.0-beta.0.tgz",
+ "integrity": "sha512-JdGNkbE4GlNPYQhM0L95fBQr7ctLZJ276QXQLTad4t1oSdnnCI3fDq9DW3BqYAWv8Wc3+HS+4Gsii1oPMCfz1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.6.0-beta.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
"node_modules/@babel/traverse/node_modules/obug": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/obug/-/obug-3.0.0.tgz",
@@ -791,6 +839,37 @@
"dev": true,
"license": "(Apache-2.0 AND BSD-3-Clause)"
},
+ "node_modules/@emnapi/core": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz",
+ "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.2.3",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz",
+ "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz",
+ "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@esbuild/aix-ppc64": {
"version": "0.28.2",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz",
@@ -2426,6 +2505,27 @@
"node": ">= 10"
}
},
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.5.tgz",
+ "integrity": "sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@tybys/wasm-util": "^0.10.3"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=23.5.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "peerDependencies": {
+ "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4",
+ "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4"
+ }
+ },
"node_modules/@oxc-parser/binding-android-arm-eabi": {
"version": "0.150.0",
"resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.150.0.tgz",
@@ -3369,14 +3469,14 @@
"license": "MIT"
},
"node_modules/@schematics/angular": {
- "version": "22.2.2",
- "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-22.2.2.tgz",
- "integrity": "sha512-JxpXKpxdmQcRsJbriWJOhB7HeVTzz9CEsPNw6fQ0LOuPFnvtyUIXLxyFbKv/LfoFUz8wFADCtNU5sjowME5Mvg==",
+ "version": "22.2.3",
+ "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-22.2.3.tgz",
+ "integrity": "sha512-DY8wv/LtNf3YD/EEoFdER4ihMyw5yywuOQEKasm4d2uBJ5peGIWV3LXJXXqD7b4WVC8xS1eUAjingyWfI9reHw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "22.2.2",
- "@angular-devkit/schematics": "22.2.2",
+ "@angular-devkit/core": "22.2.3",
+ "@angular-devkit/schematics": "22.2.3",
"jsonc-parser": "3.3.1",
"oxc-parser": "0.150.0",
"typescript": "6.0.3"
@@ -3408,15 +3508,6 @@
"tailwindcss": "4.3.3"
}
},
- "node_modules/@tailwindcss/node/node_modules/magic-string": {
- "version": "0.30.21",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
- "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.5"
- }
- },
"node_modules/@tailwindcss/oxide": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.3.tgz",
@@ -3670,6 +3761,16 @@
"tailwindcss": "4.3.3"
}
},
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.4.tgz",
+ "integrity": "sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@types/body-parser": {
"version": "1.19.6",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
@@ -3738,9 +3839,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "26.6.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.4.tgz",
- "integrity": "sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==",
+ "version": "26.6.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz",
+ "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3795,19 +3896,6 @@
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
- "node_modules/accepts": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
- "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
- "license": "MIT",
- "dependencies": {
- "mime-types": "^3.0.0",
- "negotiator": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/agent-base": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
@@ -4160,6 +4248,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/cli-truncate/node_modules/string-width": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",
+ "integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cli-width": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
@@ -4185,24 +4290,6 @@
"node": ">=20"
}
},
- "node_modules/cliui/node_modules/string-width": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
- "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^10.3.0",
- "get-east-asian-width": "^1.0.0",
- "strip-ansi": "^7.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/cliui/node_modules/wrap-ansi": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
@@ -4233,9 +4320,9 @@
}
},
"node_modules/content-disposition": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz",
- "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-2.0.1.tgz",
+ "integrity": "sha512-e+H0ZXHSWYrENhQzw1LPuP4oF5MzVKmDU6d3hxlvaPEYLLg62MxtQNPRx4SYSuYJSBUgnQIG4HIN2tEtNv7Dog==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -4245,15 +4332,6 @@
"url": "https://opencollective.com/express"
}
},
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/convert-source-map": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
@@ -4603,15 +4681,15 @@
}
},
"node_modules/express": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
- "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/express/-/express-5.3.0.tgz",
+ "integrity": "sha512-qCqy1xSoaugxOD4IVHb1ZWdkvCF2W3aE2okKouWj8VwJ+ztskSiXoBnCSJqfKT+cVPJhuJqe9YLbY425+Zh00g==",
"license": "MIT",
"dependencies": {
"accepts": "^2.0.0",
- "body-parser": "^2.2.1",
- "content-disposition": "^1.0.0",
- "content-type": "^1.0.5",
+ "body-parser": "^2.3.0",
+ "content-disposition": "^2.0.1",
+ "content-type": "^2.0.0",
"cookie": "^0.7.1",
"cookie-signature": "^1.2.1",
"debug": "^4.4.0",
@@ -4627,14 +4705,14 @@
"on-finished": "^2.4.1",
"once": "^1.4.0",
"parseurl": "^1.3.3",
- "proxy-addr": "^2.0.7",
- "qs": "^6.14.0",
+ "proxy-addr": "^2.0.8",
+ "qs": "^6.16.0",
"range-parser": "^1.2.1",
"router": "^2.2.0",
"send": "^1.1.0",
"serve-static": "^2.2.0",
"statuses": "^2.0.1",
- "type-is": "^2.0.1",
+ "type-is": "^2.1.0",
"vary": "^1.1.2"
},
"engines": {
@@ -4645,6 +4723,48 @@
"url": "https://opencollective.com/express"
}
},
+ "node_modules/express/node_modules/accepts": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "^3.0.0",
+ "negotiator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/content-type": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz",
+ "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/express/node_modules/negotiator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz",
+ "integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==",
+ "license": "MIT",
+ "dependencies": {
+ "content-type": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -5506,6 +5626,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/log-update/node_modules/string-width": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",
+ "integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/lru-cache": {
"version": "11.5.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz",
@@ -5517,13 +5654,12 @@
}
},
"node_modules/magic-string": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.1.tgz",
- "integrity": "sha512-8lyCu36ErXR0J9uaGKlKQoiLZKmtI63YGLE8G2o9jyRPdr4X47LusSOwgOJOzcVtp81fTAAjxR7BwKz682Jhow==",
- "dev": true,
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"license": "MIT",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.6.0"
+ "@jridgewell/sourcemap-codec": "^1.5.5"
}
},
"node_modules/math-intrinsics": {
@@ -5676,35 +5812,6 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
- "node_modules/negotiator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.1.0.tgz",
- "integrity": "sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==",
- "license": "MIT",
- "dependencies": {
- "content-type": "^2.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/negotiator/node_modules/content-type": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz",
- "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==",
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
"node_modules/node-addon-api": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
@@ -5856,6 +5963,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/ora/node_modules/string-width": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",
+ "integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/ordered-binary": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.2.tgz",
@@ -5951,16 +6075,6 @@
"node": ">= 0.8"
}
},
- "node_modules/path-to-regexp": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
- "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -6099,9 +6213,9 @@
}
},
"node_modules/qs": {
- "version": "6.16.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz",
- "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==",
+ "version": "6.16.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.1.tgz",
+ "integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==",
"license": "BSD-3-Clause",
"dependencies": {
"es-define-property": "^1.0.1",
@@ -6250,6 +6364,16 @@
"node": ">= 18"
}
},
+ "node_modules/router/node_modules/path-to-regexp": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
+ "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
"node_modules/rxjs": {
"version": "7.8.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
@@ -6871,17 +6995,18 @@
}
},
"node_modules/string-width": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",
- "integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "get-east-asian-width": "^1.5.0",
- "strip-ansi": "^7.1.2"
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
},
"engines": {
- "node": ">=20"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -6920,9 +7045,9 @@
}
},
"node_modules/sync-child-process": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz",
- "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.1.0.tgz",
+ "integrity": "sha512-1LMf/x0kU0CKFSesh5DfYktvj1KhiqYi5LAh5HU2G4SkKk1TGDhsMFBOL47g/E+mNfYpgs365pVNlIYOIHPvlQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7500,6 +7625,23 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
+ "node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",
+ "integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -7560,6 +7702,23 @@
"node": "^20.19.0 || ^22.12.0 || >=23"
}
},
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz",
+ "integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/yoctocolors": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.2.0.tgz",
@@ -7574,9 +7733,9 @@
}
},
"node_modules/zod": {
- "version": "4.6.5",
- "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.5.tgz",
- "integrity": "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==",
+ "version": "4.6.6",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.6.tgz",
+ "integrity": "sha512-4UmzQUF5fxvfcYHlbjBmejU+w+hbDnWFx4aS8kBx7nPBHcO2SqPbpAG8snbdg+Xse4pRefR98hgjFgIMCI/UhA==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
diff --git a/package.json b/package.json
index ec5a9bd6..96ecda17 100644
--- a/package.json
+++ b/package.json
@@ -11,16 +11,16 @@
},
"private": true,
"dependencies": {
- "@angular/animations": "^22.2.1",
- "@angular/common": "^22.2.1",
- "@angular/compiler": "^22.2.1",
- "@angular/core": "^22.2.1",
- "@angular/forms": "^22.2.1",
- "@angular/platform-browser": "^22.2.1",
- "@angular/platform-browser-dynamic": "^22.2.1",
- "@angular/platform-server": "^22.2.1",
- "@angular/router": "^22.2.1",
- "@angular/ssr": "^22.2.2",
+ "@angular/animations": "^22.2.3",
+ "@angular/common": "^22.2.3",
+ "@angular/compiler": "^22.2.3",
+ "@angular/core": "^22.2.3",
+ "@angular/forms": "^22.2.3",
+ "@angular/platform-browser": "^22.2.3",
+ "@angular/platform-browser-dynamic": "^22.2.3",
+ "@angular/platform-server": "^22.2.3",
+ "@angular/router": "^22.2.3",
+ "@angular/ssr": "^22.2.3",
"@fortawesome/angular-fontawesome": "^5.1.0",
"@fortawesome/fontawesome-svg-core": "^7.3.1",
"@fortawesome/free-solid-svg-icons": "^7.3.1",
@@ -31,13 +31,13 @@
"zone.js": "^0.16.3"
},
"devDependencies": {
- "@angular/build": "^22.2.2",
- "@angular/cli": "^22.2.1",
- "@angular/compiler-cli": "^22.2.1",
+ "@angular/build": "^22.2.3",
+ "@angular/cli": "^22.2.3",
+ "@angular/compiler-cli": "^22.2.3",
"@types/express": "^5.0.6",
"@types/node": "^26.6.4",
- "postcss": "^8.5.3",
+ "postcss": "^8.5.29",
"tailwindcss": "^4.3.3",
- "typescript": "^6.0.0"
+ "typescript": "^6.0.3"
}
}
\ No newline at end of file
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index f789f88d..730da5a5 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,4 +1,4 @@
-import {Component} from '@angular/core';
+import {Component, ChangeDetectionStrategy} from '@angular/core';
import { RouterOutlet } from '@angular/router';
import {HeaderComponent} from "./components/ui/header/header.component";
import {TitleService} from "./services/title.service";
@@ -20,6 +20,7 @@ const fadeLength: string = "100ms";
selector: 'app-root',
imports: [RouterOutlet, HeaderComponent, PopupBannerContainerComponent, AsyncPipe, HeaderMobileComponent, FooterComponent],
templateUrl: './app.component.html',
+ changeDetection: ChangeDetectionStrategy.Eager,
animations: [
trigger('routeAnimations', [
transition('* => *', [
diff --git a/src/app/app.config.server.ts b/src/app/app.config.server.ts
index 0bad7a9c..d1534116 100644
--- a/src/app/app.config.server.ts
+++ b/src/app/app.config.server.ts
@@ -1,5 +1,5 @@
+import { provideServerRendering } from '@angular/ssr';
import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
-import { provideServerRendering } from '@angular/platform-server';
import { appConfig } from './app.config';
import {provideHttpClient, withFetch} from "@angular/common/http";
import {applyShims} from "./helpers/server-shims";
diff --git a/src/app/app.config.ts b/src/app/app.config.ts
index 904cda37..2d7ba63f 100644
--- a/src/app/app.config.ts
+++ b/src/app/app.config.ts
@@ -1,9 +1,9 @@
import {ApplicationConfig, Provider, Type} from '@angular/core';
import { provideRouter } from '@angular/router';
-import {HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi} from '@angular/common/http';
+import {HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi, withXhr} from '@angular/common/http';
import { routes } from './app.routes';
-import { provideClientHydration } from '@angular/platform-browser';
+import { provideClientHydration, withNoIncrementalHydration } from '@angular/platform-browser';
import {ApiBaseInterceptor} from "./api/interceptors/api-base.interceptor";
import {APIv3Interceptor} from "./api/interceptors/apiv3.interceptor";
import {IMAGE_LOADER} from "@angular/common";
@@ -15,8 +15,8 @@ import {provideAnimationsAsync} from "@angular/platform-browser/animations/async
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(routes),
- provideClientHydration(),
- provideHttpClient(withInterceptorsFromDi()),
+ provideClientHydration(withNoIncrementalHydration()),
+ provideHttpClient(withXhr(), withInterceptorsFromDi()),
provideAnimationsAsync(),
useInterceptor(ApiBaseInterceptor),
useInterceptor(APIv3Interceptor),
diff --git a/src/app/banners/popup-banner-container.component.ts b/src/app/banners/popup-banner-container.component.ts
index 49c84a9c..e9b981f1 100644
--- a/src/app/banners/popup-banner-container.component.ts
+++ b/src/app/banners/popup-banner-container.component.ts
@@ -1,4 +1,4 @@
-import { Component } from '@angular/core';
+import { Component, ChangeDetectionStrategy } from '@angular/core';
import {BannerService} from "./banner.service";
import {PopupBannerComponent} from "./popup-banner.component";
@@ -8,6 +8,7 @@ import {PopupBannerComponent} from "./popup-banner.component";
imports: [
PopupBannerComponent
],
+ changeDetection: ChangeDetectionStrategy.Eager,
template: `
@for (info of bannerService.banners; track info; let i = $index) {
- {{ score?.score | number }} + {{ $safeNavigationMigration(score?.score) | number }} points
@if (score?.level?.gameVersion !== GameVersion.LBPPSP) { diff --git a/src/app/components/items/level-category.component.ts b/src/app/components/items/level-category.component.ts index 3ec8e65b..e8f0791f 100644 --- a/src/app/components/items/level-category.component.ts +++ b/src/app/components/items/level-category.component.ts @@ -1,4 +1,4 @@ -import {Component, Input} from '@angular/core'; +import {Component, Input, ChangeDetectionStrategy} from '@angular/core'; import {LevelCategory} from "../../api/types/categories/level-category"; import {ContainerComponent} from "../ui/container.component"; import {RouterLink} from "@angular/router"; @@ -19,6 +19,7 @@ import {LevelPreviewComponent} from "./level-preview.component"; DividerComponent, LevelPreviewComponent ], + changeDetection: ChangeDetectionStrategy.Eager, template: `