diff --git a/.gitignore b/.gitignore
index d96e5b2..efcede4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,8 @@ yarn-error.log*
coverage
# Netlify build folders and files
-.netlify/plugins
+.netlify
functions/*.zip
+
+.env
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index bc917ca..a61bfea 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,16 +1,20 @@
We welcome contributions to the project!
+
# How to contribute to the project?
+
All contributions to this project are welcome. To propose changes, we encourage contributors to:
1. Fork this project on GitHub
2. Create a new branch
-3. Propose changes by opening a new pull request.
-If you're looking for somewhere to start, check out the issues labeled "Good first issue" or Community.
+3. Propose changes by opening a new pull request.
+ If you're looking for somewhere to start, check out the issues labeled "Good first issue" or Community.
# Issue and PR templates
+
We encourage contributors to format pull request titles following the [Conventional Commit Specification](https://www.conventionalcommits.org/en/v1.0.0/).
# Folder organization
+
- gbfs-validator
This is the heart of the validator. This folder contains a NodeJs package to validate GBFS Feeds.
@@ -21,7 +25,7 @@ Contains JSON schemas
- website
-Contains the frontend, currently hosted by Netlify on https://gbfs-validator.netlify.app/
+Contains the frontend, currently hosted by Netlify on https://gbfs-validator.mobilitydata.org/
It’s a tiny Vue SPA.
- functions
@@ -35,10 +39,13 @@ The function is only compatible with Netlify Function (https://www.netlify.com/p
Check-systems is a CLI tool to validate the whole “systems.csv” from https://github.com/NABSA/gbfs locally
# Code convention
+
"Sticking to a single consistent and documented coding style for this project is important to ensure that code reviewers dedicate their attention to the functionality of the validation, as opposed to disagreements about the coding style (and avoid bike-shedding https://en.wikipedia.org/wiki/Law_of_triviality )." This project uses the Eslint + Prettier to ensure lint (See .eslintrc.js and .prettierrc)
# Adding a new version
+
For adding a new version:
+
- Create a new folder under “gbfs-validator/schema” with the version as name (Eg: “vX.Y”).
- Add an “index.js” file. This file will define the possible JSON-schema to call for validation and the mandatory ones. See [master/gbfs-validator/schema/v2.2/index.js](https://github.com/fluctuo/gbfs-validator/blob/master/gbfs-validator/schema/v2.2/index.js) for an exemple.
- Fill the folder with all JSON-schemas for this version.
diff --git a/README.md b/README.md
index d99394d..e0e516d 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ Questions? Please open an issue or reach out to MobilityData on the GBFS slack c
The validator is developed to be used “online” (hosted with a lambda function).
-1. Open gbfs-validator.netlify.com/
+1. Open gbfs-validator.mobilitydata.org/
2. Enter the feed’s auto-discovery URL
3. If needed, select the version. If not specified, the validator will pick the version mentioned in the `gbfs.json` file
4. Select file requirement options (free-floating or docked)
@@ -54,13 +54,18 @@ git clone https://github.com/fluctuo/gbfs-validator.git
cd gbfs-validator
```
+### Set Environment variables
+
+Copy `./website/.env.exemple` to `./website/.env`
+And set values
+
### Run dev environment
With Node.js
```shell
yarn
-yarn start
+yarn run dev
```
Open `localhost:8080` on your browser
@@ -83,6 +88,7 @@ Open `localhost:8080` on your browser
This project follows the [all-contributors](https://allcontributors.org/docs/en/overview) specification, find the [emoji key here](https://allcontributors.org/docs/en/emoji-key). Contributions of any kind welcome! Please check out our [Contribution guidelines](/CONTRIBUTING.md) for details.
:warning: for contributions on schemas, please see [Versions README](gbfs-validator/versions/README.md)
+
## Acknowledgements
This project was originally created by Pierrick Paul at [fluctuo](https://fluctuo.com/) - MobilityData started maintaining the project in September 2021.
diff --git a/functions/doc.js b/functions/doc.js
new file mode 100644
index 0000000..4bfecbf
--- /dev/null
+++ b/functions/doc.js
@@ -0,0 +1,8 @@
+const openapiSchema = require('./openapi')
+
+exports.handler = function (event, context, callback) {
+ callback(null, {
+ statusCode: 200,
+ body: JSON.stringify(openapiSchema)
+ })
+}
diff --git a/functions/feed.js b/functions/feed.js
new file mode 100644
index 0000000..db3dd99
--- /dev/null
+++ b/functions/feed.js
@@ -0,0 +1,31 @@
+const GBFS = require('gbfs-validator')
+
+exports.handler = function (event, context, callback) {
+ let body
+
+ try {
+ body = JSON.parse(event.body)
+ } catch (err) {
+ callback(err, {
+ statusCode: 500,
+ body: JSON.stringify(err)
+ })
+ }
+
+ const gbfs = new GBFS(body.url)
+
+ gbfs
+ .getFiles()
+ .then((result) => {
+ callback(null, {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ })
+ })
+ .catch((err) => {
+ callback(null, {
+ statusCode: 500,
+ body: JSON.stringify(err.message)
+ })
+ })
+}
diff --git a/functions/openapi.js b/functions/openapi.js
new file mode 100644
index 0000000..66b194d
--- /dev/null
+++ b/functions/openapi.js
@@ -0,0 +1,269 @@
+const validatorVersion = process.env.COMMIT_REF
+ ? process.env.COMMIT_REF.substring(0, 7)
+ : require('./package.json').version
+
+module.exports = {
+ openapi: '3.0.3',
+ info: {
+ title: 'GBFS validator',
+ version: `${validatorVersion}`
+ },
+ servers: [
+ {
+ url: 'https://gbfs-validator.netlify.app/.netlify/functions'
+ }
+ ],
+ paths: {
+ '/validator': {
+ post: {
+ summary: 'Validate a GBFS feed',
+ description: 'Validate the GBFS feed according to passed options',
+ requestBody: {
+ content: {
+ 'application/json': {
+ schema: {
+ $ref: '#/components/schemas/ValidatorRequest'
+ }
+ }
+ },
+ required: true
+ },
+ responses: {
+ 200: {
+ description: 'Validation result',
+ content: {
+ 'application/json': {
+ schema: {
+ $ref: '#/components/schemas/Validator'
+ }
+ }
+ }
+ },
+ 500: {
+ description: 'Error',
+ content: {
+ 'application/json': {
+ schema: {
+ $ref: '#/components/schemas/Error'
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ '/feed': {
+ post: {
+ summary: 'Get feed content',
+ description:
+ "Get content of all GBFS's files. Usefull to avoid CORS errors.",
+ requestBody: {
+ content: {
+ 'application/json': {
+ schema: {
+ $ref: '#/components/schemas/FeedRequest'
+ }
+ }
+ },
+ required: true
+ },
+ responses: {
+ 200: {
+ description: 'lorem',
+ content: {
+ 'application/json': {
+ schema: {
+ $ref: '#/components/schemas/Feed'
+ }
+ }
+ }
+ },
+ 500: {
+ description: 'Error',
+ content: {
+ 'application/json': {
+ schema: {
+ $ref: '#/components/schemas/Error'
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ components: {
+ schemas: {
+ Error: {
+ type: 'object'
+ },
+ Validator: {
+ required: ['summary', 'files'],
+ type: 'object',
+ properties: {
+ summary: {
+ type: 'object'
+ },
+ files: {
+ type: 'array',
+ items: {
+ $ref: '#/components/schemas/ValidatedFile'
+ }
+ }
+ }
+ },
+ ValidatedFile: {
+ type: 'object',
+ properties: {
+ schema: {
+ type: 'object'
+ },
+ errors: {
+ type: 'array',
+ items: {
+ $ref: '#/components/schemas/JSONError'
+ }
+ },
+ url: {
+ type: 'string'
+ },
+ version: {
+ type: 'string'
+ },
+ recommanded: {
+ type: 'boolean'
+ },
+ required: {
+ type: 'boolean'
+ },
+ exists: {
+ type: 'boolean'
+ },
+ file: {
+ type: 'string'
+ },
+ hasErrors: {
+ type: 'boolean'
+ },
+ errorsCount: {
+ type: 'number'
+ }
+ },
+ required: ['required', 'exists', 'file', 'hasErrors', 'errorsCount']
+ },
+ JSONError: {
+ type: 'object',
+ properties: {
+ instancePath: {
+ type: 'string'
+ },
+ schemaPath: {
+ type: 'string'
+ },
+ keyword: {
+ type: 'string'
+ },
+ params: {
+ type: 'object'
+ },
+ message: {
+ type: 'string'
+ }
+ }
+ },
+ ValidatorRequest: {
+ required: ['url'],
+ type: 'object',
+ properties: {
+ url: {
+ type: 'string'
+ },
+ options: {
+ type: 'object',
+ properties: {
+ freefloating: {
+ type: 'boolean'
+ },
+ docked: {
+ type: 'boolean'
+ },
+ version: {
+ type: 'string'
+ },
+ auth: {
+ type: 'object',
+ properties: {
+ type: {
+ type: 'string'
+ },
+ basicAuth: {
+ type: 'object',
+ properties: {
+ user: {
+ type: 'string'
+ },
+ password: {
+ type: 'string'
+ }
+ }
+ },
+ bearerToken: {
+ type: 'object',
+ properties: {
+ token: {
+ type: 'string'
+ }
+ }
+ },
+ oauthClientCredentialsGrant: {
+ type: 'object',
+ properties: {
+ user: {
+ type: 'string'
+ },
+ password: {
+ type: 'string'
+ },
+ tokenUrl: {
+ type: 'string'
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ FeedRequest: {
+ required: ['url'],
+ type: 'object',
+ properties: {
+ url: {
+ type: 'string'
+ }
+ }
+ },
+ Feed: {
+ type: 'object',
+ properties: {
+ summary: {
+ type: 'object'
+ },
+ gbfsResult: {
+ type: 'object'
+ },
+ gbfsVersion: {
+ type: 'string'
+ },
+ files: {
+ type: 'array',
+ items: {
+ type: 'object'
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/functions/validator.js b/functions/validator.js
index 44a1daf..3fcf726 100644
--- a/functions/validator.js
+++ b/functions/validator.js
@@ -1,6 +1,6 @@
const GBFS = require('gbfs-validator')
-exports.handler = function(event, context, callback) {
+exports.handler = function (event, context, callback) {
let body
try {
@@ -16,13 +16,13 @@ exports.handler = function(event, context, callback) {
gbfs
.validation()
- .then(result => {
+ .then((result) => {
callback(null, {
statusCode: 200,
body: JSON.stringify(result)
})
})
- .catch(err => {
+ .catch((err) => {
callback(null, {
statusCode: 500,
body: JSON.stringify(err.message)
diff --git a/gbfs-validator/gbfs.js b/gbfs-validator/gbfs.js
index 6542081..29ed6b5 100644
--- a/gbfs-validator/gbfs.js
+++ b/gbfs-validator/gbfs.js
@@ -7,7 +7,7 @@ const validatorVersion = process.env.COMMIT_REF
function hasErrors(data, required) {
let hasError = false
- data.forEach(el => {
+ data.forEach((el) => {
if (Array.isArray(el)) {
if (hasErrors(el, required)) {
hasError = true
@@ -30,7 +30,7 @@ function countErrors(file) {
count = file.errors.length
} else if (file.languages) {
if (file.required) {
- count += file.languages.filter(l => !l.exists).length
+ count += file.languages.filter((l) => !l.exists).length
}
count += file.languages.reduce((acc, l) => {
@@ -63,8 +63,8 @@ function getPartialSchema(version, partial, data = {}) {
function getVehicleTypes({ body }) {
if (Array.isArray(body)) {
return body.reduce((acc, lang) => {
- lang.body?.data?.vehicle_types.map(vt => {
- if (!acc.find(f => f.vehicle_type_id === vt.vehicle_type_id)) {
+ lang.body?.data?.vehicle_types.map((vt) => {
+ if (!acc.find((f) => f.vehicle_type_id === vt.vehicle_type_id)) {
acc.push({
vehicle_type_id: vt.vehicle_type_id,
form_factor: vt.form_factor,
@@ -76,7 +76,7 @@ function getVehicleTypes({ body }) {
return acc
}, [])
} else {
- return body?.data?.vehicle_types.map(vt => ({
+ return body?.data?.vehicle_types.map((vt) => ({
vehicle_type_id: vt.vehicle_type_id,
form_factor: vt.form_factor,
propulsion_type: vt.propulsion_type
@@ -87,8 +87,8 @@ function getVehicleTypes({ body }) {
function getPricingPlans({ body }) {
if (Array.isArray(body)) {
return body.reduce((acc, lang) => {
- lang.body?.data?.plans.map(pp => {
- if (!acc.find(f => f.plan_id === pp.plan_id)) {
+ lang.body?.data?.plans.map((pp) => {
+ if (!acc.find((f) => f.plan_id === pp.plan_id)) {
acc.push(pp)
}
})
@@ -102,27 +102,31 @@ function getPricingPlans({ body }) {
function hadVehicleTypeId({ body }) {
if (Array.isArray(body)) {
- return body.some(lang => lang.body.data.bikes.find(b => b.vehicle_type_id))
+ return body.some((lang) =>
+ lang.body.data.bikes.find((b) => b.vehicle_type_id)
+ )
} else {
- return body.data.bikes.some(b => b.vehicle_type_id)
+ return body.data.bikes.some((b) => b.vehicle_type_id)
}
}
function hasPricingPlanId({ body }) {
if (Array.isArray(body)) {
- return body.some(lang => lang.body.data.bikes.find(b => b.pricing_plan_id))
+ return body.some((lang) =>
+ lang.body.data.bikes.find((b) => b.pricing_plan_id)
+ )
} else {
- return body.data.bikes.some(b => b.pricing_plan_id)
+ return body.data.bikes.some((b) => b.pricing_plan_id)
}
}
function hasRentalUris({ body }, key, store) {
if (Array.isArray(body)) {
- return body.some(lang =>
- lang.body.data[key].find(b => b.rental_uris?.[store])
+ return body.some((lang) =>
+ lang.body.data[key].find((b) => b.rental_uris?.[store])
)
} else {
- return body.data[key].some(b => b.rental_uris?.[store])
+ return body.data[key].some((b) => b.rental_uris?.[store])
}
}
@@ -134,7 +138,7 @@ function fileExist(file) {
if (file.exists) {
return true
} else if (Array.isArray(file.body)) {
- return file.body.some(lang => lang.exists)
+ return file.body.some((lang) => lang.exists)
}
return false
@@ -189,7 +193,7 @@ class GBFS {
return got
.get(url, this.gotOptions)
.json()
- .then(body => {
+ .then((body) => {
if (typeof body !== 'object') {
return {
recommanded: true,
@@ -240,7 +244,7 @@ class GBFS {
return got
.get(this.url, this.gotOptions)
.json()
- .then(body => {
+ .then((body) => {
if (typeof body !== 'object') {
return this.alternativeAutoDiscovery(
new URL('gbfs.json', this.url).toString()
@@ -269,7 +273,7 @@ class GBFS {
hasErrors: !!errors
}
})
- .catch(e => {
+ .catch((e) => {
if (!this.url.match(/gbfs.json$/)) {
return this.alternativeAutoDiscovery(
new URL('gbfs.json', this.url).toString()
@@ -303,43 +307,43 @@ class GBFS {
getFile(type, required) {
if (this.autoDiscovery) {
- const urls = Object.entries(this.autoDiscovery.data).map(key => {
+ const urls = Object.entries(this.autoDiscovery.data).map((key) => {
return Object.assign(
{ lang: key[0] },
- this.autoDiscovery.data[key[0]].feeds.find(f => f.name === type)
+ this.autoDiscovery.data[key[0]].feeds.find((f) => f.name === type)
)
})
return Promise.all(
- urls.map(
- lang =>
- lang && lang.url
- ? got
- .get(lang.url, this.gotOptions)
- .json()
- .then(body => {
- return {
- body,
- exists: true,
- lang: lang.lang,
- url: lang.url
- }
- })
- .catch(() => ({
- body: null,
- exists: false,
+ urls.map((lang) =>
+ lang && lang.url
+ ? got
+ .get(lang.url, this.gotOptions)
+ .json()
+ .then((body) => {
+ return {
+ body,
+ exists: true,
lang: lang.lang,
url: lang.url
- }))
- : {
+ }
+ })
+ .catch(() => ({
body: null,
exists: false,
lang: lang.lang,
- url: null
- }
+ url: lang.url
+ }))
+ : {
+ body: null,
+ exists: false,
+ lang: lang.lang,
+ url: null
+ }
)
- ).then(bodies => {
+ ).then((bodies) => {
return {
+ file: `${type}.json`,
body: bodies,
required,
type
@@ -349,13 +353,15 @@ class GBFS {
return got
.get(`${this.url}/${type}.json`, this.gotOptions)
.json()
- .then(body => ({
+ .then((body) => ({
+ file: `${type}.json`,
body,
required,
exists: true,
type
}))
- .catch(err => ({
+ .catch((err) => ({
+ file: `${type}.json`,
body: null,
required,
errors: required ? err : null,
@@ -367,10 +373,12 @@ class GBFS {
validationFile(body, version, type, required, options) {
if (Array.isArray(body)) {
- body = body.filter(b => b.exists || b.required).map(b => ({
- ...b,
- ...this.validateFile(version, type, b.body, options)
- }))
+ body = body
+ .filter((b) => b.exists || b.required)
+ .map((b) => ({
+ ...b,
+ ...this.validateFile(version, type, b.body, options)
+ }))
return {
languages: body,
@@ -385,7 +393,6 @@ class GBFS {
return {
required,
...this.validateFile(version, type, body, options),
-
exists: !!body,
file: `${type}.json`,
url: `${this.url}/${type}.json`
@@ -402,14 +409,14 @@ class GBFS {
body: 'grant_type=client_credentials'
})
.json()
- .then(auth => {
+ .then((auth) => {
this.gotOptions.headers = {
Authorization: `Bearer ${auth.access_token}`
}
})
}
- async validation() {
+ async getFiles() {
if (this.auth && this.auth.type === 'oauth_client_credentials_grant') {
await this.getToken()
}
@@ -419,6 +426,8 @@ class GBFS {
if (!gbfsResult.version) {
return {
summary: {
+ gbfsResult,
+ gbfsVersion: gbfsResult.version,
validatorVersion,
versionUnimplemented: true
}
@@ -427,16 +436,35 @@ class GBFS {
const gbfsVersion = this.options.version || gbfsResult.version
- let files = require(`./versions/v${gbfsVersion}.js`).files(this.options)
-
- const t = await Promise.all(
- files.map(f => this.getFile(f.file, f.required))
+ let filesRequired = require(`./versions/v${gbfsVersion}.js`).files(
+ this.options
)
- const vehicleTypesFile = t.find(a => a.type === 'vehicle_types')
- const freeBikeStatusFile = t.find(a => a.type === 'free_bike_status')
- const stationInformationFile = t.find(a => a.type === 'station_information')
- const stationPricingPlans = t.find(a => a.type === 'system_pricing_plans')
+ return {
+ summary: {},
+ gbfsResult,
+ gbfsVersion,
+ files: await Promise.all(
+ filesRequired.map((f) => this.getFile(f.file, f.required))
+ )
+ }
+ }
+
+ async validation() {
+ const { gbfsResult, gbfsVersion, files, summary } = await this.getFiles()
+
+ if (summary?.versionUnimplemented) {
+ return { summary }
+ }
+
+ const vehicleTypesFile = files.find((a) => a.type === 'vehicle_types')
+ const freeBikeStatusFile = files.find((a) => a.type === 'free_bike_status')
+ const stationInformationFile = files.find(
+ (a) => a.type === 'station_information'
+ )
+ const stationPricingPlans = files.find(
+ (a) => a.type === 'system_pricing_plans'
+ )
let vehicleTypes,
pricingPlans,
@@ -475,7 +503,7 @@ class GBFS {
pricingPlans = getPricingPlans(stationPricingPlans)
}
- t.forEach(f => {
+ files.forEach((f) => {
const addSchema = []
let required = f.required
@@ -542,6 +570,7 @@ class GBFS {
addSchema.push(partial)
}
}
+ break
default:
break
}
@@ -553,7 +582,7 @@ class GBFS {
)
})
- const filesResult = result.map(file => ({
+ const filesResult = result.map((file) => ({
...file,
errorsCount: countErrors(file)
}))
diff --git a/netlify.toml b/netlify.toml
index 9a2a9a0..afbd56b 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -6,4 +6,6 @@
directory = "functions"
[dev]
+ command = "yarn run dev:website"
+ autoLaunch = false
functions = "functions"
diff --git a/package.json b/package.json
index e23bba8..da93b7d 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"scripts": {
- "dev:website": "cd website && yarn run serve",
+ "dev:website": "cd website && yarn run dev",
"dev": "netlify dev",
"start": "yarn run dev",
"lint": "eslint --ext .js,.vue website/src",
diff --git a/website/.env.exemple b/website/.env.exemple
new file mode 100644
index 0000000..c2fc9df
--- /dev/null
+++ b/website/.env.exemple
@@ -0,0 +1,5 @@
+# Mapbox token (Required for visualization / public scopes)
+VITE_MAPBOX_API_KEY=
+
+# Google Analytics ID (Optionnal)
+VITE_GOOGLE_ANALYTICS_ID=
diff --git a/website/index.html b/website/index.html
index 439d72a..a1b2fda 100644
--- a/website/index.html
+++ b/website/index.html
@@ -3,14 +3,17 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
GBFS-Validator - A GBFS feed validator
diff --git a/website/package.json b/website/package.json
index 038bbe6..315f94c 100644
--- a/website/package.json
+++ b/website/package.json
@@ -13,13 +13,22 @@
"test": "echo \"Error: no test specified\" && exit 0"
},
"dependencies": {
+ "@deck.gl/core": "^8.9.18",
+ "@deck.gl/layers": "^8.9.18",
+ "@deck.gl/mapbox": "^8.9.18",
+ "@turf/bbox": "^6.5.0",
+ "@vue/compat": "^3.3.2",
+ "@vueuse/core": "^10.1.2",
"bootstrap": "^5.0.1",
"bootstrap-vue": "^2.23.1",
+ "maplibre-gl": "^3.0.1",
+ "maplibregl-mapbox-request-transformer": "^0.0.2",
+ "mitt": "^3.0.0",
"sass": "^1.34.1",
"sass-loader": "^12.0.0",
"vue": "^3.3.2",
- "@vue/compat": "^3.3.2",
- "vue-gtag": "1.16.1"
+ "vue-gtag": "1.16.1",
+ "vue-router": "^4.2.2"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.2.0",
diff --git a/website/src/App.vue b/website/src/App.vue
index a80fbec..9b14342 100644
--- a/website/src/App.vue
+++ b/website/src/App.vue
@@ -1,28 +1,39 @@
-
+
-
+
- gbfs-validator.mobilitydata.org
- A GBFS feed validator
+ gbfs-validator.mobilitydata.org
+ A GBFS feed validator
Validate any
- GBFS feed online.
- Based on official
+ GBFS feed
+ online. Based on official
GBFS json schemas .
@@ -37,7 +48,7 @@ import Footer from './components/Footer.vue'
-
+
diff --git a/website/src/components/Footer.vue b/website/src/components/Footer.vue
index 0edecc4..49a96a5 100644
--- a/website/src/components/Footer.vue
+++ b/website/src/components/Footer.vue
@@ -8,8 +8,6 @@
diff --git a/website/src/components/StationPopup.vue b/website/src/components/StationPopup.vue
new file mode 100644
index 0000000..5e92957
--- /dev/null
+++ b/website/src/components/StationPopup.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
Station
+
+
+ Key
+ Value
+
+
+ {{ key }}
+
+ {{ props.station[key] }}
+
+
+ Key
+ Value
+
+
+ {{ siKey }}
+ {{ station._info[siKey] }}
+
+
+
+ {{ props.station[key] }}
+
+
+
+
+
+
diff --git a/website/src/components/VehiclePopup.vue b/website/src/components/VehiclePopup.vue
new file mode 100644
index 0000000..c039529
--- /dev/null
+++ b/website/src/components/VehiclePopup.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
Vehicle
+
+
+ Key
+ Value
+
+
+ {{ key }}
+
+
+ {{ props.vehicle[key] }}
+
+
+ Key
+ Value
+
+
+ {{ vtKey }}
+ {{ props.vehicle._vehicleType[vtKey] }}
+
+
+
+
+ {{ props.vehicle[key] }}
+
+
+
+
+
+
+ Key
+ Value
+
+
+ {{ ppKey }}
+ {{ pricingPlan[ppKey] }}
+
+
+
+
+ {{ props.vehicle[key] }}
+
+
+ {{ props.vehicle[key] }}
+
+
+
+
+
+
diff --git a/website/src/main.js b/website/src/main.js
index af20a9f..f7eec33 100644
--- a/website/src/main.js
+++ b/website/src/main.js
@@ -12,6 +12,7 @@ import {
FormPlugin,
FormSelectPlugin,
LayoutPlugin,
+ LinkPlugin,
TabsPlugin,
TooltipPlugin
} from 'bootstrap-vue'
@@ -19,14 +20,17 @@ import {
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'
-if (import.meta.env.VUE_APP_GOOGLE_ANALYTICS_ID) {
+import 'maplibre-gl/dist/maplibre-gl.css'
+
+import router from './router'
+
+if (import.meta.env.VITE_GOOGLE_ANALYTICS_ID) {
Vue.use(VueGtag, {
- config: { id: import.meta.env.VUE_APP_GOOGLE_ANALYTICS_ID }
+ config: { id: import.meta.env.VITE_GOOGLE_ANALYTICS_ID }
})
}
Vue.config.productionTip = false
-
Vue.use(AlertPlugin)
Vue.use(ButtonPlugin)
Vue.use(CardPlugin)
@@ -37,7 +41,11 @@ Vue.use(FormInputPlugin)
Vue.use(FormPlugin)
Vue.use(FormSelectPlugin)
Vue.use(LayoutPlugin)
+Vue.use(LinkPlugin)
Vue.use(TabsPlugin)
Vue.use(TooltipPlugin)
-Vue.createApp(App).mount('#app')
+const app = Vue.createApp(App)
+
+app.use(router)
+app.mount('#app')
diff --git a/website/src/pages/Home.vue b/website/src/pages/Home.vue
new file mode 100644
index 0000000..2991c1f
--- /dev/null
+++ b/website/src/pages/Home.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+ Validate me !
+ or
+ visualization
+
+
+
+
diff --git a/website/src/components/Validator.vue b/website/src/pages/Validator.vue
similarity index 99%
rename from website/src/components/Validator.vue
rename to website/src/pages/Validator.vue
index c483489..c271ad6 100644
--- a/website/src/components/Validator.vue
+++ b/website/src/pages/Validator.vue
@@ -1,7 +1,7 @@
+
+
+
+
+
+
+
+
+ Visualize !
+
+
+
+
+ Sorry, this version is not yet implemented or not detectable !
+
+
+
+
+
+
+ {{ stations ? stations.length : '-' }}
+ {{
+ vehiclesInStations
+ }}
+
+ Stations
+
+
+
+
+
+ {{ vehicles ? vehicles.length : '-' }}
+ {{ vehiclesCountByType }}
+
+ Dockless vehicles
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Stations
+
+
+ Dockless
+
+
+ Geofencing
+
+
+
+
+
+
+
+
+
Dockless vehicles
+
+
+
+ {{ vtff }}
+
+
+
+ unknown
+
+
+
+
+
+
Stations
+
+
+ >5 vehicles
+
+
+ >0
+
+
+ No vehicles
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/website/src/router.js b/website/src/router.js
new file mode 100644
index 0000000..a907330
--- /dev/null
+++ b/website/src/router.js
@@ -0,0 +1,17 @@
+import { createRouter, createWebHistory } from 'vue-router'
+import Home from './pages/Home.vue'
+import Validator from './pages/Validator.vue'
+import Visualization from './pages/Visualization.vue'
+
+const routes = [
+ { name: 'home', path: '/', component: Home },
+ { name: 'validator', path: '/validator', component: Validator },
+ { name: 'visualization', path: '/visualization', component: Visualization }
+]
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+})
+
+export default router
diff --git a/yarn.lock b/yarn.lock
index 6ed05f7..6f89187 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -263,6 +263,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.0", "@babel/runtime@^7.3.1":
+ version "7.22.3"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.3.tgz#0a7fce51d43adbf0f7b517a71f4c3aaca92ebcbb"
+ integrity sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==
+ dependencies:
+ regenerator-runtime "^0.13.11"
+
"@babel/template@^7.20.7", "@babel/template@^7.3.3":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8"
@@ -371,6 +378,47 @@
enabled "2.0.x"
kuler "^2.0.0"
+"@deck.gl/core@^8.9.18":
+ version "8.9.18"
+ resolved "https://registry.yarnpkg.com/@deck.gl/core/-/core-8.9.18.tgz#4a09defbc0f226a85c49864e2bbe324e2f9e43d5"
+ integrity sha512-zliaY4ZHebPCfMVEN6lxWuKDN+iNRL3XQwCLRX9N6ZqzzNFUXTLs//Vasdj+x8v4qEAQCJBEngzFPa0BemtvOQ==
+ dependencies:
+ "@loaders.gl/core" "^3.4.2"
+ "@loaders.gl/images" "^3.4.2"
+ "@luma.gl/constants" "^8.5.20"
+ "@luma.gl/core" "^8.5.20"
+ "@luma.gl/webgl" "^8.5.20"
+ "@math.gl/core" "^3.6.2"
+ "@math.gl/sun" "^3.6.2"
+ "@math.gl/web-mercator" "^3.6.2"
+ "@probe.gl/env" "^3.5.0"
+ "@probe.gl/log" "^3.5.0"
+ "@probe.gl/stats" "^3.5.0"
+ gl-matrix "^3.0.0"
+ math.gl "^3.6.2"
+ mjolnir.js "^2.7.0"
+
+"@deck.gl/layers@^8.9.18":
+ version "8.9.18"
+ resolved "https://registry.yarnpkg.com/@deck.gl/layers/-/layers-8.9.18.tgz#1222f2ec3a5e4151c76e5d7655906c2d86258a18"
+ integrity sha512-O6X8ueTBp0r//47UeXCHXvr+TNKJPjdfmwQVzGSogFejOif1IVpU2hycIOJ5pMl/PdYs8uZK8VbZj7qYibsrMQ==
+ dependencies:
+ "@loaders.gl/images" "^3.4.2"
+ "@loaders.gl/schema" "^3.4.2"
+ "@luma.gl/constants" "^8.5.20"
+ "@mapbox/tiny-sdf" "^2.0.5"
+ "@math.gl/core" "^3.6.2"
+ "@math.gl/polygon" "^3.6.2"
+ "@math.gl/web-mercator" "^3.6.2"
+ earcut "^2.2.4"
+
+"@deck.gl/mapbox@^8.9.18":
+ version "8.9.18"
+ resolved "https://registry.yarnpkg.com/@deck.gl/mapbox/-/mapbox-8.9.18.tgz#ba01c2842152d0aa8a149a17db7c1ac2af83d5bb"
+ integrity sha512-zfcZqb7qI3NpHoMNXPQGCSpRFEdB1dQDkas87zSZeedF+U+iViqtjVywCps54T0hQFZMKwdhtbFUdSMELCiGLQ==
+ dependencies:
+ "@types/mapbox-gl" "^2.6.3"
+
"@dependents/detective-less@^3.0.1":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@dependents/detective-less/-/detective-less-3.0.2.tgz#c6e46997010fe03a5dc98351a7e99a46d34f5832"
@@ -802,6 +850,121 @@
"@jridgewell/resolve-uri" "3.1.0"
"@jridgewell/sourcemap-codec" "1.4.14"
+"@loaders.gl/core@^3.4.2":
+ version "3.4.4"
+ resolved "https://registry.yarnpkg.com/@loaders.gl/core/-/core-3.4.4.tgz#65c182fcf9e7e6536ac7d27d87635a8721843a95"
+ integrity sha512-uutqjvf91WJZx7WbSmJy75AHFNCPDnnweFnVmdAEflF6ohc+uAdjltqz6tGD3PxbT8LjNLTOk60kxyC/QwDBqQ==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ "@loaders.gl/loader-utils" "3.4.4"
+ "@loaders.gl/worker-utils" "3.4.4"
+ "@probe.gl/log" "^4.0.1"
+
+"@loaders.gl/images@^3.4.2":
+ version "3.4.4"
+ resolved "https://registry.yarnpkg.com/@loaders.gl/images/-/images-3.4.4.tgz#ce0d56caac49ebf63f76a6234f1df4a7b8c99441"
+ integrity sha512-ViMh58oZ2GLsKCoYBH4nYMvi5fHeVZXiLAABVP+AVU54Jrf+PZYm8y8KaC22zBmGEZ15hGhJF/dNeOpgqZ+V4w==
+ dependencies:
+ "@loaders.gl/loader-utils" "3.4.4"
+
+"@loaders.gl/loader-utils@3.4.4":
+ version "3.4.4"
+ resolved "https://registry.yarnpkg.com/@loaders.gl/loader-utils/-/loader-utils-3.4.4.tgz#06a9185e6b9a6457aaaf4f5526dca25c9021ff25"
+ integrity sha512-EFY/YBniNyfZk0ojnBitl+xRL3Du8tinOwdFnWD0rVIf61+bFifFI0fJys8/tgrlF6sfiKdYbupow8G/a3xF2g==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ "@loaders.gl/worker-utils" "3.4.4"
+ "@probe.gl/stats" "^4.0.1"
+
+"@loaders.gl/schema@^3.4.2":
+ version "3.4.4"
+ resolved "https://registry.yarnpkg.com/@loaders.gl/schema/-/schema-3.4.4.tgz#551c74a03a6d0f82913125bf2aca3254de67e0cb"
+ integrity sha512-+lESS+cUSgXst9kxaW2LTxWMVMrT96cv0TWfsSryA11EVsxr50aSPWC+K0BHe7k60+80pQWEt4iyMRgVHM+6tg==
+ dependencies:
+ "@types/geojson" "^7946.0.7"
+
+"@loaders.gl/worker-utils@3.4.4":
+ version "3.4.4"
+ resolved "https://registry.yarnpkg.com/@loaders.gl/worker-utils/-/worker-utils-3.4.4.tgz#4447814e4746aa206771307429fd1174e720131e"
+ integrity sha512-ltqMd+BsAk3QGPLycZODukL1wNyBEb04X6wpI3rC5NWByzwSippwWTW4g4QnS3Q9zgMFV4jR/YV6CRp/GiVzvQ==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+
+"@luma.gl/constants@8.5.20", "@luma.gl/constants@^8.5.20":
+ version "8.5.20"
+ resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-8.5.20.tgz#91de116f68110fb28a000b59747d34d54bc06ab2"
+ integrity sha512-5yG+ybkUZ4j6kLPWMZjN4Hun2yLB0MyEpNCRKAUN9/yS9UIWA7unyVxjSf2vnE7k/7dywtxlbXegASNFgNVGxw==
+
+"@luma.gl/core@^8.5.20":
+ version "8.5.20"
+ resolved "https://registry.yarnpkg.com/@luma.gl/core/-/core-8.5.20.tgz#8b6cea7b5d7230e8b2848c310fc092af2c652571"
+ integrity sha512-xJr96G6vhYcznYHC84fbeOG3fgNM4lFwj9bd0VPcg/Kfe8otUeN1Hl0AKHCCtNn48PiMSg3LKbaiRfNUMhaffQ==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@luma.gl/constants" "8.5.20"
+ "@luma.gl/engine" "8.5.20"
+ "@luma.gl/gltools" "8.5.20"
+ "@luma.gl/shadertools" "8.5.20"
+ "@luma.gl/webgl" "8.5.20"
+
+"@luma.gl/engine@8.5.20":
+ version "8.5.20"
+ resolved "https://registry.yarnpkg.com/@luma.gl/engine/-/engine-8.5.20.tgz#5ef3fa7b69a3bcfeda5991ed9f1d75445cbfbf13"
+ integrity sha512-+0ryJ/4gL1pWaEgZimY21jUPt1LYiO6Cqte8TNUprCfAHoAStsuzD7jwgEqnM6jJOUEdIxQ3w0z3Dzw/0KIE+w==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@luma.gl/constants" "8.5.20"
+ "@luma.gl/gltools" "8.5.20"
+ "@luma.gl/shadertools" "8.5.20"
+ "@luma.gl/webgl" "8.5.20"
+ "@math.gl/core" "^3.5.0"
+ "@probe.gl/env" "^3.5.0"
+ "@probe.gl/stats" "^3.5.0"
+ "@types/offscreencanvas" "^2019.7.0"
+
+"@luma.gl/gltools@8.5.20":
+ version "8.5.20"
+ resolved "https://registry.yarnpkg.com/@luma.gl/gltools/-/gltools-8.5.20.tgz#eb35b44b185a83e2e46f1a4f61b51661b95aaf32"
+ integrity sha512-5pP6ph9FSX5gHiVWQM1DmYRUnriklzKUG9yaqlQsKEqCFsOcKB0EfK3MfBVXIfsOdP/1bJZ9Dlz/zV19soWVhg==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@luma.gl/constants" "8.5.20"
+ "@probe.gl/env" "^3.5.0"
+ "@probe.gl/log" "^3.5.0"
+ "@types/offscreencanvas" "^2019.7.0"
+
+"@luma.gl/shadertools@8.5.20":
+ version "8.5.20"
+ resolved "https://registry.yarnpkg.com/@luma.gl/shadertools/-/shadertools-8.5.20.tgz#ee09f3880acdd1599619dead3ca5fbe4116bb8b6"
+ integrity sha512-q1lrCZy1ncIFb4mMjsYgISLzNP6eMnhLUY+Oltj/qjAMcPEssCeHN2+XGfP/CVtU+O7sC+5JY2bQGaTs6HQ/Qw==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@math.gl/core" "^3.5.0"
+
+"@luma.gl/webgl@8.5.20", "@luma.gl/webgl@^8.5.20":
+ version "8.5.20"
+ resolved "https://registry.yarnpkg.com/@luma.gl/webgl/-/webgl-8.5.20.tgz#7eef0d695a2a62d0bbe57227c239930a4acf179f"
+ integrity sha512-p/kt9KztywH4l+09XHoZ4cPFOoE7xlZXIBMT8rxRVgfe1w0lvi7QYh4tOG7gk+iixQ34EyDQacoHCsabdpmqQg==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@luma.gl/constants" "8.5.20"
+ "@luma.gl/gltools" "8.5.20"
+ "@probe.gl/env" "^3.5.0"
+ "@probe.gl/stats" "^3.5.0"
+
+"@mapbox/geojson-rewind@^0.5.2":
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz#591a5d71a9cd1da1a0bf3420b3bea31b0fc7946a"
+ integrity sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==
+ dependencies:
+ get-stream "^6.0.1"
+ minimist "^1.2.6"
+
+"@mapbox/jsonlint-lines-primitives@^2.0.2", "@mapbox/jsonlint-lines-primitives@~2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234"
+ integrity sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==
+
"@mapbox/node-pre-gyp@^1.0.5":
version "1.0.10"
resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz#8e6735ccebbb1581e5a7e652244cadc8a844d03c"
@@ -817,6 +980,83 @@
semver "^7.3.5"
tar "^6.1.11"
+"@mapbox/point-geometry@0.1.0", "@mapbox/point-geometry@^0.1.0", "@mapbox/point-geometry@~0.1.0":
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2"
+ integrity sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==
+
+"@mapbox/tiny-sdf@^2.0.5", "@mapbox/tiny-sdf@^2.0.6":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz#9a1d33e5018093e88f6a4df2343e886056287282"
+ integrity sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==
+
+"@mapbox/unitbezier@^0.0.1":
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz#d32deb66c7177e9e9dfc3bbd697083e2e657ff01"
+ integrity sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==
+
+"@mapbox/vector-tile@^1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz#d3a74c90402d06e89ec66de49ec817ff53409666"
+ integrity sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==
+ dependencies:
+ "@mapbox/point-geometry" "~0.1.0"
+
+"@mapbox/whoots-js@^3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe"
+ integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==
+
+"@maplibre/maplibre-gl-style-spec@^19.2.1":
+ version "19.2.1"
+ resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-19.2.1.tgz#eb78211151b93f4f9c0cf6cb908133dab7a438dd"
+ integrity sha512-ZVT5QlkVhlxlPav+ca0NO3Moc7EzbHDO2FXW4ic3Q0Vm+TDUw9I8A2EBws7xUUQZf7HQB3kQ+3Jsh5mFLRD4GQ==
+ dependencies:
+ "@mapbox/jsonlint-lines-primitives" "~2.0.2"
+ "@mapbox/point-geometry" "^0.1.0"
+ "@mapbox/unitbezier" "^0.0.1"
+ "@types/mapbox__point-geometry" "^0.1.2"
+ json-stringify-pretty-compact "^3.0.0"
+ minimist "^1.2.8"
+ rw "^1.3.3"
+ sort-object "^3.0.3"
+
+"@math.gl/core@3.6.3", "@math.gl/core@^3.5.0", "@math.gl/core@^3.6.2":
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/@math.gl/core/-/core-3.6.3.tgz#a6bf796ed421093099749d609de8d99a3ac20a53"
+ integrity sha512-jBABmDkj5uuuE0dTDmwwss7Cup5ZwQ6Qb7h1pgvtkEutTrhkcv8SuItQNXmF45494yIHeoGue08NlyeY6wxq2A==
+ dependencies:
+ "@babel/runtime" "^7.12.0"
+ "@math.gl/types" "3.6.3"
+ gl-matrix "^3.4.0"
+
+"@math.gl/polygon@^3.6.2":
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/@math.gl/polygon/-/polygon-3.6.3.tgz#0c19c0b059cedde1cd760cc3796e9180f75bcbde"
+ integrity sha512-FivQ1ZnYcAss1wVifOkHP/ZnlfQy1IL/769uzNtiHxwUbW0kZG3yyOZ9I7fwyzR5Hvqt3ErJKHjSYZr0uVlz5g==
+ dependencies:
+ "@math.gl/core" "3.6.3"
+
+"@math.gl/sun@^3.6.2":
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/@math.gl/sun/-/sun-3.6.3.tgz#30c15612313b56349c568f21f39c0e0f0e77b2df"
+ integrity sha512-mrx6CGYYeTNSQttvcw0KVUy+35YDmnjMqpO/o0t06Vcghrt0HNruB/ScRgUSbJrgkbOg1Vcqm23HBd++clzQzw==
+ dependencies:
+ "@babel/runtime" "^7.12.0"
+
+"@math.gl/types@3.6.3":
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/@math.gl/types/-/types-3.6.3.tgz#9fa9866feabcbb76de107d78ff3a89c0243ac374"
+ integrity sha512-3uWLVXHY3jQxsXCr/UCNPSc2BG0hNUljhmOBt9l+lNFDp7zHgm0cK2Tw4kj2XfkJy4TgwZTBGwRDQgWEbLbdTA==
+
+"@math.gl/web-mercator@^3.6.2":
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/@math.gl/web-mercator/-/web-mercator-3.6.3.tgz#ef91168e030eecffc788618d686e8a6c1d7a0bf8"
+ integrity sha512-UVrkSOs02YLehKaehrxhAejYMurehIHPfFQvPFZmdJHglHOU4V2cCUApTVEwOksvCp161ypEqVp+9H6mGhTTcw==
+ dependencies:
+ "@babel/runtime" "^7.12.0"
+ gl-matrix "^3.4.0"
+
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@@ -1572,6 +1812,50 @@
dependencies:
"@octokit/openapi-types" "^12.11.0"
+"@probe.gl/env@3.6.0", "@probe.gl/env@^3.5.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@probe.gl/env/-/env-3.6.0.tgz#33343fd9041a14d21374c1911826d4a2f9d9a35d"
+ integrity sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+
+"@probe.gl/env@4.0.4":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@probe.gl/env/-/env-4.0.4.tgz#ea4e7d16f143faaf1e863316c6ccfe68db8b66a4"
+ integrity sha512-sYNGqesDfWD6dFP5oNZtTeFA4Z6ak5T4a8BNPdNhoqy7PK9w70JHrb6mv+RKWqKXq33KiwCDWL7fYxx2HuEH2w==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+
+"@probe.gl/log@^3.5.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@probe.gl/log/-/log-3.6.0.tgz#c645bfd22b4769dc65161caa17f13bd2b231e413"
+ integrity sha512-hjpyenpEvOdowgZ1qMeCJxfRD4JkKdlXz0RC14m42Un62NtOT+GpWyKA4LssT0+xyLULCByRAtG2fzZorpIAcA==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@probe.gl/env" "3.6.0"
+
+"@probe.gl/log@^4.0.1":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@probe.gl/log/-/log-4.0.4.tgz#e42d1d0e22981c4010521c350cad2305bce02976"
+ integrity sha512-WpmXl6njlBMwrm8HBh/b4kSp/xnY1VVmeT4PWUKF+RkVbFuKQbsU11dA1IxoMd7gSY+5DGIwxGfAv1H5OMzA4A==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@probe.gl/env" "4.0.4"
+
+"@probe.gl/stats@^3.5.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@probe.gl/stats/-/stats-3.6.0.tgz#a1bb12860fa6f40b9c028f9eb575d7ada0b4dbdd"
+ integrity sha512-JdALQXB44OP4kUBN/UrQgzbJe4qokbVF4Y8lkIA8iVCFnjVowWIgkD/z/0QO65yELT54tTrtepw1jScjKB+rhQ==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+
+"@probe.gl/stats@^4.0.1":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@probe.gl/stats/-/stats-4.0.4.tgz#b33a47bf192951d0789dfd2044b295c3709386bd"
+ integrity sha512-SDuSY/D4yDL6LQDa69l/GCcnZLRiGYdyvYkxWb0CgnzTPdPrcdrzGkzkvpC3zsA4fEFw2smlDje370QGHwlisg==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+
"@rollup/pluginutils@^4.0.0":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d"
@@ -1696,6 +1980,26 @@
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e"
integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==
+"@turf/bbox@^6.5.0":
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/@turf/bbox/-/bbox-6.5.0.tgz#bec30a744019eae420dac9ea46fb75caa44d8dc5"
+ integrity sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==
+ dependencies:
+ "@turf/helpers" "^6.5.0"
+ "@turf/meta" "^6.5.0"
+
+"@turf/helpers@^6.5.0":
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-6.5.0.tgz#f79af094bd6b8ce7ed2bd3e089a8493ee6cae82e"
+ integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==
+
+"@turf/meta@^6.5.0":
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-6.5.0.tgz#b725c3653c9f432133eaa04d3421f7e51e0418ca"
+ integrity sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==
+ dependencies:
+ "@turf/helpers" "^6.5.0"
+
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14":
version "7.20.0"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891"
@@ -1755,6 +2059,11 @@
"@types/got" "^9"
"@types/node" "*"
+"@types/geojson@*", "@types/geojson@^7946.0.10", "@types/geojson@^7946.0.7":
+ version "7946.0.10"
+ resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249"
+ integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==
+
"@types/glob@^7.1.1":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
@@ -1779,6 +2088,11 @@
dependencies:
"@types/node" "*"
+"@types/hammerjs@^2.0.41":
+ version "2.0.41"
+ resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.41.tgz#f6ecf57d1b12d2befcce00e928a6a097c22980aa"
+ integrity sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==
+
"@types/http-cache-semantics@*":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812"
@@ -1835,6 +2149,27 @@
dependencies:
"@types/node" "*"
+"@types/mapbox-gl@^2.6.3":
+ version "2.7.11"
+ resolved "https://registry.yarnpkg.com/@types/mapbox-gl/-/mapbox-gl-2.7.11.tgz#c9b9ed2ed24970aeef947609fdfcfcf826a3aa49"
+ integrity sha512-4vSwPSTQIawZTFRiTY2R74aZwAiM9gE6KGj871xdyAPpa+DmEObXxQQXqL2PsMH31/rP9nxJ2Kv0boeTVJMXVw==
+ dependencies:
+ "@types/geojson" "*"
+
+"@types/mapbox__point-geometry@*", "@types/mapbox__point-geometry@^0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.2.tgz#488a9b76e8457d6792ea2504cdd4ecdd9860a27e"
+ integrity sha512-D0lgCq+3VWV85ey1MZVkE8ZveyuvW5VAfuahVTQRpXFQTxw03SuIf1/K4UQ87MMIXVKzpFjXFiFMZzLj2kU+iA==
+
+"@types/mapbox__vector-tile@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.0.tgz#8fa1379dbaead1e1b639b8d96cfd174404c379d6"
+ integrity sha512-kDwVreQO5V4c8yAxzZVQLE5tyWF+IPToAanloQaSnwfXmIcJ7cyOrv8z4Ft4y7PsLYmhWXmON8MBV8RX0Rgr8g==
+ dependencies:
+ "@types/geojson" "*"
+ "@types/mapbox__point-geometry" "*"
+ "@types/pbf" "*"
+
"@types/minimatch@*":
version "5.1.2"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca"
@@ -1863,6 +2198,16 @@
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
+"@types/offscreencanvas@^2019.7.0":
+ version "2019.7.0"
+ resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz#e4a932069db47bb3eabeb0b305502d01586fa90d"
+ integrity sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==
+
+"@types/pbf@*", "@types/pbf@^3.0.2":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.2.tgz#8d291ad68b4b8c533e96c174a2e3e6399a59ed61"
+ integrity sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ==
+
"@types/prettier@^2.1.5":
version "2.7.2"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0"
@@ -1900,6 +2245,11 @@
resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.2.tgz#38ecb64f01aa0d02b7c8f4222d7c38af6316fef8"
integrity sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==
+"@types/web-bluetooth@^0.0.17":
+ version "0.0.17"
+ resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz#5c9f3c617f64a9735d7b72a7cc671e166d900c40"
+ integrity sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==
+
"@types/yargs-parser@*":
version "21.0.0"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
@@ -2035,6 +2385,11 @@
"@vue/compiler-dom" "3.3.4"
"@vue/shared" "3.3.4"
+"@vue/devtools-api@^6.5.0":
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07"
+ integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
+
"@vue/eslint-config-prettier@^7.1.0":
version "7.1.0"
resolved "https://registry.yarnpkg.com/@vue/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz#97936379c7fb1d982b9d2c6b122306e3c2e464c8"
@@ -2091,6 +2446,28 @@
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780"
integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==
+"@vueuse/core@^10.1.2":
+ version "10.1.2"
+ resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.1.2.tgz#2499eadec36c5d7109338e3a2b73725040ae8011"
+ integrity sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA==
+ dependencies:
+ "@types/web-bluetooth" "^0.0.17"
+ "@vueuse/metadata" "10.1.2"
+ "@vueuse/shared" "10.1.2"
+ vue-demi ">=0.14.0"
+
+"@vueuse/metadata@10.1.2":
+ version "10.1.2"
+ resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.1.2.tgz#d8ffe557b1042efd03a0aa88540a00c25d193ee3"
+ integrity sha512-3mc5BqN9aU2SqBeBuWE7ne4OtXHoHKggNgxZR2K+zIW4YLsy6xoZ4/9vErQs6tvoKDX6QAqm3lvsrv0mczAwIQ==
+
+"@vueuse/shared@10.1.2":
+ version "10.1.2"
+ resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.1.2.tgz#31d8733a217a6396eb67706319133bf62cdd8baa"
+ integrity sha512-1uoUTPBlgyscK9v6ScGeVYDDzlPSFXBlxuK7SfrDGyUTBiznb3mNceqhwvZHjtDRELZEN79V5uWPTF1VDV8svA==
+ dependencies:
+ vue-demi ">=0.14.0"
+
abab@^2.0.3, abab@^2.0.5:
version "2.0.6"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
@@ -2871,6 +3248,21 @@ bytes@3.1.2:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+bytewise-core@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42"
+ integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==
+ dependencies:
+ typewise-core "^1.2"
+
+bytewise@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e"
+ integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==
+ dependencies:
+ bytewise-core "^1.2.2"
+ typewise "^1.0.3"
+
cache-base@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@@ -3961,6 +4353,11 @@ duplexer3@^0.1.4:
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e"
integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==
+earcut@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a"
+ integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==
+
eastasianwidth@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
@@ -5125,6 +5522,11 @@ gensync@^1.0.0-beta.2:
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+geojson-vt@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7"
+ integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==
+
get-amd-module-type@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-amd-module-type/-/get-amd-module-type-4.1.0.tgz#af1396d02cd935cb6fafdc4a5282395db3422db6"
@@ -5202,7 +5604,7 @@ get-symbol-description@^1.0.0:
call-bind "^1.0.2"
get-intrinsic "^1.1.1"
-get-value@^2.0.3, get-value@^2.0.6:
+get-value@^2.0.2, get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
@@ -5231,6 +5633,11 @@ gitconfiglocal@^2.1.0:
dependencies:
ini "^1.3.2"
+gl-matrix@^3.0.0, gl-matrix@^3.4.0, gl-matrix@^3.4.3:
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9"
+ integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==
+
glob-parent@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
@@ -5301,6 +5708,15 @@ global-dirs@^3.0.0:
dependencies:
ini "2.0.0"
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@@ -5464,6 +5880,11 @@ graphql@16.5.0:
resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.5.0.tgz#41b5c1182eaac7f3d47164fb247f61e4dfb69c85"
integrity sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==
+hammerjs@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1"
+ integrity sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==
+
has-ansi@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e"
@@ -5717,7 +6138,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24:
dependencies:
safer-buffer ">= 2.1.2 < 3"
-ieee754@^1.1.13:
+ieee754@^1.1.12, ieee754@^1.1.13:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -5796,7 +6217,7 @@ ini@2.0.0:
resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
-ini@^1.3.2, ini@~1.3.0:
+ini@^1.3.2, ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
@@ -6870,6 +7291,11 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+json-stringify-pretty-compact@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz#f71ef9d82ef16483a407869556588e91b681d9ab"
+ integrity sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==
+
json5@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
@@ -6937,6 +7363,11 @@ jwt-decode@^3.0.0:
resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59"
integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==
+kdbush@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-4.0.2.tgz#2f7b7246328b4657dd122b6c7f025fbc2c868e39"
+ integrity sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==
+
keep-func-props@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/keep-func-props/-/keep-func-props-4.0.1.tgz#3a9ab077a1bcc7f98771fd534940826d44cd5df1"
@@ -7379,6 +7810,48 @@ map-visit@^1.0.0:
dependencies:
object-visit "^1.0.0"
+maplibre-gl@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-3.0.1.tgz#7af75d2c77ab5325ee1c81bd1638c9b4ee920651"
+ integrity sha512-OdFpejEkvaDwwVT9qAn6oA2h7093VlemaenF2/ssfD3TadNPz5oIVPzywn3cgso5i1D7IMKvEpba0A8A5qvXow==
+ dependencies:
+ "@mapbox/geojson-rewind" "^0.5.2"
+ "@mapbox/jsonlint-lines-primitives" "^2.0.2"
+ "@mapbox/point-geometry" "^0.1.0"
+ "@mapbox/tiny-sdf" "^2.0.6"
+ "@mapbox/unitbezier" "^0.0.1"
+ "@mapbox/vector-tile" "^1.3.1"
+ "@mapbox/whoots-js" "^3.1.0"
+ "@maplibre/maplibre-gl-style-spec" "^19.2.1"
+ "@types/geojson" "^7946.0.10"
+ "@types/mapbox__point-geometry" "^0.1.2"
+ "@types/mapbox__vector-tile" "^1.3.0"
+ "@types/pbf" "^3.0.2"
+ earcut "^2.2.4"
+ geojson-vt "^3.2.1"
+ gl-matrix "^3.4.3"
+ global-prefix "^3.0.0"
+ kdbush "^4.0.2"
+ murmurhash-js "^1.0.0"
+ pbf "^3.2.1"
+ potpack "^2.0.0"
+ quickselect "^2.0.0"
+ supercluster "^8.0.1"
+ tinyqueue "^2.0.3"
+ vt-pbf "^3.1.3"
+
+maplibregl-mapbox-request-transformer@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/maplibregl-mapbox-request-transformer/-/maplibregl-mapbox-request-transformer-0.0.2.tgz#5488714e184c58e2dd36f88934dbb463cb64a379"
+ integrity sha512-P4QLyebbrtfAxwYX5ThKRDn2FT77CFxjQ9a5HtmP9l4s3ddwyjD6cpNjwYf2Hl9OApnD7yP3IpdrCCn0S9fI0g==
+
+math.gl@^3.6.2:
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/math.gl/-/math.gl-3.6.3.tgz#f87e0d24cb33c1a215185ae3a4e16839f1ce6db2"
+ integrity sha512-Yq9CyECvSDox9+5ETi2+x1bGTY5WvGUGL3rJfC4KPoCZAM51MGfrCm6rIn4yOJUVfMPs2a5RwMD+yGS/n1g3gg==
+ dependencies:
+ "@math.gl/core" "3.6.3"
+
maxstache-stream@^1.0.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/maxstache-stream/-/maxstache-stream-1.0.4.tgz#9c7f5cab7e5fdd2d90da86143b4e9631ea328040"
@@ -7536,7 +8009,7 @@ minimatch@^5.0.0, minimatch@^5.0.1, minimatch@^5.1.0:
dependencies:
brace-expansion "^2.0.1"
-minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
+minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
@@ -7561,6 +8034,11 @@ minizlib@^2.1.1:
minipass "^3.0.0"
yallist "^4.0.0"
+mitt@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.0.tgz#69ef9bd5c80ff6f57473e8d89326d01c414be0bd"
+ integrity sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==
+
mixin-deep@^1.2.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
@@ -7569,6 +8047,14 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
+mjolnir.js@^2.7.0:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/mjolnir.js/-/mjolnir.js-2.7.1.tgz#4e12590fe168b377c9c669b9c31aa5a62f8b8460"
+ integrity sha512-72BeUWgTv2cj5aZQKpwL8caNUFhXZ9bDm1hxpNj70XJQ62IBnTZmtv/WPxJvtaVNhzNo+D2U8O6ryNI0zImYcw==
+ dependencies:
+ "@types/hammerjs" "^2.0.41"
+ hammerjs "^2.0.8"
+
mkdirp@^0.5.1:
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
@@ -7628,6 +8114,11 @@ multiparty@^4.2.1:
safe-buffer "5.2.1"
uid-safe "2.1.5"
+murmurhash-js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51"
+ integrity sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==
+
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
@@ -8515,6 +9006,14 @@ path-type@^5.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8"
integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==
+pbf@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a"
+ integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==
+ dependencies:
+ ieee754 "^1.1.12"
+ resolve-protobuf-schema "^2.1.0"
+
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
@@ -8644,6 +9143,11 @@ postcss@^8.4.23:
picocolors "^1.0.0"
source-map-js "^1.0.2"
+potpack@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/potpack/-/potpack-2.0.0.tgz#61f4dd2dc4b3d5e996e3698c0ec9426d0e169104"
+ integrity sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==
+
precinct@^9.0.1:
version "9.2.1"
resolved "https://registry.yarnpkg.com/precinct/-/precinct-9.2.1.tgz#db0a67abff7b0a9a3b2b1ac33d170e8a5fcac7b2"
@@ -8751,6 +9255,11 @@ prompts@^2.0.1:
kleur "^3.0.3"
sisteransi "^1.0.5"
+protocol-buffers-schema@^3.3.1:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03"
+ integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==
+
proxy-addr@^2.0.7, proxy-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
@@ -8850,6 +9359,11 @@ quick-lru@^5.1.1:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+quickselect@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
+ integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==
+
quote-unquote@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/quote-unquote/-/quote-unquote-1.0.0.tgz#67a9a77148effeaf81a4d428404a710baaac8a0b"
@@ -8996,6 +9510,11 @@ readdirp@^3.4.0, readdirp@~3.6.0:
dependencies:
picomatch "^2.2.1"
+regenerator-runtime@^0.13.11:
+ version "0.13.11"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
regex-not@^1.0.0, regex-not@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
@@ -9089,6 +9608,13 @@ resolve-from@^5.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+resolve-protobuf-schema@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758"
+ integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==
+ dependencies:
+ protocol-buffers-schema "^3.3.1"
+
resolve-url@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
@@ -9218,6 +9744,11 @@ rusha@^0.8.14:
resolved "https://registry.yarnpkg.com/rusha/-/rusha-0.8.14.tgz#a977d0de9428406138b7bb90d3de5dcd024e2f68"
integrity sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==
+rw@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
+ integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==
+
rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.6.2:
version "6.6.7"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
@@ -9512,6 +10043,16 @@ sonic-boom@^1.0.2:
atomic-sleep "^1.0.0"
flatstr "^1.0.12"
+sort-asc@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/sort-asc/-/sort-asc-0.2.0.tgz#00a49e947bc25d510bfde2cbb8dffda9f50eb2fc"
+ integrity sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==
+
+sort-desc@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/sort-desc/-/sort-desc-0.2.0.tgz#280c1bdafc6577887cedbad1ed2e41c037976646"
+ integrity sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==
+
sort-keys-length@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188"
@@ -9533,6 +10074,18 @@ sort-keys@^2.0.0:
dependencies:
is-plain-obj "^1.0.0"
+sort-object@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/sort-object/-/sort-object-3.0.3.tgz#945727165f244af9dc596ad4c7605a8dee80c269"
+ integrity sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==
+ dependencies:
+ bytewise "^1.1.0"
+ get-value "^2.0.2"
+ is-extendable "^0.1.1"
+ sort-asc "^0.2.0"
+ sort-desc "^0.2.0"
+ union-value "^1.0.1"
+
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
@@ -9865,6 +10418,13 @@ strip-outer@^1.0.0:
dependencies:
escape-string-regexp "^1.0.2"
+supercluster@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-8.0.1.tgz#9946ba123538e9e9ab15de472531f604e7372df5"
+ integrity sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==
+ dependencies:
+ kdbush "^4.0.2"
+
supports-color@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
@@ -10064,6 +10624,11 @@ tiny-lru@^8.0.1:
resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-8.0.2.tgz#812fccbe6e622ded552e3ff8a4c3b5ff34a85e4c"
integrity sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==
+tinyqueue@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08"
+ integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==
+
tmp-promise@^3.0.2, tmp-promise@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7"
@@ -10320,6 +10885,18 @@ typescript@^4.5.4, typescript@^4.9.5:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+typewise-core@^1.2, typewise-core@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195"
+ integrity sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==
+
+typewise@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651"
+ integrity sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==
+ dependencies:
+ typewise-core "^1.2.0"
+
uid-safe@2.1.5:
version "2.1.5"
resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a"
@@ -10345,7 +10922,7 @@ unbzip2-stream@^1.0.9:
buffer "^5.2.1"
through "^2.3.8"
-union-value@^1.0.0:
+union-value@^1.0.0, union-value@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
@@ -10540,6 +11117,20 @@ vite@^4.3.5:
optionalDependencies:
fsevents "~2.3.2"
+vt-pbf@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/vt-pbf/-/vt-pbf-3.1.3.tgz#68fd150756465e2edae1cc5c048e063916dcfaac"
+ integrity sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==
+ dependencies:
+ "@mapbox/point-geometry" "0.1.0"
+ "@mapbox/vector-tile" "^1.3.1"
+ pbf "^3.2.1"
+
+vue-demi@>=0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.5.tgz#676d0463d1a1266d5ab5cba932e043d8f5f2fbd9"
+ integrity sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==
+
vue-eslint-parser@^9.3.0:
version "9.3.0"
resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.0.tgz#775a974a0603c9a73d85fed8958ed9e814a4a816"
@@ -10563,6 +11154,13 @@ vue-gtag@1.16.1:
resolved "https://registry.yarnpkg.com/vue-gtag/-/vue-gtag-1.16.1.tgz#edb2f20ab4f6c4d4d372dfecf8c1fcc8ab890181"
integrity sha512-5vs0pSGxdqrfXqN1Qwt0ZFXG0iTYjRMu/saddc7QIC5yp+DKgjWQRpGYVa7Pq+KbThxwzzMfo0sGi7ISa6NowA==
+vue-router@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.2.tgz#b0097b66d89ca81c0986be03da244c7b32a4fd81"
+ integrity sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==
+ dependencies:
+ "@vue/devtools-api" "^6.5.0"
+
vue@^3.3.2:
version "3.3.4"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6"
@@ -10688,6 +11286,13 @@ which-typed-array@^1.1.9:
has-tostringtag "^1.0.0"
is-typed-array "^1.1.10"
+which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
which@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"