aletrn commited on
Commit
679003c
·
1 Parent(s): b88b569

doc: update CHANGELOG.md, README.md, frontend and backend dependencies

Browse files
Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM registry.gitlab.com/aletrn/gis-prediction:1.7.1
2
 
3
  # Include global arg in this stage of the build
4
  ARG WORKDIR_ROOT="/var/task"
 
1
+ FROM registry.gitlab.com/aletrn/gis-prediction:1.8.0
2
 
3
  # Include global arg in this stage of the build
4
  ARG WORKDIR_ROOT="/var/task"
README.md CHANGED
@@ -10,7 +10,7 @@ license: mit
10
 
11
  # About this README
12
 
13
- I tested these instructions on MacOS, but should work on linux as well.
14
 
15
  ## Segment Anything models
16
 
@@ -59,17 +59,17 @@ Build the docker image this way:
59
  # clean any old active containers
60
  docker stop $(docker ps -a -q); docker rm $(docker ps -a -q)
61
 
62
- # build the base docker image from the repository root folder using ARGs:
63
- # - DEPENDENCY_GROUP=fastapi used by poetry
64
- # VITE__MAP_DESCRIPTION, VITE__SAMGIS_SPACE used by 'docker build'
65
  (
 
66
  set -o allexport && source <(cat ./static/.env|grep VITE__) && set +o allexport;
67
  env|grep VITE__;
68
  docker build . -f dockerfiles/dockerfile-samgis-base --progress=plain \
69
  --build-arg VITE__MAP_DESCRIPTION="${VITE__MAP_DESCRIPTION}" \
70
  --build-arg VITE__SAMGIS_SPACE="${VITE__SAMGIS_SPACE}" \
71
  --build-arg VITE__STATIC_INDEX_URL="${VITE__STATIC_INDEX_URL}" \
72
- --tag registry.gitlab.com/aletrn/gis-prediction
73
  )
74
 
75
  # build the image, use the tag "samgis-huggingface"
@@ -118,7 +118,7 @@ curl -d@./events/payload_point_eolie.json -H 'content-type: application/json' ${
118
 
119
  #### Local execution on MacOS
120
 
121
- There is a known issue running the project on MacOS. SamGIS still work also without executing it within a docker container, but is slower during image embedding because of a memory leak caused by CoreML. Here a log about this bug:
122
 
123
  ```less
124
  [...]
 
10
 
11
  # About this README
12
 
13
+ I tested these instructions on macOS, but should work on linux as well.
14
 
15
  ## Segment Anything models
16
 
 
59
  # clean any old active containers
60
  docker stop $(docker ps -a -q); docker rm $(docker ps -a -q)
61
 
62
+ # build the base docker image from the repository root folder.
63
+ # The SAMGIS_BASE_DOCKER_VERSION env variable read from the pyproject.toml is used to tag the docker image
 
64
  (
65
+ SAMGIS_BASE_DOCKER_VERSION=$(grep version pyproject.toml |head -1|cut -d'=' -f2|cut -d'"' -f2);
66
  set -o allexport && source <(cat ./static/.env|grep VITE__) && set +o allexport;
67
  env|grep VITE__;
68
  docker build . -f dockerfiles/dockerfile-samgis-base --progress=plain \
69
  --build-arg VITE__MAP_DESCRIPTION="${VITE__MAP_DESCRIPTION}" \
70
  --build-arg VITE__SAMGIS_SPACE="${VITE__SAMGIS_SPACE}" \
71
  --build-arg VITE__STATIC_INDEX_URL="${VITE__STATIC_INDEX_URL}" \
72
+ --tag registry.gitlab.com/aletrn/gis-prediction:${SAMGIS_BASE_DOCKER_VERSION}
73
  )
74
 
75
  # build the image, use the tag "samgis-huggingface"
 
118
 
119
  #### Local execution on MacOS
120
 
121
+ There is a known issue running the project on macOS. SamGIS still work also without executing it within a docker container, but is slower during image embedding because of a memory leak caused by CoreML. Here a log about this bug:
122
 
123
  ```less
124
  [...]
dockerfiles/dockerfile-samgis-base CHANGED
@@ -9,7 +9,7 @@ ARG POETRY_VIRTUALENVS_CREATE=1
9
  ARG POETRY_CACHE_DIR=/tmp/poetry_cache
10
 
11
 
12
- FROM python:3.11-bookworm AS builder_global
13
 
14
  ARG ARCH
15
  ARG WORKDIR_ROOT
@@ -46,10 +46,10 @@ RUN python -m pip install -r ${WORKDIR_ROOT}/requirements_poetry.txt
46
  RUN which poetry && poetry --version && poetry config --list
47
  RUN poetry config virtualenvs.path ${WORKDIR_ROOT}
48
  RUN echo "# poetry config --list #" && poetry config --list
49
- RUN poetry install --no-root --no-cache
50
 
51
 
52
- FROM python:3.11-slim-bookworm AS runtime
53
 
54
  ARG ARCH
55
  ARG WORKDIR_ROOT
 
9
  ARG POETRY_CACHE_DIR=/tmp/poetry_cache
10
 
11
 
12
+ FROM python:3.12-bookworm AS builder_global
13
 
14
  ARG ARCH
15
  ARG WORKDIR_ROOT
 
46
  RUN which poetry && poetry --version && poetry config --list
47
  RUN poetry config virtualenvs.path ${WORKDIR_ROOT}
48
  RUN echo "# poetry config --list #" && poetry config --list
49
+ RUN poetry install --no-cache
50
 
51
 
52
+ FROM python:3.12-slim-bookworm AS runtime
53
 
54
  ARG ARCH
55
  ARG WORKDIR_ROOT
docs/Changelog.md CHANGED
@@ -1,10 +1,18 @@
1
  # Changelog
2
 
 
 
 
 
 
 
 
 
3
  ## Version 1.7.1
4
 
5
  - Update frontend dependencies
6
  - remove backend dependencies already installed by samgis-web (samgis-core = 3.0.17, samgis-web = 1.0.16)
7
- - update Dockerfile, README.md because of added optional gradio poetry dependency group (useful only in case of )
8
 
9
  ## Version 1.7.0
10
 
 
1
  # Changelog
2
 
3
+ ## Version 1.8.0
4
+
5
+ - Update frontend dependencies
6
+ - update backend dependencies (samgis-core = 3.0.17, samgis-web = 1.0.16, gradio == 5.1.0, numpy == 2.1.2, starlette == 0.40.0, max python version == 3.12)
7
+ - update poetry == 1.8.4
8
+ - update Dockerfile to use the python base version == 3.12-bookworm
9
+ - update README.md because of updated command to create an already tagged docker image
10
+
11
  ## Version 1.7.1
12
 
13
  - Update frontend dependencies
14
  - remove backend dependencies already installed by samgis-web (samgis-core = 3.0.17, samgis-web = 1.0.16)
15
+ - update Dockerfile, README.md because of added optional gradio poetry dependency group (useful only in case of local tests on the HuggingFace page)
16
 
17
  ## Version 1.7.0
18
 
poetry.lock CHANGED
The diff for this file is too large to render. See raw diff
 
pyproject.toml CHANGED
@@ -1,29 +1,31 @@
1
  [tool.poetry]
2
  name = "samgis"
3
- version = "1.7.1"
4
  description = "A backend for machine learning instance segmentation on geospatial data even without dedicated graphics cards."
5
  authors = ["alessandro trinca tornidor <alessandro@trinca.tornidor.com>"]
6
  license = "MIT license"
7
  readme = "README.md"
 
8
 
9
  [metadata]
10
  name = "samgis"
11
- version = "1.7.1"
12
 
13
  [tool.poetry.urls]
14
  Source = "https://github.com/trincadev/samgis-be"
15
  Demo = "https://huggingface.co/spaces/aletrn/samgis"
16
 
17
  [tool.poetry.dependencies]
18
- python = ">=3.10, <3.12"
19
  onnxruntime = "^1.18.1"
20
- samgis-web = "1.0.17"
 
21
 
22
  [tool.poetry.group.gradio]
23
  optional = true
24
 
25
  [tool.poetry.group.gradio.dependencies]
26
- gradio = "^4.44.1"
27
 
28
  [tool.poetry.group.test]
29
  optional = true
 
1
  [tool.poetry]
2
  name = "samgis"
3
+ version = "1.8.0"
4
  description = "A backend for machine learning instance segmentation on geospatial data even without dedicated graphics cards."
5
  authors = ["alessandro trinca tornidor <alessandro@trinca.tornidor.com>"]
6
  license = "MIT license"
7
  readme = "README.md"
8
+ package-mode = false
9
 
10
  [metadata]
11
  name = "samgis"
12
+ version = "1.8.0"
13
 
14
  [tool.poetry.urls]
15
  Source = "https://github.com/trincadev/samgis-be"
16
  Demo = "https://huggingface.co/spaces/aletrn/samgis"
17
 
18
  [tool.poetry.dependencies]
19
+ python = ">=3.10, <3.13"
20
  onnxruntime = "^1.18.1"
21
+ samgis-web = "1.1.1"
22
+ samgis-core = "3.1.0"
23
 
24
  [tool.poetry.group.gradio]
25
  optional = true
26
 
27
  [tool.poetry.group.gradio.dependencies]
28
+ gradio = "^5.1.0"
29
 
30
  [tool.poetry.group.test]
31
  optional = true
requirements.txt CHANGED
@@ -1,14 +1,13 @@
1
  bson==0.5.10
2
- contextily==1.6.0
3
  geopandas==1.0.1
4
- numpy==1.25.2
5
  pillow==10.4.0
 
6
  python-dotenv==1.0.1
7
- onnxruntime==1.18.1
8
- rasterio==1.3.10
9
  requests==2.32.3
10
- samgis_core==3.0.6
11
- samgis_web==1.0.8
12
- fastapi==0.111.1
13
- pydantic==2.8.2
14
- uvicorn==0.30.3
 
1
  bson==0.5.10
2
+ contextily==1.6.2
3
  geopandas==1.0.1
4
+ numpy==2.1.2
5
  pillow==10.4.0
6
+ pydantic==2.9.2
7
  python-dotenv==1.0.1
8
+ onnxruntime==1.19.2
9
+ rasterio==1.4.1
10
  requests==2.32.3
11
+ samgis_core==3.1.0
12
+ samgis_web==1.1.1
13
+ uvicorn==0.32.0
 
 
requirements_poetry.txt CHANGED
@@ -1 +1 @@
1
- poetry==1.7.1
 
1
+ poetry==1.8.4
static/package.json CHANGED
@@ -14,21 +14,21 @@
14
  "@trincadev/driver.js": "https://github.com/trincadev/driver.js/archive/refs/tags/1.3.1.1-trincadev.tar.gz",
15
  "leaflet": "^1.9.4",
16
  "leaflet-providers": "^2.0.0",
17
- "vue": "^3.5.11"
18
  },
