diff --git a/messages/en.json b/messages/en.json
index a7da286ee..3d5f2a592 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -147,6 +147,12 @@
"Screens.Settings.AppSettings.languageDesc": {
"message": "Display language for app"
},
+ "Screens.Settings.AppSettings.mapManagement": {
+ "message": "Map Management"
+ },
+ "Screens.Settings.AppSettings.mapManagementDesc": {
+ "message": "Backgrounds, Map Data"
+ },
"Screens.Settings.AppSettings.title": {
"message": "App Settings"
},
@@ -1264,6 +1270,75 @@
"screens.Settings.CreateOrJoinProject.whatIsAProject": {
"message": "What is a Project"
},
+ "screens.Settings.MapManagement.BackgroundMaps.ChooseMapFile.acceptedFileTypes": {
+ "message": "Accepted file types are .smp"
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.ChooseMapFile.chooseFile": {
+ "message": "Choose File"
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.about": {
+ "message": "About Custom Map"
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.cannotBeUndone": {
+ "message": "This cannot be undone."
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.close": {
+ "message": "Close"
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.customMapAddedDescription": {
+ "message": "You will see this map when you are offline, but you will not see a map outside the area defined in your custom map."
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.customMapAddedTitle": {
+ "message": "Custom Map Added"
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.customMapInfoLoadError": {
+ "message": "Could not get custom map information from file. Please remove it or choose a different file."
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.deleteCustomMapDescription": {
+ "message": "This will delete the map and its offline areas. No collected observation data will be deleted."
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.deleteCustomMapTitle": {
+ "message": "Delete Custom Map?"
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.deleteMapButtonText": {
+ "message": "Delete Map"
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.description1": {
+ "message": "Adding a custom map will enable you to see a map when you are offline."
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.description2": {
+ "message": "Your custom map is not shared with other devices in your project."
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.importErrorDescription": {
+ "message": "Unable to import the file. Please go back and try again."
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.importErrorTitle": {
+ "message": "Import Error"
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.removeMapFile": {
+ "message": "Remove Map File"
+ },
+ "screens.Settings.MapManagement.BackgroundMaps.screenTitle": {
+ "message": "Background Maps"
+ },
+ "screens.Settings.MapManagement.MapsList.CustomMapDetails.dateAdded": {
+ "message": "Date Added"
+ },
+ "screens.Settings.MapManagement.MapsList.CustomMapDetails.mapNameColumn": {
+ "message": "Map Name"
+ },
+ "screens.Settings.MapManagement.MapsList.CustomMapDetails.removeMap": {
+ "message": "Remove Map"
+ },
+ "screens.Settings.MapManagement.MapsList.CustomMapDetails.sizeInMegabytes": {
+ "message": "{value} MB"
+ },
+ "screens.Settings.MapManagement.backgroundMaps": {
+ "message": "Background Maps"
+ },
+ "screens.Settings.MapManagement.screenTitle": {
+ "message": "Map Management"
+ },
"screens.Settings.YourTeam.InviteDeclined": {
"message": "Invitation Declined"
},
diff --git a/package-lock.json b/package-lock.json
index 86e8f96f1..f87320b00 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"hasInstallScript": true,
"dependencies": {
"@bam.tech/react-native-image-resizer": "^3.0.7",
- "@comapeo/ipc": "2.0.0",
+ "@comapeo/ipc": "2.0.2",
"@dev-plugins/react-navigation": "^0.0.6",
"@formatjs/intl-getcanonicallocales": "^2.3.0",
"@formatjs/intl-locale": "^3.3.2",
@@ -90,6 +90,7 @@
"tiny-typed-emitter": "^2.1.0",
"uint8array-extras": "^0.5.0",
"utm": "^1.1.1",
+ "valibot": "^0.42.1",
"validate-color": "^2.2.4",
"zustand": "^4.4.6"
},
@@ -97,7 +98,7 @@
"@babel/core": "^7.20.0",
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.20.0",
- "@comapeo/core": "2.0.0",
+ "@comapeo/core": "2.0.1",
"@comapeo/schema": "1.0.0",
"@formatjs/cli": "^6.2.0",
"@react-native-community/cli": "^12.3.6",
@@ -2410,9 +2411,9 @@
"license": "MIT"
},
"node_modules/@comapeo/core": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-2.0.0.tgz",
- "integrity": "sha512-tM2NEYW+sMj5Gpp1tr4SAJarsw3+g5iluTS77/cP6G4WHsTwPvEZyyezMeSZ3UzyWae75Nn+hJYnY2ZcJaXmpg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-2.0.1.tgz",
+ "integrity": "sha512-6ZUb5umzitYKZx28bYFMxQfpE2B6pdC2ukCd9rcM1l+EgNUAcL+1NWeo/YRlXPnbzhltZ7kr0LvmZtXoMb/ing==",
"license": "MIT",
"dependencies": {
"@comapeo/fallback-smp": "^1.0.0",
@@ -2454,7 +2455,7 @@
"sodium-universal": "^4.0.0",
"start-stop-state-machine": "^1.2.0",
"streamx": "^2.19.0",
- "styled-map-package": "^1.1.0",
+ "styled-map-package": "^2.0.0",
"sub-encoder": "^2.1.1",
"throttle-debounce": "^5.0.0",
"tiny-typed-emitter": "^2.1.0",
@@ -2536,9 +2537,9 @@
"license": "MIT"
},
"node_modules/@comapeo/ipc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-2.0.0.tgz",
- "integrity": "sha512-pKLsmiFFUe+6wUgokeoO3ko1ltqZbEZKUrzvnTBNCp+IHaSMLhYXJtEmqNwLafmmB64As++jLqdi51aEm27Dew==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-2.0.2.tgz",
+ "integrity": "sha512-nOm2MzUjnN9GNYW8cAXzfAyW3URJz+lWm9nyKm8vmTTxiwBt6ZMEd2DCU28dl1KNfasqw79501jWY+fELFt/wg==",
"license": "MIT",
"dependencies": {
"eventemitter3": "^5.0.1",
@@ -2549,7 +2550,7 @@
"node": ">=18.17.1"
},
"peerDependencies": {
- "@comapeo/core": "2.0.0"
+ "@comapeo/core": "^2.0.0"
}
},
"node_modules/@comapeo/schema": {
@@ -2628,6 +2629,37 @@
"node": ">=0.8.0"
}
},
+ "node_modules/@emnapi/core": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.3.1.tgz",
+ "integrity": "sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.0.1",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
+ "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz",
+ "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -4379,24 +4411,26 @@
}
},
"node_modules/@fastify/ajv-compiler": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz",
- "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.1.tgz",
+ "integrity": "sha512-DxrBdgsjNLP0YM6W5Hd6/Fmj43S8zMKiFJYgi+Ri3htTGAowPVG/tG1wpnWLMjufEnehRivUCKZ1pLDIoZdTuw==",
"license": "MIT",
"dependencies": {
- "ajv": "^8.11.0",
- "ajv-formats": "^2.1.1",
- "fast-uri": "^2.0.0"
+ "ajv": "^8.12.0",
+ "ajv-formats": "^3.0.1",
+ "fast-uri": "^3.0.0"
}
},
"node_modules/@fastify/ajv-compiler/node_modules/ajv": {
- "version": "8.12.0",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"license": "MIT",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "require-from-string": "^2.0.2"
},
"funding": {
"type": "github",
@@ -4409,10 +4443,6 @@
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"license": "MIT"
},
- "node_modules/@fastify/deepmerge": {
- "version": "1.3.0",
- "license": "MIT"
- },
"node_modules/@fastify/error": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz",
@@ -4420,12 +4450,21 @@
"license": "MIT"
},
"node_modules/@fastify/fast-json-stringify-compiler": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz",
- "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.1.tgz",
+ "integrity": "sha512-f2d3JExJgFE3UbdFcpPwqNUEoHWmt8pAKf8f+9YuLESdefA0WgqxeT6DrGL4Yrf/9ihXNSKOqpjEmurV405meA==",
"license": "MIT",
"dependencies": {
- "fast-json-stringify": "^5.7.0"
+ "fast-json-stringify": "^6.0.0"
+ }
+ },
+ "node_modules/@fastify/merge-json-schemas": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz",
+ "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
}
},
"node_modules/@fastify/send": {
@@ -5716,9 +5755,9 @@
}
},
"node_modules/@maplibre/maplibre-gl-style-spec": {
- "version": "20.3.1",
- "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.3.1.tgz",
- "integrity": "sha512-5ueL4UDitzVtceQ8J4kY+Px3WK+eZTsmGwha3MBKHKqiHvKrjWWwBCIl1K8BuJSc5OFh83uI8IFNoFvQxX2uUw==",
+ "version": "20.4.0",
+ "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz",
+ "integrity": "sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==",
"license": "ISC",
"dependencies": {
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
@@ -5727,7 +5766,6 @@
"minimist": "^1.2.8",
"quickselect": "^2.0.0",
"rw": "^1.3.3",
- "sort-object": "^3.0.3",
"tinyqueue": "^3.0.0"
},
"bin": {
@@ -5745,6 +5783,18 @@
"node": ">= 10"
}
},
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.5.tgz",
+ "integrity": "sha512-kwUxR7J9WLutBbulqg1dfOrMTwhMdXLdcGUhcbCcGwnPLt3gz19uHVdwH1syKVDbE022ZS2vZxOWflFLS0YTjw==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.1.0",
+ "@emnapi/runtime": "^1.1.0",
+ "@tybys/wasm-util": "^0.9.0"
+ }
+ },
"node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
"version": "5.1.1-v1",
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -5756,7 +5806,9 @@
}
},
"node_modules/@node-rs/crc32": {
- "version": "1.10.0",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.4.tgz",
+ "integrity": "sha512-R1kX9t4Bz1gkNZUcI967bp91+HIoCJa7p11xvBAU9INUvTC1XsOs5mnGq+LE+UOHKUKmE3pOLHLVuoRo4pM3Fg==",
"license": "MIT",
"engines": {
"node": ">= 10"
@@ -5766,24 +5818,58 @@
"url": "https://github.com/sponsors/Brooooooklyn"
},
"optionalDependencies": {
- "@node-rs/crc32-android-arm-eabi": "1.10.0",
- "@node-rs/crc32-android-arm64": "1.10.0",
- "@node-rs/crc32-darwin-arm64": "1.10.0",
- "@node-rs/crc32-darwin-x64": "1.10.0",
- "@node-rs/crc32-freebsd-x64": "1.10.0",
- "@node-rs/crc32-linux-arm-gnueabihf": "1.10.0",
- "@node-rs/crc32-linux-arm64-gnu": "1.10.0",
- "@node-rs/crc32-linux-arm64-musl": "1.10.0",
- "@node-rs/crc32-linux-x64-gnu": "1.10.0",
- "@node-rs/crc32-linux-x64-musl": "1.10.0",
- "@node-rs/crc32-wasm32-wasi": "1.10.0",
- "@node-rs/crc32-win32-arm64-msvc": "1.10.0",
- "@node-rs/crc32-win32-ia32-msvc": "1.10.0",
- "@node-rs/crc32-win32-x64-msvc": "1.10.0"
+ "@node-rs/crc32-android-arm-eabi": "1.10.4",
+ "@node-rs/crc32-android-arm64": "1.10.4",
+ "@node-rs/crc32-darwin-arm64": "1.10.4",
+ "@node-rs/crc32-darwin-x64": "1.10.4",
+ "@node-rs/crc32-freebsd-x64": "1.10.4",
+ "@node-rs/crc32-linux-arm-gnueabihf": "1.10.4",
+ "@node-rs/crc32-linux-arm64-gnu": "1.10.4",
+ "@node-rs/crc32-linux-arm64-musl": "1.10.4",
+ "@node-rs/crc32-linux-x64-gnu": "1.10.4",
+ "@node-rs/crc32-linux-x64-musl": "1.10.4",
+ "@node-rs/crc32-wasm32-wasi": "1.10.4",
+ "@node-rs/crc32-win32-arm64-msvc": "1.10.4",
+ "@node-rs/crc32-win32-ia32-msvc": "1.10.4",
+ "@node-rs/crc32-win32-x64-msvc": "1.10.4"
+ }
+ },
+ "node_modules/@node-rs/crc32-android-arm-eabi": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.4.tgz",
+ "integrity": "sha512-xnfEDpxPU/tVFEOTwKF8N3F7NreAk0J/o+JhRiaeS5IYQD7rFsdmgzcWi7MpggzFq5ETNM1z/f+YD9OPump8yg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/crc32-android-arm64": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.4.tgz",
+ "integrity": "sha512-4myv2lydjPgw1Vn1AzyTPWwJlU7k7hoP7nsXn0ibQxjIknD/r05G7GJziTFL4T9sAfM3b4MephfgnRDA66gPjA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
"node_modules/@node-rs/crc32-darwin-arm64": {
- "version": "1.10.0",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.4.tgz",
+ "integrity": "sha512-x1ggDiiojMpaY4Xf9A5JRLxA3L6ezDiVqtItsXrf8edG/SvlLEmSYPWHpswgKjd4LcGuL3AZrKNcvAi59bCTsQ==",
"cpu": [
"arm64"
],
@@ -5796,6 +5882,182 @@
"node": ">= 10"
}
},
+ "node_modules/@node-rs/crc32-darwin-x64": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.4.tgz",
+ "integrity": "sha512-PCFt905HFFJvQE68Sc9eE/9LYxoC7hen29+WC0StIK21B2P+NorW7AgUW8kCv28NKDL3sPmIQHxXMWP7rDdRHw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/crc32-freebsd-x64": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.4.tgz",
+ "integrity": "sha512-C3KJgyKiWLkFlcrWX04wkVIkSUiD+KCVG+yyLOVXUbQFdCjSbbEQx2MUpM7qcy5ZOAFj4/MZCYdMLgQ6qIgaAw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/crc32-linux-arm-gnueabihf": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.4.tgz",
+ "integrity": "sha512-YlP3IozMBJmZbytr3/J6fEF5GjWql3p+r3MzY0RctgPf9UdRwG7pjz81SUu6X6kNuDE2eoeKblG0hIPKCd1/Hw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/crc32-linux-arm64-gnu": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.4.tgz",
+ "integrity": "sha512-GETfDmFEmWQaULn+jjs6UJB/IS2olWToqt/PaMKfQwohMFuFEAMiWLue/aXM2Q78hgbTooc4m8iY0djevwXjBA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/crc32-linux-arm64-musl": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.4.tgz",
+ "integrity": "sha512-629LGgGC2/h9HSM0m0sdhCNBap3QWyTQy85RB8AnywsA2R1XqeO7UH4VI5W5y5jFPeVusAkPZhYZJTGmlukZvA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/crc32-linux-x64-gnu": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.4.tgz",
+ "integrity": "sha512-ifpmD7lpkhrgwnn8BMxoH/sgeCG+tAUSBvaQkSHLsKJfg+yZ2X/+Y9JvWA79/WaR8ksD01E0yr/tZ8t+Dp0p0w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/crc32-linux-x64-musl": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.4.tgz",
+ "integrity": "sha512-grAfrxC/bIENFnJx2w55NIMg5x8DrMQbumSrturVBmbraozgFO6DaBg/g/pnzQvJbkuhXk920pLFwz5OeuxqzA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/crc32-wasm32-wasi": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-wasm32-wasi/-/crc32-wasm32-wasi-1.10.4.tgz",
+ "integrity": "sha512-nlhG9PlPDsISBC8m2lp5DTRe2uV3Y1UEnFU1lweu/llF9xb8alxQbRE2Vp2rsWJP0s+cwmGx7k3UUOUbnVkbqw==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^0.2.3"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@node-rs/crc32-win32-arm64-msvc": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.4.tgz",
+ "integrity": "sha512-btYP7Xv2NmCkrXDE3dLqgh+2fTgvByu6NRfWV3++md4tCO8C88dCu9uLxW7cr0dt88cpC0f5Yx9pWFbURKA23Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/crc32-win32-ia32-msvc": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.4.tgz",
+ "integrity": "sha512-o+7Zq9seSWAmoiOmUlXMi44FFwiGkfGihnKIIMKN9DAmQEifHb7Y4RuNnjYpEwjwlOa3HQ8wjQazEhxFFdrbSw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/crc32-win32-x64-msvc": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.4.tgz",
+ "integrity": "sha512-vnqwu4p7o9jvpjq8Xc1zuhw3jSaSkdVSSIFUralgOXKP6m+cbBbuOTeJZpsuf6C/diVNv6YocTBOlkhJqq0oGw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -8757,6 +9019,16 @@
"url": "https://opencollective.com/turf"
}
},
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz",
+ "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@types/b4a": {
"version": "1.6.3",
"license": "MIT",
@@ -9465,9 +9737,9 @@
}
},
"node_modules/ajv-formats": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
- "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
+ "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
"license": "MIT",
"dependencies": {
"ajv": "^8.0.0"
@@ -9482,13 +9754,15 @@
}
},
"node_modules/ajv-formats/node_modules/ajv": {
- "version": "8.12.0",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"license": "MIT",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "require-from-string": "^2.0.2"
},
"funding": {
"type": "github",
@@ -9780,15 +10054,6 @@
"sprintf-js": "~1.0.2"
}
},
- "node_modules/arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/array-buffer-byte-length": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
@@ -9887,15 +10152,6 @@
"util": "^0.12.0"
}
},
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/ast-types": {
"version": "0.15.2",
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz",
@@ -9960,15 +10216,21 @@
}
},
"node_modules/avvio": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.4.0.tgz",
- "integrity": "sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz",
+ "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==",
"license": "MIT",
"dependencies": {
- "@fastify/error": "^3.3.0",
+ "@fastify/error": "^4.0.0",
"fastq": "^1.17.1"
}
},
+ "node_modules/avvio/node_modules/@fastify/error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.0.0.tgz",
+ "integrity": "sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==",
+ "license": "MIT"
+ },
"node_modules/b4a": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
@@ -10619,25 +10881,6 @@
"node": ">= 0.8"
}
},
- "node_modules/bytewise": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz",
- "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==",
- "license": "MIT",
- "dependencies": {
- "bytewise-core": "^1.2.2",
- "typewise": "^1.0.3"
- }
- },
- "node_modules/bytewise-core": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz",
- "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==",
- "license": "MIT",
- "dependencies": {
- "typewise-core": "^1.2"
- }
- },
"node_modules/cacache": {
"version": "15.3.0",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
@@ -11449,7 +11692,9 @@
"license": "MIT"
},
"node_modules/cookie": {
- "version": "0.5.0",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
@@ -14456,18 +14701,6 @@
"integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==",
"license": "Apache-2.0"
},
- "node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/fast-content-type-parse": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz",
@@ -14523,31 +14756,48 @@
"license": "MIT"
},
"node_modules/fast-json-stringify": {
- "version": "5.8.0",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.0.0.tgz",
+ "integrity": "sha512-FGMKZwniMTgZh7zQp9b6XnBVxUmKVahQLQeRQHqwYmPDqDhcEKZ3BaQsxelFFI5PY7nN71OEeiL47/zUWcYe1A==",
"license": "MIT",
"dependencies": {
- "@fastify/deepmerge": "^1.0.0",
- "ajv": "^8.10.0",
- "ajv-formats": "^2.1.1",
+ "@fastify/merge-json-schemas": "^0.1.1",
+ "ajv": "^8.12.0",
+ "ajv-formats": "^3.0.1",
"fast-deep-equal": "^3.1.3",
- "fast-uri": "^2.1.0",
+ "fast-uri": "^2.3.0",
+ "json-schema-ref-resolver": "^1.0.1",
"rfdc": "^1.2.0"
}
},
"node_modules/fast-json-stringify/node_modules/ajv": {
- "version": "8.12.0",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"license": "MIT",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "require-from-string": "^2.0.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/fast-json-stringify/node_modules/ajv/node_modules/fast-uri": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
+ "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fast-json-stringify/node_modules/fast-uri": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz",
+ "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==",
+ "license": "MIT"
+ },
"node_modules/fast-json-stringify/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
@@ -14580,8 +14830,10 @@
}
},
"node_modules/fast-uri": {
- "version": "2.2.0",
- "license": "MIT"
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
+ "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
+ "license": "BSD-3-Clause"
},
"node_modules/fast-xml-parser": {
"version": "4.3.5",
@@ -14604,9 +14856,9 @@
}
},
"node_modules/fastify": {
- "version": "4.28.1",
- "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.1.tgz",
- "integrity": "sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.0.0.tgz",
+ "integrity": "sha512-Qe4dU+zGOzg7vXjw4EvcuyIbNnMwTmcuOhlOrOJsgwzvjEZmsM/IeHulgJk+r46STjdJS/ZJbxO8N70ODXDMEQ==",
"funding": [
{
"type": "github",
@@ -14619,22 +14871,21 @@
],
"license": "MIT",
"dependencies": {
- "@fastify/ajv-compiler": "^3.5.0",
- "@fastify/error": "^3.4.0",
- "@fastify/fast-json-stringify-compiler": "^4.3.0",
+ "@fastify/ajv-compiler": "^4.0.0",
+ "@fastify/error": "^4.0.0",
+ "@fastify/fast-json-stringify-compiler": "^5.0.0",
"abstract-logging": "^2.0.1",
- "avvio": "^8.3.0",
- "fast-content-type-parse": "^1.1.0",
- "fast-json-stringify": "^5.8.0",
- "find-my-way": "^8.0.0",
- "light-my-request": "^5.11.0",
+ "avvio": "^9.0.0",
+ "fast-json-stringify": "^6.0.0",
+ "find-my-way": "^9.0.0",
+ "light-my-request": "^6.0.0",
"pino": "^9.0.0",
- "process-warning": "^3.0.0",
+ "process-warning": "^4.0.0",
"proxy-addr": "^2.0.7",
- "rfdc": "^1.3.0",
+ "rfdc": "^1.3.1",
"secure-json-parse": "^2.7.0",
- "semver": "^7.5.4",
- "toad-cache": "^3.3.0"
+ "semver": "^7.6.0",
+ "toad-cache": "^3.7.0"
}
},
"node_modules/fastify-plugin": {
@@ -14643,10 +14894,10 @@
"integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==",
"license": "MIT"
},
- "node_modules/fastify/node_modules/process-warning": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz",
- "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==",
+ "node_modules/fastify/node_modules/@fastify/error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.0.0.tgz",
+ "integrity": "sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==",
"license": "MIT"
},
"node_modules/fastq": {
@@ -14898,14 +15149,14 @@
}
},
"node_modules/find-my-way": {
- "version": "8.2.2",
- "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.2.tgz",
- "integrity": "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.1.0.tgz",
+ "integrity": "sha512-Y5jIsuYR4BwWDYYQ2A/RWWE6gD8a0FMgtU+HOq1WKku+Cwdz8M1v8wcAmRXXM1/iqtoqg06v+LjAxMYbCjViMw==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-querystring": "^1.0.0",
- "safe-regex2": "^3.1.0"
+ "safe-regex2": "^4.0.0"
},
"engines": {
"node": ">=14"
@@ -15355,15 +15606,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/getenv": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz",
@@ -16336,15 +16578,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -18940,6 +19173,15 @@
"is-buffer": "~1.1.1"
}
},
+ "node_modules/json-schema-ref-resolver": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz",
+ "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ }
+ },
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -19157,12 +19399,14 @@
}
},
"node_modules/light-my-request": {
- "version": "5.11.0",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.1.0.tgz",
+ "integrity": "sha512-+NFuhlOGoEwxeQfJ/pobkVFxcnKyDtiX847hLjuB/IzBxIl3q4VJeFI8uRCgb3AlTWL1lgOr+u5+8QdUcr33ng==",
"license": "BSD-3-Clause",
"dependencies": {
- "cookie": "^0.5.0",
- "process-warning": "^2.0.0",
- "set-cookie-parser": "^2.4.1"
+ "cookie": "^0.7.0",
+ "process-warning": "^4.0.0",
+ "set-cookie-parser": "^2.6.0"
}
},
"node_modules/lighthouse-logger": {
@@ -21562,9 +21806,9 @@
}
},
"node_modules/p-event/node_modules/p-timeout": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz",
- "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==",
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.3.tgz",
+ "integrity": "sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw==",
"license": "MIT",
"engines": {
"node": ">=14.16"
@@ -22029,12 +22273,6 @@
"integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==",
"license": "MIT"
},
- "node_modules/pino/node_modules/process-warning": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz",
- "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==",
- "license": "MIT"
- },
"node_modules/pirates": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
@@ -22268,7 +22506,9 @@
"license": "MIT"
},
"node_modules/process-warning": {
- "version": "2.2.0",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz",
+ "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==",
"license": "MIT"
},
"node_modules/progress": {
@@ -23489,9 +23729,9 @@
}
},
"node_modules/ret": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.4.3.tgz",
- "integrity": "sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz",
+ "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==",
"license": "MIT",
"engines": {
"node": ">=10"
@@ -23517,7 +23757,9 @@
}
},
"node_modules/rfdc": {
- "version": "1.3.0",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
"license": "MIT"
},
"node_modules/rimraf": {
@@ -23755,12 +23997,12 @@
}
},
"node_modules/safe-regex2": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-3.1.0.tgz",
- "integrity": "sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-4.0.0.tgz",
+ "integrity": "sha512-Hvjfv25jPDVr3U+4LDzBuZPPOymELG3PYcSk5hcevooo1yxxamQL/bHs/GrEPGmMoMEwRrHVGiCA1pXi97B8Ew==",
"license": "MIT",
"dependencies": {
- "ret": "~0.4.0"
+ "ret": "~0.5.0"
}
},
"node_modules/safe-stable-stringify": {
@@ -23925,9 +24167,9 @@
"license": "ISC"
},
"node_modules/set-cookie-parser": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
- "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
+ "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
"license": "MIT"
},
"node_modules/set-function-length": {
@@ -23962,21 +24204,6 @@
"node": ">= 0.4"
}
},
- "node_modules/set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "license": "MIT",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
@@ -24388,41 +24615,6 @@
"atomic-sleep": "^1.0.0"
}
},
- "node_modules/sort-asc": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz",
- "integrity": "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sort-desc": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz",
- "integrity": "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sort-object": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.3.tgz",
- "integrity": "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==",
- "license": "MIT",
- "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"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -24480,43 +24672,6 @@
"node": ">=6"
}
},
- "node_modules/split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "license": "MIT",
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split-string/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "license": "MIT",
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split-string/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "license": "MIT",
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/split2": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
@@ -24969,9 +25124,9 @@
"license": "MIT"
},
"node_modules/styled-map-package": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-1.1.0.tgz",
- "integrity": "sha512-QzaB5nvbuZKteIlGAFVEsxyuXWJQ5bObFntgrk9CZdsEl19ErTexr3vThpvl/ABCWhWYUe8N8kpR6XevxmHlDQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-2.0.0.tgz",
+ "integrity": "sha512-CGjyypTc+SQ97Y2XopJ9yOuB8aQMqAMWSLyUBStnntuomXNzgMUhhS9GOafyBhUJqm01UONWi82tJhXhZ05wWw==",
"license": "MIT",
"dependencies": {
"@fastify/static": "^7.0.4",
@@ -25009,6 +25164,49 @@
"styled-map-package": "bin/smp.js"
}
},
+ "node_modules/styled-map-package/node_modules/@fastify/ajv-compiler": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.6.0.tgz",
+ "integrity": "sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.11.0",
+ "ajv-formats": "^2.1.1",
+ "fast-uri": "^2.0.0"
+ }
+ },
+ "node_modules/styled-map-package/node_modules/@fastify/ajv-compiler/node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/styled-map-package/node_modules/@fastify/ajv-compiler/node_modules/fast-uri": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz",
+ "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==",
+ "license": "MIT"
+ },
+ "node_modules/styled-map-package/node_modules/@fastify/fast-json-stringify-compiler": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz",
+ "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-json-stringify": "^5.7.0"
+ }
+ },
"node_modules/styled-map-package/node_modules/@turf/bbox": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.1.0.tgz",
@@ -25037,6 +25235,22 @@
"url": "https://opencollective.com/turf"
}
},
+ "node_modules/styled-map-package/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
"node_modules/styled-map-package/node_modules/ansi-regex": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
@@ -25049,6 +25263,16 @@
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
+ "node_modules/styled-map-package/node_modules/avvio": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.4.0.tgz",
+ "integrity": "sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==",
+ "license": "MIT",
+ "dependencies": {
+ "@fastify/error": "^3.3.0",
+ "fastq": "^1.17.1"
+ }
+ },
"node_modules/styled-map-package/node_modules/chalk": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
@@ -25103,6 +25327,61 @@
"integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
"license": "MIT"
},
+ "node_modules/styled-map-package/node_modules/fast-json-stringify": {
+ "version": "5.16.1",
+ "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz",
+ "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==",
+ "license": "MIT",
+ "dependencies": {
+ "@fastify/merge-json-schemas": "^0.1.0",
+ "ajv": "^8.10.0",
+ "ajv-formats": "^3.0.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^2.1.0",
+ "json-schema-ref-resolver": "^1.0.1",
+ "rfdc": "^1.2.0"
+ }
+ },
+ "node_modules/styled-map-package/node_modules/fast-json-stringify/node_modules/fast-uri": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz",
+ "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==",
+ "license": "MIT"
+ },
+ "node_modules/styled-map-package/node_modules/fastify": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.1.tgz",
+ "integrity": "sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@fastify/ajv-compiler": "^3.5.0",
+ "@fastify/error": "^3.4.0",
+ "@fastify/fast-json-stringify-compiler": "^4.3.0",
+ "abstract-logging": "^2.0.1",
+ "avvio": "^8.3.0",
+ "fast-content-type-parse": "^1.1.0",
+ "fast-json-stringify": "^5.8.0",
+ "find-my-way": "^8.0.0",
+ "light-my-request": "^5.11.0",
+ "pino": "^9.0.0",
+ "process-warning": "^3.0.0",
+ "proxy-addr": "^2.0.7",
+ "rfdc": "^1.3.0",
+ "secure-json-parse": "^2.7.0",
+ "semver": "^7.5.4",
+ "toad-cache": "^3.3.0"
+ }
+ },
"node_modules/styled-map-package/node_modules/filter-obj": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-6.1.0.tgz",
@@ -25115,6 +25394,20 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/styled-map-package/node_modules/find-my-way": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.2.tgz",
+ "integrity": "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-querystring": "^1.0.0",
+ "safe-regex2": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/styled-map-package/node_modules/is-interactive": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
@@ -25166,6 +25459,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/styled-map-package/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/styled-map-package/node_modules/light-my-request": {
+ "version": "5.14.0",
+ "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.14.0.tgz",
+ "integrity": "sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "cookie": "^0.7.0",
+ "process-warning": "^3.0.0",
+ "set-cookie-parser": "^2.4.1"
+ }
+ },
"node_modules/styled-map-package/node_modules/log-symbols": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.0.tgz",
@@ -25293,6 +25603,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/styled-map-package/node_modules/process-warning": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz",
+ "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==",
+ "license": "MIT"
+ },
"node_modules/styled-map-package/node_modules/restore-cursor": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
@@ -25309,6 +25625,24 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/styled-map-package/node_modules/ret": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.4.3.tgz",
+ "integrity": "sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/styled-map-package/node_modules/safe-regex2": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-3.1.0.tgz",
+ "integrity": "sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==",
+ "license": "MIT",
+ "dependencies": {
+ "ret": "~0.4.0"
+ }
+ },
"node_modules/styled-map-package/node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
@@ -25992,7 +26326,9 @@
}
},
"node_modules/toad-cache": {
- "version": "3.3.0",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz",
+ "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -26260,21 +26596,6 @@
"node": ">=14.17"
}
},
- "node_modules/typewise": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz",
- "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==",
- "license": "MIT",
- "dependencies": {
- "typewise-core": "^1.2.0"
- }
- },
- "node_modules/typewise-core": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz",
- "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==",
- "license": "MIT"
- },
"node_modules/ua-parser-js": {
"version": "1.0.35",
"funding": [
@@ -26372,21 +26693,6 @@
"version": "4.5.0",
"license": "MIT"
},
- "node_modules/union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "license": "MIT",
- "dependencies": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
@@ -26578,6 +26884,20 @@
"node": ">=10.12.0"
}
},
+ "node_modules/valibot": {
+ "version": "0.42.1",
+ "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.42.1.tgz",
+ "integrity": "sha512-3keXV29Ar5b//Hqi4MbSdV7lfVp6zuYLZuA9V1PvQUsXqogr+u5lvLPLk3A4f74VUXDnf/JfWMN6sB+koJ/FFw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "typescript": ">=5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
"node_modules/valid-url": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
diff --git a/package.json b/package.json
index c3fb4d69d..896e47534 100644
--- a/package.json
+++ b/package.json
@@ -28,7 +28,7 @@
},
"dependencies": {
"@bam.tech/react-native-image-resizer": "^3.0.7",
- "@comapeo/ipc": "2.0.0",
+ "@comapeo/ipc": "2.0.2",
"@dev-plugins/react-navigation": "^0.0.6",
"@formatjs/intl-getcanonicallocales": "^2.3.0",
"@formatjs/intl-locale": "^3.3.2",
@@ -108,6 +108,7 @@
"tiny-typed-emitter": "^2.1.0",
"uint8array-extras": "^0.5.0",
"utm": "^1.1.1",
+ "valibot": "^0.42.1",
"validate-color": "^2.2.4",
"zustand": "^4.4.6"
},
@@ -115,7 +116,7 @@
"@babel/core": "^7.20.0",
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.20.0",
- "@comapeo/core": "2.0.0",
+ "@comapeo/core": "2.0.1",
"@comapeo/schema": "1.0.0",
"@formatjs/cli": "^6.2.0",
"@react-native-community/cli": "^12.3.6",
diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json
index 4ce3ba7ea..3a1295fc7 100644
--- a/src/backend/package-lock.json
+++ b/src/backend/package-lock.json
@@ -10,8 +10,8 @@
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
- "@comapeo/core": "2.0.0",
- "@comapeo/ipc": "2.0.0",
+ "@comapeo/core": "2.0.1",
+ "@comapeo/ipc": "2.0.2",
"@mapeo/default-config": "5.0.0",
"debug": "^4.3.4"
},
@@ -44,9 +44,9 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
- "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.9.tgz",
+ "integrity": "sha512-4zpTHZ9Cm6L9L+uIqghQX8ZXg8HKFcjYO3qHoO8zTmRm6HQUJ8SSJ+KRvbMBZn0EGVlT4DRYeQ/6hjlyXBh+Kg==",
"license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
@@ -56,9 +56,9 @@
}
},
"node_modules/@comapeo/core": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-2.0.0.tgz",
- "integrity": "sha512-tM2NEYW+sMj5Gpp1tr4SAJarsw3+g5iluTS77/cP6G4WHsTwPvEZyyezMeSZ3UzyWae75Nn+hJYnY2ZcJaXmpg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-2.0.1.tgz",
+ "integrity": "sha512-6ZUb5umzitYKZx28bYFMxQfpE2B6pdC2ukCd9rcM1l+EgNUAcL+1NWeo/YRlXPnbzhltZ7kr0LvmZtXoMb/ing==",
"license": "MIT",
"dependencies": {
"@comapeo/fallback-smp": "^1.0.0",
@@ -100,7 +100,7 @@
"sodium-universal": "^4.0.0",
"start-stop-state-machine": "^1.2.0",
"streamx": "^2.19.0",
- "styled-map-package": "^1.1.0",
+ "styled-map-package": "^2.0.0",
"sub-encoder": "^2.1.1",
"throttle-debounce": "^5.0.0",
"tiny-typed-emitter": "^2.1.0",
@@ -173,9 +173,9 @@
"license": "MIT"
},
"node_modules/@comapeo/ipc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-2.0.0.tgz",
- "integrity": "sha512-pKLsmiFFUe+6wUgokeoO3ko1ltqZbEZKUrzvnTBNCp+IHaSMLhYXJtEmqNwLafmmB64As++jLqdi51aEm27Dew==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-2.0.2.tgz",
+ "integrity": "sha512-nOm2MzUjnN9GNYW8cAXzfAyW3URJz+lWm9nyKm8vmTTxiwBt6ZMEd2DCU28dl1KNfasqw79501jWY+fELFt/wg==",
"license": "MIT",
"dependencies": {
"eventemitter3": "^5.0.1",
@@ -186,7 +186,7 @@
"node": ">=18.17.1"
},
"peerDependencies": {
- "@comapeo/core": "2.0.0"
+ "@comapeo/core": "^2.0.0"
}
},
"node_modules/@comapeo/schema": {
@@ -230,9 +230,9 @@
"dev": true
},
"node_modules/@emnapi/core": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.2.0.tgz",
- "integrity": "sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.3.1.tgz",
+ "integrity": "sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==",
"license": "MIT",
"optional": true,
"dependencies": {
@@ -241,9 +241,9 @@
}
},
"node_modules/@emnapi/runtime": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz",
- "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
+ "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
"license": "MIT",
"optional": true,
"dependencies": {
@@ -713,9 +713,9 @@
}
},
"node_modules/@maplibre/maplibre-gl-style-spec": {
- "version": "20.3.1",
- "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.3.1.tgz",
- "integrity": "sha512-5ueL4UDitzVtceQ8J4kY+Px3WK+eZTsmGwha3MBKHKqiHvKrjWWwBCIl1K8BuJSc5OFh83uI8IFNoFvQxX2uUw==",
+ "version": "20.4.0",
+ "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz",
+ "integrity": "sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==",
"license": "ISC",
"dependencies": {
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
@@ -724,7 +724,6 @@
"minimist": "^1.2.8",
"quickselect": "^2.0.0",
"rw": "^1.3.3",
- "sort-object": "^3.0.3",
"tinyqueue": "^3.0.0"
},
"bin": {
@@ -742,9 +741,9 @@
}
},
"node_modules/@napi-rs/wasm-runtime": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz",
- "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==",
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.5.tgz",
+ "integrity": "sha512-kwUxR7J9WLutBbulqg1dfOrMTwhMdXLdcGUhcbCcGwnPLt3gz19uHVdwH1syKVDbE022ZS2vZxOWflFLS0YTjw==",
"license": "MIT",
"optional": true,
"dependencies": {
@@ -754,9 +753,9 @@
}
},
"node_modules/@node-rs/crc32": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.3.tgz",
- "integrity": "sha512-4UgH0fDRxs0eMSgrUN0UUM4BpIEbVKutiSkFLICwegbgIger3c1t7V3jOYralK0xTBHraW3r59wlESdc3h/nQg==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.4.tgz",
+ "integrity": "sha512-R1kX9t4Bz1gkNZUcI967bp91+HIoCJa7p11xvBAU9INUvTC1XsOs5mnGq+LE+UOHKUKmE3pOLHLVuoRo4pM3Fg==",
"license": "MIT",
"engines": {
"node": ">= 10"
@@ -766,26 +765,26 @@
"url": "https://github.com/sponsors/Brooooooklyn"
},
"optionalDependencies": {
- "@node-rs/crc32-android-arm-eabi": "1.10.3",
- "@node-rs/crc32-android-arm64": "1.10.3",
- "@node-rs/crc32-darwin-arm64": "1.10.3",
- "@node-rs/crc32-darwin-x64": "1.10.3",
- "@node-rs/crc32-freebsd-x64": "1.10.3",
- "@node-rs/crc32-linux-arm-gnueabihf": "1.10.3",
- "@node-rs/crc32-linux-arm64-gnu": "1.10.3",
- "@node-rs/crc32-linux-arm64-musl": "1.10.3",
- "@node-rs/crc32-linux-x64-gnu": "1.10.3",
- "@node-rs/crc32-linux-x64-musl": "1.10.3",
- "@node-rs/crc32-wasm32-wasi": "1.10.3",
- "@node-rs/crc32-win32-arm64-msvc": "1.10.3",
- "@node-rs/crc32-win32-ia32-msvc": "1.10.3",
- "@node-rs/crc32-win32-x64-msvc": "1.10.3"
+ "@node-rs/crc32-android-arm-eabi": "1.10.4",
+ "@node-rs/crc32-android-arm64": "1.10.4",
+ "@node-rs/crc32-darwin-arm64": "1.10.4",
+ "@node-rs/crc32-darwin-x64": "1.10.4",
+ "@node-rs/crc32-freebsd-x64": "1.10.4",
+ "@node-rs/crc32-linux-arm-gnueabihf": "1.10.4",
+ "@node-rs/crc32-linux-arm64-gnu": "1.10.4",
+ "@node-rs/crc32-linux-arm64-musl": "1.10.4",
+ "@node-rs/crc32-linux-x64-gnu": "1.10.4",
+ "@node-rs/crc32-linux-x64-musl": "1.10.4",
+ "@node-rs/crc32-wasm32-wasi": "1.10.4",
+ "@node-rs/crc32-win32-arm64-msvc": "1.10.4",
+ "@node-rs/crc32-win32-ia32-msvc": "1.10.4",
+ "@node-rs/crc32-win32-x64-msvc": "1.10.4"
}
},
"node_modules/@node-rs/crc32-android-arm-eabi": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.3.tgz",
- "integrity": "sha512-V9iNJd5ux9I415qOldmxZIHrazYMJNsQ6v+Kq/t9FTQyYqiEeHvRc1FzBh9MT6Uc24InwMhBeC1WVw0BL4VaxQ==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.4.tgz",
+ "integrity": "sha512-xnfEDpxPU/tVFEOTwKF8N3F7NreAk0J/o+JhRiaeS5IYQD7rFsdmgzcWi7MpggzFq5ETNM1z/f+YD9OPump8yg==",
"cpu": [
"arm"
],
@@ -799,9 +798,9 @@
}
},
"node_modules/@node-rs/crc32-android-arm64": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.3.tgz",
- "integrity": "sha512-d6xLAhbk5FDGpltAKTFs7hZO/PWpHeihZ/ZCKx2LEVz8jXQEshpo2/ojnfb5FAw6oNzU2H+S/RI5GeCr7paa1Q==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.4.tgz",
+ "integrity": "sha512-4myv2lydjPgw1Vn1AzyTPWwJlU7k7hoP7nsXn0ibQxjIknD/r05G7GJziTFL4T9sAfM3b4MephfgnRDA66gPjA==",
"cpu": [
"arm64"
],
@@ -815,9 +814,9 @@
}
},
"node_modules/@node-rs/crc32-darwin-arm64": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.3.tgz",
- "integrity": "sha512-IoX6HC4dlKc9BONe7632DADBtiHUiIVD7Bibuj3bGrvOBllN8hvBL9+dDC+/iDdOeuiBKgb0hgL5h2nPIybpzA==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.4.tgz",
+ "integrity": "sha512-x1ggDiiojMpaY4Xf9A5JRLxA3L6ezDiVqtItsXrf8edG/SvlLEmSYPWHpswgKjd4LcGuL3AZrKNcvAi59bCTsQ==",
"cpu": [
"arm64"
],
@@ -831,9 +830,9 @@
}
},
"node_modules/@node-rs/crc32-darwin-x64": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.3.tgz",
- "integrity": "sha512-JUDGAX/0W4A9ok9p6yuy4fAsBDrq8Db0sUjKLMZ/+P3NHB+Qk+OsZUsEDxP3yhBJxhPq97JpN4bBzgMnkDajpw==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.4.tgz",
+ "integrity": "sha512-PCFt905HFFJvQE68Sc9eE/9LYxoC7hen29+WC0StIK21B2P+NorW7AgUW8kCv28NKDL3sPmIQHxXMWP7rDdRHw==",
"cpu": [
"x64"
],
@@ -847,9 +846,9 @@
}
},
"node_modules/@node-rs/crc32-freebsd-x64": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.3.tgz",
- "integrity": "sha512-mbpVcrF9cRJm9ksv2vVaWc/yRsLJErdb90Kusc6I8CgsBxpS6/wI637i0khSl1l10iWrALXjfh6osihixANYhQ==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.4.tgz",
+ "integrity": "sha512-C3KJgyKiWLkFlcrWX04wkVIkSUiD+KCVG+yyLOVXUbQFdCjSbbEQx2MUpM7qcy5ZOAFj4/MZCYdMLgQ6qIgaAw==",
"cpu": [
"x64"
],
@@ -863,9 +862,9 @@
}
},
"node_modules/@node-rs/crc32-linux-arm-gnueabihf": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.3.tgz",
- "integrity": "sha512-9MZohdtKzdnb16xRKU76t1UTEJu80dFO8f2/N0geJYNobnT1E6p/+5pqB/G1/H6OnPvjqMuFuLVL4BJVvO4GYQ==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.4.tgz",
+ "integrity": "sha512-YlP3IozMBJmZbytr3/J6fEF5GjWql3p+r3MzY0RctgPf9UdRwG7pjz81SUu6X6kNuDE2eoeKblG0hIPKCd1/Hw==",
"cpu": [
"arm"
],
@@ -879,9 +878,9 @@
}
},
"node_modules/@node-rs/crc32-linux-arm64-gnu": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.3.tgz",
- "integrity": "sha512-t1+9ik4awZF+luQp94HsUH8M1lSw8jWjvQiLaHyxMzrM0NY0/oIkhjqdOswXL11Wybkc63eunNwVqGKWfJEi4Q==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.4.tgz",
+ "integrity": "sha512-GETfDmFEmWQaULn+jjs6UJB/IS2olWToqt/PaMKfQwohMFuFEAMiWLue/aXM2Q78hgbTooc4m8iY0djevwXjBA==",
"cpu": [
"arm64"
],
@@ -895,9 +894,9 @@
}
},
"node_modules/@node-rs/crc32-linux-arm64-musl": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.3.tgz",
- "integrity": "sha512-fsxOk9CpFzyon+vktvCICwhGk0b+tnfEZfPOXa3QDrkyZD7R7cHmpEHGim1BYgJZIJSTBfal5eM11hzBGjJbxw==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.4.tgz",
+ "integrity": "sha512-629LGgGC2/h9HSM0m0sdhCNBap3QWyTQy85RB8AnywsA2R1XqeO7UH4VI5W5y5jFPeVusAkPZhYZJTGmlukZvA==",
"cpu": [
"arm64"
],
@@ -911,9 +910,9 @@
}
},
"node_modules/@node-rs/crc32-linux-x64-gnu": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.3.tgz",
- "integrity": "sha512-0zIX68FIeqpRMRNvmB5AgONnLMm628+8mV9UDuCRmGppME8WGnY+Dirx+TPUeTJ4f27+in+6CU4u6LJDi9cXmQ==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.4.tgz",
+ "integrity": "sha512-ifpmD7lpkhrgwnn8BMxoH/sgeCG+tAUSBvaQkSHLsKJfg+yZ2X/+Y9JvWA79/WaR8ksD01E0yr/tZ8t+Dp0p0w==",
"cpu": [
"x64"
],
@@ -927,9 +926,9 @@
}
},
"node_modules/@node-rs/crc32-linux-x64-musl": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.3.tgz",
- "integrity": "sha512-dKKt0FEm8JDp2MvIu1J7vg8Dc5D5upNO6LAuvfShq9Hy8hYNQWy6f+AF8mSm/c5wWnjn+pv7I1+jvrZIe6wMig==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.4.tgz",
+ "integrity": "sha512-grAfrxC/bIENFnJx2w55NIMg5x8DrMQbumSrturVBmbraozgFO6DaBg/g/pnzQvJbkuhXk920pLFwz5OeuxqzA==",
"cpu": [
"x64"
],
@@ -943,9 +942,9 @@
}
},
"node_modules/@node-rs/crc32-wasm32-wasi": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-wasm32-wasi/-/crc32-wasm32-wasi-1.10.3.tgz",
- "integrity": "sha512-oT2V4r0lGZqZHkFLHeXu5Z8C8SutIvBVV0Ws3unz4/KhwmlMcOZYRmSelUSSILbjNLrg4FihCe20tC1VbmaNxA==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-wasm32-wasi/-/crc32-wasm32-wasi-1.10.4.tgz",
+ "integrity": "sha512-nlhG9PlPDsISBC8m2lp5DTRe2uV3Y1UEnFU1lweu/llF9xb8alxQbRE2Vp2rsWJP0s+cwmGx7k3UUOUbnVkbqw==",
"cpu": [
"wasm32"
],
@@ -959,9 +958,9 @@
}
},
"node_modules/@node-rs/crc32-win32-arm64-msvc": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.3.tgz",
- "integrity": "sha512-IwP/TjDoQycv3ZCbAHV3qS9oH8pmBo7h9RC0chOvKY0g9+RxRl0nXhxcAcmZvJugKdJd+eCOR9fJrWzcwQOgFg==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.4.tgz",
+ "integrity": "sha512-btYP7Xv2NmCkrXDE3dLqgh+2fTgvByu6NRfWV3++md4tCO8C88dCu9uLxW7cr0dt88cpC0f5Yx9pWFbURKA23Q==",
"cpu": [
"arm64"
],
@@ -975,9 +974,9 @@
}
},
"node_modules/@node-rs/crc32-win32-ia32-msvc": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.3.tgz",
- "integrity": "sha512-YK0qYTHUFqriqAkHyXfe3IpDFfpG5fc2yuNl7MXn4ejklLLyNQPOCSawvPU7ouOBgtQDaAH60yZhFhsXZfwSfQ==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.4.tgz",
+ "integrity": "sha512-o+7Zq9seSWAmoiOmUlXMi44FFwiGkfGihnKIIMKN9DAmQEifHb7Y4RuNnjYpEwjwlOa3HQ8wjQazEhxFFdrbSw==",
"cpu": [
"ia32"
],
@@ -991,9 +990,9 @@
}
},
"node_modules/@node-rs/crc32-win32-x64-msvc": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.3.tgz",
- "integrity": "sha512-VI9jd8ECiij4YADsfzVuDnhk/UZ5op4RYHyN40yZzwhzcOQ8DDluOeHv91FPHSyMYJEsVsqbr3cqtD6R47xYjw==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.4.tgz",
+ "integrity": "sha512-vnqwu4p7o9jvpjq8Xc1zuhw3jSaSkdVSSIFUralgOXKP6m+cbBbuOTeJZpsuf6C/diVNv6YocTBOlkhJqq0oGw==",
"cpu": [
"x64"
],
@@ -1674,24 +1673,6 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "node_modules/arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/async": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
@@ -1998,25 +1979,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/bytewise": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz",
- "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==",
- "license": "MIT",
- "dependencies": {
- "bytewise-core": "^1.2.2",
- "typewise": "^1.0.3"
- }
- },
- "node_modules/bytewise-core": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz",
- "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==",
- "license": "MIT",
- "dependencies": {
- "typewise-core": "^1.2"
- }
- },
"node_modules/call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
@@ -3066,18 +3028,6 @@
"node": ">=6"
}
},
- "node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/fast-content-type-parse": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz",
@@ -3515,15 +3465,6 @@
"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
}
},
- "node_modules/get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/github-from-package": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
@@ -3964,15 +3905,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -4094,18 +4026,6 @@
"node": ">=8"
}
},
- "node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "license": "MIT",
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-reference": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
@@ -4160,15 +4080,6 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
- "node_modules/isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/jackspeak": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
@@ -4866,9 +4777,9 @@
}
},
"node_modules/p-event/node_modules/p-timeout": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz",
- "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==",
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.3.tgz",
+ "integrity": "sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw==",
"license": "MIT",
"engines": {
"node": ">=14.16"
@@ -5817,21 +5728,6 @@
"node": ">= 0.4"
}
},
- "node_modules/set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "license": "MIT",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
@@ -6013,78 +5909,6 @@
"atomic-sleep": "^1.0.0"
}
},
- "node_modules/sort-asc": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz",
- "integrity": "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sort-desc": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz",
- "integrity": "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sort-object": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.3.tgz",
- "integrity": "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==",
- "license": "MIT",
- "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"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "license": "MIT",
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split-string/node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "license": "MIT",
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split-string/node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "license": "MIT",
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/split2": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
@@ -6269,9 +6093,9 @@
}
},
"node_modules/styled-map-package": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-1.1.0.tgz",
- "integrity": "sha512-QzaB5nvbuZKteIlGAFVEsxyuXWJQ5bObFntgrk9CZdsEl19ErTexr3vThpvl/ABCWhWYUe8N8kpR6XevxmHlDQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-2.0.0.tgz",
+ "integrity": "sha512-CGjyypTc+SQ97Y2XopJ9yOuB8aQMqAMWSLyUBStnntuomXNzgMUhhS9GOafyBhUJqm01UONWi82tJhXhZ05wWw==",
"license": "MIT",
"dependencies": {
"@fastify/static": "^7.0.4",
@@ -6605,9 +6429,9 @@
}
},
"node_modules/tslib": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
- "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz",
+ "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==",
"license": "0BSD"
},
"node_modules/tunnel-agent": {
@@ -6658,21 +6482,6 @@
"node": ">=14.17"
}
},
- "node_modules/typewise": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz",
- "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==",
- "license": "MIT",
- "dependencies": {
- "typewise-core": "^1.2.0"
- }
- },
- "node_modules/typewise-core": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz",
- "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==",
- "license": "MIT"
- },
"node_modules/undici": {
"version": "6.19.8",
"resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz",
@@ -6687,21 +6496,6 @@
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
"integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA=="
},
- "node_modules/union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "license": "MIT",
- "dependencies": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
@@ -7031,17 +6825,17 @@
"dev": true
},
"@babel/runtime": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
- "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.9.tgz",
+ "integrity": "sha512-4zpTHZ9Cm6L9L+uIqghQX8ZXg8HKFcjYO3qHoO8zTmRm6HQUJ8SSJ+KRvbMBZn0EGVlT4DRYeQ/6hjlyXBh+Kg==",
"requires": {
"regenerator-runtime": "^0.14.0"
}
},
"@comapeo/core": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-2.0.0.tgz",
- "integrity": "sha512-tM2NEYW+sMj5Gpp1tr4SAJarsw3+g5iluTS77/cP6G4WHsTwPvEZyyezMeSZ3UzyWae75Nn+hJYnY2ZcJaXmpg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-2.0.1.tgz",
+ "integrity": "sha512-6ZUb5umzitYKZx28bYFMxQfpE2B6pdC2ukCd9rcM1l+EgNUAcL+1NWeo/YRlXPnbzhltZ7kr0LvmZtXoMb/ing==",
"requires": {
"@comapeo/fallback-smp": "^1.0.0",
"@comapeo/schema": "1.0.0",
@@ -7082,7 +6876,7 @@
"sodium-universal": "^4.0.0",
"start-stop-state-machine": "^1.2.0",
"streamx": "^2.19.0",
- "styled-map-package": "^1.1.0",
+ "styled-map-package": "^2.0.0",
"sub-encoder": "^2.1.1",
"throttle-debounce": "^5.0.0",
"tiny-typed-emitter": "^2.1.0",
@@ -7138,9 +6932,9 @@
"integrity": "sha512-6wLTtBOdlwtYMyrynBq6ZQ7S1aVABXQSwR/1QENkFkc7WyLLs4wLd9ny7WfSUQdHn6E2zfvA7WfKH7R06Zy3gQ=="
},
"@comapeo/ipc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-2.0.0.tgz",
- "integrity": "sha512-pKLsmiFFUe+6wUgokeoO3ko1ltqZbEZKUrzvnTBNCp+IHaSMLhYXJtEmqNwLafmmB64As++jLqdi51aEm27Dew==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-2.0.2.tgz",
+ "integrity": "sha512-nOm2MzUjnN9GNYW8cAXzfAyW3URJz+lWm9nyKm8vmTTxiwBt6ZMEd2DCU28dl1KNfasqw79501jWY+fELFt/wg==",
"requires": {
"eventemitter3": "^5.0.1",
"p-defer": "^4.0.0",
@@ -7184,9 +6978,9 @@
}
},
"@emnapi/core": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.2.0.tgz",
- "integrity": "sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.3.1.tgz",
+ "integrity": "sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==",
"optional": true,
"requires": {
"@emnapi/wasi-threads": "1.0.1",
@@ -7194,9 +6988,9 @@
}
},
"@emnapi/runtime": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz",
- "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
+ "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
"optional": true,
"requires": {
"tslib": "^2.4.0"
@@ -7554,9 +7348,9 @@
}
},
"@maplibre/maplibre-gl-style-spec": {
- "version": "20.3.1",
- "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.3.1.tgz",
- "integrity": "sha512-5ueL4UDitzVtceQ8J4kY+Px3WK+eZTsmGwha3MBKHKqiHvKrjWWwBCIl1K8BuJSc5OFh83uI8IFNoFvQxX2uUw==",
+ "version": "20.4.0",
+ "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz",
+ "integrity": "sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==",
"requires": {
"@mapbox/jsonlint-lines-primitives": "~2.0.2",
"@mapbox/unitbezier": "^0.0.1",
@@ -7564,7 +7358,6 @@
"minimist": "^1.2.8",
"quickselect": "^2.0.0",
"rw": "^1.3.3",
- "sort-object": "^3.0.3",
"tinyqueue": "^3.0.0"
}
},
@@ -7574,9 +7367,9 @@
"integrity": "sha512-Vwhc3ObxmDZmA5hY8mfsau2rJ4vGPvzbj20QSZ2/E1GDPF61QVyjLfNHak9xmel6pW4heRt3v1fHa6np9Ehfeg=="
},
"@napi-rs/wasm-runtime": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz",
- "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==",
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.5.tgz",
+ "integrity": "sha512-kwUxR7J9WLutBbulqg1dfOrMTwhMdXLdcGUhcbCcGwnPLt3gz19uHVdwH1syKVDbE022ZS2vZxOWflFLS0YTjw==",
"optional": true,
"requires": {
"@emnapi/core": "^1.1.0",
@@ -7585,111 +7378,111 @@
}
},
"@node-rs/crc32": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.3.tgz",
- "integrity": "sha512-4UgH0fDRxs0eMSgrUN0UUM4BpIEbVKutiSkFLICwegbgIger3c1t7V3jOYralK0xTBHraW3r59wlESdc3h/nQg==",
- "requires": {
- "@node-rs/crc32-android-arm-eabi": "1.10.3",
- "@node-rs/crc32-android-arm64": "1.10.3",
- "@node-rs/crc32-darwin-arm64": "1.10.3",
- "@node-rs/crc32-darwin-x64": "1.10.3",
- "@node-rs/crc32-freebsd-x64": "1.10.3",
- "@node-rs/crc32-linux-arm-gnueabihf": "1.10.3",
- "@node-rs/crc32-linux-arm64-gnu": "1.10.3",
- "@node-rs/crc32-linux-arm64-musl": "1.10.3",
- "@node-rs/crc32-linux-x64-gnu": "1.10.3",
- "@node-rs/crc32-linux-x64-musl": "1.10.3",
- "@node-rs/crc32-wasm32-wasi": "1.10.3",
- "@node-rs/crc32-win32-arm64-msvc": "1.10.3",
- "@node-rs/crc32-win32-ia32-msvc": "1.10.3",
- "@node-rs/crc32-win32-x64-msvc": "1.10.3"
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.4.tgz",
+ "integrity": "sha512-R1kX9t4Bz1gkNZUcI967bp91+HIoCJa7p11xvBAU9INUvTC1XsOs5mnGq+LE+UOHKUKmE3pOLHLVuoRo4pM3Fg==",
+ "requires": {
+ "@node-rs/crc32-android-arm-eabi": "1.10.4",
+ "@node-rs/crc32-android-arm64": "1.10.4",
+ "@node-rs/crc32-darwin-arm64": "1.10.4",
+ "@node-rs/crc32-darwin-x64": "1.10.4",
+ "@node-rs/crc32-freebsd-x64": "1.10.4",
+ "@node-rs/crc32-linux-arm-gnueabihf": "1.10.4",
+ "@node-rs/crc32-linux-arm64-gnu": "1.10.4",
+ "@node-rs/crc32-linux-arm64-musl": "1.10.4",
+ "@node-rs/crc32-linux-x64-gnu": "1.10.4",
+ "@node-rs/crc32-linux-x64-musl": "1.10.4",
+ "@node-rs/crc32-wasm32-wasi": "1.10.4",
+ "@node-rs/crc32-win32-arm64-msvc": "1.10.4",
+ "@node-rs/crc32-win32-ia32-msvc": "1.10.4",
+ "@node-rs/crc32-win32-x64-msvc": "1.10.4"
}
},
"@node-rs/crc32-android-arm-eabi": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.3.tgz",
- "integrity": "sha512-V9iNJd5ux9I415qOldmxZIHrazYMJNsQ6v+Kq/t9FTQyYqiEeHvRc1FzBh9MT6Uc24InwMhBeC1WVw0BL4VaxQ==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.4.tgz",
+ "integrity": "sha512-xnfEDpxPU/tVFEOTwKF8N3F7NreAk0J/o+JhRiaeS5IYQD7rFsdmgzcWi7MpggzFq5ETNM1z/f+YD9OPump8yg==",
"optional": true
},
"@node-rs/crc32-android-arm64": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.3.tgz",
- "integrity": "sha512-d6xLAhbk5FDGpltAKTFs7hZO/PWpHeihZ/ZCKx2LEVz8jXQEshpo2/ojnfb5FAw6oNzU2H+S/RI5GeCr7paa1Q==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.4.tgz",
+ "integrity": "sha512-4myv2lydjPgw1Vn1AzyTPWwJlU7k7hoP7nsXn0ibQxjIknD/r05G7GJziTFL4T9sAfM3b4MephfgnRDA66gPjA==",
"optional": true
},
"@node-rs/crc32-darwin-arm64": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.3.tgz",
- "integrity": "sha512-IoX6HC4dlKc9BONe7632DADBtiHUiIVD7Bibuj3bGrvOBllN8hvBL9+dDC+/iDdOeuiBKgb0hgL5h2nPIybpzA==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.4.tgz",
+ "integrity": "sha512-x1ggDiiojMpaY4Xf9A5JRLxA3L6ezDiVqtItsXrf8edG/SvlLEmSYPWHpswgKjd4LcGuL3AZrKNcvAi59bCTsQ==",
"optional": true
},
"@node-rs/crc32-darwin-x64": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.3.tgz",
- "integrity": "sha512-JUDGAX/0W4A9ok9p6yuy4fAsBDrq8Db0sUjKLMZ/+P3NHB+Qk+OsZUsEDxP3yhBJxhPq97JpN4bBzgMnkDajpw==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.4.tgz",
+ "integrity": "sha512-PCFt905HFFJvQE68Sc9eE/9LYxoC7hen29+WC0StIK21B2P+NorW7AgUW8kCv28NKDL3sPmIQHxXMWP7rDdRHw==",
"optional": true
},
"@node-rs/crc32-freebsd-x64": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.3.tgz",
- "integrity": "sha512-mbpVcrF9cRJm9ksv2vVaWc/yRsLJErdb90Kusc6I8CgsBxpS6/wI637i0khSl1l10iWrALXjfh6osihixANYhQ==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.4.tgz",
+ "integrity": "sha512-C3KJgyKiWLkFlcrWX04wkVIkSUiD+KCVG+yyLOVXUbQFdCjSbbEQx2MUpM7qcy5ZOAFj4/MZCYdMLgQ6qIgaAw==",
"optional": true
},
"@node-rs/crc32-linux-arm-gnueabihf": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.3.tgz",
- "integrity": "sha512-9MZohdtKzdnb16xRKU76t1UTEJu80dFO8f2/N0geJYNobnT1E6p/+5pqB/G1/H6OnPvjqMuFuLVL4BJVvO4GYQ==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.4.tgz",
+ "integrity": "sha512-YlP3IozMBJmZbytr3/J6fEF5GjWql3p+r3MzY0RctgPf9UdRwG7pjz81SUu6X6kNuDE2eoeKblG0hIPKCd1/Hw==",
"optional": true
},
"@node-rs/crc32-linux-arm64-gnu": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.3.tgz",
- "integrity": "sha512-t1+9ik4awZF+luQp94HsUH8M1lSw8jWjvQiLaHyxMzrM0NY0/oIkhjqdOswXL11Wybkc63eunNwVqGKWfJEi4Q==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.4.tgz",
+ "integrity": "sha512-GETfDmFEmWQaULn+jjs6UJB/IS2olWToqt/PaMKfQwohMFuFEAMiWLue/aXM2Q78hgbTooc4m8iY0djevwXjBA==",
"optional": true
},
"@node-rs/crc32-linux-arm64-musl": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.3.tgz",
- "integrity": "sha512-fsxOk9CpFzyon+vktvCICwhGk0b+tnfEZfPOXa3QDrkyZD7R7cHmpEHGim1BYgJZIJSTBfal5eM11hzBGjJbxw==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.4.tgz",
+ "integrity": "sha512-629LGgGC2/h9HSM0m0sdhCNBap3QWyTQy85RB8AnywsA2R1XqeO7UH4VI5W5y5jFPeVusAkPZhYZJTGmlukZvA==",
"optional": true
},
"@node-rs/crc32-linux-x64-gnu": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.3.tgz",
- "integrity": "sha512-0zIX68FIeqpRMRNvmB5AgONnLMm628+8mV9UDuCRmGppME8WGnY+Dirx+TPUeTJ4f27+in+6CU4u6LJDi9cXmQ==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.4.tgz",
+ "integrity": "sha512-ifpmD7lpkhrgwnn8BMxoH/sgeCG+tAUSBvaQkSHLsKJfg+yZ2X/+Y9JvWA79/WaR8ksD01E0yr/tZ8t+Dp0p0w==",
"optional": true
},
"@node-rs/crc32-linux-x64-musl": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.3.tgz",
- "integrity": "sha512-dKKt0FEm8JDp2MvIu1J7vg8Dc5D5upNO6LAuvfShq9Hy8hYNQWy6f+AF8mSm/c5wWnjn+pv7I1+jvrZIe6wMig==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.4.tgz",
+ "integrity": "sha512-grAfrxC/bIENFnJx2w55NIMg5x8DrMQbumSrturVBmbraozgFO6DaBg/g/pnzQvJbkuhXk920pLFwz5OeuxqzA==",
"optional": true
},
"@node-rs/crc32-wasm32-wasi": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-wasm32-wasi/-/crc32-wasm32-wasi-1.10.3.tgz",
- "integrity": "sha512-oT2V4r0lGZqZHkFLHeXu5Z8C8SutIvBVV0Ws3unz4/KhwmlMcOZYRmSelUSSILbjNLrg4FihCe20tC1VbmaNxA==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-wasm32-wasi/-/crc32-wasm32-wasi-1.10.4.tgz",
+ "integrity": "sha512-nlhG9PlPDsISBC8m2lp5DTRe2uV3Y1UEnFU1lweu/llF9xb8alxQbRE2Vp2rsWJP0s+cwmGx7k3UUOUbnVkbqw==",
"optional": true,
"requires": {
"@napi-rs/wasm-runtime": "^0.2.3"
}
},
"@node-rs/crc32-win32-arm64-msvc": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.3.tgz",
- "integrity": "sha512-IwP/TjDoQycv3ZCbAHV3qS9oH8pmBo7h9RC0chOvKY0g9+RxRl0nXhxcAcmZvJugKdJd+eCOR9fJrWzcwQOgFg==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.4.tgz",
+ "integrity": "sha512-btYP7Xv2NmCkrXDE3dLqgh+2fTgvByu6NRfWV3++md4tCO8C88dCu9uLxW7cr0dt88cpC0f5Yx9pWFbURKA23Q==",
"optional": true
},
"@node-rs/crc32-win32-ia32-msvc": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.3.tgz",
- "integrity": "sha512-YK0qYTHUFqriqAkHyXfe3IpDFfpG5fc2yuNl7MXn4ejklLLyNQPOCSawvPU7ouOBgtQDaAH60yZhFhsXZfwSfQ==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.4.tgz",
+ "integrity": "sha512-o+7Zq9seSWAmoiOmUlXMi44FFwiGkfGihnKIIMKN9DAmQEifHb7Y4RuNnjYpEwjwlOa3HQ8wjQazEhxFFdrbSw==",
"optional": true
},
"@node-rs/crc32-win32-x64-msvc": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.3.tgz",
- "integrity": "sha512-VI9jd8ECiij4YADsfzVuDnhk/UZ5op4RYHyN40yZzwhzcOQ8DDluOeHv91FPHSyMYJEsVsqbr3cqtD6R47xYjw==",
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.4.tgz",
+ "integrity": "sha512-vnqwu4p7o9jvpjq8Xc1zuhw3jSaSkdVSSIFUralgOXKP6m+cbBbuOTeJZpsuf6C/diVNv6YocTBOlkhJqq0oGw==",
"optional": true
},
"@nodelib/fs.scandir": {
@@ -8154,16 +7947,6 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q=="
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw=="
- },
"async": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
@@ -8385,23 +8168,6 @@
"run-applescript": "^7.0.0"
}
},
- "bytewise": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz",
- "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==",
- "requires": {
- "bytewise-core": "^1.2.2",
- "typewise": "^1.0.3"
- }
- },
- "bytewise-core": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz",
- "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==",
- "requires": {
- "typewise-core": "^1.2"
- }
- },
"call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
@@ -9060,14 +8826,6 @@
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
"integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="
},
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
"fast-content-type-parse": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz",
@@ -9391,11 +9149,6 @@
"resolve-pkg-maps": "^1.0.0"
}
},
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA=="
- },
"github-from-package": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
@@ -9703,11 +9456,6 @@
"integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"dev": true
},
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="
- },
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -9783,14 +9531,6 @@
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true
},
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "requires": {
- "isobject": "^3.0.1"
- }
- },
"is-reference": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
@@ -9829,11 +9569,6 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="
- },
"jackspeak": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
@@ -10338,9 +10073,9 @@
},
"dependencies": {
"p-timeout": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz",
- "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ=="
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.3.tgz",
+ "integrity": "sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw=="
}
}
},
@@ -10997,17 +10732,6 @@
"has-property-descriptors": "^1.0.2"
}
},
- "set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- }
- },
"setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
@@ -11117,56 +10841,6 @@
"atomic-sleep": "^1.0.0"
}
},
- "sort-asc": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz",
- "integrity": "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA=="
- },
- "sort-desc": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz",
- "integrity": "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w=="
- },
- "sort-object": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.3.tgz",
- "integrity": "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==",
- "requires": {
- "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"
- }
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "requires": {
- "extend-shallow": "^3.0.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- }
- },
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
"split2": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
@@ -11290,9 +10964,9 @@
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="
},
"styled-map-package": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-1.1.0.tgz",
- "integrity": "sha512-QzaB5nvbuZKteIlGAFVEsxyuXWJQ5bObFntgrk9CZdsEl19ErTexr3vThpvl/ABCWhWYUe8N8kpR6XevxmHlDQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-2.0.0.tgz",
+ "integrity": "sha512-CGjyypTc+SQ97Y2XopJ9yOuB8aQMqAMWSLyUBStnntuomXNzgMUhhS9GOafyBhUJqm01UONWi82tJhXhZ05wWw==",
"requires": {
"@fastify/static": "^7.0.4",
"@mapbox/sphericalmercator": "^1.2.0",
@@ -11521,9 +11195,9 @@
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
},
"tslib": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
- "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA=="
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz",
+ "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA=="
},
"tunnel-agent": {
"version": "0.6.0",
@@ -11553,19 +11227,6 @@
"integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
"dev": true
},
- "typewise": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz",
- "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==",
- "requires": {
- "typewise-core": "^1.2.0"
- }
- },
- "typewise-core": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz",
- "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg=="
- },
"undici": {
"version": "6.19.8",
"resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz",
@@ -11576,17 +11237,6 @@
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
"integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA=="
},
- "union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- }
- },
"universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
diff --git a/src/backend/package.json b/src/backend/package.json
index 672b8405b..6fa339eb2 100644
--- a/src/backend/package.json
+++ b/src/backend/package.json
@@ -13,8 +13,8 @@
"author": "Digital Democracy",
"license": "MIT",
"dependencies": {
- "@comapeo/core": "2.0.0",
- "@comapeo/ipc": "2.0.0",
+ "@comapeo/core": "2.0.1",
+ "@comapeo/ipc": "2.0.2",
"@mapeo/default-config": "5.0.0",
"debug": "^4.3.4"
},
diff --git a/src/backend/src/app.js b/src/backend/src/app.js
index 0e1aa832d..7fdd92b38 100644
--- a/src/backend/src/app.js
+++ b/src/backend/src/app.js
@@ -2,9 +2,6 @@ import debug from 'debug'
import { join } from 'path'
import { mkdirSync } from 'fs'
import { createRequire } from 'module'
-const require = createRequire(import.meta.url)
-/** @type {import('../types/rn-bridge.js')} */
-const rnBridge = require('rn-bridge')
import { MapeoManager, FastifyController } from '@comapeo/core'
import { createMapeoServer } from '@comapeo/ipc'
import Fastify from 'fastify'
@@ -12,9 +9,16 @@ import Fastify from 'fastify'
import MessagePortLike from './message-port-like.js'
import { ServerStatus } from './status.js'
+const require = createRequire(import.meta.url)
+
+/** @type {import('../types/rn-bridge.js')} */
+const rnBridge = require('rn-bridge')
+
// Do not touch these!
const DB_DIR_NAME = 'sqlite-dbs'
const CORE_STORAGE_DIR_NAME = 'core-storage'
+const CUSTOM_MAPS_DIR_NAME = 'maps'
+const DEFAULT_CUSTOM_MAP_FILE_NAME = 'default.smp'
const MAPBOX_ACCESS_TOKEN =
'pk.eyJ1IjoiZGlnaWRlbSIsImEiOiJjbHRyaGh3cm0wN3l4Mmpsam95NDI3c2xiIn0.daq2iZFZXQ08BD0VZWAGUw'
@@ -64,9 +68,11 @@ export async function init({
const privateStorageDir = rnBridge.app.datadir()
const dbDir = join(privateStorageDir, DB_DIR_NAME)
const indexDir = join(privateStorageDir, CORE_STORAGE_DIR_NAME)
+ const customMapsDir = join(privateStorageDir, CUSTOM_MAPS_DIR_NAME)
mkdirSync(dbDir, { recursive: true })
mkdirSync(indexDir, { recursive: true })
+ mkdirSync(customMapsDir, { recursive: true })
const fastify = Fastify()
const fastifyController = new FastifyController({ fastify })
@@ -80,6 +86,7 @@ export async function init({
fastify,
defaultConfigPath,
defaultOnlineStyleUrl: DEFAULT_ONLINE_MAP_STYLE_URL,
+ customMapPath: join(customMapsDir, DEFAULT_CUSTOM_MAP_FILE_NAME),
})
// Don't await, methods that use the server will await this internally
diff --git a/src/frontend/Navigation/Stack/AppScreens.tsx b/src/frontend/Navigation/Stack/AppScreens.tsx
index 3bb005455..54b9a51b4 100644
--- a/src/frontend/Navigation/Stack/AppScreens.tsx
+++ b/src/frontend/Navigation/Stack/AppScreens.tsx
@@ -80,6 +80,14 @@ import {
Audio,
navigationOptions as audioNavigationOptions,
} from '../../screens/Audio/index.tsx';
+import {
+ createNavigationOptions as createMapManagementNavigationOptions,
+ MapManagementScreen,
+} from '../../screens/Settings/MapManagement';
+import {
+ createNavigationOptions as createBackgroundMapsNavigationOptions,
+ BackgroundMapsScreen,
+} from '../../screens/Settings/MapManagement/BackgroundMaps.tsx';
export const TAB_BAR_HEIGHT = 70;
@@ -314,13 +322,11 @@ export const createDefaultScreenGroup = ({
component={TrackEdit}
options={{headerTitle: intl(TrackEdit.navTitle)}}
/>
-
-
)}
+
+
+
+
{process.env.EXPO_PUBLIC_FEATURE_TEST_DATA_UI && (
[0]) => {
+ return selectFile(opts);
+ },
+ });
+}
diff --git a/src/frontend/hooks/refreshTokenStore.ts b/src/frontend/hooks/refreshTokenStore.ts
new file mode 100644
index 000000000..92da3c021
--- /dev/null
+++ b/src/frontend/hooks/refreshTokenStore.ts
@@ -0,0 +1,42 @@
+import {create} from 'zustand';
+
+interface RefreshTokenStoreSlice {
+ value: number;
+ actions: {
+ refresh: () => void;
+ };
+}
+
+/**
+ * Factory for creating a bound store instance and return its relevant hooks,
+ * which allows the creation of isolated stores to account for contextual needs.
+ */
+export function createRefreshTokenStore(initialValue?: number) {
+ const useRefreshTokenStore = create(set => {
+ return {
+ value: typeof initialValue === 'number' ? initialValue : Date.now(),
+ actions: {
+ refresh: () => {
+ set({value: Date.now()});
+ },
+ },
+ };
+ });
+
+ return {
+ useRefreshToken: () => {
+ return useRefreshTokenStore(valueSelector);
+ },
+ useRefreshTokenActions: () => {
+ return useRefreshTokenStore(actionsSelector);
+ },
+ };
+}
+
+function valueSelector(state: RefreshTokenStoreSlice) {
+ return state.value;
+}
+
+function actionsSelector(state: RefreshTokenStoreSlice) {
+ return state.actions;
+}
diff --git a/src/frontend/hooks/server/mapStyleUrl.ts b/src/frontend/hooks/server/mapStyleUrl.ts
deleted file mode 100644
index 077d355ec..000000000
--- a/src/frontend/hooks/server/mapStyleUrl.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import {useQuery} from '@tanstack/react-query';
-
-import {useApi} from '../../contexts/ApiContext';
-
-export const MAP_STYLE_URL_KEY = 'map_style_url';
-
-export function useMapStyleUrl() {
- const api = useApi();
-
- return useQuery({
- queryKey: [MAP_STYLE_URL_KEY],
- queryFn: () => {
- return api.getMapStyleJsonUrl();
- },
- });
-}
diff --git a/src/frontend/hooks/server/maps.ts b/src/frontend/hooks/server/maps.ts
new file mode 100644
index 000000000..a9efb8fd8
--- /dev/null
+++ b/src/frontend/hooks/server/maps.ts
@@ -0,0 +1,124 @@
+import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query';
+import * as FileSystem from 'expo-file-system';
+import * as v from 'valibot';
+
+import {useApi} from '../../contexts/ApiContext';
+import {DOCUMENT_DIRECTORY} from '../../lib/file-system';
+
+import {createRefreshTokenStore} from '../refreshTokenStore';
+import noop from '../../lib/noop';
+
+export const MAPS_QUERY_KEY = 'maps';
+
+const CUSTOM_MAPS_DIRECTORY = new URL('maps', DOCUMENT_DIRECTORY).href;
+const DEFAULT_CUSTOM_MAP_FILE_PATH = CUSTOM_MAPS_DIRECTORY + '/default.smp';
+
+const CustomMapInfoSchema = v.object({
+ created: v.pipe(
+ v.string(),
+ v.isoTimestamp(),
+ v.transform(input => new Date(input)),
+ ),
+ name: v.string(),
+ size: v.pipe(v.number(), v.minValue(0)),
+});
+
+export type CustomMapInfo = v.InferOutput;
+
+const {useRefreshToken, useRefreshTokenActions} = createRefreshTokenStore();
+
+export function useMapStyleJsonUrl() {
+ const api = useApi();
+ const refreshToken = useRefreshToken();
+
+ return useQuery({
+ queryKey: [MAPS_QUERY_KEY, 'stylejson-url', refreshToken],
+ queryFn: async () => {
+ let result = await api.getMapStyleJsonUrl();
+ return result + `?refresh_token=${refreshToken}`;
+ },
+ });
+}
+
+export function useImportCustomMapFile() {
+ const queryClient = useQueryClient();
+ const api = useApi();
+ const {refresh} = useRefreshTokenActions();
+
+ return useMutation({
+ mutationFn: async (opts: {uri: string}) => {
+ await FileSystem.moveAsync({
+ from: opts.uri,
+ to: DEFAULT_CUSTOM_MAP_FILE_PATH,
+ });
+
+ const styleUrl = await api.getMapStyleJsonUrl();
+
+ const response = await fetchCustomMapInfo(styleUrl);
+
+ if (!response.ok) {
+ FileSystem.deleteAsync(DEFAULT_CUSTOM_MAP_FILE_PATH, {
+ idempotent: true,
+ }).catch(noop);
+
+ throw new Error('Invalid map file');
+ }
+ },
+ onSuccess: () => {
+ refresh();
+ queryClient.invalidateQueries({
+ queryKey: [MAPS_QUERY_KEY],
+ });
+ },
+ });
+}
+
+export function useRemoveCustomMapFile() {
+ const queryClient = useQueryClient();
+ const {refresh} = useRefreshTokenActions();
+
+ return useMutation({
+ mutationFn: () => {
+ return FileSystem.deleteAsync(DEFAULT_CUSTOM_MAP_FILE_PATH, {
+ idempotent: true,
+ });
+ },
+ onSuccess: () => {
+ refresh();
+ queryClient.invalidateQueries({
+ queryKey: [MAPS_QUERY_KEY],
+ });
+ },
+ });
+}
+
+/**
+ * Returns `null` if no viable map is found. Throws an error if a detected map is invalid.
+ */
+export function useGetCustomMapInfo() {
+ const api = useApi();
+
+ return useQuery({
+ queryKey: [MAPS_QUERY_KEY, 'custom', 'info'],
+ queryFn: async () => {
+ const styleUrl = await api.getMapStyleJsonUrl();
+
+ const response = await fetchCustomMapInfo(styleUrl);
+
+ if (response.status === 404) {
+ return null;
+ }
+
+ if (!response.ok) {
+ throw new Error(`Cannot get custom map info: ${response.statusText}`);
+ }
+
+ return v.parse(CustomMapInfoSchema, await response.json());
+ },
+ });
+}
+
+async function fetchCustomMapInfo(baseUrl: string) {
+ const infoUrl = new URL('/maps/custom/info', baseUrl).href;
+ return fetch(infoUrl);
+}
diff --git a/src/frontend/lib/bytesToMegabytes.ts b/src/frontend/lib/bytesToMegabytes.ts
new file mode 100644
index 000000000..0ab82039c
--- /dev/null
+++ b/src/frontend/lib/bytesToMegabytes.ts
@@ -0,0 +1,3 @@
+export function bytesToMegabytes(bytes: number) {
+ return bytes / 2 ** 20;
+}
diff --git a/src/frontend/lib/file-system.ts b/src/frontend/lib/file-system.ts
index 6f36e7f30..d23307e9e 100644
--- a/src/frontend/lib/file-system.ts
+++ b/src/frontend/lib/file-system.ts
@@ -1,3 +1,45 @@
+import * as FileSystem from 'expo-file-system';
+import * as DocumentPicker from 'expo-document-picker';
+
+// @ts-expect-error Only null when on web https://github.com/expo/expo/issues/5558
+export const DOCUMENT_DIRECTORY: string = FileSystem.documentDirectory;
+
export function convertFileUriToPosixPath(fileUri: string) {
return fileUri.replace(/^file:\/\//, '');
}
+
+// TODO: Some overlap with selectFile() from lib/utils but fixes some usage limitations. Ideally use this for everything
+export async function selectFile(opts: {
+ copyToCache?: boolean;
+ mimeFilters?: Array;
+ extensionFilters?: Array;
+}) {
+ const documentResult = await DocumentPicker.getDocumentAsync({
+ type: opts.mimeFilters,
+ copyToCacheDirectory: opts.copyToCache,
+ multiple: false,
+ });
+
+ if (documentResult.canceled) return null;
+
+ const asset = documentResult.assets[0];
+
+ if (!asset) {
+ throw new Error();
+ }
+
+ const hasValidExtension = opts.extensionFilters
+ ? opts.extensionFilters.some(extension =>
+ asset.uri.endsWith(`.${extension}`),
+ )
+ : true;
+
+ if (!hasValidExtension) {
+ FileSystem.deleteAsync(asset.uri).catch(err => {
+ console.log(err);
+ });
+ throw new Error('Invalid extension');
+ }
+
+ return asset;
+}
diff --git a/src/frontend/screens/MapScreen/index.tsx b/src/frontend/screens/MapScreen/index.tsx
index 7468cb0cf..d7b6696c0 100644
--- a/src/frontend/screens/MapScreen/index.tsx
+++ b/src/frontend/screens/MapScreen/index.tsx
@@ -20,7 +20,7 @@ import {GPSPermissionsModal} from './GPSPermissions/GPSPermissionsModal';
import {CurrentTrackMapLayer} from './CurrentTrack/CurrrentTrackMapLayer';
import {UserLocation} from './UserLocation';
import {useSharedLocationContext} from '../../contexts/SharedLocationContext';
-import {useMapStyleUrl} from '../../hooks/server/mapStyleUrl';
+import {useMapStyleJsonUrl} from '../../hooks/server/maps.ts';
import {TracksMapLayer} from './TracksMapLayer';
import {assert} from '../../lib/assert.ts';
@@ -49,7 +49,7 @@ export const MapScreen = () => {
const locationServicesEnabled =
!!locationProviderStatus?.locationServicesEnabled;
- const styleUrlQuery = useMapStyleUrl();
+ const styleUrlQuery = useMapStyleJsonUrl();
const handleAddPress = () => {
newDraft();
diff --git a/src/frontend/screens/Observation/InsetMapView.tsx b/src/frontend/screens/Observation/InsetMapView.tsx
index 55379a8c7..91b07510c 100644
--- a/src/frontend/screens/Observation/InsetMapView.tsx
+++ b/src/frontend/screens/Observation/InsetMapView.tsx
@@ -4,7 +4,7 @@ import {View, Text, StyleSheet, Dimensions, Image} from 'react-native';
import {BLACK, WHITE} from '../../lib/styles';
import {usePersistedSettings} from '../../hooks/persistedState/usePersistedSettings';
import {FormattedCoords} from '../../sharedComponents/FormattedData';
-import {useMapStyleUrl} from '../../hooks/server/mapStyleUrl';
+import {useMapStyleJsonUrl} from '../../hooks/server/maps';
const MAP_HEIGHT = 175;
const ICON_OFFSET = {x: 22, y: 21};
@@ -16,7 +16,7 @@ type MapProps = {
export const InsetMapView = React.memo(({lon, lat}: MapProps) => {
const format = usePersistedSettings(store => store.coordinateFormat);
- const styleUrlQuery = useMapStyleUrl();
+ const styleUrlQuery = useMapStyleJsonUrl();
return (
diff --git a/src/frontend/screens/Settings/AppSettings/index.tsx b/src/frontend/screens/Settings/AppSettings/index.tsx
index 38312529b..8497661f6 100644
--- a/src/frontend/screens/Settings/AppSettings/index.tsx
+++ b/src/frontend/screens/Settings/AppSettings/index.tsx
@@ -30,6 +30,14 @@ const m = defineMessages({
id: 'Screens.Settings.AppSettings.coordinateSystemDesc',
defaultMessage: 'UTM,Lat/Lon,DMS',
},
+ mapManagement: {
+ id: 'Screens.Settings.AppSettings.mapManagement',
+ defaultMessage: 'Map Management',
+ },
+ mapManagementDesc: {
+ id: 'Screens.Settings.AppSettings.mapManagementDesc',
+ defaultMessage: 'Backgrounds, Map Data',
+ },
});
export const AppSettings: NativeNavigationComponent<'AppSettings'> = ({
@@ -57,6 +65,17 @@ export const AppSettings: NativeNavigationComponent<'AppSettings'> = ({
secondary={}
/>
+ {
+ navigation.navigate('MapManagement');
+ }}
+ testID="mapManagementButton">
+
+ }
+ secondary={}
+ />
+
);
diff --git a/src/frontend/screens/Settings/MapManagement/BackgroundMaps.tsx b/src/frontend/screens/Settings/MapManagement/BackgroundMaps.tsx
new file mode 100644
index 000000000..883484c38
--- /dev/null
+++ b/src/frontend/screens/Settings/MapManagement/BackgroundMaps.tsx
@@ -0,0 +1,343 @@
+import {type NativeStackNavigationOptions} from '@react-navigation/native-stack';
+import * as FileSystem from 'expo-file-system';
+import React from 'react';
+import {defineMessages, useIntl, type MessageDescriptor} from 'react-intl';
+import {ScrollView, StyleSheet, View} from 'react-native';
+import MaterialIcon from 'react-native-vector-icons/MaterialIcons';
+
+import {useSelectFile} from '../../../hooks/files';
+import {
+ useGetCustomMapInfo,
+ useImportCustomMapFile,
+ useRemoveCustomMapFile,
+} from '../../../hooks/server/maps';
+import ErrorSvg from '../../../images/Error.svg';
+import GreenCheckSvg from '../../../images/GreenCheck.svg';
+import noop from '../../../lib/noop';
+import {DARK_GREY, RED, WHITE} from '../../../lib/styles';
+import {
+ BottomSheetModal,
+ BottomSheetModalContent,
+ useBottomSheetModal,
+} from '../../../sharedComponents/BottomSheetModal';
+import {Button} from '../../../sharedComponents/Button';
+import {ErrorBottomSheet} from '../../../sharedComponents/ErrorBottomSheet';
+import {Loading} from '../../../sharedComponents/Loading';
+import {Text} from '../../../sharedComponents/Text';
+import {type NativeRootNavigationProps} from '../../../sharedTypes/navigation';
+import {ChooseMapFile} from './ChooseMapFile';
+import {CustomMapDetails} from './CustomMapDetails';
+
+const m = defineMessages({
+ screenTitle: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.screenTitle',
+ defaultMessage: 'Background Maps',
+ },
+ about: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.about',
+ defaultMessage: 'About Custom Map',
+ },
+ description1: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.description1',
+ defaultMessage:
+ 'Adding a custom map will enable you to see a map when you are offline.',
+ },
+ // TODO: Merge into description1 when https://github.com/digidem/comapeo-mobile/issues/669 is addressed
+ description2: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.description2',
+ defaultMessage:
+ 'Your custom map is not shared with other devices in your project.',
+ },
+
+ customMapInfoLoadError: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.customMapInfoLoadError',
+ defaultMessage:
+ 'Could not get custom map information from file. Please remove it or choose a different file.',
+ },
+ removeMapFile: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.removeMapFile',
+ defaultMessage: 'Remove Map File',
+ },
+
+ customMapAddedTitle: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.customMapAddedTitle',
+ defaultMessage: 'Custom Map Added',
+ },
+ customMapAddedDescription: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.customMapAddedDescription',
+ defaultMessage:
+ 'You will see this map when you are offline, but you will not see a map outside the area defined in your custom map.',
+ },
+ close: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.close',
+ defaultMessage: 'Close',
+ },
+
+ deleteCustomMapTitle: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.deleteCustomMapTitle',
+ defaultMessage: 'Delete Custom Map?',
+ },
+ deleteCustomMapDescription: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.deleteCustomMapDescription',
+ defaultMessage:
+ 'This will delete the map and its offline areas. No collected observation data will be deleted.',
+ },
+ // TODO: Merge into deleteCustomMapDescription when https://github.com/digidem/comapeo-mobile/issues/669 is addressed
+ cannotBeUndone: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.cannotBeUndone',
+ defaultMessage: 'This cannot be undone.',
+ },
+ deleteMapButtonText: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.deleteMapButtonText',
+ defaultMessage: 'Delete Map',
+ },
+
+ importErrorTitle: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.importErrorTitle',
+ defaultMessage: 'Import Error',
+ },
+ importErrorDesciption: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.importErrorDescription',
+ defaultMessage: 'Unable to import the file. Please go back and try again.',
+ },
+});
+
+export function createNavigationOptions({
+ intl,
+}: {
+ intl: (title: MessageDescriptor) => string;
+}): (
+ props: NativeRootNavigationProps<'BackgroundMaps'>,
+) => NativeStackNavigationOptions {
+ return () => {
+ return {
+ title: intl(m.screenTitle),
+ };
+ };
+}
+
+export function BackgroundMapsScreen() {
+ const {formatMessage: t} = useIntl();
+
+ const mapAddedBottomSheet = useBottomSheetModal({openOnMount: false});
+ const removeMapBottomSheet = useBottomSheetModal({openOnMount: false});
+
+ const selectFileMutation = useSelectFile();
+ const importCustomMapMutation = useImportCustomMapFile();
+ const removeCustomMapMutation = useRemoveCustomMapFile();
+ const customMapInfoQuery = useGetCustomMapInfo();
+
+ return (
+ <>
+
+ {t(m.about)}
+
+ {t(m.description1)}
+ {t(m.description2)}
+
+
+ {
+ selectFileMutation.mutate(
+ {
+ extensionFilters: ['smp'],
+ },
+ {
+ onSuccess: asset => {
+ if (!asset) return;
+
+ importCustomMapMutation.mutate(
+ {
+ uri: asset.uri,
+ },
+ {
+ onError: () => {
+ FileSystem.deleteAsync(asset.uri, {
+ idempotent: true,
+ }).catch(noop);
+ },
+ onSuccess: () => {
+ mapAddedBottomSheet.openSheet();
+ },
+ },
+ );
+ },
+ },
+ );
+ }}
+ onRemoveMap={() => {
+ removeMapBottomSheet.openSheet();
+ }}
+ />
+
+ {customMapInfoQuery.status === 'error' && (
+ <>
+
+ {t(m.customMapInfoLoadError)}
+
+
+ >
+ )}
+
+
+
+ }
+ title={t(m.deleteCustomMapTitle)}
+ description={
+ t(m.deleteCustomMapDescription) + '\n\n' + t(m.cannotBeUndone)
+ }
+ buttonConfigs={[
+ {
+ dangerous: true,
+ variation: 'filled',
+ text: t(m.deleteMapButtonText),
+ icon: ,
+ onPress: () => {
+ removeCustomMapMutation.mutate();
+ removeMapBottomSheet.closeSheet();
+ },
+ },
+ {
+ variation: 'outlined',
+ text: t(m.close),
+ onPress: () => {
+ removeMapBottomSheet.closeSheet();
+ },
+ },
+ ]}
+ />
+
+
+
+
+ }
+ title={t(m.customMapAddedTitle)}
+ description={t(m.customMapAddedDescription)}
+ buttonConfigs={[
+ {
+ variation: 'outlined',
+ text: t(m.close),
+ onPress: () => {
+ mapAddedBottomSheet.closeSheet();
+ },
+ },
+ ]}
+ />
+
+
+ {
+ if (removeCustomMapMutation.error) {
+ removeCustomMapMutation.reset();
+ }
+ if (selectFileMutation.error) {
+ selectFileMutation.reset();
+ }
+ if (importCustomMapMutation.error) {
+ importCustomMapMutation.reset();
+ }
+ }}
+ />
+ >
+ );
+}
+
+function CustomMapInfoSection({
+ onChooseFile,
+ onRemoveMap,
+}: {
+ onChooseFile: () => void;
+ onRemoveMap: () => void;
+}) {
+ const customMapInfoQuery = useGetCustomMapInfo();
+
+ if (customMapInfoQuery.status === 'pending') {
+ return ;
+ }
+
+ if (customMapInfoQuery.data) {
+ return (
+
+ );
+ }
+
+ return customMapInfoQuery.isFetching ? (
+
+ ) : (
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ paddingHorizontal: 20,
+ paddingVertical: 40,
+ gap: 36,
+ },
+ descriptionContainer: {
+ gap: 20,
+ },
+ aboutText: {
+ textAlign: 'center',
+ fontWeight: 'bold',
+ fontSize: 36,
+ color: DARK_GREY,
+ },
+ infoLoadErrorText: {
+ textAlign: 'center',
+ color: RED,
+ fontSize: 20,
+ },
+ removeMapFileButton: {
+ backgroundColor: RED,
+ },
+ removeMapFileButtonText: {
+ fontWeight: '700',
+ letterSpacing: 0.5,
+ fontSize: 18,
+ color: RED,
+ },
+});
diff --git a/src/frontend/screens/Settings/MapManagement/ChooseMapFile.tsx b/src/frontend/screens/Settings/MapManagement/ChooseMapFile.tsx
new file mode 100644
index 000000000..5cb284431
--- /dev/null
+++ b/src/frontend/screens/Settings/MapManagement/ChooseMapFile.tsx
@@ -0,0 +1,65 @@
+import React from 'react';
+import {defineMessages, useIntl} from 'react-intl';
+import {StyleSheet, View} from 'react-native';
+
+import {MEDIUM_GREY, RED} from '../../../lib/styles';
+import {Button} from '../../../sharedComponents/Button';
+import {Text} from '../../../sharedComponents/Text';
+import {DownloadIcon} from '../../../sharedComponents/icons';
+
+const m = defineMessages({
+ chooseFile: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.ChooseMapFile.chooseFile',
+ defaultMessage: 'Choose File',
+ },
+ acceptedFileTypes: {
+ id: 'screens.Settings.MapManagement.BackgroundMaps.ChooseMapFile.acceptedFileTypes',
+ defaultMessage: 'Accepted file types are .smp',
+ },
+});
+
+export function ChooseMapFile({onChooseFile}: {onChooseFile: () => void}) {
+ const {formatMessage: t} = useIntl();
+
+ return (
+
+
+ {t(m.acceptedFileTypes)}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ gap: 20,
+ },
+ buttonContentContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: 12,
+ },
+ buttonTextBase: {
+ fontWeight: '700',
+ letterSpacing: 0.5,
+ fontSize: 18,
+ },
+ asteriskText: {
+ fontSize: 18,
+ color: RED,
+ },
+ fileTypeText: {
+ color: MEDIUM_GREY,
+ fontSize: 14,
+ textAlign: 'center',
+ },
+});
diff --git a/src/frontend/screens/Settings/MapManagement/CustomMapDetails.tsx b/src/frontend/screens/Settings/MapManagement/CustomMapDetails.tsx
new file mode 100644
index 000000000..3eb5edfd1
--- /dev/null
+++ b/src/frontend/screens/Settings/MapManagement/CustomMapDetails.tsx
@@ -0,0 +1,153 @@
+import React from 'react';
+import {FormattedDate, defineMessages, useIntl} from 'react-intl';
+import {StyleSheet, View} from 'react-native';
+import {TouchableOpacity} from 'react-native-gesture-handler';
+
+import {bytesToMegabytes} from '../../../lib/bytesToMegabytes';
+import {BLACK, MEDIUM_GREY, RED, VERY_LIGHT_GREY} from '../../../lib/styles';
+import {Loading} from '../../../sharedComponents/Loading';
+import {Text} from '../../../sharedComponents/Text';
+
+const m = defineMessages({
+ mapNameColumn: {
+ id: 'screens.Settings.MapManagement.MapsList.CustomMapDetails.mapNameColumn',
+ defaultMessage: 'Map Name',
+ },
+ dateAddedColumn: {
+ id: 'screens.Settings.MapManagement.MapsList.CustomMapDetails.dateAdded',
+ defaultMessage: 'Date Added',
+ },
+ removeMap: {
+ id: 'screens.Settings.MapManagement.MapsList.CustomMapDetails.removeMap',
+ defaultMessage: 'Remove Map',
+ },
+ sizeInMegabytes: {
+ id: 'screens.Settings.MapManagement.MapsList.CustomMapDetails.sizeInMegabytes',
+ defaultMessage: '{value} MB',
+ },
+});
+
+export function CustomMapDetails({
+ dateAdded,
+ loading,
+ name,
+ onRemove,
+ size,
+}: {
+ dateAdded: Date;
+ loading?: boolean;
+ name: string;
+ onRemove: () => void;
+ size?: number;
+}) {
+ const {formatMessage: t} = useIntl();
+
+ const calculatedSize = size ? bytesToMegabytes(size).toFixed(0) : undefined;
+ const displayedSize =
+ calculatedSize === undefined
+ ? undefined
+ : parseInt(calculatedSize, 10) < 1
+ ? '<1'
+ : calculatedSize;
+
+ return (
+
+
+ {t(m.mapNameColumn)}
+ {t(m.dateAddedColumn)}
+
+
+
+
+ {name}
+
+ {displayedSize !== undefined &&
+ t(m.sizeInMegabytes, {
+ value: displayedSize,
+ })}
+
+
+
+
+
+
+
+
+
+
+ {t(m.removeMap)}
+
+
+ {loading && }
+
+
+ );
+}
+
+function LoadingOverlay() {
+ return (
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ rootContainer: {
+ gap: 12,
+ },
+ columnHeadersContainer: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ },
+ cardContainer: {
+ paddingVertical: 20,
+ paddingHorizontal: 10,
+ borderRadius: 3,
+ borderColor: VERY_LIGHT_GREY,
+ borderWidth: 2,
+ gap: 36,
+ },
+ cardRow: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ },
+ columnTitleText: {
+ color: MEDIUM_GREY,
+ },
+ dateAddedText: {
+ color: MEDIUM_GREY,
+ },
+ sizeText: {
+ color: MEDIUM_GREY,
+ },
+ removeMapText: {
+ fontWeight: 'bold',
+ color: RED,
+ },
+ nameText: {
+ fontWeight: 'bold',
+ fontSize: 18,
+ },
+ columnLeft: {
+ flex: 1,
+ alignItems: 'flex-start',
+ },
+ columnRight: {
+ flex: 1,
+ alignItems: 'flex-end',
+ },
+ overlay: {
+ position: 'absolute',
+ left: 0,
+ right: 0,
+ top: 0,
+ bottom: 0,
+ },
+});
diff --git a/src/frontend/screens/Settings/MapManagement/index.tsx b/src/frontend/screens/Settings/MapManagement/index.tsx
new file mode 100644
index 000000000..cad00b4f8
--- /dev/null
+++ b/src/frontend/screens/Settings/MapManagement/index.tsx
@@ -0,0 +1,50 @@
+import React from 'react';
+import {type NativeStackNavigationOptions} from '@react-navigation/native-stack';
+import {defineMessages, useIntl, type MessageDescriptor} from 'react-intl';
+import {ScrollView} from 'react-native';
+
+import {List, ListItem, ListItemText} from '../../../sharedComponents/List';
+import {type NativeRootNavigationProps} from '../../../sharedTypes/navigation';
+
+const m = defineMessages({
+ screenTitle: {
+ id: 'screens.Settings.MapManagement.screenTitle',
+ defaultMessage: 'Map Management',
+ },
+ backgroundMaps: {
+ id: 'screens.Settings.MapManagement.backgroundMaps',
+ defaultMessage: 'Background Maps',
+ },
+});
+
+export function MapManagementScreen({
+ navigation,
+}: NativeRootNavigationProps<'MapManagement'>) {
+ const {formatMessage: t} = useIntl();
+ return (
+
+
+ {
+ navigation.navigate('BackgroundMaps');
+ }}>
+
+
+
+
+ );
+}
+
+export function createNavigationOptions({
+ intl,
+}: {
+ intl: (title: MessageDescriptor) => string;
+}): (
+ props: NativeRootNavigationProps<'MapManagement'>,
+) => NativeStackNavigationOptions {
+ return () => {
+ return {
+ title: intl(m.screenTitle),
+ };
+ };
+}
diff --git a/src/frontend/sharedComponents/icons/index.tsx b/src/frontend/sharedComponents/icons/index.tsx
index b72b11a13..ac59dc396 100644
--- a/src/frontend/sharedComponents/icons/index.tsx
+++ b/src/frontend/sharedComponents/icons/index.tsx
@@ -2,6 +2,8 @@ import React from 'react';
import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons';
import MaterialIcon from 'react-native-vector-icons/MaterialIcons';
import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome';
+import AntDesignIcon from 'react-native-vector-icons/AntDesign';
+
import {Image} from 'react-native';
import {Circle} from './Circle';
@@ -212,3 +214,7 @@ export const LocationFollowingIcon = ({
export const StopIcon = ({color = WHITE, size = 30}: FontIconProps) => (
);
+
+export function DownloadIcon(props: FontIconProps) {
+ return ;
+}
diff --git a/src/frontend/sharedTypes/navigation.ts b/src/frontend/sharedTypes/navigation.ts
index 7742e421c..2fdffe80b 100644
--- a/src/frontend/sharedTypes/navigation.ts
+++ b/src/frontend/sharedTypes/navigation.ts
@@ -61,14 +61,6 @@ export type RootStackParamsList = {
Security: undefined;
DirectionalArrow: undefined;
P2pUpgrade: undefined;
- MapSettings: undefined;
- BackgroundMaps: undefined;
- BackgroundMapInfo: {
- bytesStored: number;
- id: string;
- styleUrl: string;
- name: string;
- };
ObservationFields: {question: number};
ObservationCreate: undefined;
BGMapsSettings: undefined;
@@ -103,6 +95,8 @@ export type RootStackParamsList = {
SettingsPrivacyPolicy: undefined;
HowToLeaveProject: undefined;
Audio: undefined;
+ MapManagement: undefined;
+ BackgroundMaps: undefined;
};
export type OnboardingParamsList = {