diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3b155a831..63d6605e8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,6 +5,8 @@ name: CI on: push: + branches: + - main pull_request: workflow_dispatch: diff --git a/IsraelHiking.Web/package-lock.json b/IsraelHiking.Web/package-lock.json index 1c61e32e6..1709e7cc4 100644 --- a/IsraelHiking.Web/package-lock.json +++ b/IsraelHiking.Web/package-lock.json @@ -9,16 +9,16 @@ "version": "9.20.0", "license": "CC-BY-NC-3.0", "dependencies": { - "@angular/animations": "^18.2.0", - "@angular/cdk": "^18.2.0", - "@angular/common": "^18.2.0", - "@angular/compiler": "^18.2.0", - "@angular/core": "^18.2.0", - "@angular/forms": "^18.2.0", - "@angular/material": "^18.2.0", - "@angular/platform-browser": "^18.2.0", - "@angular/platform-browser-dynamic": "^18.2.0", - "@angular/router": "^18.2.0", + "@angular/animations": "^18.2.1", + "@angular/cdk": "^18.2.1", + "@angular/common": "^18.2.1", + "@angular/compiler": "^18.2.1", + "@angular/core": "^18.2.1", + "@angular/forms": "^18.2.1", + "@angular/material": "^18.2.1", + "@angular/platform-browser": "^18.2.1", + "@angular/platform-browser-dynamic": "^18.2.1", + "@angular/router": "^18.2.1", "@awesome-cordova-plugins/core": "^6.8.0", "@awesome-cordova-plugins/file": "^6.8.0", "@awesome-cordova-plugins/file-transfer": "^6.8.0", @@ -38,7 +38,7 @@ "@mapbox/polyline": "^1.2.1", "@mapbox/vector-tile": "^1.3.1", "@maplibre/ngx-maplibre-gl": "^18.0.0", - "@ng-idle/core": "^14.0.0", + "@ng-idle/core": "^15.0.0", "@ngxs/store": "^18.1.1", "@nicky-lenaers/ngx-scroll-to": "^14.0.0", "@turf/bbox": "7.1.0", @@ -81,9 +81,9 @@ "linear-interpolator": "^1.0.2", "lodash-es": "^4.17.21", "lottie-web": "^5.12.2", - "maplibre-gl": "^4.5.2", + "maplibre-gl": "^4.6.0", "minisearch": "^7.1.0", - "ngx-infinite-scroll": "^17.0.0", + "ngx-infinite-scroll": "^18.0.0", "ngx-lottie": "^12.0.0", "ngx-progressbar": "^11.1.0", "osmtogeojson": "^3.0.0-beta.5", @@ -95,7 +95,7 @@ "proj4": "^2.12.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.10", - "tslib": "^2.6.3", + "tslib": "^2.7.0", "uuid": "^10.0.0", "xml-beautify": "^1.2.3", "zone.js": "^0.14.10" @@ -108,8 +108,8 @@ "@angular-eslint/schematics": "^18.3.0", "@angular-eslint/template-parser": "^18.3.0", "@angular/cli": "^18.2.1", - "@angular/compiler-cli": "^18.2.0", - "@angular/language-service": "^18.2.0", + "@angular/compiler-cli": "^18.2.1", + "@angular/language-service": "^18.2.1", "@capacitor/cli": "^6.1.2", "@types/angular-gettext": "^2.1.38", "@types/d3": "^7.4.3", @@ -117,14 +117,14 @@ "@types/jasmine": "^5.1.4", "@types/lodash-es": "^4.17.12", "@types/mapbox__polyline": "^1.0.5", - "@types/node": "^22.4.2", + "@types/node": "^22.5.0", "@types/pako": "^2.0.3", "@types/platform": "^1.3.6", "@types/proj4": "^2.5.5", "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^8.2.0", "@typescript-eslint/parser": "^8.2.0", - "eslint": "^9.9.0", + "eslint": "^9.9.1", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^50.2.2", "eslint-plugin-prefer-arrow": "^1.2.3", @@ -371,6 +371,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, "node_modules/@angular-devkit/build-webpack": { "version": "0.1802.1", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.1.tgz", @@ -546,9 +552,9 @@ } }, "node_modules/@angular/animations": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.0.tgz", - "integrity": "sha512-BFAfqDDjsa0Q91F4s33pFcBG+ydFDurEmwYGG1gmO7UXZJI6ZbRVdULaZHz75M+Bf3hJkzVB05pesvfbK+Fg/g==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.1.tgz", + "integrity": "sha512-jit452yuE6DMVV09E6RAjgapgw64mMVH31ccpPvMDekzPsTuP3KNKtgRFU/k2DFhYJvyczM1AqqlgccE/JGaRw==", "dependencies": { "tslib": "^2.3.0" }, @@ -556,7 +562,7 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.0" + "@angular/core": "18.2.1" } }, "node_modules/@angular/build": { @@ -628,9 +634,9 @@ } }, "node_modules/@angular/cdk": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.0.tgz", - "integrity": "sha512-hjuUWNhxU48WB2i1j4NLwnPTaCnucRElfp7DBX5Io0rY5Lwl3HXafvyi7/A1D0Ah+YsJpktKOWPDGv8r7vxymg==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.1.tgz", + "integrity": "sha512-6y4MmpEPXze6igUHkLsBUPkxw32F8+rmW0xVXZchkSyGlFgqfh53ueXoryWb0qL4s5enkNY6AzXnKAqHfPNkVQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -677,9 +683,9 @@ } }, "node_modules/@angular/common": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.0.tgz", - "integrity": "sha512-DELx/QYNqqjmiM+kE5PoVmyG4gPw5WB1bDDeg3hEuBCK3eS2KosgQH0/MQo3OSBZHOcAMFjfHMGqKgxndmYixQ==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.1.tgz", + "integrity": "sha512-N0ZJO1/iU9UhprplZRPvBcdRgA/i6l6Ng5gXs5ymHBJ0lxsB+mDVCmC4jISjR9gAWc426xXwLaOpuP5Gv3f/yg==", "dependencies": { "tslib": "^2.3.0" }, @@ -687,14 +693,14 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.0", + "@angular/core": "18.2.1", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.0.tgz", - "integrity": "sha512-RmGwQ7jRzotUKKMk0CwxTcIXFr5mRxSbJf9o5S3ujuIOo1lYop8SQZvjq67a5BuoYyD+1pX6iMmxZqlbKoihBQ==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.1.tgz", + "integrity": "sha512-5e9ygKEcsBoV6xpaGKVrtsLxLETlrM0oB7twl4qG/xuKYqCLj8cRQMcAKSqDfTPzWMOAQc7pHdk+uFVo/8dWHA==", "dependencies": { "tslib": "^2.3.0" }, @@ -702,7 +708,7 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.0" + "@angular/core": "18.2.1" }, "peerDependenciesMeta": { "@angular/core": { @@ -711,9 +717,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.0.tgz", - "integrity": "sha512-pPBFjMqNTNettrleLtEc6a/ysOZjG3F0Z5lyKYePcyNQmn2rpa9XmD2y6PhmzTmIhxeXrogWA84Xgg/vK5wBNw==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.1.tgz", + "integrity": "sha512-D+Qba0r6RfHfffzrebGYp54h05AxpkagLjit/GczKNgWSP1gIgZxSfi88D+GvFmeWvZxWN1ecAQ+yqft9hJqWg==", "dev": true, "dependencies": { "@babel/core": "7.25.2", @@ -734,14 +740,14 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "18.2.0", + "@angular/compiler": "18.2.1", "typescript": ">=5.4 <5.6" } }, "node_modules/@angular/core": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.0.tgz", - "integrity": "sha512-7+4wXfeAk1TnG3MGho2gpBI5XHxeSRWzLK2rC5qyyRbmMV+GrIgf1HqFjQ4S02rydkQvGpjqQHtO1PYJnyn4bg==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.1.tgz", + "integrity": "sha512-9KrSpJ65UlJZNXrE18NszcfOwb5LZgG+LYi5Doe7amt218R1bzb3trvuAm0ZzMaoKh4ugtUCkzEOd4FALPEX6w==", "dependencies": { "tslib": "^2.3.0" }, @@ -754,9 +760,9 @@ } }, "node_modules/@angular/forms": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.0.tgz", - "integrity": "sha512-G+4BjNCUo4cRwg9NwisGLbtG/1AbIJNOO3RUejPJJbCcAkYMSzmDWSQ+LQEGW4vC/1xaDKO8AT71DI/I09bOxA==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.1.tgz", + "integrity": "sha512-T7z8KUuj2PoPxrMrAruQVJha+x4a9Y6IrKYtArgOQQlTwCEJuqpVYuOk5l3fwWpHE9bVEjvgkAMI1D5YXA/U6w==", "dependencies": { "tslib": "^2.3.0" }, @@ -764,31 +770,31 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.0", - "@angular/core": "18.2.0", - "@angular/platform-browser": "18.2.0", + "@angular/common": "18.2.1", + "@angular/core": "18.2.1", + "@angular/platform-browser": "18.2.1", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.2.0.tgz", - "integrity": "sha512-brl5061YqfNnT7yZNMWmsgv6ve6p9+kfhX6mZWOGICcY2SYVtCNVHdqzwWTTwY7MvTVfycHxiAf9PEmc5lD4/g==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.2.1.tgz", + "integrity": "sha512-JI4oox9ELNdDVg0uJqCwgyFoK4XrowV14wSoNpGhpTLModRg3eDS6q+8cKn27cjTQRZvpReyYSTfiZMB8j4eqQ==", "dev": true, "engines": { "node": "^18.19.1 || ^20.11.1 || >=22.0.0" } }, "node_modules/@angular/material": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.0.tgz", - "integrity": "sha512-lOXk8pAVP4Mr0/Q6YrNnVYQVTnR8aEG5D9QSEWjs+607gONuh/9n7ERBdzX7xO9D0vYyXq+Vil32zcF41/Q8Cg==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.1.tgz", + "integrity": "sha512-DBSJGqLttT9vYpLGWTuuRoOKd1mNelS0jnNo7jNZyMpjcGfuhNzmPtYiBkXfNsAl7YoXoUmX8+4uh1JZspQGqA==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/animations": "^18.0.0 || ^19.0.0", - "@angular/cdk": "18.2.0", + "@angular/cdk": "18.2.1", "@angular/common": "^18.0.0 || ^19.0.0", "@angular/core": "^18.0.0 || ^19.0.0", "@angular/forms": "^18.0.0 || ^19.0.0", @@ -797,9 +803,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.0.tgz", - "integrity": "sha512-yhj281TuPz5a8CehwucwIVl29Oqte9KS4X/VQkMV++GpYQE2KKKcoff4FXSdF5RUcUYkK2li4IvawIqPmUSagg==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.1.tgz", + "integrity": "sha512-hQABX7QotGmCIR3EhCBCDh5ZTvQao+JkuK5CCw2G1PkRfJMBwEpjNqnyhz41hZhWiGlucp9jgbeypppW+mIQEw==", "dependencies": { "tslib": "^2.3.0" }, @@ -807,9 +813,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/animations": "18.2.0", - "@angular/common": "18.2.0", - "@angular/core": "18.2.0" + "@angular/animations": "18.2.1", + "@angular/common": "18.2.1", + "@angular/core": "18.2.1" }, "peerDependenciesMeta": { "@angular/animations": { @@ -818,9 +824,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.0.tgz", - "integrity": "sha512-izfaXKNC/kqOEzJG8eTnFu39VLI3vv3dTKoYOdEKRB7MTI0t0x66oZmABnHcihtkTSvXs/is+7lA5HmH2ZuIEQ==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.1.tgz", + "integrity": "sha512-tYJHtshbaKrtnRA15k3vrveSVBqkVUGhINvGugFA2vMtdTOfhfPw+hhzYrcwJibgU49rHogCfI9mkIbpNRYntA==", "dependencies": { "tslib": "^2.3.0" }, @@ -828,16 +834,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.0", - "@angular/compiler": "18.2.0", - "@angular/core": "18.2.0", - "@angular/platform-browser": "18.2.0" + "@angular/common": "18.2.1", + "@angular/compiler": "18.2.1", + "@angular/core": "18.2.1", + "@angular/platform-browser": "18.2.1" } }, "node_modules/@angular/router": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.0.tgz", - "integrity": "sha512-6/462hvC3HSwbps8VItECHpkdkiFqRmTKdn1Trik+FjnvdupYrKB6kBsveM3eP+gZD4zyMBMKzBWB9N/xA1clw==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.1.tgz", + "integrity": "sha512-gVyqW6fYnG7oq1DlZSXJMQ2Py2dJQB7g6XVtRcYB1gR4aeowx5N9ws7PjqAi0ih91ASq2MmP4OlSSWLq+eaMGg==", "dependencies": { "tslib": "^2.3.0" }, @@ -845,9 +851,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.0", - "@angular/core": "18.2.0", - "@angular/platform-browser": "18.2.0", + "@angular/common": "18.2.1", + "@angular/core": "18.2.1", + "@angular/platform-browser": "18.2.1", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -3216,9 +3222,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", - "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, "dependencies": { "@eslint/object-schema": "^2.1.4", @@ -3331,9 +3337,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", - "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4327,15 +4333,15 @@ ] }, "node_modules/@ng-idle/core": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@ng-idle/core/-/core-14.0.0.tgz", - "integrity": "sha512-DqseA+F6LXm/Hr4D8zQhDBliuAU06t9BOUpcdSUKQWdDEKo3mlovRxz7DMuXyzg4OBQ0saQpE3MeMqakIEHUHw==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@ng-idle/core/-/core-15.0.0.tgz", + "integrity": "sha512-FF/HExYIXt5qkXzS5X67hJiJC+sD/SbWaRCRULIbDeY2rX10aS6i1I2aZPSQMxdf+VO2aBnS6eD2tlSI+Linbg==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.6.0" }, "peerDependencies": { - "@angular/common": ">=9.0.0", - "@angular/core": ">=9.0.0" + "@angular/common": ">=17.3.10", + "@angular/core": ">=17.3.10" } }, "node_modules/@ngtools/webpack": { @@ -6114,9 +6120,9 @@ } }, "node_modules/@types/node": { - "version": "22.4.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.2.tgz", - "integrity": "sha512-nAvM3Ey230/XzxtyDcJ+VjvlzpzoHwLsF7JaDRfoI0ytO0mVheerNmM45CtA0yOILXwXXxOrcUWH3wltX+7PSw==", + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", + "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", "dependencies": { "undici-types": "~6.19.2" } @@ -9904,16 +9910,16 @@ } }, "node_modules/eslint": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", - "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.17.1", + "@eslint/config-array": "^0.18.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.0", + "@eslint/js": "9.9.1", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -11338,32 +11344,38 @@ } }, "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz", + "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==", "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "ini": "^4.1.3", + "kind-of": "^6.0.3", + "which": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=16" } }, - "node_modules/global-prefix/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "node_modules/global-prefix/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } }, "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dependencies": { - "isexe": "^2.0.0" + "isexe": "^3.1.1" }, "bin": { - "which": "bin/which" + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, "node_modules/globals": { @@ -11884,7 +11896,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", - "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -13761,9 +13772,9 @@ } }, "node_modules/maplibre-gl": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.5.2.tgz", - "integrity": "sha512-vlWL9EY2bSGg5FAt0mKPfYqlfX15uLW5D3kKv4Xjn54nIVn01MKdfUJMAVIr+8fXVqfSX6c095Iy5XnV+T76kQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.6.0.tgz", + "integrity": "sha512-zobZK+fE+XM+7K81fk5pSBYWZlTGjGT0P96y2fR4DV2ry35ZBfAd0uWNatll69EgYeE+uOhN1MvEk+z1PCuyOQ==", "dependencies": { "@mapbox/geojson-rewind": "^0.5.2", "@mapbox/jsonlint-lines-primitives": "^2.0.2", @@ -13772,7 +13783,7 @@ "@mapbox/unitbezier": "^0.0.1", "@mapbox/vector-tile": "^1.3.1", "@mapbox/whoots-js": "^3.1.0", - "@maplibre/maplibre-gl-style-spec": "^20.3.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", "@types/geojson": "^7946.0.14", "@types/geojson-vt": "3.2.5", "@types/mapbox__point-geometry": "^0.1.4", @@ -13782,7 +13793,7 @@ "earcut": "^3.0.0", "geojson-vt": "^4.0.2", "gl-matrix": "^3.4.3", - "global-prefix": "^3.0.0", + "global-prefix": "^4.0.0", "kdbush": "^4.0.2", "murmurhash-js": "^1.0.0", "pbf": "^3.3.0", @@ -14431,15 +14442,15 @@ } }, "node_modules/ngx-infinite-scroll": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/ngx-infinite-scroll/-/ngx-infinite-scroll-17.0.1.tgz", - "integrity": "sha512-T+XseajbmT9YTMmPnFV/AfSlwjaV9m2gZtbIIZH3S+yg/rvvfbgkThqs54UWIu+pqcqNR4UhrXfw6mUjCVZD2A==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ngx-infinite-scroll/-/ngx-infinite-scroll-18.0.0.tgz", + "integrity": "sha512-D183TDwpsd9Zl56UmItsl3RzHdN25srAISfg6lc3A8mEKkEgOq0s7ZzRAYcx8DHsAkMgtZqjIPEvMifD3DOB/g==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": ">=17.0.0 <18.0.0", - "@angular/core": ">=17.0.0 <18.0.0" + "@angular/common": ">=18.0.0 <19.0.0", + "@angular/core": ">=18.0.0 <19.0.0" } }, "node_modules/ngx-lottie": { @@ -18521,9 +18532,9 @@ } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/tuf-js": { "version": "2.2.1", diff --git a/IsraelHiking.Web/package.json b/IsraelHiking.Web/package.json index 25de67a42..403a9664a 100644 --- a/IsraelHiking.Web/package.json +++ b/IsraelHiking.Web/package.json @@ -1,15 +1,15 @@ { "dependencies": { - "@angular/animations": "^18.2.0", - "@angular/cdk": "^18.2.0", - "@angular/common": "^18.2.0", - "@angular/compiler": "^18.2.0", - "@angular/core": "^18.2.0", - "@angular/forms": "^18.2.0", - "@angular/material": "^18.2.0", - "@angular/platform-browser": "^18.2.0", - "@angular/platform-browser-dynamic": "^18.2.0", - "@angular/router": "^18.2.0", + "@angular/animations": "^18.2.1", + "@angular/cdk": "^18.2.1", + "@angular/common": "^18.2.1", + "@angular/compiler": "^18.2.1", + "@angular/core": "^18.2.1", + "@angular/forms": "^18.2.1", + "@angular/material": "^18.2.1", + "@angular/platform-browser": "^18.2.1", + "@angular/platform-browser-dynamic": "^18.2.1", + "@angular/router": "^18.2.1", "@awesome-cordova-plugins/core": "^6.8.0", "@awesome-cordova-plugins/file": "^6.8.0", "@awesome-cordova-plugins/file-transfer": "^6.8.0", @@ -29,7 +29,7 @@ "@mapbox/polyline": "^1.2.1", "@mapbox/vector-tile": "^1.3.1", "@maplibre/ngx-maplibre-gl": "^18.0.0", - "@ng-idle/core": "^14.0.0", + "@ng-idle/core": "^15.0.0", "@ngxs/store": "^18.1.1", "@nicky-lenaers/ngx-scroll-to": "^14.0.0", "@turf/bbox": "7.1.0", @@ -72,9 +72,9 @@ "linear-interpolator": "^1.0.2", "lodash-es": "^4.17.21", "lottie-web": "^5.12.2", - "maplibre-gl": "^4.5.2", + "maplibre-gl": "^4.6.0", "minisearch": "^7.1.0", - "ngx-infinite-scroll": "^17.0.0", + "ngx-infinite-scroll": "^18.0.0", "ngx-lottie": "^12.0.0", "ngx-progressbar": "^11.1.0", "osmtogeojson": "^3.0.0-beta.5", @@ -86,7 +86,7 @@ "proj4": "^2.12.0", "rxjs": "^7.8.1", "tailwindcss": "^3.4.10", - "tslib": "^2.6.3", + "tslib": "^2.7.0", "uuid": "^10.0.0", "xml-beautify": "^1.2.3", "zone.js": "^0.14.10" @@ -99,8 +99,8 @@ "@angular-eslint/schematics": "^18.3.0", "@angular-eslint/template-parser": "^18.3.0", "@angular/cli": "^18.2.1", - "@angular/compiler-cli": "^18.2.0", - "@angular/language-service": "^18.2.0", + "@angular/compiler-cli": "^18.2.1", + "@angular/language-service": "^18.2.1", "@capacitor/cli": "^6.1.2", "@types/angular-gettext": "^2.1.38", "@types/d3": "^7.4.3", @@ -108,14 +108,14 @@ "@types/jasmine": "^5.1.4", "@types/lodash-es": "^4.17.12", "@types/mapbox__polyline": "^1.0.5", - "@types/node": "^22.4.2", + "@types/node": "^22.5.0", "@types/pako": "^2.0.3", "@types/platform": "^1.3.6", "@types/proj4": "^2.5.5", "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^8.2.0", "@typescript-eslint/parser": "^8.2.0", - "eslint": "^9.9.0", + "eslint": "^9.9.1", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsdoc": "^50.2.2", "eslint-plugin-prefer-arrow": "^1.2.3", diff --git a/IsraelHiking.Web/src/application/application.module.ts b/IsraelHiking.Web/src/application/application.module.ts index 2839fe364..970fba373 100644 --- a/IsraelHiking.Web/src/application/application.module.ts +++ b/IsraelHiking.Web/src/application/application.module.ts @@ -31,9 +31,9 @@ import { ClipboardModule } from "@angular/cdk/clipboard"; import { Angulartics2Module, Angulartics2GoogleGlobalSiteTag } from "angulartics2"; import { NgProgressModule } from "ngx-progressbar"; import { NgProgressHttpModule } from "ngx-progressbar/http"; -import { InfiniteScrollModule } from "ngx-infinite-scroll"; +import { InfiniteScrollDirective } from "ngx-infinite-scroll"; import { NgxMapLibreGLModule } from "@maplibre/ngx-maplibre-gl"; -import { NgIdleModule } from "@ng-idle/core"; +import { provideNgIdle } from "@ng-idle/core"; import { provideLottieOptions, LottieComponent } from "ngx-lottie"; import { NgxsModule } from "@ngxs/store"; import { saveAs } from "file-saver-es"; @@ -231,7 +231,6 @@ const initializeApplication = (injector: Injector) => async () => { NgProgressHttpModule, ScrollToModule.forRoot(), DragDropModule, - InfiniteScrollModule, NgxsModule.forRoot([ ConfigurationReducer, LocationReducer, @@ -249,9 +248,9 @@ const initializeApplication = (injector: Injector) => async () => { UIComponentsReducer ]), NgxMapLibreGLModule, - NgIdleModule.forRoot(), HammerModule, - LottieComponent + LottieComponent, + InfiniteScrollDirective ], providers: [ AuthorizationService, @@ -319,7 +318,8 @@ const initializeApplication = (injector: Injector) => async () => { RouteEditRouteInteraction, provideHttpClient( withInterceptorsFromDi(), - ) + ), + provideNgIdle() ], declarations: [ MainMapComponent, diff --git a/IsraelHiking.Web/src/application/components/location.component.ts b/IsraelHiking.Web/src/application/components/location.component.ts index 468491d3b..31ed90dd4 100644 --- a/IsraelHiking.Web/src/application/components/location.component.ts +++ b/IsraelHiking.Web/src/application/components/location.component.ts @@ -144,7 +144,7 @@ export class LocationComponent extends BaseMapComponent { public getRotationAngle() { if (this.mapComponent.mapInstance == null) { - return 0; + return "rotate(0deg)"; } return `rotate(${-this.mapComponent.mapInstance.getBearing()}deg)`; } diff --git a/IsraelHiking.Web/src/application/components/map/automatic-layer-presentation.component.ts b/IsraelHiking.Web/src/application/components/map/automatic-layer-presentation.component.ts index 93d74abd9..cfcbfb991 100644 --- a/IsraelHiking.Web/src/application/components/map/automatic-layer-presentation.component.ts +++ b/IsraelHiking.Web/src/application/components/map/automatic-layer-presentation.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit, OnChanges, SimpleChanges, OnDestroy } from "@angular/core"; +import { Component, Input, OnInit, OnChanges, SimpleChanges, OnDestroy, OutputRefSubscription } from "@angular/core"; import { MapComponent } from "@maplibre/ngx-maplibre-gl"; import { StyleSpecification, @@ -7,7 +7,7 @@ import { SourceSpecification, LayerSpecification } from "maplibre-gl"; -import { Subject, Subscription, mergeMap } from "rxjs"; +import { Subject, mergeMap } from "rxjs"; import { Store } from "@ngxs/store"; import { BaseMapComponent } from "../base-map.component"; @@ -40,7 +40,7 @@ export class AutomaticLayerPresentationComponent extends BaseMapComponent implem private rasterSourceId: string; private rasterLayerId: string; - private subscriptions: Subscription[]; + private subscriptions: OutputRefSubscription[]; private jsonSourcesIds: string[]; private jsonLayersIds: string[]; private hasInternetAccess: boolean;