19
  "devDependencies": {
20
  "@tsconfig/node20": "^20.1.4",
21
  "@types/leaflet": "^1.9.12",
22
- "@types/node": "^22.7.4",
23
  "@vitejs/plugin-vue": "^5.1.4",
24
  "@vue/tsconfig": "^0.5.1",
25
  "autoprefixer": "^10.4.20",
26
- "eslint": "^9.11.1",
27
- "eslint-plugin-vue": "^9.28.0",
28
  "postcss": "^8.4.47",
29
  "postcss-import": "^16.1.0",
30
  "prettier": "^3.3.3",
31
- "tailwindcss": "^3.4.13",
32
- "vite": "^5.4.8"
33
  }
34
  }
 
14
  "@trincadev/driver.js": "https://github.com/trincadev/driver.js/archive/refs/tags/1.3.1.1-trincadev.tar.gz",
15
  "leaflet": "^1.9.4",
16
  "leaflet-providers": "^2.0.0",
17
+ "vue": "^3.5.12"
18
  },
19
  "devDependencies": {
20
  "@tsconfig/node20": "^20.1.4",
21
  "@types/leaflet": "^1.9.12",
22
+ "@types/node": "^22.7.5",
23
  "@vitejs/plugin-vue": "^5.1.4",
24
  "@vue/tsconfig": "^0.5.1",
25
  "autoprefixer": "^10.4.20",
26
+ "eslint": "^9.12.0",
27
+ "eslint-plugin-vue": "^9.29.0",
28
  "postcss": "^8.4.47",
29
  "postcss-import": "^16.1.0",
30
  "prettier": "^3.3.3",
31
+ "tailwindcss": "^3.4.14",
32
+ "vite": "^5.4.9"
33
  }
34
  }
static/pnpm-lock.yaml CHANGED
@@ -21,8 +21,8 @@ importers:
21
  specifier: ^2.0.0
22
  version: 2.0.0
23
  vue:
24
- specifier: ^3.5.11
25
- version: 3.5.11
26
  devDependencies:
27
  '@tsconfig/node20':
28
  specifier: ^20.1.4
@@ -31,11 +31,11 @@ importers:
31
  specifier: ^1.9.12
32
  version: 1.9.12
33
  '@types/node':
34
- specifier: ^22.7.4
35
- version: 22.7.4
36
  '@vitejs/plugin-vue':
