├── .github
└── workflows
│ ├── example.yml
│ └── test.yml
├── .gitignore
├── README.md
├── codecov.yml
├── example
├── index.html
└── index.ts
├── package.json
├── pnpm-lock.yaml
├── screenshot.png
├── src
├── terrain.test.ts
├── terrain.ts
└── worker.ts
├── tsconfig.json
├── vite.config.example.ts
└── vite.config.js
/.github/workflows/example.yml:
--------------------------------------------------------------------------------
1 | name: github pages
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | paths:
8 | - 'src/**'
9 | - 'example/**'
10 | workflow_dispatch:
11 |
12 | jobs:
13 | build-deploy:
14 | runs-on: ubuntu-22.04
15 | steps:
16 | - uses: actions/checkout@v2
17 |
18 | # Node.js環境のセットアップを行う
19 | - name: setup node
20 | uses: actions/setup-node@v1
21 | with:
22 | node-version: '22.x'
23 |
24 | - name: install pnpm
25 | run: npm install -g pnpm
26 |
27 | - name: install
28 | run: pnpm install
29 |
30 | - name: build
31 | run: pnpm build:example
32 |
33 | - name: add nojekyll
34 | run: touch ./demo/.nojekyll
35 |
36 | - name: deploy
37 | uses: peaceiris/actions-gh-pages@v3
38 | with:
39 | github_token: ${{ secrets.GITHUB_TOKEN }}
40 | publish_dir: ./demo
41 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: test
2 |
3 | on:
4 | pull_request:
5 | branches:
6 | - master
7 | paths:
8 | - 'src/**'
9 | - 'example/**'
10 | workflow_dispatch:
11 |
12 | jobs:
13 | test:
14 | runs-on: ubuntu-22.04
15 | steps:
16 | - uses: actions/checkout@v2
17 |
18 | - name: setup node
19 | uses: actions/setup-node@v1
20 | with:
21 | node-version: '22.x'
22 |
23 | - name: install pnpm
24 | run: npm install -g pnpm
25 |
26 | - name: install
27 | run: pnpm install
28 |
29 | - name: build
30 | run: pnpm build
31 |
32 | - name: install playwright
33 | run: pnpm exec playwright install
34 |
35 | - name: unittest
36 | run: pnpm test
37 |
38 | - name: Upload coverage reports to Codecov
39 | uses: codecov/codecov-action@v5
40 | with:
41 | token: ${{ secrets.CODECOV_TOKEN }}
42 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | types
12 | dist
13 | dist-ssr
14 | *.local
15 |
16 | # Editor directories and files
17 | .vscode/*
18 | !.vscode/extensions.json
19 | .idea
20 | .DS_Store
21 | *.suo
22 | *.ntvs*
23 | *.njsproj
24 | *.sln
25 | *.sw?
26 |
27 | __screenshots__
28 | coverage
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 | 
3 | [](https://codecov.io/gh/mug-jp/maplibre-gl-gsi-terrain)
4 |
5 | # maplibre-gl-gsi-terrain
6 |
7 | 
8 |
9 | ## インストール
10 |
11 | ### CDN経由
12 |
13 | ```html
14 |
17 | ```
18 |
19 | ### npm module として利用する
20 |
21 | ```sh
22 | npm install maplibre-gl-gsi-terrain
23 | ```
24 |
25 | ## 使い方
26 |
27 | ```typescript
28 | import maplibregl from 'maplibre-gl';
29 | import { useGsiTerrainSource } from 'maplibre-gl-gsi-terrain';
30 |
31 | const gsiTerrainSource = useGsiTerrainSource(maplibregl.addProtocol);
32 | const map = new maplibregl.Map({
33 | container: 'map',
34 | style: {
35 | version: 8,
36 | center: [139.6917, 35.6895],
37 | zoom: 10,
38 | pitch: 30,
39 | maxPitch: 100,
40 | sources: {
41 | terrain: gsiTerrainSource,
42 | seamlessphoto: {
43 | type: 'raster',
44 | tiles: [
45 | 'https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/{z}/{x}/{y}.jpg',
46 | ],
47 | maxzoom: 18,
48 | tileSize: 256,
49 | attribution:
50 | '地理院タイル',
51 | },
52 | },
53 | layers: [
54 | {
55 | id: 'seamlessphoto',
56 | source: 'seamlessphoto',
57 | type: 'raster',
58 | },
59 | ],
60 | terrain: {
61 | source: 'terrain',
62 | exaggeration: 1.2,
63 | },
64 | },
65 | });
66 | ```
67 |
68 | `useGsiTerrainSource()`は第2引数でオプションを受け取ります。
69 |
70 | | オプション名 | 型 | デフォルト |
71 | | --- | --- | --- |
72 | | `tileUrl` | `string` | 地理院標高タイルに準ずるエンコーディングのタイルURL,{z}/{x}/{y}形式。
デフォルトは`https://cyberjapandata.gsi.go.jp/xyz/dem_png/{z}/{x}/{y}.png` |
73 | | `maxzoom` | `number` | 最大ズームレベル、デフォルトは`14` |
74 | | `minzoom` | `number` | 最小ズームレベル、デフォルトは`1` |
75 | | `attribution` | `string` | デフォルトは`地理院タイル` |
76 |
77 | ### 産総研シームレス標高タイルを利用する例
78 |
79 | ```typescript
80 | import maplibreGl from 'maplibre-gl';
81 | import { useGsiTerrainSource } from 'maplibre-gl-gsi-terrain';
82 |
83 | const gsiTerrainSource = useGsiTerrainSource(maplibreGl.addProtocol, {
84 | tileUrl: 'https://tiles.gsj.jp/tiles/elev/mixed/{z}/{y}/{x}.png',
85 | maxzoom: 17,
86 | attribution: '産総研シームレス標高タイル'
87 | });
88 | ```
89 |
90 | ### `ProtocolAction`を直接利用する
91 |
92 | `getGsiDemProtocolAction()`を利用することで、`ProtocolAction`を取得できます。通常のケースでは`useGsiTerrainSource()`の利用を推奨します。
93 |
94 | ```typescript
95 | import maplibregl, { RasterDEMSourceSpecification } from 'maplibre-gl';
96 | import { getGsiDemProtocolAction } from '../src/terrain.ts';
97 |
98 | const protocolAction = getGsiDemProtocolAction('gsidem');
99 | maplibregl.addProtocol('gsidem', protocolAction);
100 | const gsiTerrainSource: RasterDEMSourceSpecification = {
101 | type: 'raster-dem',
102 | tiles: ['gsidem://https://tiles.gsj.jp/tiles/elev/mixed/{z}/{y}/{x}.png'],
103 | tileSize: 256,
104 | minzoom: 1,
105 | maxzoom: 17,
106 | encoding: 'terrarium',
107 | attribution:
108 | '地理院タイル',
109 | };
110 | ```
111 |
112 | ## MapLibre GL JS v3以前を利用する場合
113 |
114 | このライブラリは`maplibregl.addProtocol`に依存しています。`addProtocol`はv4で破壊的変更があり、このライブラリでは`v1.0.0`以降、v4に準拠した仕様になっています。v3以前を利用する場合は`v0.0.2`を利用してください。
115 |
116 | ```sh
117 | npm install maplibre-gl-gsi-terrain@0.0.2
118 | ```
119 |
--------------------------------------------------------------------------------
/codecov.yml:
--------------------------------------------------------------------------------
1 | ignore:
2 | - "example"
--------------------------------------------------------------------------------
/example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | maplibre-gl-gsi-terrain
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/example/index.ts:
--------------------------------------------------------------------------------
1 | import maplibregl, { RasterDEMSourceSpecification } from 'maplibre-gl';
2 | import 'maplibre-gl/dist/maplibre-gl.css';
3 | import { getGsiDemProtocolAction } from '../src/terrain.ts';
4 |
5 | const protocolAction = getGsiDemProtocolAction('gsidem');
6 | maplibregl.addProtocol('gsidem', protocolAction);
7 | const gsiTerrainSource: RasterDEMSourceSpecification = {
8 | type: 'raster-dem',
9 | tiles: ['gsidem://https://tiles.gsj.jp/tiles/elev/mixed/{z}/{y}/{x}.png'],
10 | tileSize: 256,
11 | encoding: 'terrarium',
12 | minzoom: 1,
13 | maxzoom: 17,
14 | attribution:
15 | '地理院タイル',
16 | };
17 |
18 | new maplibregl.Map({
19 | container: 'app',
20 | zoom: 13,
21 | center: [138.7, 35.3],
22 | minZoom: 5,
23 | maxZoom: 18,
24 | pitch: 70,
25 | maxPitch: 100,
26 | style: {
27 | version: 8,
28 | projection: {
29 | type: 'globe',
30 | },
31 | sources: {
32 | seamlessphoto: {
33 | type: 'raster',
34 | tiles: [
35 | 'https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/{z}/{x}/{y}.jpg',
36 | ],
37 | maxzoom: 18,
38 | tileSize: 256,
39 | attribution:
40 | '地理院タイル',
41 | },
42 | terrain: gsiTerrainSource,
43 | },
44 | layers: [
45 | {
46 | id: 'seamlessphoto',
47 | source: 'seamlessphoto',
48 | type: 'raster',
49 | },
50 | ],
51 | terrain: {
52 | source: 'terrain',
53 | exaggeration: 1.2,
54 | },
55 | },
56 | });
57 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "maplibre-gl-gsi-terrain",
3 | "version": "2.2.2",
4 | "type": "module",
5 | "main": "./dist/terrain.js",
6 | "types": "./dist/terrain.d.ts",
7 | "files": [
8 | "dist"
9 | ],
10 | "scripts": {
11 | "dev": "vite -c vite.config.example.ts",
12 | "build:example": "vite build -c vite.config.example.ts",
13 | "build": "vite build && tsc",
14 | "prepare": "npm run build",
15 | "test": "vitest src --coverage --coverage.provider=v8"
16 | },
17 | "devDependencies": {
18 | "@vitest/browser": "^2.1.8",
19 | "@vitest/coverage-v8": "^2.1.8",
20 | "maplibre-gl": "^5.0.0",
21 | "playwright": "^1.49.1",
22 | "typescript": "^5.5.3",
23 | "vite": "^3.2.3",
24 | "vitest": "^2.1.8"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | devDependencies:
11 | '@vitest/browser':
12 | specifier: ^2.1.8
13 | version: 2.1.8(@types/node@22.10.5)(playwright@1.49.1)(typescript@5.7.2)(vite@3.2.11(@types/node@22.10.5))(vitest@2.1.8)
14 | '@vitest/coverage-v8':
15 | specifier: ^2.1.8
16 | version: 2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8)
17 | maplibre-gl:
18 | specifier: ^5.0.0
19 | version: 5.0.0
20 | playwright:
21 | specifier: ^1.49.1
22 | version: 1.49.1
23 | typescript:
24 | specifier: ^5.5.3
25 | version: 5.7.2
26 | vite:
27 | specifier: ^3.2.3
28 | version: 3.2.11(@types/node@22.10.5)
29 | vitest:
30 | specifier: ^2.1.8
31 | version: 2.1.8(@types/node@22.10.5)(@vitest/browser@2.1.8)(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.2))
32 |
33 | packages:
34 |
35 | '@ampproject/remapping@2.3.0':
36 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
37 | engines: {node: '>=6.0.0'}
38 |
39 | '@babel/code-frame@7.26.2':
40 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
41 | engines: {node: '>=6.9.0'}
42 |
43 | '@babel/helper-string-parser@7.25.9':
44 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
45 | engines: {node: '>=6.9.0'}
46 |
47 | '@babel/helper-validator-identifier@7.25.9':
48 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
49 | engines: {node: '>=6.9.0'}
50 |
51 | '@babel/parser@7.26.3':
52 | resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==}
53 | engines: {node: '>=6.0.0'}
54 | hasBin: true
55 |
56 | '@babel/runtime@7.26.0':
57 | resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==}
58 | engines: {node: '>=6.9.0'}
59 |
60 | '@babel/types@7.26.3':
61 | resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==}
62 | engines: {node: '>=6.9.0'}
63 |
64 | '@bcoe/v8-coverage@0.2.3':
65 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
66 |
67 | '@bundled-es-modules/cookie@2.0.1':
68 | resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==}
69 |
70 | '@bundled-es-modules/statuses@1.0.1':
71 | resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==}
72 |
73 | '@bundled-es-modules/tough-cookie@0.1.6':
74 | resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==}
75 |
76 | '@esbuild/aix-ppc64@0.21.5':
77 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
78 | engines: {node: '>=12'}
79 | cpu: [ppc64]
80 | os: [aix]
81 |
82 | '@esbuild/android-arm64@0.21.5':
83 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
84 | engines: {node: '>=12'}
85 | cpu: [arm64]
86 | os: [android]
87 |
88 | '@esbuild/android-arm@0.15.18':
89 | resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==}
90 | engines: {node: '>=12'}
91 | cpu: [arm]
92 | os: [android]
93 |
94 | '@esbuild/android-arm@0.21.5':
95 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
96 | engines: {node: '>=12'}
97 | cpu: [arm]
98 | os: [android]
99 |
100 | '@esbuild/android-x64@0.21.5':
101 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
102 | engines: {node: '>=12'}
103 | cpu: [x64]
104 | os: [android]
105 |
106 | '@esbuild/darwin-arm64@0.21.5':
107 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
108 | engines: {node: '>=12'}
109 | cpu: [arm64]
110 | os: [darwin]
111 |
112 | '@esbuild/darwin-x64@0.21.5':
113 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
114 | engines: {node: '>=12'}
115 | cpu: [x64]
116 | os: [darwin]
117 |
118 | '@esbuild/freebsd-arm64@0.21.5':
119 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
120 | engines: {node: '>=12'}
121 | cpu: [arm64]
122 | os: [freebsd]
123 |
124 | '@esbuild/freebsd-x64@0.21.5':
125 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
126 | engines: {node: '>=12'}
127 | cpu: [x64]
128 | os: [freebsd]
129 |
130 | '@esbuild/linux-arm64@0.21.5':
131 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
132 | engines: {node: '>=12'}
133 | cpu: [arm64]
134 | os: [linux]
135 |
136 | '@esbuild/linux-arm@0.21.5':
137 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
138 | engines: {node: '>=12'}
139 | cpu: [arm]
140 | os: [linux]
141 |
142 | '@esbuild/linux-ia32@0.21.5':
143 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
144 | engines: {node: '>=12'}
145 | cpu: [ia32]
146 | os: [linux]
147 |
148 | '@esbuild/linux-loong64@0.15.18':
149 | resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==}
150 | engines: {node: '>=12'}
151 | cpu: [loong64]
152 | os: [linux]
153 |
154 | '@esbuild/linux-loong64@0.21.5':
155 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
156 | engines: {node: '>=12'}
157 | cpu: [loong64]
158 | os: [linux]
159 |
160 | '@esbuild/linux-mips64el@0.21.5':
161 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
162 | engines: {node: '>=12'}
163 | cpu: [mips64el]
164 | os: [linux]
165 |
166 | '@esbuild/linux-ppc64@0.21.5':
167 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
168 | engines: {node: '>=12'}
169 | cpu: [ppc64]
170 | os: [linux]
171 |
172 | '@esbuild/linux-riscv64@0.21.5':
173 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
174 | engines: {node: '>=12'}
175 | cpu: [riscv64]
176 | os: [linux]
177 |
178 | '@esbuild/linux-s390x@0.21.5':
179 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
180 | engines: {node: '>=12'}
181 | cpu: [s390x]
182 | os: [linux]
183 |
184 | '@esbuild/linux-x64@0.21.5':
185 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
186 | engines: {node: '>=12'}
187 | cpu: [x64]
188 | os: [linux]
189 |
190 | '@esbuild/netbsd-x64@0.21.5':
191 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
192 | engines: {node: '>=12'}
193 | cpu: [x64]
194 | os: [netbsd]
195 |
196 | '@esbuild/openbsd-x64@0.21.5':
197 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
198 | engines: {node: '>=12'}
199 | cpu: [x64]
200 | os: [openbsd]
201 |
202 | '@esbuild/sunos-x64@0.21.5':
203 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
204 | engines: {node: '>=12'}
205 | cpu: [x64]
206 | os: [sunos]
207 |
208 | '@esbuild/win32-arm64@0.21.5':
209 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
210 | engines: {node: '>=12'}
211 | cpu: [arm64]
212 | os: [win32]
213 |
214 | '@esbuild/win32-ia32@0.21.5':
215 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
216 | engines: {node: '>=12'}
217 | cpu: [ia32]
218 | os: [win32]
219 |
220 | '@esbuild/win32-x64@0.21.5':
221 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
222 | engines: {node: '>=12'}
223 | cpu: [x64]
224 | os: [win32]
225 |
226 | '@inquirer/confirm@5.1.1':
227 | resolution: {integrity: sha512-vVLSbGci+IKQvDOtzpPTCOiEJCNidHcAq9JYVoWTW0svb5FiwSLotkM+JXNXejfjnzVYV9n0DTBythl9+XgTxg==}
228 | engines: {node: '>=18'}
229 | peerDependencies:
230 | '@types/node': '>=18'
231 |
232 | '@inquirer/core@10.1.2':
233 | resolution: {integrity: sha512-bHd96F3ezHg1mf/J0Rb4CV8ndCN0v28kUlrHqP7+ECm1C/A+paB7Xh2lbMk6x+kweQC+rZOxM/YeKikzxco8bQ==}
234 | engines: {node: '>=18'}
235 |
236 | '@inquirer/figures@1.0.9':
237 | resolution: {integrity: sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==}
238 | engines: {node: '>=18'}
239 |
240 | '@inquirer/type@3.0.2':
241 | resolution: {integrity: sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==}
242 | engines: {node: '>=18'}
243 | peerDependencies:
244 | '@types/node': '>=18'
245 |
246 | '@isaacs/cliui@8.0.2':
247 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
248 | engines: {node: '>=12'}
249 |
250 | '@istanbuljs/schema@0.1.3':
251 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
252 | engines: {node: '>=8'}
253 |
254 | '@jridgewell/gen-mapping@0.3.8':
255 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
256 | engines: {node: '>=6.0.0'}
257 |
258 | '@jridgewell/resolve-uri@3.1.2':
259 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
260 | engines: {node: '>=6.0.0'}
261 |
262 | '@jridgewell/set-array@1.2.1':
263 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
264 | engines: {node: '>=6.0.0'}
265 |
266 | '@jridgewell/sourcemap-codec@1.5.0':
267 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
268 |
269 | '@jridgewell/trace-mapping@0.3.25':
270 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
271 |
272 | '@mapbox/geojson-rewind@0.5.2':
273 | resolution: {integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==}
274 | hasBin: true
275 |
276 | '@mapbox/jsonlint-lines-primitives@2.0.2':
277 | resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==}
278 | engines: {node: '>= 0.6'}
279 |
280 | '@mapbox/point-geometry@0.1.0':
281 | resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==}
282 |
283 | '@mapbox/tiny-sdf@2.0.6':
284 | resolution: {integrity: sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==}
285 |
286 | '@mapbox/unitbezier@0.0.1':
287 | resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==}
288 |
289 | '@mapbox/vector-tile@1.3.1':
290 | resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==}
291 |
292 | '@mapbox/whoots-js@3.1.0':
293 | resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==}
294 | engines: {node: '>=6.0.0'}
295 |
296 | '@maplibre/maplibre-gl-style-spec@22.0.1':
297 | resolution: {integrity: sha512-V7bSw7Ui6+NhpeeuYqGoqamvKuy+3+uCvQ/t4ZJkwN8cx527CAlQQQ2kp+w5R9q+Tw6bUAH+fsq+mPEkicgT8g==}
298 | hasBin: true
299 |
300 | '@mswjs/interceptors@0.37.4':
301 | resolution: {integrity: sha512-YUenGsnvhhuBkabJZrga8dv/8QFRBe/isTb5CYvmzaI/IISLIkKp8kItSu9URY9tsJLvkPkq2W48OU/piDvfnA==}
302 | engines: {node: '>=18'}
303 |
304 | '@open-draft/deferred-promise@2.2.0':
305 | resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==}
306 |
307 | '@open-draft/logger@0.3.0':
308 | resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==}
309 |
310 | '@open-draft/until@2.1.0':
311 | resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==}
312 |
313 | '@pkgjs/parseargs@0.11.0':
314 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
315 | engines: {node: '>=14'}
316 |
317 | '@polka/url@1.0.0-next.28':
318 | resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
319 |
320 | '@rollup/rollup-android-arm-eabi@4.29.1':
321 | resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==}
322 | cpu: [arm]
323 | os: [android]
324 |
325 | '@rollup/rollup-android-arm64@4.29.1':
326 | resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==}
327 | cpu: [arm64]
328 | os: [android]
329 |
330 | '@rollup/rollup-darwin-arm64@4.29.1':
331 | resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==}
332 | cpu: [arm64]
333 | os: [darwin]
334 |
335 | '@rollup/rollup-darwin-x64@4.29.1':
336 | resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==}
337 | cpu: [x64]
338 | os: [darwin]
339 |
340 | '@rollup/rollup-freebsd-arm64@4.29.1':
341 | resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==}
342 | cpu: [arm64]
343 | os: [freebsd]
344 |
345 | '@rollup/rollup-freebsd-x64@4.29.1':
346 | resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==}
347 | cpu: [x64]
348 | os: [freebsd]
349 |
350 | '@rollup/rollup-linux-arm-gnueabihf@4.29.1':
351 | resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==}
352 | cpu: [arm]
353 | os: [linux]
354 |
355 | '@rollup/rollup-linux-arm-musleabihf@4.29.1':
356 | resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==}
357 | cpu: [arm]
358 | os: [linux]
359 |
360 | '@rollup/rollup-linux-arm64-gnu@4.29.1':
361 | resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==}
362 | cpu: [arm64]
363 | os: [linux]
364 |
365 | '@rollup/rollup-linux-arm64-musl@4.29.1':
366 | resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==}
367 | cpu: [arm64]
368 | os: [linux]
369 |
370 | '@rollup/rollup-linux-loongarch64-gnu@4.29.1':
371 | resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==}
372 | cpu: [loong64]
373 | os: [linux]
374 |
375 | '@rollup/rollup-linux-powerpc64le-gnu@4.29.1':
376 | resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==}
377 | cpu: [ppc64]
378 | os: [linux]
379 |
380 | '@rollup/rollup-linux-riscv64-gnu@4.29.1':
381 | resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==}
382 | cpu: [riscv64]
383 | os: [linux]
384 |
385 | '@rollup/rollup-linux-s390x-gnu@4.29.1':
386 | resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==}
387 | cpu: [s390x]
388 | os: [linux]
389 |
390 | '@rollup/rollup-linux-x64-gnu@4.29.1':
391 | resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==}
392 | cpu: [x64]
393 | os: [linux]
394 |
395 | '@rollup/rollup-linux-x64-musl@4.29.1':
396 | resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==}
397 | cpu: [x64]
398 | os: [linux]
399 |
400 | '@rollup/rollup-win32-arm64-msvc@4.29.1':
401 | resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==}
402 | cpu: [arm64]
403 | os: [win32]
404 |
405 | '@rollup/rollup-win32-ia32-msvc@4.29.1':
406 | resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==}
407 | cpu: [ia32]
408 | os: [win32]
409 |
410 | '@rollup/rollup-win32-x64-msvc@4.29.1':
411 | resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==}
412 | cpu: [x64]
413 | os: [win32]
414 |
415 | '@testing-library/dom@10.4.0':
416 | resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
417 | engines: {node: '>=18'}
418 |
419 | '@testing-library/user-event@14.5.2':
420 | resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==}
421 | engines: {node: '>=12', npm: '>=6'}
422 | peerDependencies:
423 | '@testing-library/dom': '>=7.21.4'
424 |
425 | '@types/aria-query@5.0.4':
426 | resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
427 |
428 | '@types/cookie@0.6.0':
429 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
430 |
431 | '@types/estree@1.0.6':
432 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
433 |
434 | '@types/geojson-vt@3.2.5':
435 | resolution: {integrity: sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==}
436 |
437 | '@types/geojson@7946.0.15':
438 | resolution: {integrity: sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==}
439 |
440 | '@types/mapbox__point-geometry@0.1.4':
441 | resolution: {integrity: sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==}
442 |
443 | '@types/mapbox__vector-tile@1.3.4':
444 | resolution: {integrity: sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==}
445 |
446 | '@types/node@22.10.5':
447 | resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==}
448 |
449 | '@types/pbf@3.0.5':
450 | resolution: {integrity: sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==}
451 |
452 | '@types/statuses@2.0.5':
453 | resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==}
454 |
455 | '@types/supercluster@7.1.3':
456 | resolution: {integrity: sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==}
457 |
458 | '@types/tough-cookie@4.0.5':
459 | resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
460 |
461 | '@vitest/browser@2.1.8':
462 | resolution: {integrity: sha512-OWVvEJThRgxlNMYNVLEK/9qVkpRcLvyuKLngIV3Hob01P56NjPHprVBYn+rx4xAJudbM9yrCrywPIEuA3Xyo8A==}
463 | peerDependencies:
464 | playwright: '*'
465 | safaridriver: '*'
466 | vitest: 2.1.8
467 | webdriverio: '*'
468 | peerDependenciesMeta:
469 | playwright:
470 | optional: true
471 | safaridriver:
472 | optional: true
473 | webdriverio:
474 | optional: true
475 |
476 | '@vitest/coverage-v8@2.1.8':
477 | resolution: {integrity: sha512-2Y7BPlKH18mAZYAW1tYByudlCYrQyl5RGvnnDYJKW5tCiO5qg3KSAy3XAxcxKz900a0ZXxWtKrMuZLe3lKBpJw==}
478 | peerDependencies:
479 | '@vitest/browser': 2.1.8
480 | vitest: 2.1.8
481 | peerDependenciesMeta:
482 | '@vitest/browser':
483 | optional: true
484 |
485 | '@vitest/expect@2.1.8':
486 | resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==}
487 |
488 | '@vitest/mocker@2.1.8':
489 | resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==}
490 | peerDependencies:
491 | msw: ^2.4.9
492 | vite: ^5.0.0
493 | peerDependenciesMeta:
494 | msw:
495 | optional: true
496 | vite:
497 | optional: true
498 |
499 | '@vitest/pretty-format@2.1.8':
500 | resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==}
501 |
502 | '@vitest/runner@2.1.8':
503 | resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==}
504 |
505 | '@vitest/snapshot@2.1.8':
506 | resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==}
507 |
508 | '@vitest/spy@2.1.8':
509 | resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==}
510 |
511 | '@vitest/utils@2.1.8':
512 | resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==}
513 |
514 | ansi-escapes@4.3.2:
515 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
516 | engines: {node: '>=8'}
517 |
518 | ansi-regex@5.0.1:
519 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
520 | engines: {node: '>=8'}
521 |
522 | ansi-regex@6.1.0:
523 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
524 | engines: {node: '>=12'}
525 |
526 | ansi-styles@4.3.0:
527 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
528 | engines: {node: '>=8'}
529 |
530 | ansi-styles@5.2.0:
531 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
532 | engines: {node: '>=10'}
533 |
534 | ansi-styles@6.2.1:
535 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
536 | engines: {node: '>=12'}
537 |
538 | aria-query@5.3.0:
539 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
540 |
541 | assertion-error@2.0.1:
542 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
543 | engines: {node: '>=12'}
544 |
545 | balanced-match@1.0.2:
546 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
547 |
548 | brace-expansion@2.0.1:
549 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
550 |
551 | cac@6.7.14:
552 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
553 | engines: {node: '>=8'}
554 |
555 | chai@5.1.2:
556 | resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==}
557 | engines: {node: '>=12'}
558 |
559 | chalk@4.1.2:
560 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
561 | engines: {node: '>=10'}
562 |
563 | check-error@2.1.1:
564 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
565 | engines: {node: '>= 16'}
566 |
567 | cli-width@4.1.0:
568 | resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
569 | engines: {node: '>= 12'}
570 |
571 | cliui@8.0.1:
572 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
573 | engines: {node: '>=12'}
574 |
575 | color-convert@2.0.1:
576 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
577 | engines: {node: '>=7.0.0'}
578 |
579 | color-name@1.1.4:
580 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
581 |
582 | cookie@0.7.2:
583 | resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
584 | engines: {node: '>= 0.6'}
585 |
586 | cross-spawn@7.0.6:
587 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
588 | engines: {node: '>= 8'}
589 |
590 | debug@4.4.0:
591 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
592 | engines: {node: '>=6.0'}
593 | peerDependencies:
594 | supports-color: '*'
595 | peerDependenciesMeta:
596 | supports-color:
597 | optional: true
598 |
599 | deep-eql@5.0.2:
600 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
601 | engines: {node: '>=6'}
602 |
603 | dequal@2.0.3:
604 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
605 | engines: {node: '>=6'}
606 |
607 | dom-accessibility-api@0.5.16:
608 | resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
609 |
610 | earcut@3.0.1:
611 | resolution: {integrity: sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==}
612 |
613 | eastasianwidth@0.2.0:
614 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
615 |
616 | emoji-regex@8.0.0:
617 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
618 |
619 | emoji-regex@9.2.2:
620 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
621 |
622 | es-module-lexer@1.6.0:
623 | resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==}
624 |
625 | esbuild-android-64@0.15.18:
626 | resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==}
627 | engines: {node: '>=12'}
628 | cpu: [x64]
629 | os: [android]
630 |
631 | esbuild-android-arm64@0.15.18:
632 | resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==}
633 | engines: {node: '>=12'}
634 | cpu: [arm64]
635 | os: [android]
636 |
637 | esbuild-darwin-64@0.15.18:
638 | resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==}
639 | engines: {node: '>=12'}
640 | cpu: [x64]
641 | os: [darwin]
642 |
643 | esbuild-darwin-arm64@0.15.18:
644 | resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==}
645 | engines: {node: '>=12'}
646 | cpu: [arm64]
647 | os: [darwin]
648 |
649 | esbuild-freebsd-64@0.15.18:
650 | resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==}
651 | engines: {node: '>=12'}
652 | cpu: [x64]
653 | os: [freebsd]
654 |
655 | esbuild-freebsd-arm64@0.15.18:
656 | resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==}
657 | engines: {node: '>=12'}
658 | cpu: [arm64]
659 | os: [freebsd]
660 |
661 | esbuild-linux-32@0.15.18:
662 | resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==}
663 | engines: {node: '>=12'}
664 | cpu: [ia32]
665 | os: [linux]
666 |
667 | esbuild-linux-64@0.15.18:
668 | resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==}
669 | engines: {node: '>=12'}
670 | cpu: [x64]
671 | os: [linux]
672 |
673 | esbuild-linux-arm64@0.15.18:
674 | resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==}
675 | engines: {node: '>=12'}
676 | cpu: [arm64]
677 | os: [linux]
678 |
679 | esbuild-linux-arm@0.15.18:
680 | resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==}
681 | engines: {node: '>=12'}
682 | cpu: [arm]
683 | os: [linux]
684 |
685 | esbuild-linux-mips64le@0.15.18:
686 | resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==}
687 | engines: {node: '>=12'}
688 | cpu: [mips64el]
689 | os: [linux]
690 |
691 | esbuild-linux-ppc64le@0.15.18:
692 | resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==}
693 | engines: {node: '>=12'}
694 | cpu: [ppc64]
695 | os: [linux]
696 |
697 | esbuild-linux-riscv64@0.15.18:
698 | resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==}
699 | engines: {node: '>=12'}
700 | cpu: [riscv64]
701 | os: [linux]
702 |
703 | esbuild-linux-s390x@0.15.18:
704 | resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==}
705 | engines: {node: '>=12'}
706 | cpu: [s390x]
707 | os: [linux]
708 |
709 | esbuild-netbsd-64@0.15.18:
710 | resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==}
711 | engines: {node: '>=12'}
712 | cpu: [x64]
713 | os: [netbsd]
714 |
715 | esbuild-openbsd-64@0.15.18:
716 | resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==}
717 | engines: {node: '>=12'}
718 | cpu: [x64]
719 | os: [openbsd]
720 |
721 | esbuild-sunos-64@0.15.18:
722 | resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==}
723 | engines: {node: '>=12'}
724 | cpu: [x64]
725 | os: [sunos]
726 |
727 | esbuild-windows-32@0.15.18:
728 | resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==}
729 | engines: {node: '>=12'}
730 | cpu: [ia32]
731 | os: [win32]
732 |
733 | esbuild-windows-64@0.15.18:
734 | resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==}
735 | engines: {node: '>=12'}
736 | cpu: [x64]
737 | os: [win32]
738 |
739 | esbuild-windows-arm64@0.15.18:
740 | resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==}
741 | engines: {node: '>=12'}
742 | cpu: [arm64]
743 | os: [win32]
744 |
745 | esbuild@0.15.18:
746 | resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==}
747 | engines: {node: '>=12'}
748 | hasBin: true
749 |
750 | esbuild@0.21.5:
751 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
752 | engines: {node: '>=12'}
753 | hasBin: true
754 |
755 | escalade@3.2.0:
756 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
757 | engines: {node: '>=6'}
758 |
759 | estree-walker@3.0.3:
760 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
761 |
762 | expect-type@1.1.0:
763 | resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==}
764 | engines: {node: '>=12.0.0'}
765 |
766 | foreground-child@3.3.0:
767 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
768 | engines: {node: '>=14'}
769 |
770 | fsevents@2.3.2:
771 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
772 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
773 | os: [darwin]
774 |
775 | fsevents@2.3.3:
776 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
777 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
778 | os: [darwin]
779 |
780 | function-bind@1.1.2:
781 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
782 |
783 | geojson-vt@4.0.2:
784 | resolution: {integrity: sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==}
785 |
786 | get-caller-file@2.0.5:
787 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
788 | engines: {node: 6.* || 8.* || >= 10.*}
789 |
790 | get-stream@6.0.1:
791 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
792 | engines: {node: '>=10'}
793 |
794 | gl-matrix@3.4.3:
795 | resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==}
796 |
797 | glob@10.4.5:
798 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
799 | hasBin: true
800 |
801 | global-prefix@4.0.0:
802 | resolution: {integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==}
803 | engines: {node: '>=16'}
804 |
805 | graphql@16.10.0:
806 | resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==}
807 | engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
808 |
809 | has-flag@4.0.0:
810 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
811 | engines: {node: '>=8'}
812 |
813 | hasown@2.0.2:
814 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
815 | engines: {node: '>= 0.4'}
816 |
817 | headers-polyfill@4.0.3:
818 | resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==}
819 |
820 | html-escaper@2.0.2:
821 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
822 |
823 | ieee754@1.2.1:
824 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
825 |
826 | ini@4.1.3:
827 | resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==}
828 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
829 |
830 | is-core-module@2.16.1:
831 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
832 | engines: {node: '>= 0.4'}
833 |
834 | is-fullwidth-code-point@3.0.0:
835 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
836 | engines: {node: '>=8'}
837 |
838 | is-node-process@1.2.0:
839 | resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==}
840 |
841 | isexe@2.0.0:
842 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
843 |
844 | isexe@3.1.1:
845 | resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==}
846 | engines: {node: '>=16'}
847 |
848 | istanbul-lib-coverage@3.2.2:
849 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
850 | engines: {node: '>=8'}
851 |
852 | istanbul-lib-report@3.0.1:
853 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
854 | engines: {node: '>=10'}
855 |
856 | istanbul-lib-source-maps@5.0.6:
857 | resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==}
858 | engines: {node: '>=10'}
859 |
860 | istanbul-reports@3.1.7:
861 | resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
862 | engines: {node: '>=8'}
863 |
864 | jackspeak@3.4.3:
865 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
866 |
867 | js-tokens@4.0.0:
868 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
869 |
870 | json-stringify-pretty-compact@4.0.0:
871 | resolution: {integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==}
872 |
873 | kdbush@4.0.2:
874 | resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==}
875 |
876 | kind-of@6.0.3:
877 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
878 | engines: {node: '>=0.10.0'}
879 |
880 | loupe@3.1.2:
881 | resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==}
882 |
883 | lru-cache@10.4.3:
884 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
885 |
886 | lz-string@1.5.0:
887 | resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
888 | hasBin: true
889 |
890 | magic-string@0.30.17:
891 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
892 |
893 | magicast@0.3.5:
894 | resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
895 |
896 | make-dir@4.0.0:
897 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
898 | engines: {node: '>=10'}
899 |
900 | maplibre-gl@5.0.0:
901 | resolution: {integrity: sha512-WG8IYFK2gfJYXvWjlqg1yavo/YO/JlNkblAJMt19sjIafP5oJzTgXFiOLUIYkjtrv5pKiAWuSYsx4CD3ithJqw==}
902 | engines: {node: '>=16.14.0', npm: '>=8.1.0'}
903 |
904 | minimatch@9.0.5:
905 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
906 | engines: {node: '>=16 || 14 >=14.17'}
907 |
908 | minimist@1.2.8:
909 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
910 |
911 | minipass@7.1.2:
912 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
913 | engines: {node: '>=16 || 14 >=14.17'}
914 |
915 | mrmime@2.0.0:
916 | resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
917 | engines: {node: '>=10'}
918 |
919 | ms@2.1.3:
920 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
921 |
922 | msw@2.7.0:
923 | resolution: {integrity: sha512-BIodwZ19RWfCbYTxWTUfTXc+sg4OwjCAgxU1ZsgmggX/7S3LdUifsbUPJs61j0rWb19CZRGY5if77duhc0uXzw==}
924 | engines: {node: '>=18'}
925 | hasBin: true
926 | peerDependencies:
927 | typescript: '>= 4.8.x'
928 | peerDependenciesMeta:
929 | typescript:
930 | optional: true
931 |
932 | murmurhash-js@1.0.0:
933 | resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==}
934 |
935 | mute-stream@2.0.0:
936 | resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
937 | engines: {node: ^18.17.0 || >=20.5.0}
938 |
939 | nanoid@3.3.8:
940 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
941 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
942 | hasBin: true
943 |
944 | outvariant@1.4.3:
945 | resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==}
946 |
947 | package-json-from-dist@1.0.1:
948 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
949 |
950 | path-key@3.1.1:
951 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
952 | engines: {node: '>=8'}
953 |
954 | path-parse@1.0.7:
955 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
956 |
957 | path-scurry@1.11.1:
958 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
959 | engines: {node: '>=16 || 14 >=14.18'}
960 |
961 | path-to-regexp@6.3.0:
962 | resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
963 |
964 | pathe@1.1.2:
965 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
966 |
967 | pathval@2.0.0:
968 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
969 | engines: {node: '>= 14.16'}
970 |
971 | pbf@3.3.0:
972 | resolution: {integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==}
973 | hasBin: true
974 |
975 | picocolors@1.1.1:
976 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
977 |
978 | playwright-core@1.49.1:
979 | resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==}
980 | engines: {node: '>=18'}
981 | hasBin: true
982 |
983 | playwright@1.49.1:
984 | resolution: {integrity: sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==}
985 | engines: {node: '>=18'}
986 | hasBin: true
987 |
988 | postcss@8.4.49:
989 | resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
990 | engines: {node: ^10 || ^12 || >=14}
991 |
992 | potpack@2.0.0:
993 | resolution: {integrity: sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==}
994 |
995 | pretty-format@27.5.1:
996 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
997 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
998 |
999 | protocol-buffers-schema@3.6.0:
1000 | resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==}
1001 |
1002 | psl@1.15.0:
1003 | resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
1004 |
1005 | punycode@2.3.1:
1006 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1007 | engines: {node: '>=6'}
1008 |
1009 | querystringify@2.2.0:
1010 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
1011 |
1012 | quickselect@3.0.0:
1013 | resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==}
1014 |
1015 | react-is@17.0.2:
1016 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
1017 |
1018 | regenerator-runtime@0.14.1:
1019 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
1020 |
1021 | require-directory@2.1.1:
1022 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
1023 | engines: {node: '>=0.10.0'}
1024 |
1025 | requires-port@1.0.0:
1026 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
1027 |
1028 | resolve-protobuf-schema@2.1.0:
1029 | resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==}
1030 |
1031 | resolve@1.22.10:
1032 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
1033 | engines: {node: '>= 0.4'}
1034 | hasBin: true
1035 |
1036 | rollup@2.79.2:
1037 | resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==}
1038 | engines: {node: '>=10.0.0'}
1039 | hasBin: true
1040 |
1041 | rollup@4.29.1:
1042 | resolution: {integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==}
1043 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1044 | hasBin: true
1045 |
1046 | rw@1.3.3:
1047 | resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
1048 |
1049 | semver@7.6.3:
1050 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
1051 | engines: {node: '>=10'}
1052 | hasBin: true
1053 |
1054 | shebang-command@2.0.0:
1055 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1056 | engines: {node: '>=8'}
1057 |
1058 | shebang-regex@3.0.0:
1059 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1060 | engines: {node: '>=8'}
1061 |
1062 | siginfo@2.0.0:
1063 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
1064 |
1065 | signal-exit@4.1.0:
1066 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1067 | engines: {node: '>=14'}
1068 |
1069 | sirv@3.0.0:
1070 | resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==}
1071 | engines: {node: '>=18'}
1072 |
1073 | source-map-js@1.2.1:
1074 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1075 | engines: {node: '>=0.10.0'}
1076 |
1077 | stackback@0.0.2:
1078 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
1079 |
1080 | statuses@2.0.1:
1081 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
1082 | engines: {node: '>= 0.8'}
1083 |
1084 | std-env@3.8.0:
1085 | resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==}
1086 |
1087 | strict-event-emitter@0.5.1:
1088 | resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==}
1089 |
1090 | string-width@4.2.3:
1091 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1092 | engines: {node: '>=8'}
1093 |
1094 | string-width@5.1.2:
1095 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1096 | engines: {node: '>=12'}
1097 |
1098 | strip-ansi@6.0.1:
1099 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1100 | engines: {node: '>=8'}
1101 |
1102 | strip-ansi@7.1.0:
1103 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1104 | engines: {node: '>=12'}
1105 |
1106 | supercluster@8.0.1:
1107 | resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==}
1108 |
1109 | supports-color@7.2.0:
1110 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1111 | engines: {node: '>=8'}
1112 |
1113 | supports-preserve-symlinks-flag@1.0.0:
1114 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1115 | engines: {node: '>= 0.4'}
1116 |
1117 | test-exclude@7.0.1:
1118 | resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==}
1119 | engines: {node: '>=18'}
1120 |
1121 | tinybench@2.9.0:
1122 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
1123 |
1124 | tinyexec@0.3.2:
1125 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
1126 |
1127 | tinypool@1.0.2:
1128 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
1129 | engines: {node: ^18.0.0 || >=20.0.0}
1130 |
1131 | tinyqueue@3.0.0:
1132 | resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==}
1133 |
1134 | tinyrainbow@1.2.0:
1135 | resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
1136 | engines: {node: '>=14.0.0'}
1137 |
1138 | tinyspy@3.0.2:
1139 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
1140 | engines: {node: '>=14.0.0'}
1141 |
1142 | totalist@3.0.1:
1143 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
1144 | engines: {node: '>=6'}
1145 |
1146 | tough-cookie@4.1.4:
1147 | resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
1148 | engines: {node: '>=6'}
1149 |
1150 | type-fest@0.21.3:
1151 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
1152 | engines: {node: '>=10'}
1153 |
1154 | type-fest@4.31.0:
1155 | resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==}
1156 | engines: {node: '>=16'}
1157 |
1158 | typescript@5.7.2:
1159 | resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
1160 | engines: {node: '>=14.17'}
1161 | hasBin: true
1162 |
1163 | undici-types@6.20.0:
1164 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
1165 |
1166 | universalify@0.2.0:
1167 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
1168 | engines: {node: '>= 4.0.0'}
1169 |
1170 | url-parse@1.5.10:
1171 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
1172 |
1173 | vite-node@2.1.8:
1174 | resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==}
1175 | engines: {node: ^18.0.0 || >=20.0.0}
1176 | hasBin: true
1177 |
1178 | vite@3.2.11:
1179 | resolution: {integrity: sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==}
1180 | engines: {node: ^14.18.0 || >=16.0.0}
1181 | hasBin: true
1182 | peerDependencies:
1183 | '@types/node': '>= 14'
1184 | less: '*'
1185 | sass: '*'
1186 | stylus: '*'
1187 | sugarss: '*'
1188 | terser: ^5.4.0
1189 | peerDependenciesMeta:
1190 | '@types/node':
1191 | optional: true
1192 | less:
1193 | optional: true
1194 | sass:
1195 | optional: true
1196 | stylus:
1197 | optional: true
1198 | sugarss:
1199 | optional: true
1200 | terser:
1201 | optional: true
1202 |
1203 | vite@5.4.11:
1204 | resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==}
1205 | engines: {node: ^18.0.0 || >=20.0.0}
1206 | hasBin: true
1207 | peerDependencies:
1208 | '@types/node': ^18.0.0 || >=20.0.0
1209 | less: '*'
1210 | lightningcss: ^1.21.0
1211 | sass: '*'
1212 | sass-embedded: '*'
1213 | stylus: '*'
1214 | sugarss: '*'
1215 | terser: ^5.4.0
1216 | peerDependenciesMeta:
1217 | '@types/node':
1218 | optional: true
1219 | less:
1220 | optional: true
1221 | lightningcss:
1222 | optional: true
1223 | sass:
1224 | optional: true
1225 | sass-embedded:
1226 | optional: true
1227 | stylus:
1228 | optional: true
1229 | sugarss:
1230 | optional: true
1231 | terser:
1232 | optional: true
1233 |
1234 | vitest@2.1.8:
1235 | resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==}
1236 | engines: {node: ^18.0.0 || >=20.0.0}
1237 | hasBin: true
1238 | peerDependencies:
1239 | '@edge-runtime/vm': '*'
1240 | '@types/node': ^18.0.0 || >=20.0.0
1241 | '@vitest/browser': 2.1.8
1242 | '@vitest/ui': 2.1.8
1243 | happy-dom: '*'
1244 | jsdom: '*'
1245 | peerDependenciesMeta:
1246 | '@edge-runtime/vm':
1247 | optional: true
1248 | '@types/node':
1249 | optional: true
1250 | '@vitest/browser':
1251 | optional: true
1252 | '@vitest/ui':
1253 | optional: true
1254 | happy-dom:
1255 | optional: true
1256 | jsdom:
1257 | optional: true
1258 |
1259 | vt-pbf@3.1.3:
1260 | resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==}
1261 |
1262 | which@2.0.2:
1263 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1264 | engines: {node: '>= 8'}
1265 | hasBin: true
1266 |
1267 | which@4.0.0:
1268 | resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==}
1269 | engines: {node: ^16.13.0 || >=18.0.0}
1270 | hasBin: true
1271 |
1272 | why-is-node-running@2.3.0:
1273 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
1274 | engines: {node: '>=8'}
1275 | hasBin: true
1276 |
1277 | wrap-ansi@6.2.0:
1278 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
1279 | engines: {node: '>=8'}
1280 |
1281 | wrap-ansi@7.0.0:
1282 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1283 | engines: {node: '>=10'}
1284 |
1285 | wrap-ansi@8.1.0:
1286 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
1287 | engines: {node: '>=12'}
1288 |
1289 | ws@8.18.0:
1290 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
1291 | engines: {node: '>=10.0.0'}
1292 | peerDependencies:
1293 | bufferutil: ^4.0.1
1294 | utf-8-validate: '>=5.0.2'
1295 | peerDependenciesMeta:
1296 | bufferutil:
1297 | optional: true
1298 | utf-8-validate:
1299 | optional: true
1300 |
1301 | y18n@5.0.8:
1302 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
1303 | engines: {node: '>=10'}
1304 |
1305 | yargs-parser@21.1.1:
1306 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
1307 | engines: {node: '>=12'}
1308 |
1309 | yargs@17.7.2:
1310 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
1311 | engines: {node: '>=12'}
1312 |
1313 | yoctocolors-cjs@2.1.2:
1314 | resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
1315 | engines: {node: '>=18'}
1316 |
1317 | snapshots:
1318 |
1319 | '@ampproject/remapping@2.3.0':
1320 | dependencies:
1321 | '@jridgewell/gen-mapping': 0.3.8
1322 | '@jridgewell/trace-mapping': 0.3.25
1323 |
1324 | '@babel/code-frame@7.26.2':
1325 | dependencies:
1326 | '@babel/helper-validator-identifier': 7.25.9
1327 | js-tokens: 4.0.0
1328 | picocolors: 1.1.1
1329 |
1330 | '@babel/helper-string-parser@7.25.9': {}
1331 |
1332 | '@babel/helper-validator-identifier@7.25.9': {}
1333 |
1334 | '@babel/parser@7.26.3':
1335 | dependencies:
1336 | '@babel/types': 7.26.3
1337 |
1338 | '@babel/runtime@7.26.0':
1339 | dependencies:
1340 | regenerator-runtime: 0.14.1
1341 |
1342 | '@babel/types@7.26.3':
1343 | dependencies:
1344 | '@babel/helper-string-parser': 7.25.9
1345 | '@babel/helper-validator-identifier': 7.25.9
1346 |
1347 | '@bcoe/v8-coverage@0.2.3': {}
1348 |
1349 | '@bundled-es-modules/cookie@2.0.1':
1350 | dependencies:
1351 | cookie: 0.7.2
1352 |
1353 | '@bundled-es-modules/statuses@1.0.1':
1354 | dependencies:
1355 | statuses: 2.0.1
1356 |
1357 | '@bundled-es-modules/tough-cookie@0.1.6':
1358 | dependencies:
1359 | '@types/tough-cookie': 4.0.5
1360 | tough-cookie: 4.1.4
1361 |
1362 | '@esbuild/aix-ppc64@0.21.5':
1363 | optional: true
1364 |
1365 | '@esbuild/android-arm64@0.21.5':
1366 | optional: true
1367 |
1368 | '@esbuild/android-arm@0.15.18':
1369 | optional: true
1370 |
1371 | '@esbuild/android-arm@0.21.5':
1372 | optional: true
1373 |
1374 | '@esbuild/android-x64@0.21.5':
1375 | optional: true
1376 |
1377 | '@esbuild/darwin-arm64@0.21.5':
1378 | optional: true
1379 |
1380 | '@esbuild/darwin-x64@0.21.5':
1381 | optional: true
1382 |
1383 | '@esbuild/freebsd-arm64@0.21.5':
1384 | optional: true
1385 |
1386 | '@esbuild/freebsd-x64@0.21.5':
1387 | optional: true
1388 |
1389 | '@esbuild/linux-arm64@0.21.5':
1390 | optional: true
1391 |
1392 | '@esbuild/linux-arm@0.21.5':
1393 | optional: true
1394 |
1395 | '@esbuild/linux-ia32@0.21.5':
1396 | optional: true
1397 |
1398 | '@esbuild/linux-loong64@0.15.18':
1399 | optional: true
1400 |
1401 | '@esbuild/linux-loong64@0.21.5':
1402 | optional: true
1403 |
1404 | '@esbuild/linux-mips64el@0.21.5':
1405 | optional: true
1406 |
1407 | '@esbuild/linux-ppc64@0.21.5':
1408 | optional: true
1409 |
1410 | '@esbuild/linux-riscv64@0.21.5':
1411 | optional: true
1412 |
1413 | '@esbuild/linux-s390x@0.21.5':
1414 | optional: true
1415 |
1416 | '@esbuild/linux-x64@0.21.5':
1417 | optional: true
1418 |
1419 | '@esbuild/netbsd-x64@0.21.5':
1420 | optional: true
1421 |
1422 | '@esbuild/openbsd-x64@0.21.5':
1423 | optional: true
1424 |
1425 | '@esbuild/sunos-x64@0.21.5':
1426 | optional: true
1427 |
1428 | '@esbuild/win32-arm64@0.21.5':
1429 | optional: true
1430 |
1431 | '@esbuild/win32-ia32@0.21.5':
1432 | optional: true
1433 |
1434 | '@esbuild/win32-x64@0.21.5':
1435 | optional: true
1436 |
1437 | '@inquirer/confirm@5.1.1(@types/node@22.10.5)':
1438 | dependencies:
1439 | '@inquirer/core': 10.1.2(@types/node@22.10.5)
1440 | '@inquirer/type': 3.0.2(@types/node@22.10.5)
1441 | '@types/node': 22.10.5
1442 |
1443 | '@inquirer/core@10.1.2(@types/node@22.10.5)':
1444 | dependencies:
1445 | '@inquirer/figures': 1.0.9
1446 | '@inquirer/type': 3.0.2(@types/node@22.10.5)
1447 | ansi-escapes: 4.3.2
1448 | cli-width: 4.1.0
1449 | mute-stream: 2.0.0
1450 | signal-exit: 4.1.0
1451 | strip-ansi: 6.0.1
1452 | wrap-ansi: 6.2.0
1453 | yoctocolors-cjs: 2.1.2
1454 | transitivePeerDependencies:
1455 | - '@types/node'
1456 |
1457 | '@inquirer/figures@1.0.9': {}
1458 |
1459 | '@inquirer/type@3.0.2(@types/node@22.10.5)':
1460 | dependencies:
1461 | '@types/node': 22.10.5
1462 |
1463 | '@isaacs/cliui@8.0.2':
1464 | dependencies:
1465 | string-width: 5.1.2
1466 | string-width-cjs: string-width@4.2.3
1467 | strip-ansi: 7.1.0
1468 | strip-ansi-cjs: strip-ansi@6.0.1
1469 | wrap-ansi: 8.1.0
1470 | wrap-ansi-cjs: wrap-ansi@7.0.0
1471 |
1472 | '@istanbuljs/schema@0.1.3': {}
1473 |
1474 | '@jridgewell/gen-mapping@0.3.8':
1475 | dependencies:
1476 | '@jridgewell/set-array': 1.2.1
1477 | '@jridgewell/sourcemap-codec': 1.5.0
1478 | '@jridgewell/trace-mapping': 0.3.25
1479 |
1480 | '@jridgewell/resolve-uri@3.1.2': {}
1481 |
1482 | '@jridgewell/set-array@1.2.1': {}
1483 |
1484 | '@jridgewell/sourcemap-codec@1.5.0': {}
1485 |
1486 | '@jridgewell/trace-mapping@0.3.25':
1487 | dependencies:
1488 | '@jridgewell/resolve-uri': 3.1.2
1489 | '@jridgewell/sourcemap-codec': 1.5.0
1490 |
1491 | '@mapbox/geojson-rewind@0.5.2':
1492 | dependencies:
1493 | get-stream: 6.0.1
1494 | minimist: 1.2.8
1495 |
1496 | '@mapbox/jsonlint-lines-primitives@2.0.2': {}
1497 |
1498 | '@mapbox/point-geometry@0.1.0': {}
1499 |
1500 | '@mapbox/tiny-sdf@2.0.6': {}
1501 |
1502 | '@mapbox/unitbezier@0.0.1': {}
1503 |
1504 | '@mapbox/vector-tile@1.3.1':
1505 | dependencies:
1506 | '@mapbox/point-geometry': 0.1.0
1507 |
1508 | '@mapbox/whoots-js@3.1.0': {}
1509 |
1510 | '@maplibre/maplibre-gl-style-spec@22.0.1':
1511 | dependencies:
1512 | '@mapbox/jsonlint-lines-primitives': 2.0.2
1513 | '@mapbox/unitbezier': 0.0.1
1514 | json-stringify-pretty-compact: 4.0.0
1515 | minimist: 1.2.8
1516 | quickselect: 3.0.0
1517 | rw: 1.3.3
1518 | tinyqueue: 3.0.0
1519 |
1520 | '@mswjs/interceptors@0.37.4':
1521 | dependencies:
1522 | '@open-draft/deferred-promise': 2.2.0
1523 | '@open-draft/logger': 0.3.0
1524 | '@open-draft/until': 2.1.0
1525 | is-node-process: 1.2.0
1526 | outvariant: 1.4.3
1527 | strict-event-emitter: 0.5.1
1528 |
1529 | '@open-draft/deferred-promise@2.2.0': {}
1530 |
1531 | '@open-draft/logger@0.3.0':
1532 | dependencies:
1533 | is-node-process: 1.2.0
1534 | outvariant: 1.4.3
1535 |
1536 | '@open-draft/until@2.1.0': {}
1537 |
1538 | '@pkgjs/parseargs@0.11.0':
1539 | optional: true
1540 |
1541 | '@polka/url@1.0.0-next.28': {}
1542 |
1543 | '@rollup/rollup-android-arm-eabi@4.29.1':
1544 | optional: true
1545 |
1546 | '@rollup/rollup-android-arm64@4.29.1':
1547 | optional: true
1548 |
1549 | '@rollup/rollup-darwin-arm64@4.29.1':
1550 | optional: true
1551 |
1552 | '@rollup/rollup-darwin-x64@4.29.1':
1553 | optional: true
1554 |
1555 | '@rollup/rollup-freebsd-arm64@4.29.1':
1556 | optional: true
1557 |
1558 | '@rollup/rollup-freebsd-x64@4.29.1':
1559 | optional: true
1560 |
1561 | '@rollup/rollup-linux-arm-gnueabihf@4.29.1':
1562 | optional: true
1563 |
1564 | '@rollup/rollup-linux-arm-musleabihf@4.29.1':
1565 | optional: true
1566 |
1567 | '@rollup/rollup-linux-arm64-gnu@4.29.1':
1568 | optional: true
1569 |
1570 | '@rollup/rollup-linux-arm64-musl@4.29.1':
1571 | optional: true
1572 |
1573 | '@rollup/rollup-linux-loongarch64-gnu@4.29.1':
1574 | optional: true
1575 |
1576 | '@rollup/rollup-linux-powerpc64le-gnu@4.29.1':
1577 | optional: true
1578 |
1579 | '@rollup/rollup-linux-riscv64-gnu@4.29.1':
1580 | optional: true
1581 |
1582 | '@rollup/rollup-linux-s390x-gnu@4.29.1':
1583 | optional: true
1584 |
1585 | '@rollup/rollup-linux-x64-gnu@4.29.1':
1586 | optional: true
1587 |
1588 | '@rollup/rollup-linux-x64-musl@4.29.1':
1589 | optional: true
1590 |
1591 | '@rollup/rollup-win32-arm64-msvc@4.29.1':
1592 | optional: true
1593 |
1594 | '@rollup/rollup-win32-ia32-msvc@4.29.1':
1595 | optional: true
1596 |
1597 | '@rollup/rollup-win32-x64-msvc@4.29.1':
1598 | optional: true
1599 |
1600 | '@testing-library/dom@10.4.0':
1601 | dependencies:
1602 | '@babel/code-frame': 7.26.2
1603 | '@babel/runtime': 7.26.0
1604 | '@types/aria-query': 5.0.4
1605 | aria-query: 5.3.0
1606 | chalk: 4.1.2
1607 | dom-accessibility-api: 0.5.16
1608 | lz-string: 1.5.0
1609 | pretty-format: 27.5.1
1610 |
1611 | '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)':
1612 | dependencies:
1613 | '@testing-library/dom': 10.4.0
1614 |
1615 | '@types/aria-query@5.0.4': {}
1616 |
1617 | '@types/cookie@0.6.0': {}
1618 |
1619 | '@types/estree@1.0.6': {}
1620 |
1621 | '@types/geojson-vt@3.2.5':
1622 | dependencies:
1623 | '@types/geojson': 7946.0.15
1624 |
1625 | '@types/geojson@7946.0.15': {}
1626 |
1627 | '@types/mapbox__point-geometry@0.1.4': {}
1628 |
1629 | '@types/mapbox__vector-tile@1.3.4':
1630 | dependencies:
1631 | '@types/geojson': 7946.0.15
1632 | '@types/mapbox__point-geometry': 0.1.4
1633 | '@types/pbf': 3.0.5
1634 |
1635 | '@types/node@22.10.5':
1636 | dependencies:
1637 | undici-types: 6.20.0
1638 |
1639 | '@types/pbf@3.0.5': {}
1640 |
1641 | '@types/statuses@2.0.5': {}
1642 |
1643 | '@types/supercluster@7.1.3':
1644 | dependencies:
1645 | '@types/geojson': 7946.0.15
1646 |
1647 | '@types/tough-cookie@4.0.5': {}
1648 |
1649 | '@vitest/browser@2.1.8(@types/node@22.10.5)(playwright@1.49.1)(typescript@5.7.2)(vite@3.2.11(@types/node@22.10.5))(vitest@2.1.8)':
1650 | dependencies:
1651 | '@testing-library/dom': 10.4.0
1652 | '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0)
1653 | '@vitest/mocker': 2.1.8(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.2))(vite@3.2.11(@types/node@22.10.5))
1654 | '@vitest/utils': 2.1.8
1655 | magic-string: 0.30.17
1656 | msw: 2.7.0(@types/node@22.10.5)(typescript@5.7.2)
1657 | sirv: 3.0.0
1658 | tinyrainbow: 1.2.0
1659 | vitest: 2.1.8(@types/node@22.10.5)(@vitest/browser@2.1.8)(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.2))
1660 | ws: 8.18.0
1661 | optionalDependencies:
1662 | playwright: 1.49.1
1663 | transitivePeerDependencies:
1664 | - '@types/node'
1665 | - bufferutil
1666 | - typescript
1667 | - utf-8-validate
1668 | - vite
1669 |
1670 | '@vitest/coverage-v8@2.1.8(@vitest/browser@2.1.8)(vitest@2.1.8)':
1671 | dependencies:
1672 | '@ampproject/remapping': 2.3.0
1673 | '@bcoe/v8-coverage': 0.2.3
1674 | debug: 4.4.0
1675 | istanbul-lib-coverage: 3.2.2
1676 | istanbul-lib-report: 3.0.1
1677 | istanbul-lib-source-maps: 5.0.6
1678 | istanbul-reports: 3.1.7
1679 | magic-string: 0.30.17
1680 | magicast: 0.3.5
1681 | std-env: 3.8.0
1682 | test-exclude: 7.0.1
1683 | tinyrainbow: 1.2.0
1684 | vitest: 2.1.8(@types/node@22.10.5)(@vitest/browser@2.1.8)(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.2))
1685 | optionalDependencies:
1686 | '@vitest/browser': 2.1.8(@types/node@22.10.5)(playwright@1.49.1)(typescript@5.7.2)(vite@3.2.11(@types/node@22.10.5))(vitest@2.1.8)
1687 | transitivePeerDependencies:
1688 | - supports-color
1689 |
1690 | '@vitest/expect@2.1.8':
1691 | dependencies:
1692 | '@vitest/spy': 2.1.8
1693 | '@vitest/utils': 2.1.8
1694 | chai: 5.1.2
1695 | tinyrainbow: 1.2.0
1696 |
1697 | '@vitest/mocker@2.1.8(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.2))(vite@3.2.11(@types/node@22.10.5))':
1698 | dependencies:
1699 | '@vitest/spy': 2.1.8
1700 | estree-walker: 3.0.3
1701 | magic-string: 0.30.17
1702 | optionalDependencies:
1703 | msw: 2.7.0(@types/node@22.10.5)(typescript@5.7.2)
1704 | vite: 3.2.11(@types/node@22.10.5)
1705 |
1706 | '@vitest/mocker@2.1.8(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.2))(vite@5.4.11(@types/node@22.10.5))':
1707 | dependencies:
1708 | '@vitest/spy': 2.1.8
1709 | estree-walker: 3.0.3
1710 | magic-string: 0.30.17
1711 | optionalDependencies:
1712 | msw: 2.7.0(@types/node@22.10.5)(typescript@5.7.2)
1713 | vite: 5.4.11(@types/node@22.10.5)
1714 |
1715 | '@vitest/pretty-format@2.1.8':
1716 | dependencies:
1717 | tinyrainbow: 1.2.0
1718 |
1719 | '@vitest/runner@2.1.8':
1720 | dependencies:
1721 | '@vitest/utils': 2.1.8
1722 | pathe: 1.1.2
1723 |
1724 | '@vitest/snapshot@2.1.8':
1725 | dependencies:
1726 | '@vitest/pretty-format': 2.1.8
1727 | magic-string: 0.30.17
1728 | pathe: 1.1.2
1729 |
1730 | '@vitest/spy@2.1.8':
1731 | dependencies:
1732 | tinyspy: 3.0.2
1733 |
1734 | '@vitest/utils@2.1.8':
1735 | dependencies:
1736 | '@vitest/pretty-format': 2.1.8
1737 | loupe: 3.1.2
1738 | tinyrainbow: 1.2.0
1739 |
1740 | ansi-escapes@4.3.2:
1741 | dependencies:
1742 | type-fest: 0.21.3
1743 |
1744 | ansi-regex@5.0.1: {}
1745 |
1746 | ansi-regex@6.1.0: {}
1747 |
1748 | ansi-styles@4.3.0:
1749 | dependencies:
1750 | color-convert: 2.0.1
1751 |
1752 | ansi-styles@5.2.0: {}
1753 |
1754 | ansi-styles@6.2.1: {}
1755 |
1756 | aria-query@5.3.0:
1757 | dependencies:
1758 | dequal: 2.0.3
1759 |
1760 | assertion-error@2.0.1: {}
1761 |
1762 | balanced-match@1.0.2: {}
1763 |
1764 | brace-expansion@2.0.1:
1765 | dependencies:
1766 | balanced-match: 1.0.2
1767 |
1768 | cac@6.7.14: {}
1769 |
1770 | chai@5.1.2:
1771 | dependencies:
1772 | assertion-error: 2.0.1
1773 | check-error: 2.1.1
1774 | deep-eql: 5.0.2
1775 | loupe: 3.1.2
1776 | pathval: 2.0.0
1777 |
1778 | chalk@4.1.2:
1779 | dependencies:
1780 | ansi-styles: 4.3.0
1781 | supports-color: 7.2.0
1782 |
1783 | check-error@2.1.1: {}
1784 |
1785 | cli-width@4.1.0: {}
1786 |
1787 | cliui@8.0.1:
1788 | dependencies:
1789 | string-width: 4.2.3
1790 | strip-ansi: 6.0.1
1791 | wrap-ansi: 7.0.0
1792 |
1793 | color-convert@2.0.1:
1794 | dependencies:
1795 | color-name: 1.1.4
1796 |
1797 | color-name@1.1.4: {}
1798 |
1799 | cookie@0.7.2: {}
1800 |
1801 | cross-spawn@7.0.6:
1802 | dependencies:
1803 | path-key: 3.1.1
1804 | shebang-command: 2.0.0
1805 | which: 2.0.2
1806 |
1807 | debug@4.4.0:
1808 | dependencies:
1809 | ms: 2.1.3
1810 |
1811 | deep-eql@5.0.2: {}
1812 |
1813 | dequal@2.0.3: {}
1814 |
1815 | dom-accessibility-api@0.5.16: {}
1816 |
1817 | earcut@3.0.1: {}
1818 |
1819 | eastasianwidth@0.2.0: {}
1820 |
1821 | emoji-regex@8.0.0: {}
1822 |
1823 | emoji-regex@9.2.2: {}
1824 |
1825 | es-module-lexer@1.6.0: {}
1826 |
1827 | esbuild-android-64@0.15.18:
1828 | optional: true
1829 |
1830 | esbuild-android-arm64@0.15.18:
1831 | optional: true
1832 |
1833 | esbuild-darwin-64@0.15.18:
1834 | optional: true
1835 |
1836 | esbuild-darwin-arm64@0.15.18:
1837 | optional: true
1838 |
1839 | esbuild-freebsd-64@0.15.18:
1840 | optional: true
1841 |
1842 | esbuild-freebsd-arm64@0.15.18:
1843 | optional: true
1844 |
1845 | esbuild-linux-32@0.15.18:
1846 | optional: true
1847 |
1848 | esbuild-linux-64@0.15.18:
1849 | optional: true
1850 |
1851 | esbuild-linux-arm64@0.15.18:
1852 | optional: true
1853 |
1854 | esbuild-linux-arm@0.15.18:
1855 | optional: true
1856 |
1857 | esbuild-linux-mips64le@0.15.18:
1858 | optional: true
1859 |
1860 | esbuild-linux-ppc64le@0.15.18:
1861 | optional: true
1862 |
1863 | esbuild-linux-riscv64@0.15.18:
1864 | optional: true
1865 |
1866 | esbuild-linux-s390x@0.15.18:
1867 | optional: true
1868 |
1869 | esbuild-netbsd-64@0.15.18:
1870 | optional: true
1871 |
1872 | esbuild-openbsd-64@0.15.18:
1873 | optional: true
1874 |
1875 | esbuild-sunos-64@0.15.18:
1876 | optional: true
1877 |
1878 | esbuild-windows-32@0.15.18:
1879 | optional: true
1880 |
1881 | esbuild-windows-64@0.15.18:
1882 | optional: true
1883 |
1884 | esbuild-windows-arm64@0.15.18:
1885 | optional: true
1886 |
1887 | esbuild@0.15.18:
1888 | optionalDependencies:
1889 | '@esbuild/android-arm': 0.15.18
1890 | '@esbuild/linux-loong64': 0.15.18
1891 | esbuild-android-64: 0.15.18
1892 | esbuild-android-arm64: 0.15.18
1893 | esbuild-darwin-64: 0.15.18
1894 | esbuild-darwin-arm64: 0.15.18
1895 | esbuild-freebsd-64: 0.15.18
1896 | esbuild-freebsd-arm64: 0.15.18
1897 | esbuild-linux-32: 0.15.18
1898 | esbuild-linux-64: 0.15.18
1899 | esbuild-linux-arm: 0.15.18
1900 | esbuild-linux-arm64: 0.15.18
1901 | esbuild-linux-mips64le: 0.15.18
1902 | esbuild-linux-ppc64le: 0.15.18
1903 | esbuild-linux-riscv64: 0.15.18
1904 | esbuild-linux-s390x: 0.15.18
1905 | esbuild-netbsd-64: 0.15.18
1906 | esbuild-openbsd-64: 0.15.18
1907 | esbuild-sunos-64: 0.15.18
1908 | esbuild-windows-32: 0.15.18
1909 | esbuild-windows-64: 0.15.18
1910 | esbuild-windows-arm64: 0.15.18
1911 |
1912 | esbuild@0.21.5:
1913 | optionalDependencies:
1914 | '@esbuild/aix-ppc64': 0.21.5
1915 | '@esbuild/android-arm': 0.21.5
1916 | '@esbuild/android-arm64': 0.21.5
1917 | '@esbuild/android-x64': 0.21.5
1918 | '@esbuild/darwin-arm64': 0.21.5
1919 | '@esbuild/darwin-x64': 0.21.5
1920 | '@esbuild/freebsd-arm64': 0.21.5
1921 | '@esbuild/freebsd-x64': 0.21.5
1922 | '@esbuild/linux-arm': 0.21.5
1923 | '@esbuild/linux-arm64': 0.21.5
1924 | '@esbuild/linux-ia32': 0.21.5
1925 | '@esbuild/linux-loong64': 0.21.5
1926 | '@esbuild/linux-mips64el': 0.21.5
1927 | '@esbuild/linux-ppc64': 0.21.5
1928 | '@esbuild/linux-riscv64': 0.21.5
1929 | '@esbuild/linux-s390x': 0.21.5
1930 | '@esbuild/linux-x64': 0.21.5
1931 | '@esbuild/netbsd-x64': 0.21.5
1932 | '@esbuild/openbsd-x64': 0.21.5
1933 | '@esbuild/sunos-x64': 0.21.5
1934 | '@esbuild/win32-arm64': 0.21.5
1935 | '@esbuild/win32-ia32': 0.21.5
1936 | '@esbuild/win32-x64': 0.21.5
1937 |
1938 | escalade@3.2.0: {}
1939 |
1940 | estree-walker@3.0.3:
1941 | dependencies:
1942 | '@types/estree': 1.0.6
1943 |
1944 | expect-type@1.1.0: {}
1945 |
1946 | foreground-child@3.3.0:
1947 | dependencies:
1948 | cross-spawn: 7.0.6
1949 | signal-exit: 4.1.0
1950 |
1951 | fsevents@2.3.2:
1952 | optional: true
1953 |
1954 | fsevents@2.3.3:
1955 | optional: true
1956 |
1957 | function-bind@1.1.2: {}
1958 |
1959 | geojson-vt@4.0.2: {}
1960 |
1961 | get-caller-file@2.0.5: {}
1962 |
1963 | get-stream@6.0.1: {}
1964 |
1965 | gl-matrix@3.4.3: {}
1966 |
1967 | glob@10.4.5:
1968 | dependencies:
1969 | foreground-child: 3.3.0
1970 | jackspeak: 3.4.3
1971 | minimatch: 9.0.5
1972 | minipass: 7.1.2
1973 | package-json-from-dist: 1.0.1
1974 | path-scurry: 1.11.1
1975 |
1976 | global-prefix@4.0.0:
1977 | dependencies:
1978 | ini: 4.1.3
1979 | kind-of: 6.0.3
1980 | which: 4.0.0
1981 |
1982 | graphql@16.10.0: {}
1983 |
1984 | has-flag@4.0.0: {}
1985 |
1986 | hasown@2.0.2:
1987 | dependencies:
1988 | function-bind: 1.1.2
1989 |
1990 | headers-polyfill@4.0.3: {}
1991 |
1992 | html-escaper@2.0.2: {}
1993 |
1994 | ieee754@1.2.1: {}
1995 |
1996 | ini@4.1.3: {}
1997 |
1998 | is-core-module@2.16.1:
1999 | dependencies:
2000 | hasown: 2.0.2
2001 |
2002 | is-fullwidth-code-point@3.0.0: {}
2003 |
2004 | is-node-process@1.2.0: {}
2005 |
2006 | isexe@2.0.0: {}
2007 |
2008 | isexe@3.1.1: {}
2009 |
2010 | istanbul-lib-coverage@3.2.2: {}
2011 |
2012 | istanbul-lib-report@3.0.1:
2013 | dependencies:
2014 | istanbul-lib-coverage: 3.2.2
2015 | make-dir: 4.0.0
2016 | supports-color: 7.2.0
2017 |
2018 | istanbul-lib-source-maps@5.0.6:
2019 | dependencies:
2020 | '@jridgewell/trace-mapping': 0.3.25
2021 | debug: 4.4.0
2022 | istanbul-lib-coverage: 3.2.2
2023 | transitivePeerDependencies:
2024 | - supports-color
2025 |
2026 | istanbul-reports@3.1.7:
2027 | dependencies:
2028 | html-escaper: 2.0.2
2029 | istanbul-lib-report: 3.0.1
2030 |
2031 | jackspeak@3.4.3:
2032 | dependencies:
2033 | '@isaacs/cliui': 8.0.2
2034 | optionalDependencies:
2035 | '@pkgjs/parseargs': 0.11.0
2036 |
2037 | js-tokens@4.0.0: {}
2038 |
2039 | json-stringify-pretty-compact@4.0.0: {}
2040 |
2041 | kdbush@4.0.2: {}
2042 |
2043 | kind-of@6.0.3: {}
2044 |
2045 | loupe@3.1.2: {}
2046 |
2047 | lru-cache@10.4.3: {}
2048 |
2049 | lz-string@1.5.0: {}
2050 |
2051 | magic-string@0.30.17:
2052 | dependencies:
2053 | '@jridgewell/sourcemap-codec': 1.5.0
2054 |
2055 | magicast@0.3.5:
2056 | dependencies:
2057 | '@babel/parser': 7.26.3
2058 | '@babel/types': 7.26.3
2059 | source-map-js: 1.2.1
2060 |
2061 | make-dir@4.0.0:
2062 | dependencies:
2063 | semver: 7.6.3
2064 |
2065 | maplibre-gl@5.0.0:
2066 | dependencies:
2067 | '@mapbox/geojson-rewind': 0.5.2
2068 | '@mapbox/jsonlint-lines-primitives': 2.0.2
2069 | '@mapbox/point-geometry': 0.1.0
2070 | '@mapbox/tiny-sdf': 2.0.6
2071 | '@mapbox/unitbezier': 0.0.1
2072 | '@mapbox/vector-tile': 1.3.1
2073 | '@mapbox/whoots-js': 3.1.0
2074 | '@maplibre/maplibre-gl-style-spec': 22.0.1
2075 | '@types/geojson': 7946.0.15
2076 | '@types/geojson-vt': 3.2.5
2077 | '@types/mapbox__point-geometry': 0.1.4
2078 | '@types/mapbox__vector-tile': 1.3.4
2079 | '@types/pbf': 3.0.5
2080 | '@types/supercluster': 7.1.3
2081 | earcut: 3.0.1
2082 | geojson-vt: 4.0.2
2083 | gl-matrix: 3.4.3
2084 | global-prefix: 4.0.0
2085 | kdbush: 4.0.2
2086 | murmurhash-js: 1.0.0
2087 | pbf: 3.3.0
2088 | potpack: 2.0.0
2089 | quickselect: 3.0.0
2090 | supercluster: 8.0.1
2091 | tinyqueue: 3.0.0
2092 | vt-pbf: 3.1.3
2093 |
2094 | minimatch@9.0.5:
2095 | dependencies:
2096 | brace-expansion: 2.0.1
2097 |
2098 | minimist@1.2.8: {}
2099 |
2100 | minipass@7.1.2: {}
2101 |
2102 | mrmime@2.0.0: {}
2103 |
2104 | ms@2.1.3: {}
2105 |
2106 | msw@2.7.0(@types/node@22.10.5)(typescript@5.7.2):
2107 | dependencies:
2108 | '@bundled-es-modules/cookie': 2.0.1
2109 | '@bundled-es-modules/statuses': 1.0.1
2110 | '@bundled-es-modules/tough-cookie': 0.1.6
2111 | '@inquirer/confirm': 5.1.1(@types/node@22.10.5)
2112 | '@mswjs/interceptors': 0.37.4
2113 | '@open-draft/deferred-promise': 2.2.0
2114 | '@open-draft/until': 2.1.0
2115 | '@types/cookie': 0.6.0
2116 | '@types/statuses': 2.0.5
2117 | graphql: 16.10.0
2118 | headers-polyfill: 4.0.3
2119 | is-node-process: 1.2.0
2120 | outvariant: 1.4.3
2121 | path-to-regexp: 6.3.0
2122 | picocolors: 1.1.1
2123 | strict-event-emitter: 0.5.1
2124 | type-fest: 4.31.0
2125 | yargs: 17.7.2
2126 | optionalDependencies:
2127 | typescript: 5.7.2
2128 | transitivePeerDependencies:
2129 | - '@types/node'
2130 |
2131 | murmurhash-js@1.0.0: {}
2132 |
2133 | mute-stream@2.0.0: {}
2134 |
2135 | nanoid@3.3.8: {}
2136 |
2137 | outvariant@1.4.3: {}
2138 |
2139 | package-json-from-dist@1.0.1: {}
2140 |
2141 | path-key@3.1.1: {}
2142 |
2143 | path-parse@1.0.7: {}
2144 |
2145 | path-scurry@1.11.1:
2146 | dependencies:
2147 | lru-cache: 10.4.3
2148 | minipass: 7.1.2
2149 |
2150 | path-to-regexp@6.3.0: {}
2151 |
2152 | pathe@1.1.2: {}
2153 |
2154 | pathval@2.0.0: {}
2155 |
2156 | pbf@3.3.0:
2157 | dependencies:
2158 | ieee754: 1.2.1
2159 | resolve-protobuf-schema: 2.1.0
2160 |
2161 | picocolors@1.1.1: {}
2162 |
2163 | playwright-core@1.49.1: {}
2164 |
2165 | playwright@1.49.1:
2166 | dependencies:
2167 | playwright-core: 1.49.1
2168 | optionalDependencies:
2169 | fsevents: 2.3.2
2170 |
2171 | postcss@8.4.49:
2172 | dependencies:
2173 | nanoid: 3.3.8
2174 | picocolors: 1.1.1
2175 | source-map-js: 1.2.1
2176 |
2177 | potpack@2.0.0: {}
2178 |
2179 | pretty-format@27.5.1:
2180 | dependencies:
2181 | ansi-regex: 5.0.1
2182 | ansi-styles: 5.2.0
2183 | react-is: 17.0.2
2184 |
2185 | protocol-buffers-schema@3.6.0: {}
2186 |
2187 | psl@1.15.0:
2188 | dependencies:
2189 | punycode: 2.3.1
2190 |
2191 | punycode@2.3.1: {}
2192 |
2193 | querystringify@2.2.0: {}
2194 |
2195 | quickselect@3.0.0: {}
2196 |
2197 | react-is@17.0.2: {}
2198 |
2199 | regenerator-runtime@0.14.1: {}
2200 |
2201 | require-directory@2.1.1: {}
2202 |
2203 | requires-port@1.0.0: {}
2204 |
2205 | resolve-protobuf-schema@2.1.0:
2206 | dependencies:
2207 | protocol-buffers-schema: 3.6.0
2208 |
2209 | resolve@1.22.10:
2210 | dependencies:
2211 | is-core-module: 2.16.1
2212 | path-parse: 1.0.7
2213 | supports-preserve-symlinks-flag: 1.0.0
2214 |
2215 | rollup@2.79.2:
2216 | optionalDependencies:
2217 | fsevents: 2.3.3
2218 |
2219 | rollup@4.29.1:
2220 | dependencies:
2221 | '@types/estree': 1.0.6
2222 | optionalDependencies:
2223 | '@rollup/rollup-android-arm-eabi': 4.29.1
2224 | '@rollup/rollup-android-arm64': 4.29.1
2225 | '@rollup/rollup-darwin-arm64': 4.29.1
2226 | '@rollup/rollup-darwin-x64': 4.29.1
2227 | '@rollup/rollup-freebsd-arm64': 4.29.1
2228 | '@rollup/rollup-freebsd-x64': 4.29.1
2229 | '@rollup/rollup-linux-arm-gnueabihf': 4.29.1
2230 | '@rollup/rollup-linux-arm-musleabihf': 4.29.1
2231 | '@rollup/rollup-linux-arm64-gnu': 4.29.1
2232 | '@rollup/rollup-linux-arm64-musl': 4.29.1
2233 | '@rollup/rollup-linux-loongarch64-gnu': 4.29.1
2234 | '@rollup/rollup-linux-powerpc64le-gnu': 4.29.1
2235 | '@rollup/rollup-linux-riscv64-gnu': 4.29.1
2236 | '@rollup/rollup-linux-s390x-gnu': 4.29.1
2237 | '@rollup/rollup-linux-x64-gnu': 4.29.1
2238 | '@rollup/rollup-linux-x64-musl': 4.29.1
2239 | '@rollup/rollup-win32-arm64-msvc': 4.29.1
2240 | '@rollup/rollup-win32-ia32-msvc': 4.29.1
2241 | '@rollup/rollup-win32-x64-msvc': 4.29.1
2242 | fsevents: 2.3.3
2243 |
2244 | rw@1.3.3: {}
2245 |
2246 | semver@7.6.3: {}
2247 |
2248 | shebang-command@2.0.0:
2249 | dependencies:
2250 | shebang-regex: 3.0.0
2251 |
2252 | shebang-regex@3.0.0: {}
2253 |
2254 | siginfo@2.0.0: {}
2255 |
2256 | signal-exit@4.1.0: {}
2257 |
2258 | sirv@3.0.0:
2259 | dependencies:
2260 | '@polka/url': 1.0.0-next.28
2261 | mrmime: 2.0.0
2262 | totalist: 3.0.1
2263 |
2264 | source-map-js@1.2.1: {}
2265 |
2266 | stackback@0.0.2: {}
2267 |
2268 | statuses@2.0.1: {}
2269 |
2270 | std-env@3.8.0: {}
2271 |
2272 | strict-event-emitter@0.5.1: {}
2273 |
2274 | string-width@4.2.3:
2275 | dependencies:
2276 | emoji-regex: 8.0.0
2277 | is-fullwidth-code-point: 3.0.0
2278 | strip-ansi: 6.0.1
2279 |
2280 | string-width@5.1.2:
2281 | dependencies:
2282 | eastasianwidth: 0.2.0
2283 | emoji-regex: 9.2.2
2284 | strip-ansi: 7.1.0
2285 |
2286 | strip-ansi@6.0.1:
2287 | dependencies:
2288 | ansi-regex: 5.0.1
2289 |
2290 | strip-ansi@7.1.0:
2291 | dependencies:
2292 | ansi-regex: 6.1.0
2293 |
2294 | supercluster@8.0.1:
2295 | dependencies:
2296 | kdbush: 4.0.2
2297 |
2298 | supports-color@7.2.0:
2299 | dependencies:
2300 | has-flag: 4.0.0
2301 |
2302 | supports-preserve-symlinks-flag@1.0.0: {}
2303 |
2304 | test-exclude@7.0.1:
2305 | dependencies:
2306 | '@istanbuljs/schema': 0.1.3
2307 | glob: 10.4.5
2308 | minimatch: 9.0.5
2309 |
2310 | tinybench@2.9.0: {}
2311 |
2312 | tinyexec@0.3.2: {}
2313 |
2314 | tinypool@1.0.2: {}
2315 |
2316 | tinyqueue@3.0.0: {}
2317 |
2318 | tinyrainbow@1.2.0: {}
2319 |
2320 | tinyspy@3.0.2: {}
2321 |
2322 | totalist@3.0.1: {}
2323 |
2324 | tough-cookie@4.1.4:
2325 | dependencies:
2326 | psl: 1.15.0
2327 | punycode: 2.3.1
2328 | universalify: 0.2.0
2329 | url-parse: 1.5.10
2330 |
2331 | type-fest@0.21.3: {}
2332 |
2333 | type-fest@4.31.0: {}
2334 |
2335 | typescript@5.7.2: {}
2336 |
2337 | undici-types@6.20.0: {}
2338 |
2339 | universalify@0.2.0: {}
2340 |
2341 | url-parse@1.5.10:
2342 | dependencies:
2343 | querystringify: 2.2.0
2344 | requires-port: 1.0.0
2345 |
2346 | vite-node@2.1.8(@types/node@22.10.5):
2347 | dependencies:
2348 | cac: 6.7.14
2349 | debug: 4.4.0
2350 | es-module-lexer: 1.6.0
2351 | pathe: 1.1.2
2352 | vite: 5.4.11(@types/node@22.10.5)
2353 | transitivePeerDependencies:
2354 | - '@types/node'
2355 | - less
2356 | - lightningcss
2357 | - sass
2358 | - sass-embedded
2359 | - stylus
2360 | - sugarss
2361 | - supports-color
2362 | - terser
2363 |
2364 | vite@3.2.11(@types/node@22.10.5):
2365 | dependencies:
2366 | esbuild: 0.15.18
2367 | postcss: 8.4.49
2368 | resolve: 1.22.10
2369 | rollup: 2.79.2
2370 | optionalDependencies:
2371 | '@types/node': 22.10.5
2372 | fsevents: 2.3.3
2373 |
2374 | vite@5.4.11(@types/node@22.10.5):
2375 | dependencies:
2376 | esbuild: 0.21.5
2377 | postcss: 8.4.49
2378 | rollup: 4.29.1
2379 | optionalDependencies:
2380 | '@types/node': 22.10.5
2381 | fsevents: 2.3.3
2382 |
2383 | vitest@2.1.8(@types/node@22.10.5)(@vitest/browser@2.1.8)(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.2)):
2384 | dependencies:
2385 | '@vitest/expect': 2.1.8
2386 | '@vitest/mocker': 2.1.8(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.2))(vite@5.4.11(@types/node@22.10.5))
2387 | '@vitest/pretty-format': 2.1.8
2388 | '@vitest/runner': 2.1.8
2389 | '@vitest/snapshot': 2.1.8
2390 | '@vitest/spy': 2.1.8
2391 | '@vitest/utils': 2.1.8
2392 | chai: 5.1.2
2393 | debug: 4.4.0
2394 | expect-type: 1.1.0
2395 | magic-string: 0.30.17
2396 | pathe: 1.1.2
2397 | std-env: 3.8.0
2398 | tinybench: 2.9.0
2399 | tinyexec: 0.3.2
2400 | tinypool: 1.0.2
2401 | tinyrainbow: 1.2.0
2402 | vite: 5.4.11(@types/node@22.10.5)
2403 | vite-node: 2.1.8(@types/node@22.10.5)
2404 | why-is-node-running: 2.3.0
2405 | optionalDependencies:
2406 | '@types/node': 22.10.5
2407 | '@vitest/browser': 2.1.8(@types/node@22.10.5)(playwright@1.49.1)(typescript@5.7.2)(vite@3.2.11(@types/node@22.10.5))(vitest@2.1.8)
2408 | transitivePeerDependencies:
2409 | - less
2410 | - lightningcss
2411 | - msw
2412 | - sass
2413 | - sass-embedded
2414 | - stylus
2415 | - sugarss
2416 | - supports-color
2417 | - terser
2418 |
2419 | vt-pbf@3.1.3:
2420 | dependencies:
2421 | '@mapbox/point-geometry': 0.1.0
2422 | '@mapbox/vector-tile': 1.3.1
2423 | pbf: 3.3.0
2424 |
2425 | which@2.0.2:
2426 | dependencies:
2427 | isexe: 2.0.0
2428 |
2429 | which@4.0.0:
2430 | dependencies:
2431 | isexe: 3.1.1
2432 |
2433 | why-is-node-running@2.3.0:
2434 | dependencies:
2435 | siginfo: 2.0.0
2436 | stackback: 0.0.2
2437 |
2438 | wrap-ansi@6.2.0:
2439 | dependencies:
2440 | ansi-styles: 4.3.0
2441 | string-width: 4.2.3
2442 | strip-ansi: 6.0.1
2443 |
2444 | wrap-ansi@7.0.0:
2445 | dependencies:
2446 | ansi-styles: 4.3.0
2447 | string-width: 4.2.3
2448 | strip-ansi: 6.0.1
2449 |
2450 | wrap-ansi@8.1.0:
2451 | dependencies:
2452 | ansi-styles: 6.2.1
2453 | string-width: 5.1.2
2454 | strip-ansi: 7.1.0
2455 |
2456 | ws@8.18.0: {}
2457 |
2458 | y18n@5.0.8: {}
2459 |
2460 | yargs-parser@21.1.1: {}
2461 |
2462 | yargs@17.7.2:
2463 | dependencies:
2464 | cliui: 8.0.1
2465 | escalade: 3.2.0
2466 | get-caller-file: 2.0.5
2467 | require-directory: 2.1.1
2468 | string-width: 4.2.3
2469 | y18n: 5.0.8
2470 | yargs-parser: 21.1.1
2471 |
2472 | yoctocolors-cjs@2.1.2: {}
2473 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mug-jp/maplibre-gl-gsi-terrain/cf3180f65303f32f2ed22e41ca78412cb5b94d0d/screenshot.png
--------------------------------------------------------------------------------
/src/terrain.test.ts:
--------------------------------------------------------------------------------
1 | import { expect, test } from 'vitest';
2 | import { getGsiDemProtocolAction, useGsiTerrainSource } from './terrain';
3 | import maplibregl, {
4 | Map,
5 | type RasterDEMSourceSpecification,
6 | } from 'maplibre-gl';
7 |
8 | test('getGsiDemProtocolAction', async () => {
9 | const protocolAction = getGsiDemProtocolAction('myprotocol');
10 | maplibregl.addProtocol('myprotocol', protocolAction);
11 | const myProtocolSource: RasterDEMSourceSpecification = {
12 | type: 'raster-dem',
13 | tiles: ['myprotocol://https://example.com/{z}/{x}/{y}.png'],
14 | tileSize: 256,
15 | minzoom: 1,
16 | maxzoom: 17,
17 | attribution: 'example',
18 | };
19 |
20 | const map = new Map({
21 | container: document.createElement('div'),
22 | style: {
23 | version: 8,
24 | sources: { myProtocolSource },
25 | layers: [],
26 | terrain: { source: 'myProtocolSource', exaggeration: 1.2 },
27 | },
28 | });
29 |
30 | await new Promise((resolve) => map.on('load', resolve));
31 |
32 | expect(map.getSource('myProtocolSource')).toBeDefined();
33 | expect(map.getTerrain()).toEqual({
34 | source: 'myProtocolSource',
35 | exaggeration: 1.2,
36 | });
37 | });
38 |
39 | test('useGsiTerrainSource', async () => {
40 | const gsiTerrainSource = useGsiTerrainSource(maplibregl.addProtocol);
41 | const map = new Map({
42 | container: document.createElement('div'),
43 | style: {
44 | version: 8,
45 | sources: { terrain: gsiTerrainSource },
46 | layers: [],
47 | terrain: { source: 'terrain', exaggeration: 1.234 },
48 | },
49 | });
50 |
51 | await new Promise((resolve) => map.on('load', resolve));
52 |
53 | expect(map.getSource('terrain')).toBeDefined();
54 | expect(map.getTerrain()).toEqual({
55 | source: 'terrain',
56 | exaggeration: 1.234,
57 | });
58 | });
59 |
--------------------------------------------------------------------------------
/src/terrain.ts:
--------------------------------------------------------------------------------
1 | import type {
2 | AddProtocolAction,
3 | RasterDEMSourceSpecification,
4 | } from 'maplibre-gl';
5 | import maplibregl from 'maplibre-gl';
6 | import { workerCode } from './worker';
7 |
8 | const loadImage = async (
9 | src: string,
10 | signal: AbortSignal,
11 | ): Promise => {
12 | let response: Response;
13 | try {
14 | response = await fetch(src, { signal });
15 | } catch (e) {
16 | if (!signal.aborted) {
17 | console.error(`Failed to fetch image: ${e}`);
18 | }
19 | return null;
20 | }
21 | if (!response.ok) {
22 | return null;
23 | }
24 | return await createImageBitmap(await response.blob());
25 | };
26 | class WorkerProtocol {
27 | private worker: Worker;
28 | private pendingRequests: Map<
29 | string,
30 | {
31 | resolve: (
32 | value: { data: Uint8Array } | PromiseLike<{ data: Uint8Array }>,
33 | ) => void;
34 | reject: (reason?: Error) => void;
35 | controller: AbortController;
36 | }
37 | >;
38 |
39 | constructor(worker: Worker) {
40 | this.worker = worker;
41 | this.pendingRequests = new Map();
42 | this.worker.addEventListener('message', this.handleMessage);
43 | this.worker.addEventListener('error', this.handleError);
44 | }
45 |
46 | async request(
47 | url: string,
48 | controller: AbortController,
49 | ): Promise<{ data: Uint8Array }> {
50 | const image = await loadImage(url, controller.signal);
51 |
52 | if (!image) {
53 | return Promise.reject(new Error('Failed to load image'));
54 | }
55 |
56 | return new Promise((resolve, reject) => {
57 | this.pendingRequests.set(url, { resolve, reject, controller });
58 | this.worker.postMessage({ image, url });
59 |
60 | controller.signal.onabort = () => {
61 | this.pendingRequests.delete(url);
62 | reject(new Error('Request aborted'));
63 | };
64 | });
65 | }
66 |
67 | private handleMessage = (e: MessageEvent) => {
68 | const { url, buffer, error } = e.data;
69 | if (error) {
70 | console.error(`Error processing tile ${url}:`, error);
71 | } else {
72 | const request = this.pendingRequests.get(url);
73 | if (request) {
74 | request.resolve({ data: new Uint8Array(buffer) });
75 | this.pendingRequests.delete(url);
76 | }
77 | }
78 | };
79 |
80 | private handleError = (e: ErrorEvent) => {
81 | console.error('Worker error:', e);
82 | this.pendingRequests.forEach((request) => {
83 | request.reject(new Error('Worker error occurred'));
84 | });
85 | this.pendingRequests.clear();
86 | };
87 | }
88 |
89 | const blob = new Blob([workerCode], { type: 'application/javascript' });
90 | const worker = new Worker(URL.createObjectURL(blob));
91 | const workerProtocol = new WorkerProtocol(worker);
92 |
93 | type Options = {
94 | attribution?: string;
95 | maxzoom?: number;
96 | minzoom?: number;
97 | tileUrl?: string;
98 | };
99 |
100 | /**
101 | * 地理院標高タイルを利用したtype=raster-demのsourceを返す
102 | * @param addProtocol
103 | * @param options
104 | * @returns {RasterDEMSourceSpecification} - source
105 | * @example
106 | * const gsiTerrainSource = useGsiTerrainSource(maplibreGl.addProtocol);
107 | * const map = new Map({
108 | * container: 'app',
109 | * style: {
110 | * version: 8,
111 | * sources: {
112 | * terrain: gsiTerrainSource,
113 | * },
114 | * terrain: {
115 | * source: 'terrain',
116 | * exaggeration: 1.2,
117 | * },
118 | * },
119 | * });
120 | *
121 | * const seamlessTerrainSource = useGsiTerrainSource(maplibreGl.addProtocol, {
122 | * tileUrl: 'https://tiles.gsj.jp/tiles/elev/mixed/{z}/{y}/{x}.png',
123 | * minzoom: 1,
124 | * maxzoom: 17,
125 | * attribution: '産総研シームレス標高タイル',
126 | * });
127 | */
128 | export const useGsiTerrainSource = (
129 | addProtocol: typeof maplibregl.addProtocol,
130 | options: Options = {},
131 | ): RasterDEMSourceSpecification => {
132 | const protocolName = 'gsidem';
133 | const protocolAction = getGsiDemProtocolAction(protocolName);
134 | addProtocol(protocolName, protocolAction);
135 |
136 | const tileUrl =
137 | options.tileUrl ??
138 | `https://cyberjapandata.gsi.go.jp/xyz/dem_png/{z}/{x}/{y}.png`;
139 |
140 | return {
141 | type: 'raster-dem',
142 | tiles: [`gsidem://${tileUrl}`],
143 | tileSize: 256,
144 | encoding: 'terrarium',
145 | minzoom: options.minzoom ?? 1,
146 | maxzoom: options.maxzoom ?? 14,
147 | attribution:
148 | options.attribution ??
149 | '地理院タイル',
150 | };
151 | };
152 |
153 | /**
154 | * 地理院標高タイルを利用してtype=raster-demのsourceを生成するためのProtocolActionを返す
155 | * @param customProtocol - 任意のプロトコル名(例: 'gsidem')
156 | * @returns {AddProtocolAction} - ProtocolAction
157 | * @example
158 | * const protocolAction = getGsiDemProtocolAction('gsidem');
159 | * addProtocol('gsidem', protocolAction);
160 | * const rasterDemSource = {
161 | * type: 'raster-dem',
162 | * tiles: ['gsidem://https://cyberjapandata.gsi.go.jp/xyz/dem_png/{z}/{x}/{y}.png'],
163 | * tileSize: 256,
164 | * minzoom: 1,
165 | * maxzoom: 14,
166 | * attribution: '地理院タイル',
167 | * };
168 | * const map = new Map({container: 'app', style: {sources: {terrain: gsiTerrainSource}}});
169 | */
170 | export const getGsiDemProtocolAction = (
171 | customProtocol: string,
172 | ): AddProtocolAction => {
173 | return (params, abortController) => {
174 | const urlWithoutProtocol = params.url.replace(customProtocol + '://', '');
175 | return workerProtocol.request(urlWithoutProtocol, abortController);
176 | };
177 | };
178 |
--------------------------------------------------------------------------------
/src/worker.ts:
--------------------------------------------------------------------------------
1 | // インラインWebワーカーのコードを文字列で定義
2 | export const workerCode = `
3 | const vsSource = \`#version 300 es
4 | in vec4 a_position;
5 | out vec2 v_tex_coord;
6 |
7 | void main() {
8 | gl_Position = a_position;
9 | v_tex_coord = vec2(a_position.x * 0.5 + 0.5, a_position.y * -0.5 + 0.5);
10 | }
11 | \`;
12 |
13 | const fsSource = \`#version 300 es
14 | #ifdef GL_FRAGMENT_PRECISION_HIGH
15 | precision highp float;
16 | #else
17 | precision mediump float;
18 | #endif
19 |
20 | uniform sampler2D u_height_map;
21 | in vec2 v_tex_coord;
22 | out vec4 fragColor;
23 |
24 | void main() {
25 | vec4 color = texture(u_height_map, v_tex_coord);
26 | vec3 rgb = color.rgb * 255.0;
27 |
28 | // terrariumにおける高度0の色
29 | vec4 zero_elevation_color = vec4(128.0, 0.0, 0.0, 255.0) / 255.0;
30 |
31 | // 地理院標高タイルの無効値または完全に透明なピクセルの判定
32 | bool is_valid = (rgb.r != 128.0 || rgb.g != 0.0 || rgb.b != 0.0) && color.a != 0.0;
33 |
34 | float rgb_value = dot(rgb, vec3(65536.0, 256.0, 1.0));
35 | float height = mix(rgb_value, rgb_value - 16777216.0, step(8388608.0, rgb_value)) * 0.01;
36 |
37 | // terrariumの標高値エンコード
38 | height += 32768.0;
39 | float r = floor(height / 256.0);
40 | float g = floor(mod(height, 256.0));
41 | float b = floor((height - floor(height)) * 256.0);
42 |
43 | // terrariumの標高値を色に変換
44 | fragColor = mix(
45 | zero_elevation_color,
46 | vec4(
47 | r / 255.0,
48 | g / 255.0,
49 | b / 255.0,
50 | 1.0
51 | ),
52 | float(is_valid)
53 | );
54 | }
55 | \`;
56 |
57 | let gl = null;
58 | let program = null;
59 | let positionBuffer = null;
60 | let heightMapLocation = null;
61 |
62 | const initWebGL = (canvas) => {
63 | gl = canvas.getContext('webgl2');
64 | if (!gl) {
65 | throw new Error('WebGL not supported');
66 | }
67 |
68 | const loadShader = (
69 | gl,
70 | type,
71 | source,
72 | ) => {
73 | const shader = gl.createShader(type);
74 | if (!shader) {
75 | console.error('Unable to create shader');
76 | return null;
77 | }
78 | gl.shaderSource(shader, source);
79 | gl.compileShader(shader);
80 |
81 | if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
82 | console.error(
83 | 'An error occurred compiling the shaders: ' +
84 | gl.getShaderInfoLog(shader),
85 | );
86 | gl.deleteShader(shader);
87 | return null;
88 | }
89 | return shader;
90 | };
91 |
92 | const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vsSource);
93 | const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fsSource);
94 | if (!vertexShader || !fragmentShader) {
95 | throw new Error('Failed to load shaders');
96 | }
97 |
98 | program = gl.createProgram();
99 | if (!program) {
100 | throw new Error('Failed to create program');
101 | }
102 | gl.attachShader(program, vertexShader);
103 | gl.attachShader(program, fragmentShader);
104 | gl.linkProgram(program);
105 |
106 | if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
107 | console.error(
108 | 'Unable to initialize the shader program: ' +
109 | gl.getProgramInfoLog(program),
110 | );
111 | throw new Error('Failed to link program');
112 | }
113 |
114 | positionBuffer = gl.createBuffer();
115 | gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
116 | const positions = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]);
117 | gl.bufferData(gl.ARRAY_BUFFER, positions, gl.STATIC_DRAW);
118 | const positionLocation = gl.getAttribLocation(program, 'a_position');
119 | gl.enableVertexAttribArray(positionLocation);
120 | gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0);
121 |
122 | heightMapLocation = gl.getUniformLocation(program, 'u_height_map');
123 | };
124 |
125 | const canvas = new OffscreenCanvas(256, 256);
126 |
127 | self.onmessage = async (e) => {
128 | const { url, image } = e.data;
129 |
130 | try {
131 | if (!gl) {
132 | initWebGL(canvas);
133 | }
134 |
135 | if (!gl || !program || !positionBuffer || !heightMapLocation) {
136 | throw new Error('WebGL initialization failed');
137 | }
138 |
139 | const heightMap = gl.createTexture();
140 | gl.activeTexture(gl.TEXTURE0);
141 | gl.bindTexture(gl.TEXTURE_2D, heightMap);
142 | gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
143 | gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
144 | gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
145 | gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
146 | gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
147 |
148 | gl.useProgram(program);
149 | gl.uniform1i(heightMapLocation, 0);
150 |
151 | gl.clear(gl.COLOR_BUFFER_BIT);
152 | gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
153 |
154 | const blob = await canvas.convertToBlob();
155 | if (!blob) {
156 | throw new Error('Failed to convert canvas to blob');
157 | }
158 | const buffer = await blob.arrayBuffer();
159 | self.postMessage({ url, buffer });
160 | } catch (error) {
161 | if (error instanceof Error) {
162 | self.postMessage({ url, error: error.message });
163 | }
164 | }
165 | };
166 | `;
167 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "types": ["vite/client"],
5 | "useDefineForClassFields": true,
6 | "module": "ESNext",
7 | "lib": ["ESNext", "DOM"],
8 | "moduleResolution": "Node",
9 | "strict": true,
10 | "resolveJsonModule": true,
11 | "isolatedModules": true,
12 | "esModuleInterop": true,
13 | "declaration": true,
14 | "declarationMap": true,
15 | "declarationDir": "dist",
16 | "emitDeclarationOnly": true,
17 | "noUnusedLocals": true,
18 | "noUnusedParameters": true,
19 | "noImplicitReturns": true,
20 | "skipLibCheck": true,
21 | "outDir": "dist"
22 | },
23 | "include": ["src/terrain.ts"]
24 | }
25 |
--------------------------------------------------------------------------------
/vite.config.example.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite';
2 |
3 | export default defineConfig({
4 | root: './example',
5 | base: './',
6 | build: {
7 | outDir: '../demo',
8 | rollupOptions: {
9 | input: {
10 | index: 'example/index.html',
11 | },
12 | },
13 | },
14 | });
15 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | // vite.config.js
2 | import { defineConfig } from 'vite';
3 |
4 | export default defineConfig({
5 | build: {
6 | outDir: 'dist',
7 | base: './',
8 | lib: {
9 | entry: 'src/terrain.ts',
10 | name: 'terrain',
11 | fileName: 'terrain',
12 | },
13 | },
14 | test: {
15 | browser: {
16 | provider: 'playwright', // or 'webdriverio'
17 | enabled: true,
18 | name: 'chromium', // browser name is required
19 | headless: true,
20 | },
21 | },
22 | });
23 |
--------------------------------------------------------------------------------