37
  specifier: ^5.1.4
38
- version: 5.1.4(vite@5.4.8(@types/node@22.7.4))(vue@3.5.11)
39
  '@vue/tsconfig':
40
  specifier: ^0.5.1
41
  version: 0.5.1
@@ -43,11 +43,11 @@ importers:
43
  specifier: ^10.4.20
44
  version: 10.4.20(postcss@8.4.47)
45
  eslint:
46
- specifier: ^9.11.1
47
- version: 9.11.1(jiti@2.1.2)
48
  eslint-plugin-vue:
49
- specifier: ^9.28.0
50
- version: 9.28.0(eslint@9.11.1(jiti@2.1.2))
51
  postcss:
52
  specifier: ^8.4.47
53
  version: 8.4.47
@@ -58,11 +58,11 @@ importers:
58
  specifier: ^3.3.3
59
  version: 3.3.3
60
  tailwindcss:
61
- specifier: ^3.4.13
62
- version: 3.4.13
63
  vite:
64
- specifier: ^5.4.8
65
- version: 5.4.8(@types/node@22.7.4)
66
 
67
  packages:
68
 
@@ -78,13 +78,13 @@ packages:
78
  resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==}
79
  engines: {node: '>=6.9.0'}
80
 
81
- '@babel/parser@7.25.7':
82
- resolution: {integrity: sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==}
83
  engines: {node: '>=6.0.0'}
84
  hasBin: true
85
 
86
- '@babel/types@7.25.7':
87
- resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==}
88
  engines: {node: '>=6.9.0'}
89
 
90
  '@esbuild/aix-ppc64@0.21.5':
@@ -247,8 +247,8 @@ packages:
247
  resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
248
  engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
249
 
250
- '@eslint/js@9.11.1':
251
- resolution: {integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==}
252
  engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
253
 
254
  '@eslint/object-schema@2.1.4':
@@ -264,12 +264,20 @@ packages:
264
  peerDependencies:
265
  leaflet: ^1.2.0
266
 
 
 
 
 
 
 
 
 
267
  '@humanwhocodes/module-importer@1.0.1':
268
  resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
269
  engines: {node: '>=12.22'}
270
 
271
- '@humanwhocodes/retry@0.3.0':
272
- resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
273
  engines: {node: '>=18.18'}
274
 
275
  '@isaacs/cliui@8.0.2':
@@ -463,8 +471,8 @@ packages:
463
  '@types/leaflet@1.9.12':
464
  resolution: {integrity: sha512-BK7XS+NyRI291HIo0HCfE18Lp8oA30H1gpi1tf0mF3TgiCEzanQjOqNZ4x126SXzzi2oNSZhZ5axJp1k0iM6jg==}
465
 
466
- '@types/node@22.7.4':
467
- resolution: {integrity: sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==}
468
 
469
  '@vitejs/plugin-vue@5.1.4':
470
  resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==}
@@ -473,34 +481,34 @@ packages:
473
  vite: ^5.0.0
474
  vue: ^3.2.25
475
 
476
- '@vue/compiler-core@3.5.11':
477
- resolution: {integrity: sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg==}
478
 
479
- '@vue/compiler-dom@3.5.11':
480
- resolution: {integrity: sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew==}
481
 
482
- '@vue/compiler-sfc@3.5.11':
483
- resolution: {integrity: sha512-gsbBtT4N9ANXXepprle+X9YLg2htQk1sqH/qGJ/EApl+dgpUBdTv3yP7YlR535uHZY3n6XaR0/bKo0BgwwDniw==}
484
 
485
- '@vue/compiler-ssr@3.5.11':
486
- resolution: {integrity: sha512-P4+GPjOuC2aFTk1Z4WANvEhyOykcvEd5bIj2KVNGKGfM745LaXGr++5njpdBTzVz5pZifdlR1kpYSJJpIlSePA==}
487
 
488
- '@vue/reactivity@3.5.11':
489
- resolution: {integrity: sha512-Nqo5VZEn8MJWlCce8XoyVqHZbd5P2NH+yuAaFzuNSR96I+y1cnuUiq7xfSG+kyvLSiWmaHTKP1r3OZY4mMD50w==}
490
 
491
- '@vue/runtime-core@3.5.11':
492
- resolution: {integrity: sha512-7PsxFGqwfDhfhh0OcDWBG1DaIQIVOLgkwA5q6MtkPiDFjp5gohVnJEahSktwSFLq7R5PtxDKy6WKURVN1UDbzA==}
493
 
494
- '@vue/runtime-dom@3.5.11':
495
- resolution: {integrity: sha512-GNghjecT6IrGf0UhuYmpgaOlN7kxzQBhxWEn08c/SQDxv1yy4IXI1bn81JgEpQ4IXjRxWtPyI8x0/7TF5rPfYQ==}
496
 
497
- '@vue/server-renderer@3.5.11':
498
- resolution: {integrity: sha512-cVOwYBxR7Wb1B1FoxYvtjJD8X/9E5nlH4VSkJy2uMA1MzYNdzAAB//l8nrmN9py/4aP+3NjWukf9PZ3TeWULaA==}
499
  peerDependencies:
500
- vue: 3.5.11
501
 
502
- '@vue/shared@3.5.11':
503
- resolution: {integrity: sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ==}
504
 
505
  '@vue/tsconfig@0.5.1':
506
  resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==}
@@ -510,8 +518,8 @@ packages:
510
  peerDependencies:
511
  acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
512
 
513
- acorn@8.12.1:
514
- resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
515
  engines: {node: '>=0.4.0'}
516
  hasBin: true
517
 
@@ -590,8 +598,8 @@ packages:
590
  resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
591
  engines: {node: '>= 6'}
592
 
593
- caniuse-lite@1.0.30001666:
594
- resolution: {integrity: sha512-gD14ICmoV5ZZM1OdzPWmpx+q4GyefaK06zi8hmfHV5xe4/2nOQX3+Dw5o+fSqOws2xVwL9j+anOPFwHzdEdV4g==}
595
 
596
  chalk@4.1.2:
597
  resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
@@ -648,8 +656,8 @@ packages:
648
  eastasianwidth@0.2.0:
649
  resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
650
 
651
- electron-to-chromium@1.5.32:
652
- resolution: {integrity: sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==}
653
 
654
  emoji-regex@8.0.0:
655
  resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -674,8 +682,8 @@ packages:
674
  resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
675
  engines: {node: '>=10'}
676
 
677
- eslint-plugin-vue@9.28.0:
678
- resolution: {integrity: sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==}
679
  engines: {node: ^14.17.0 || >=16.0.0}
680
  peerDependencies:
681
  eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
@@ -696,8 +704,8 @@ packages:
696
  resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==}
697
  engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
698
 
699
- eslint@9.11.1:
700
- resolution: {integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==}
701
  engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
702
  hasBin: true
703
  peerDependencies:
@@ -850,10 +858,6 @@ packages:
850
  resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
851
  engines: {node: '>=0.12.0'}
852
 
853
- is-path-inside@3.0.3:
854
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
855
- engines: {node: '>=8'}
856
-
857
  isexe@2.0.0:
858
  resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
859
 
@@ -918,8 +922,8 @@ packages:
918
  lru-cache@10.4.3:
919
  resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
920
 
921
- magic-string@0.30.11:
922
- resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
923
 
924
  merge2@1.4.1:
925
  resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
@@ -1025,8 +1029,8 @@ packages:
1025
  resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1026
  engines: {node: '>= 6'}
1027
 
1028
- polyclip-ts@0.16.5:
1029
- resolution: {integrity: sha512-ZchnG0zGZReHgEo3EYzEUi6UmfQFFzNnj6AFU+gBm+IJJ4qG9gL4CwjtCV6oi/PittUPpJLiLJxcn/AgrCBO+g==}
1030
 
1031
  postcss-import@15.1.0:
1032
  resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
@@ -1181,8 +1185,8 @@ packages:
1181
  resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1182
  engines: {node: '>= 0.4'}
1183
 
1184
- tailwindcss@3.4.13:
1185
- resolution: {integrity: sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==}
1186
  engines: {node: '>=14.0.0'}
1187
  hasBin: true
1188
 
@@ -1230,8 +1234,8 @@ packages:
1230
  util-deprecate@1.0.2:
1231
  resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1232
 
1233
- vite@5.4.8:
1234
- resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==}
1235
  engines: {node: ^18.0.0 || >=20.0.0}
1236
  hasBin: true
1237
  peerDependencies:
@@ -1267,8 +1271,8 @@ packages:
1267
  peerDependencies:
1268
  eslint: '>=6.0.0'
1269
 
1270
- vue@3.5.11:
1271
- resolution: {integrity: sha512-/8Wurrd9J3lb72FTQS7gRMNQD4nztTtKPmuDuPuhqXmmpD6+skVjAeahNpVzsuky6Sy9gy7wn8UadqPtt9SQIg==}
1272
  peerDependencies:
1273
  typescript: '*'
1274
  peerDependenciesMeta:
@@ -1296,8 +1300,8 @@ packages:
1296
  resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
1297
  engines: {node: '>=12'}
1298
 
1299
- yaml@2.5.1:
1300
- resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==}
1301
  engines: {node: '>= 14'}
1302
  hasBin: true
1303
 
@@ -1313,11 +1317,11 @@ snapshots:
1313
 
1314
  '@babel/helper-validator-identifier@7.25.7': {}
1315
 
1316
- '@babel/parser@7.25.7':
1317
  dependencies:
1318
- '@babel/types': 7.25.7
1319
 
1320
- '@babel/types@7.25.7':
1321
  dependencies:
1322
  '@babel/helper-string-parser': 7.25.7
1323
  '@babel/helper-validator-identifier': 7.25.7
@@ -1392,9 +1396,9 @@ snapshots:
1392
  '@esbuild/win32-x64@0.21.5':
1393
  optional: true
1394
 
1395
- '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@2.1.2))':
1396
  dependencies:
1397
- eslint: 9.11.1(jiti@2.1.2)
1398
  eslint-visitor-keys: 3.4.3
1399
 
1400
  '@eslint-community/regexpp@4.11.1': {}
@@ -1423,7 +1427,7 @@ snapshots:
1423
  transitivePeerDependencies:
1424
  - supports-color
1425
 
1426
- '@eslint/js@9.11.1': {}
1427
 
1428
  '@eslint/object-schema@2.1.4': {}
1429
 
@@ -1439,11 +1443,18 @@ snapshots:
1439
  '@turf/line-split': 6.5.0
1440
  leaflet: 1.9.4
1441
  lodash: 4.17.21
1442
- polyclip-ts: 0.16.5
 
 
 
 
 
 
 
1443
 
1444
  '@humanwhocodes/module-importer@1.0.1': {}
1445
 
1446
- '@humanwhocodes/retry@0.3.0': {}
1447
 
1448
  '@isaacs/cliui@8.0.2':
1449
  dependencies:
@@ -1649,76 +1660,76 @@ snapshots:
1649
  dependencies:
1650
  '@types/geojson': 7946.0.14
1651
 
1652
- '@types/node@22.7.4':
1653
  dependencies:
1654
  undici-types: 6.19.8
1655
 
1656
- '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@22.7.4))(vue@3.5.11)':
1657
  dependencies:
1658
- vite: 5.4.8(@types/node@22.7.4)
1659
- vue: 3.5.11
1660
 
1661
- '@vue/compiler-core@3.5.11':
1662
  dependencies:
1663
- '@babel/parser': 7.25.7
1664
- '@vue/shared': 3.5.11
1665
  entities: 4.5.0
1666
  estree-walker: 2.0.2
1667
  source-map-js: 1.2.1
1668
 
1669
- '@vue/compiler-dom@3.5.11':
1670
  dependencies:
1671
- '@vue/compiler-core': 3.5.11
1672
- '@vue/shared': 3.5.11
1673
 
1674
- '@vue/compiler-sfc@3.5.11':
1675
  dependencies:
1676
- '@babel/parser': 7.25.7
1677
- '@vue/compiler-core': 3.5.11
1678
- '@vue/compiler-dom': 3.5.11
1679
- '@vue/compiler-ssr': 3.5.11
1680
- '@vue/shared': 3.5.11
1681
  estree-walker: 2.0.2
1682
- magic-string: 0.30.11
1683
  postcss: 8.4.47
1684
  source-map-js: 1.2.1
1685
 
1686
- '@vue/compiler-ssr@3.5.11':
1687
  dependencies:
1688
- '@vue/compiler-dom': 3.5.11
1689
- '@vue/shared': 3.5.11
1690
 
1691
- '@vue/reactivity@3.5.11':
1692
  dependencies:
1693
- '@vue/shared': 3.5.11
1694
 
1695
- '@vue/runtime-core@3.5.11':
1696
  dependencies:
1697
- '@vue/reactivity': 3.5.11
1698
- '@vue/shared': 3.5.11
1699
 
1700
- '@vue/runtime-dom@3.5.11':
1701
  dependencies:
1702
- '@vue/reactivity': 3.5.11
1703
- '@vue/runtime-core': 3.5.11
1704
- '@vue/shared': 3.5.11
1705
  csstype: 3.1.3
1706
 
1707
- '@vue/server-renderer@3.5.11(vue@3.5.11)':
1708
  dependencies:
1709
- '@vue/compiler-ssr': 3.5.11
1710
- '@vue/shared': 3.5.11
1711
- vue: 3.5.11
1712
 
1713
- '@vue/shared@3.5.11': {}
1714
 
1715
  '@vue/tsconfig@0.5.1': {}
1716
 
1717
- acorn-jsx@5.3.2(acorn@8.12.1):
1718
  dependencies:
1719
- acorn: 8.12.1
1720
 
1721
- acorn@8.12.1: {}
1722
 
1723
  ajv@6.12.6:
1724
  dependencies:
@@ -1751,7 +1762,7 @@ snapshots:
1751
  autoprefixer@10.4.20(postcss@8.4.47):
1752
  dependencies:
1753
  browserslist: 4.24.0
1754
- caniuse-lite: 1.0.30001666
1755
  fraction.js: 4.3.7
1756
  normalize-range: 0.1.2
1757
  picocolors: 1.1.0
@@ -1781,8 +1792,8 @@ snapshots:
1781
 
1782
  browserslist@4.24.0:
1783
  dependencies:
1784
- caniuse-lite: 1.0.30001666
1785
- electron-to-chromium: 1.5.32
1786
  node-releases: 2.0.18
1787
  update-browserslist-db: 1.1.1(browserslist@4.24.0)
1788
 
@@ -1790,7 +1801,7 @@ snapshots:
1790
 
1791
  camelcase-css@2.0.1: {}
1792
 
1793
- caniuse-lite@1.0.30001666: {}
1794
 
1795
  chalk@4.1.2:
1796
  dependencies:
@@ -1841,7 +1852,7 @@ snapshots:
1841
 
1842
  eastasianwidth@0.2.0: {}
1843
 
1844
- electron-to-chromium@1.5.32: {}
1845
 
1846
  emoji-regex@8.0.0: {}
1847
 
@@ -1879,16 +1890,16 @@ snapshots:
1879
 
1880
  escape-string-regexp@4.0.0: {}
1881
 
1882
- eslint-plugin-vue@9.28.0(eslint@9.11.1(jiti@2.1.2)):
1883
  dependencies:
1884
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.2))
1885
- eslint: 9.11.1(jiti@2.1.2)
1886
  globals: 13.24.0
1887
  natural-compare: 1.4.0
1888
  nth-check: 2.1.1
1889
  postcss-selector-parser: 6.1.2
1890
  semver: 7.6.3
1891
- vue-eslint-parser: 9.4.3(eslint@9.11.1(jiti@2.1.2))
1892
  xml-name-validator: 4.0.0
1893
  transitivePeerDependencies:
1894
  - supports-color
@@ -1907,18 +1918,18 @@ snapshots:
1907
 
1908
  eslint-visitor-keys@4.1.0: {}
1909
 
1910
- eslint@9.11.1(jiti@2.1.2):
1911
  dependencies:
1912
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.2))
1913
  '@eslint-community/regexpp': 4.11.1
1914
  '@eslint/config-array': 0.18.0
1915
  '@eslint/core': 0.6.0
1916
  '@eslint/eslintrc': 3.1.0
1917
- '@eslint/js': 9.11.1
1918
  '@eslint/plugin-kit': 0.2.0
 
1919
  '@humanwhocodes/module-importer': 1.0.1
1920
- '@humanwhocodes/retry': 0.3.0
1921
- '@nodelib/fs.walk': 1.2.8
1922
  '@types/estree': 1.0.6
1923
  '@types/json-schema': 7.0.15
1924
  ajv: 6.12.6
@@ -1938,13 +1949,11 @@ snapshots:
1938
  ignore: 5.3.2
1939
  imurmurhash: 0.1.4
1940
  is-glob: 4.0.3
1941
- is-path-inside: 3.0.3
1942
  json-stable-stringify-without-jsonify: 1.0.1
1943
  lodash.merge: 4.6.2
1944
  minimatch: 3.1.2
1945
  natural-compare: 1.4.0
1946
  optionator: 0.9.4
1947
- strip-ansi: 6.0.1
1948
  text-table: 0.2.0
1949
  optionalDependencies:
1950
  jiti: 2.1.2
@@ -1953,14 +1962,14 @@ snapshots:
1953
 
1954
  espree@10.2.0:
1955
  dependencies:
1956
- acorn: 8.12.1
1957
- acorn-jsx: 5.3.2(acorn@8.12.1)
1958
  eslint-visitor-keys: 4.1.0
1959
 
1960
  espree@9.6.1:
1961
  dependencies:
1962
- acorn: 8.12.1
1963
- acorn-jsx: 5.3.2(acorn@8.12.1)
1964
  eslint-visitor-keys: 3.4.3
1965
 
1966
  esquery@1.6.0:
@@ -2091,8 +2100,6 @@ snapshots:
2091
 
2092
  is-number@7.0.0: {}
2093
 
2094
- is-path-inside@3.0.3: {}
2095
-
2096
  isexe@2.0.0: {}
2097
 
2098
  jackspeak@3.4.3:
@@ -2145,7 +2152,7 @@ snapshots:
2145
 
2146
  lru-cache@10.4.3: {}
2147
 
2148
- magic-string@0.30.11:
2149
  dependencies:
2150
  '@jridgewell/sourcemap-codec': 1.5.0
2151
 
@@ -2234,7 +2241,7 @@ snapshots:
2234
 
2235
  pirates@4.0.6: {}
2236
 
2237
- polyclip-ts@0.16.5:
2238
  dependencies:
2239
  bignumber.js: 9.1.2
2240
  splaytree-ts: 1.0.1
@@ -2261,7 +2268,7 @@ snapshots:
2261
  postcss-load-config@4.0.2(postcss@8.4.47):
2262
  dependencies:
2263
  lilconfig: 3.1.2
2264
- yaml: 2.5.1
2265
  optionalDependencies:
2266
  postcss: 8.4.47
2267
 
@@ -2393,7 +2400,7 @@ snapshots:
2393
 
2394
  supports-preserve-symlinks-flag@1.0.0: {}
2395
 
2396
- tailwindcss@3.4.13:
2397
  dependencies:
2398
  '@alloc/quick-lru': 5.2.0
2399
  arg: 5.0.2
@@ -2458,19 +2465,19 @@ snapshots:
2458
 
2459
  util-deprecate@1.0.2: {}
2460
 
2461
- vite@5.4.8(@types/node@22.7.4):
2462
  dependencies:
2463
  esbuild: 0.21.5
2464
  postcss: 8.4.47
2465
  rollup: 4.24.0
2466
  optionalDependencies:
2467
- '@types/node': 22.7.4
2468
  fsevents: 2.3.3
2469
 
2470
- vue-eslint-parser@9.4.3(eslint@9.11.1(jiti@2.1.2)):
2471
  dependencies:
2472
  debug: 4.3.7
2473
- eslint: 9.11.1(jiti@2.1.2)
2474
  eslint-scope: 7.2.2
2475
  eslint-visitor-keys: 3.4.3
2476
  espree: 9.6.1
@@ -2480,13 +2487,13 @@ snapshots:
2480
  transitivePeerDependencies:
2481
  - supports-color
2482
 
2483
- vue@3.5.11:
2484
  dependencies:
2485
- '@vue/compiler-dom': 3.5.11
2486
- '@vue/compiler-sfc': 3.5.11
2487
- '@vue/runtime-dom': 3.5.11
2488
- '@vue/server-renderer': 3.5.11(vue@3.5.11)
2489
- '@vue/shared': 3.5.11
2490
 
2491
  which@2.0.2:
2492
  dependencies:
@@ -2508,6 +2515,6 @@ snapshots:
2508
 
2509
  xml-name-validator@4.0.0: {}
2510
 
2511
- yaml@2.5.1: {}
2512
 
2513
  yocto-queue@0.1.0: {}
 
21
  specifier: ^2.0.0
22
  version: 2.0.0
23
  vue:
24
+ specifier: ^3.5.12
25
+ version: 3.5.12
26
  devDependencies:
27
  '@tsconfig/node20':
28
  specifier: ^20.1.4
 
31
  specifier: ^1.9.12
32
  version: 1.9.12
33
  '@types/node':
34
+ specifier: ^22.7.5
35
+ version: 22.7.5
36
  '@vitejs/plugin-vue':
37
  specifier: ^5.1.4
38
+ version: 5.1.4(vite@5.4.9(@types/node@22.7.5))(vue@3.5.12)
39
  '@vue/tsconfig':
40
  specifier: ^0.5.1
41
  version: 0.5.1
 
43
  specifier: ^10.4.20
44
  version: 10.4.20(postcss@8.4.47)
45
  eslint:
46
+ specifier: ^9.12.0
47
+ version: 9.12.0(jiti@2.1.2)
48
  eslint-plugin-vue:
49
+ specifier: ^9.29.0
50
+ version: 9.29.0(eslint@9.12.0(jiti@2.1.2))
51
  postcss:
52
  specifier: ^8.4.47
53
  version: 8.4.47
 
58
  specifier: ^3.3.3
59
  version: 3.3.3
60
  tailwindcss:
61
+ specifier: ^3.4.14
62
+ version: 3.4.14
63
  vite:
64
+ specifier: ^5.4.9
65
+ version: 5.4.9(@types/node@22.7.5)
66
 
67
  packages:
68
 
 
78
  resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==}
79
  engines: {node: '>=6.9.0'}
80
 
81
+ '@babel/parser@7.25.8':
82
+ resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==}
83
  engines: {node: '>=6.0.0'}
84
  hasBin: true
85
 
86
+ '@babel/types@7.25.8':
87
+ resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==}
88
  engines: {node: '>=6.9.0'}
89
 
90
  '@esbuild/aix-ppc64@0.21.5':
 
247
  resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
248
  engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
249
 
250
+ '@eslint/js@9.12.0':
251
+ resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==}
252
  engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
253
 
254
  '@eslint/object-schema@2.1.4':
 
264
  peerDependencies:
265
  leaflet: ^1.2.0
266
 
267
+ '@humanfs/core@0.19.0':
268
+ resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==}
269
+ engines: {node: '>=18.18.0'}
270
+
271
+ '@humanfs/node@0.16.5':
272
+ resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==}
273
+ engines: {node: '>=18.18.0'}
274
+
275
  '@humanwhocodes/module-importer@1.0.1':
276
  resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
277
  engines: {node: '>=12.22'}
278
 
279
+ '@humanwhocodes/retry@0.3.1':
280
+ resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
281
  engines: {node: '>=18.18'}
282
 
283
  '@isaacs/cliui@8.0.2':
 
471
  '@types/leaflet@1.9.12':
472
  resolution: {integrity: sha512-BK7XS+NyRI291HIo0HCfE18Lp8oA30H1gpi1tf0mF3TgiCEzanQjOqNZ4x126SXzzi2oNSZhZ5axJp1k0iM6jg==}
473
 
474
+ '@types/node@22.7.5':
475
+ resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==}
476
 
477
  '@vitejs/plugin-vue@5.1.4':
478
  resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==}
 
481
  vite: ^5.0.0
482
  vue: ^3.2.25
483
 
484
+ '@vue/compiler-core@3.5.12':
485
+ resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==}
486
 
487
+ '@vue/compiler-dom@3.5.12':
488
+ resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==}
489
 
490
+ '@vue/compiler-sfc@3.5.12':
491
+ resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==}
492
 
493
+ '@vue/compiler-ssr@3.5.12':
494
+ resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==}
495
 
496
+ '@vue/reactivity@3.5.12':
497
+ resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==}
498
 
499
+ '@vue/runtime-core@3.5.12':
500
+ resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==}
501
 
502
+ '@vue/runtime-dom@3.5.12':
503
+ resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==}
504
 
505
+ '@vue/server-renderer@3.5.12':
506
+ resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==}
507
  peerDependencies:
508
+ vue: 3.5.12
509
 
510
+ '@vue/shared@3.5.12':
511
+ resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==}
512
 
513
  '@vue/tsconfig@0.5.1':
514
  resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==}
 
518
  peerDependencies:
519
  acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
520
 
521
+ acorn@8.13.0:
522
+ resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==}
523
  engines: {node: '>=0.4.0'}
524
  hasBin: true
525
 
 
598
  resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
599
  engines: {node: '>= 6'}
600
 
601
+ caniuse-lite@1.0.30001669:
602
+ resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==}
603
 
604
  chalk@4.1.2:
605
  resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
 
656
  eastasianwidth@0.2.0:
657
  resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
658
 
659
+ electron-to-chromium@1.5.39:
660
+ resolution: {integrity: sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==}
661
 
662
  emoji-regex@8.0.0:
663
  resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
 
682
  resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
683
  engines: {node: '>=10'}
684
 
685
+ eslint-plugin-vue@9.29.0:
686
+ resolution: {integrity: sha512-hamyjrBhNH6Li6R1h1VF9KHfshJlKgKEg3ARbGTn72CMNDSMhWbgC7NdkRDEh25AFW+4SDATzyNM+3gWuZii8g==}
687
  engines: {node: ^14.17.0 || >=16.0.0}
688
  peerDependencies:
689
  eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
 
704
  resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==}
705
  engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
706
 
707
+ eslint@9.12.0:
708
+ resolution: {integrity: sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==}
709
  engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
710
  hasBin: true
711
  peerDependencies:
 
858
  resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
859
  engines: {node: '>=0.12.0'}
860
 
 
 
 
 
861
  isexe@2.0.0:
862
  resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
863
 
 
922
  lru-cache@10.4.3:
923
  resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
924
 
925
+ magic-string@0.30.12:
926
+ resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
927
 
928
  merge2@1.4.1:
929
  resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
 
1029
  resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1030
  engines: {node: '>= 6'}
1031
 
1032
+ polyclip-ts@0.16.6:
1033
+ resolution: {integrity: sha512-/s1uKSup6qttXN4EaeRkE2SUkcwm72ZYMhHZH3MkJnBzgTGx1RHruawg15DBefwXqXA5f2Pz/HTXpRLHOjAEIw==}
1034
 
1035
  postcss-import@15.1.0:
1036
  resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
 
1185
  resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1186
  engines: {node: '>= 0.4'}
1187
 
1188
+ tailwindcss@3.4.14:
1189
+ resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==}
1190
  engines: {node: '>=14.0.0'}
1191
  hasBin: true
1192
 
 
1234
  util-deprecate@1.0.2:
1235
  resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1236
 
1237
+ vite@5.4.9:
1238
+ resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==}
1239
  engines: {node: ^18.0.0 || >=20.0.0}
1240
  hasBin: true
1241
  peerDependencies:
 
1271
  peerDependencies:
1272
  eslint: '>=6.0.0'
1273
 
1274
+ vue@3.5.12:
1275
+ resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==}
1276
  peerDependencies:
1277
  typescript: '*'
1278
  peerDependenciesMeta:
 
1300
  resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
1301
  engines: {node: '>=12'}
1302
 
1303
+ yaml@2.6.0:
1304
+ resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==}
1305
  engines: {node: '>= 14'}
1306
  hasBin: true
1307
 
 
1317
 
1318
  '@babel/helper-validator-identifier@7.25.7': {}
1319
 
1320
+ '@babel/parser@7.25.8':
1321
  dependencies:
1322
+ '@babel/types': 7.25.8
1323
 
1324
+ '@babel/types@7.25.8':
1325
  dependencies:
1326
  '@babel/helper-string-parser': 7.25.7
1327
  '@babel/helper-validator-identifier': 7.25.7
 
1396
  '@esbuild/win32-x64@0.21.5':
1397
  optional: true
1398
 
1399
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.12.0(jiti@2.1.2))':
1400
  dependencies:
1401
+ eslint: 9.12.0(jiti@2.1.2)
1402
  eslint-visitor-keys: 3.4.3
1403
 
1404
  '@eslint-community/regexpp@4.11.1': {}
 
1427
  transitivePeerDependencies:
1428
  - supports-color
1429
 
1430
+ '@eslint/js@9.12.0': {}
1431
 
1432
  '@eslint/object-schema@2.1.4': {}
1433
 
 
1443
  '@turf/line-split': 6.5.0
1444
  leaflet: 1.9.4
1445
  lodash: 4.17.21
1446
+ polyclip-ts: 0.16.6
1447
+
1448
+ '@humanfs/core@0.19.0': {}
1449
+
1450
+ '@humanfs/node@0.16.5':
1451
+ dependencies:
1452
+ '@humanfs/core': 0.19.0
1453
+ '@humanwhocodes/retry': 0.3.1
1454
 
1455
  '@humanwhocodes/module-importer@1.0.1': {}
1456
 
1457
+ '@humanwhocodes/retry@0.3.1': {}
1458
 
1459
  '@isaacs/cliui@8.0.2':
1460
  dependencies:
 
1660
  dependencies:
1661
  '@types/geojson': 7946.0.14
1662
 
1663
+ '@types/node@22.7.5':
1664
  dependencies:
1665
  undici-types: 6.19.8
1666
 
1667
+ '@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@22.7.5))(vue@3.5.12)':
1668
  dependencies:
1669
+ vite: 5.4.9(@types/node@22.7.5)
1670
+ vue: 3.5.12
1671
 
1672
+ '@vue/compiler-core@3.5.12':
1673
  dependencies:
1674
+ '@babel/parser': 7.25.8
1675
+ '@vue/shared': 3.5.12
1676
  entities: 4.5.0
1677
  estree-walker: 2.0.2
1678
  source-map-js: 1.2.1
1679
 
1680
+ '@vue/compiler-dom@3.5.12':
1681
  dependencies:
1682
+ '@vue/compiler-core': 3.5.12
1683
+ '@vue/shared': 3.5.12
1684
 
1685
+ '@vue/compiler-sfc@3.5.12':
1686
  dependencies:
1687
+ '@babel/parser': 7.25.8
1688
+ '@vue/compiler-core': 3.5.12
1689
+ '@vue/compiler-dom': 3.5.12
1690
+ '@vue/compiler-ssr': 3.5.12
1691
+ '@vue/shared': 3.5.12
1692
  estree-walker: 2.0.2
1693
+ magic-string: 0.30.12
1694
  postcss: 8.4.47
1695
  source-map-js: 1.2.1
1696
 
1697
+ '@vue/compiler-ssr@3.5.12':
1698
  dependencies:
1699
+ '@vue/compiler-dom': 3.5.12
1700
+ '@vue/shared': 3.5.12
1701
 
1702
+ '@vue/reactivity@3.5.12':
1703
  dependencies:
1704
+ '@vue/shared': 3.5.12
1705
 
1706
+ '@vue/runtime-core@3.5.12':
1707
  dependencies:
1708
+ '@vue/reactivity': 3.5.12
1709
+ '@vue/shared': 3.5.12
1710
 
1711
+ '@vue/runtime-dom@3.5.12':
1712
  dependencies:
1713
+ '@vue/reactivity': 3.5.12
1714
+ '@vue/runtime-core': 3.5.12
1715
+ '@vue/shared': 3.5.12
1716
  csstype: 3.1.3
1717
 
1718
+ '@vue/server-renderer@3.5.12(vue@3.5.12)':
1719
  dependencies:
1720
+ '@vue/compiler-ssr': 3.5.12
1721
+ '@vue/shared': 3.5.12
1722
+ vue: 3.5.12
1723
 
1724
+ '@vue/shared@3.5.12': {}
1725
 
1726
  '@vue/tsconfig@0.5.1': {}
1727
 
1728
+ acorn-jsx@5.3.2(acorn@8.13.0):
1729
  dependencies:
1730
+ acorn: 8.13.0
1731
 
1732
+ acorn@8.13.0: {}
1733
 
1734
  ajv@6.12.6:
1735
  dependencies:
 
1762
  autoprefixer@10.4.20(postcss@8.4.47):
1763
  dependencies:
1764
  browserslist: 4.24.0
1765
+ caniuse-lite: 1.0.30001669
1766
  fraction.js: 4.3.7
1767
  normalize-range: 0.1.2
1768
  picocolors: 1.1.0
 
1792
 
1793
  browserslist@4.24.0:
1794
  dependencies:
1795
+ caniuse-lite: 1.0.30001669
1796
+ electron-to-chromium: 1.5.39
1797
  node-releases: 2.0.18
1798
  update-browserslist-db: 1.1.1(browserslist@4.24.0)
1799
 
 
1801
 
1802
  camelcase-css@2.0.1: {}
1803
 
1804
+ caniuse-lite@1.0.30001669: {}
1805
 
1806
  chalk@4.1.2:
1807
  dependencies:
 
1852
 
1853
  eastasianwidth@0.2.0: {}
1854
 
1855
+ electron-to-chromium@1.5.39: {}
1856
 
1857
  emoji-regex@8.0.0: {}
1858
 
 
1890
 
1891
  escape-string-regexp@4.0.0: {}
1892
 
1893
+ eslint-plugin-vue@9.29.0(eslint@9.12.0(jiti@2.1.2)):
1894
  dependencies:
1895
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@2.1.2))
1896
+ eslint: 9.12.0(jiti@2.1.2)
1897
  globals: 13.24.0
1898
  natural-compare: 1.4.0
1899
  nth-check: 2.1.1
1900
  postcss-selector-parser: 6.1.2
1901
  semver: 7.6.3
1902
+ vue-eslint-parser: 9.4.3(eslint@9.12.0(jiti@2.1.2))
1903
  xml-name-validator: 4.0.0
1904
  transitivePeerDependencies:
1905
  - supports-color
 
1918
 
1919
  eslint-visitor-keys@4.1.0: {}
1920
 
1921
+ eslint@9.12.0(jiti@2.1.2):
1922
  dependencies:
1923
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@2.1.2))
1924
  '@eslint-community/regexpp': 4.11.1
1925
  '@eslint/config-array': 0.18.0
1926
  '@eslint/core': 0.6.0
1927
  '@eslint/eslintrc': 3.1.0
1928
+ '@eslint/js': 9.12.0
1929
  '@eslint/plugin-kit': 0.2.0
1930
+ '@humanfs/node': 0.16.5
1931
  '@humanwhocodes/module-importer': 1.0.1
1932
+ '@humanwhocodes/retry': 0.3.1
 
1933
  '@types/estree': 1.0.6
1934
  '@types/json-schema': 7.0.15
1935
  ajv: 6.12.6
 
1949
  ignore: 5.3.2
1950
  imurmurhash: 0.1.4
1951
  is-glob: 4.0.3
 
1952
  json-stable-stringify-without-jsonify: 1.0.1
1953
  lodash.merge: 4.6.2
1954
  minimatch: 3.1.2
1955
  natural-compare: 1.4.0
1956
  optionator: 0.9.4
 
1957
  text-table: 0.2.0
1958
  optionalDependencies:
1959
  jiti: 2.1.2
 
1962
 
1963
  espree@10.2.0:
1964
  dependencies:
1965
+ acorn: 8.13.0
1966
+ acorn-jsx: 5.3.2(acorn@8.13.0)
1967
  eslint-visitor-keys: 4.1.0
1968
 
1969
  espree@9.6.1:
1970
  dependencies:
1971
+ acorn: 8.13.0
1972
+ acorn-jsx: 5.3.2(acorn@8.13.0)
1973
  eslint-visitor-keys: 3.4.3
1974
 
1975
  esquery@1.6.0:
 
2100
 
2101
  is-number@7.0.0: {}
2102
 
 
 
2103
  isexe@2.0.0: {}
2104
 
2105
  jackspeak@3.4.3:
 
2152
 
2153
  lru-cache@10.4.3: {}
2154
 
2155
+ magic-string@0.30.12:
2156
  dependencies:
2157
  '@jridgewell/sourcemap-codec': 1.5.0
2158
 
 
2241
 
2242
  pirates@4.0.6: {}
2243
 
2244
+ polyclip-ts@0.16.6:
2245
  dependencies:
2246
  bignumber.js: 9.1.2
2247
  splaytree-ts: 1.0.1
 
2268
  postcss-load-config@4.0.2(postcss@8.4.47):
2269
  dependencies:
2270
  lilconfig: 3.1.2
2271
+ yaml: 2.6.0
2272
  optionalDependencies:
2273
  postcss: 8.4.47
2274
 
 
2400
 
2401
  supports-preserve-symlinks-flag@1.0.0: {}
2402
 
2403
+ tailwindcss@3.4.14:
2404
  dependencies:
2405
  '@alloc/quick-lru': 5.2.0
2406
  arg: 5.0.2
 
2465
 
2466
  util-deprecate@1.0.2: {}
2467
 
2468
+ vite@5.4.9(@types/node@22.7.5):
2469
  dependencies:
2470
  esbuild: 0.21.5
2471
  postcss: 8.4.47
2472
  rollup: 4.24.0
2473
  optionalDependencies:
2474
+ '@types/node': 22.7.5
2475
  fsevents: 2.3.3
2476
 
2477
+ vue-eslint-parser@9.4.3(eslint@9.12.0(jiti@2.1.2)):
2478
  dependencies:
2479
  debug: 4.3.7
2480
+ eslint: 9.12.0(jiti@2.1.2)
2481
  eslint-scope: 7.2.2
2482
  eslint-visitor-keys: 3.4.3
2483
  espree: 9.6.1
 
2487
  transitivePeerDependencies:
2488
  - supports-color
2489
 
2490
+ vue@3.5.12:
2491
  dependencies:
2492
+ '@vue/compiler-dom': 3.5.12
2493
+ '@vue/compiler-sfc': 3.5.12
2494
+ '@vue/runtime-dom': 3.5.12
2495
+ '@vue/server-renderer': 3.5.12(vue@3.5.12)
2496
+ '@vue/shared': 3.5.12
2497
 
2498
  which@2.0.2:
2499
  dependencies:
 
2515
 
2516
  xml-name-validator@4.0.0: {}
2517
 
2518
+ yaml@2.6.0: {}
2519
 
2520
  yocto-queue@0.1.0: {}