From eea4eb9849db581c97d9482f66e266ae2497eb5d Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Tue, 8 Aug 2023 22:12:28 -0700 Subject: [PATCH 01/64] chore: install mapbox client for react native --- package-lock.json | 391 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 5 +- 2 files changed, 394 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index df746a65f3ae..7e19183565e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,6 +33,7 @@ "@react-navigation/native": "6.1.6", "@react-navigation/stack": "6.3.16", "@react-ng/bounds-observer": "^0.2.1", + "@rnmapbox/maps": "^10.0.11", "@ua/react-native-airship": "^15.2.6", "awesome-phonenumber": "^5.4.0", "babel-plugin-transform-remove-console": "^6.9.4", @@ -9388,6 +9389,34 @@ "loose-envify": "^1.1.0" } }, + "node_modules/@rnmapbox/maps": { + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.0.11.tgz", + "integrity": "sha512-CqaAOEV2nYjZzAwSd7RceGIVVIyDO0G/Vqdvgen20LDuejX9N9Yqw7BrMH8MgIH3FNFxtjwyXiw6aVtybpke0w==", + "dependencies": { + "@turf/along": "6.5.0", + "@turf/distance": "6.5.0", + "@turf/helpers": "6.5.0", + "@turf/length": "6.5.0", + "@turf/nearest-point-on-line": "6.5.0", + "@types/geojson": "^7946.0.7", + "debounce": "^1.2.0" + }, + "peerDependencies": { + "expo": ">=47.0.0", + "mapbox-gl": "^2.9.0", + "react": ">=16.6.1", + "react-native": ">=0.59.9" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + }, + "mapbox-gl": { + "optional": true + } + } + }, "node_modules/@sentry/browser": { "version": "7.11.1", "license": "BSD-3-Clause", @@ -19722,6 +19751,157 @@ "node": ">=10.13.0" } }, + "node_modules/@turf/along": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/along/-/along-6.5.0.tgz", + "integrity": "sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==", + "dependencies": { + "@turf/bearing": "^6.5.0", + "@turf/destination": "^6.5.0", + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", + "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bearing": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.5.0.tgz", + "integrity": "sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==", + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/destination": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.5.0.tgz", + "integrity": "sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==", + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/distance": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", + "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/invariant": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", + "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", + "dependencies": { + "@turf/helpers": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/length": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/length/-/length-6.5.0.tgz", + "integrity": "sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==", + "dependencies": { + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-intersect": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz", + "integrity": "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==", + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/line-segment": "^6.5.0", + "@turf/meta": "^6.5.0", + "geojson-rbush": "3.x" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-segment": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz", + "integrity": "sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==", + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/meta": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/meta": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", + "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", + "dependencies": { + "@turf/helpers": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-point-on-line": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-6.5.0.tgz", + "integrity": "sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==", + "dependencies": { + "@turf/bearing": "^6.5.0", + "@turf/destination": "^6.5.0", + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/line-intersect": "^6.5.0", + "@turf/meta": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, "node_modules/@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", @@ -19910,6 +20090,11 @@ "@types/node": "*" } }, + "node_modules/@types/geojson": { + "version": "7946.0.10", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" + }, "node_modules/@types/glob": { "version": "7.2.0", "dev": true, @@ -26023,6 +26208,11 @@ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz", "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==" }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + }, "node_modules/debug": { "version": "4.3.4", "license": "MIT", @@ -30380,6 +30570,23 @@ "node": ">=6.9.0" } }, + "node_modules/geojson-rbush": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz", + "integrity": "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==", + "dependencies": { + "@turf/bbox": "*", + "@turf/helpers": "6.x", + "@turf/meta": "6.x", + "@types/geojson": "7946.0.8", + "rbush": "^3.0.1" + } + }, + "node_modules/geojson-rbush/node_modules/@types/geojson": { + "version": "7946.0.8", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", + "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" + }, "node_modules/get-caller-file": { "version": "2.0.5", "license": "ISC", @@ -42154,6 +42361,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, "node_modules/ramda": { "version": "0.29.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", @@ -42238,6 +42450,14 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "dependencies": { + "quickselect": "^2.0.0" + } + }, "node_modules/react": { "version": "18.2.0", "license": "MIT", @@ -56321,6 +56541,20 @@ } } }, + "@rnmapbox/maps": { + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.0.11.tgz", + "integrity": "sha512-CqaAOEV2nYjZzAwSd7RceGIVVIyDO0G/Vqdvgen20LDuejX9N9Yqw7BrMH8MgIH3FNFxtjwyXiw6aVtybpke0w==", + "requires": { + "@turf/along": "6.5.0", + "@turf/distance": "6.5.0", + "@turf/helpers": "6.5.0", + "@turf/length": "6.5.0", + "@turf/nearest-point-on-line": "6.5.0", + "@types/geojson": "^7946.0.7", + "debounce": "^1.2.0" + } + }, "@sentry/browser": { "version": "7.11.1", "requires": { @@ -63417,6 +63651,121 @@ "version": "0.2.0", "dev": true }, + "@turf/along": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/along/-/along-6.5.0.tgz", + "integrity": "sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==", + "requires": { + "@turf/bearing": "^6.5.0", + "@turf/destination": "^6.5.0", + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + } + }, + "@turf/bbox": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", + "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", + "requires": { + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" + } + }, + "@turf/bearing": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.5.0.tgz", + "integrity": "sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==", + "requires": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + } + }, + "@turf/destination": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.5.0.tgz", + "integrity": "sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==", + "requires": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + } + }, + "@turf/distance": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", + "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", + "requires": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + } + }, + "@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==" + }, + "@turf/invariant": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", + "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", + "requires": { + "@turf/helpers": "^6.5.0" + } + }, + "@turf/length": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/length/-/length-6.5.0.tgz", + "integrity": "sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==", + "requires": { + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" + } + }, + "@turf/line-intersect": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz", + "integrity": "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==", + "requires": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/line-segment": "^6.5.0", + "@turf/meta": "^6.5.0", + "geojson-rbush": "3.x" + } + }, + "@turf/line-segment": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz", + "integrity": "sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==", + "requires": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/meta": "^6.5.0" + } + }, + "@turf/meta": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", + "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", + "requires": { + "@turf/helpers": "^6.5.0" + } + }, + "@turf/nearest-point-on-line": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-6.5.0.tgz", + "integrity": "sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==", + "requires": { + "@turf/bearing": "^6.5.0", + "@turf/destination": "^6.5.0", + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/line-intersect": "^6.5.0", + "@turf/meta": "^6.5.0" + } + }, "@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", @@ -63589,6 +63938,11 @@ "@types/node": "*" } }, + "@types/geojson": { + "version": "7946.0.10", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" + }, "@types/glob": { "version": "7.2.0", "dev": true, @@ -67806,6 +68160,11 @@ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz", "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==" }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + }, "debug": { "version": "4.3.4", "requires": { @@ -70772,6 +71131,25 @@ "gensync": { "version": "1.0.0-beta.2" }, + "geojson-rbush": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz", + "integrity": "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==", + "requires": { + "@turf/bbox": "*", + "@turf/helpers": "6.x", + "@turf/meta": "6.x", + "@types/geojson": "7946.0.8", + "rbush": "^3.0.1" + }, + "dependencies": { + "@types/geojson": { + "version": "7946.0.8", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", + "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" + } + } + }, "get-caller-file": { "version": "2.0.5" }, @@ -78675,6 +79053,11 @@ "version": "5.1.1", "dev": true }, + "quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, "ramda": { "version": "0.29.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", @@ -78728,6 +79111,14 @@ "schema-utils": "^3.0.0" } }, + "rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "requires": { + "quickselect": "^2.0.0" + } + }, "react": { "version": "18.2.0", "requires": { diff --git a/package.json b/package.json index 56ac7926f0e5..e186abfa6fd3 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,7 @@ "@react-navigation/native": "6.1.6", "@react-navigation/stack": "6.3.16", "@react-ng/bounds-observer": "^0.2.1", + "@rnmapbox/maps": "^10.0.11", "@ua/react-native-airship": "^15.2.6", "awesome-phonenumber": "^5.4.0", "babel-plugin-transform-remove-console": "^6.9.4", @@ -156,8 +157,8 @@ "@babel/preset-env": "^7.20.0", "@babel/preset-flow": "^7.12.13", "@babel/preset-react": "^7.10.4", - "@babel/runtime": "^7.20.0", "@babel/preset-typescript": "^7.21.5", + "@babel/runtime": "^7.20.0", "@electron/notarize": "^1.2.3", "@jest/globals": "^29.5.0", "@octokit/core": "4.0.4", @@ -177,12 +178,12 @@ "@svgr/webpack": "^6.0.0", "@testing-library/jest-native": "5.4.1", "@testing-library/react-native": "11.5.1", - "@types/metro-config": "^0.76.3", "@types/concurrently": "^7.0.0", "@types/jest": "^29.5.2", "@types/jest-when": "^3.5.2", "@types/js-yaml": "^4.0.5", "@types/lodash": "^4.14.195", + "@types/metro-config": "^0.76.3", "@types/mock-fs": "^4.13.1", "@types/pusher-js": "^5.1.0", "@types/react": "^18.2.12", From af1365edfb924eb47097f8ac29f694906e1055e5 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Tue, 8 Aug 2023 22:12:53 -0700 Subject: [PATCH 02/64] feat: edit podfile and run pod install --- ios/NewExpensify.xcodeproj/project.pbxproj | 20 +++++++++++ ios/Podfile | 12 +++++++ ios/Podfile.lock | 39 ++++++++++++++++++++-- 3 files changed, 69 insertions(+), 2 deletions(-) diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj index 414ad71ab217..a7172df1f54f 100644 --- a/ios/NewExpensify.xcodeproj/project.pbxproj +++ b/ios/NewExpensify.xcodeproj/project.pbxproj @@ -359,8 +359,13 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/MapboxMaps/MapboxMaps.framework", + "${BUILT_PRODUCTS_DIR}/Turf/Turf.framework", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxCommon/MapboxCommon.framework/MapboxCommon", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxCoreMaps/MapboxCoreMaps.framework/MapboxCoreMaps", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxMobileEvents/MapboxMobileEvents.framework/MapboxMobileEvents", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Onfido/Onfido.framework/Onfido", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Plaid/LinkKit.framework/LinkKit", @@ -368,8 +373,13 @@ ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxMaps.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Turf.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxCommon.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxCoreMaps.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxMobileEvents.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Onfido.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LinkKit.framework", @@ -437,8 +447,13 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/MapboxMaps/MapboxMaps.framework", + "${BUILT_PRODUCTS_DIR}/Turf/Turf.framework", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxCommon/MapboxCommon.framework/MapboxCommon", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxCoreMaps/MapboxCoreMaps.framework/MapboxCoreMaps", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxMobileEvents/MapboxMobileEvents.framework/MapboxMobileEvents", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Onfido/Onfido.framework/Onfido", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Plaid/LinkKit.framework/LinkKit", @@ -446,8 +461,13 @@ ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxMaps.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Turf.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxCommon.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxCoreMaps.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxMobileEvents.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Onfido.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LinkKit.framework", diff --git a/ios/Podfile b/ios/Podfile index 3261d68fd27d..46789bafe748 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,3 +1,7 @@ +# Set the type of Mapbox SDK to use +# This value is used by $RNMapboxMaps +$RNMapboxMapsImpl = 'mapbox' + # Resolve react_native_pods.rb with node to allow for hoisting require Pod::Executable.execute_command('node', ['-p', 'require.resolve( @@ -41,6 +45,11 @@ def __apply_Xcode_14_3_RC_post_install_workaround(installer) end end +# Configure Mapbox before installing dependencies +pre_install do |installer| + $RNMapboxMaps.pre_install(installer) +end + target 'NewExpensify' do permissions_path = '../node_modules/react-native-permissions/ios' @@ -75,6 +84,9 @@ target 'NewExpensify' do end post_install do |installer| + # Configure Mapbox after installation + $RNMapboxMaps.post_install(installer) + # https://github.com/facebook/react-native/blob/main/scripts/react_native_pods.rb#L197-L202 react_native_post_install( installer, diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 343828fc5595..4a82211c7f09 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -221,6 +221,15 @@ PODS: - lottie-react-native (5.1.6): - lottie-ios (~> 3.4.0) - React-Core + - MapboxCommon (23.6.0) + - MapboxCoreMaps (10.14.0): + - MapboxCommon (~> 23.6) + - MapboxMaps (10.14.0): + - MapboxCommon (= 23.6.0) + - MapboxCoreMaps (= 10.14.0) + - MapboxMobileEvents (= 1.0.10) + - Turf (~> 2.0) + - MapboxMobileEvents (1.0.10) - nanopb (2.30908.0): - nanopb/decode (= 2.30908.0) - nanopb/encode (= 2.30908.0) @@ -737,6 +746,17 @@ PODS: - React-Core - RNLocalize (2.2.6): - React-Core + - rnmapbox-maps (10.0.11): + - MapboxMaps (~> 10.14.0) + - React + - React-Core + - rnmapbox-maps/DynamicLibrary (= 10.0.11) + - Turf + - rnmapbox-maps/DynamicLibrary (10.0.11): + - MapboxMaps (~> 10.14.0) + - React + - React-Core + - Turf - RNPermissions (3.6.1): - React-Core - RNReactNativeHapticFeedback (1.14.0): @@ -782,6 +802,7 @@ PODS: - libwebp (~> 1.0) - SDWebImage/Core (~> 5.10) - SocketRocket (0.6.1) + - Turf (2.6.1) - VisionCamera (2.15.4): - React - React-callinvoker @@ -892,6 +913,7 @@ DEPENDENCIES: - RNFS (from `../node_modules/react-native-fs`) - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - RNLocalize (from `../node_modules/react-native-localize`) + - "rnmapbox-maps (from `../node_modules/@rnmapbox/maps`)" - RNPermissions (from `../node_modules/react-native-permissions`) - RNReactNativeHapticFeedback (from `../node_modules/react-native-haptic-feedback`) - RNReanimated (from `../node_modules/react-native-reanimated`) @@ -929,6 +951,10 @@ SPEC REPOS: - libevent - libwebp - lottie-ios + - MapboxCommon + - MapboxCoreMaps + - MapboxMaps + - MapboxMobileEvents - nanopb - Onfido - OpenSSL-Universal @@ -937,6 +963,7 @@ SPEC REPOS: - SDWebImage - SDWebImageWebPCoder - SocketRocket + - Turf - YogaKit EXTERNAL SOURCES: @@ -1095,6 +1122,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-gesture-handler" RNLocalize: :path: "../node_modules/react-native-localize" + rnmapbox-maps: + :path: "../node_modules/@rnmapbox/maps" RNPermissions: :path: "../node_modules/react-native-permissions" RNReactNativeHapticFeedback: @@ -1145,6 +1174,10 @@ SPEC CHECKSUMS: libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef lottie-ios: 8f97d3271e155c2d688875c29cd3c74908aef5f8 lottie-react-native: 8f9d4be452e23f6e5ca0fdc11669dc99ab52be81 + MapboxCommon: 4a0251dd470ee37e7fadda8e285c01921a5e1eb0 + MapboxCoreMaps: eb07203bbb0b1509395db5ab89cd3ad6c2e3c04c + MapboxMaps: af50ec61a7eb3b032c3f7962c6bd671d93d2a209 + MapboxMobileEvents: de50b3a4de180dd129c326e09cd12c8adaaa46d6 nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96 Onfido: e36f284b865adcf99d9c905590a64ac09d4a576b onfido-react-native-sdk: 4ecde1a97435dcff9f00a878e3f8d1eb14fabbdc @@ -1220,6 +1253,7 @@ SPEC CHECKSUMS: RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNGestureHandler: dec4645026e7401a0899f2846d864403478ff6a5 RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81 + rnmapbox-maps: 6f638ec002aa6e906a6f766d69cd45f968d98e64 RNPermissions: dcdb7b99796bbeda6975a6e79ad519c41b251b1c RNReactNativeHapticFeedback: 1e3efeca9628ff9876ee7cdd9edec1b336913f8c RNReanimated: 020859659f64be2d30849a1fe88c821a7c3e0cbf @@ -1228,10 +1262,11 @@ SPEC CHECKSUMS: SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 + Turf: 469ce2c3d22e5e8e4818d5a3b254699a5c89efa4 VisionCamera: d3ec8883417a6a4a0e3a6ba37d81d22db7611601 Yoga: 65286bb6a07edce5e4fe8c90774da977ae8fc009 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: bc8161c6bfffeec6e6eaf84be18de5041ddcacf6 +PODFILE CHECKSUM: 9fe64724f9e3453def0022f6dda84e486949a911 -COCOAPODS: 1.12.1 +COCOAPODS: 1.11.3 From 1e667283f9eee7f0f8c1fbba05f5c10c74428b1b Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Tue, 8 Aug 2023 22:42:56 -0700 Subject: [PATCH 03/64] feat: add script to set credential for mapbox sdk --- package.json | 1 + ...igure-netrc-for-mapbox-sdk-installation.sh | 61 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100755 scripts/configure-netrc-for-mapbox-sdk-installation.sh diff --git a/package.json b/package.json index e186abfa6fd3..dfc4973df2db 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "license": "MIT", "private": true, "scripts": { + "configure:mapbox": "scripts/configure-netrc-for-mapbox-sdk-installation.sh", "postinstall": "scripts/postInstall.sh", "clean": "npx react-native clean-project-auto", "android": "scripts/set-pusher-suffix.sh && npx react-native run-android", diff --git a/scripts/configure-netrc-for-mapbox-sdk-installation.sh b/scripts/configure-netrc-for-mapbox-sdk-installation.sh new file mode 100755 index 000000000000..5922c21373fa --- /dev/null +++ b/scripts/configure-netrc-for-mapbox-sdk-installation.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# Mapbox SDK Configuration Script +# ================================ +# +# Purpose: +# -------- +# This script configures the development environment to download Mapbox SDKs +# for iOS and Android builds. We use Mapbox to display maps in the App. As Mapbox SDKs +# are closed-sourced, we need to authenticate with Mapbox during the download. +# +# Background: +# ----------- +# Engineers are required to obtain a secret token from Mapbox and store it on +# their development machine. This allows tools like CocoaPods or Gradle to access +# the Mapbox SDK during the build process. +# +# The `.netrc` file: +# ------------------ +# The token is stored in the `.netrc` file located in the user's home directory. +# This file is used in Unix-like systems to store credentials for remote machine access. +# +# How this script helps: +# ---------------------- +# This script streamlines the process of adding the credential to the `.netrc` file. +# When executed, it prompts the user for the secret token and then saves it +# to the `.netrc` file along with other necessary information. + +# Prompt the user for the token +read -p "Enter your secret Mapbox access token: " TOKEN + +# If the user didn't provide the token, exit +if [ -z "$TOKEN" ]; then + echo "No token provided. Exiting." + exit 1 +fi + +# Check for existing Mapbox entries in .netrc +if grep -q "api.mapbox.com" ~/.netrc; then + # Extract the current token from .netrc + CURRENT_TOKEN=$(grep -A2 "api.mapbox.com" ~/.netrc | grep "password" | awk '{print $2}') + + # Compare the current token to the entered token + if [ "$CURRENT_TOKEN" == "$TOKEN" ]; then + echo "The entered token matches the existing token in .netrc. No changes made." + else + # Use sed to replace the old token with the new one + sed -i.bak "/api.mapbox.com/,+2s/password $CURRENT_TOKEN/password $TOKEN/" ~/.netrc + echo "Token updated in .netrc!" + fi +else + # If no existing entry, append the new credentials + echo "machine api.mapbox.com" >> ~/.netrc + echo "login mapbox" >> ~/.netrc + echo "password $TOKEN" >> ~/.netrc + + # Set the permissions of the .netrc file to ensure it's kept private + chmod 600 ~/.netrc + + echo ".netrc has been updated with new credentials!" +fi \ No newline at end of file From c2bae34fe988f3b26cda373ef3ea77e3b570a8bd Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 9 Aug 2023 13:48:40 -0700 Subject: [PATCH 04/64] chore: configure android for mapbox SDK --- android/build.gradle | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/android/build.gradle b/android/build.gradle index c04314a9aa0c..83cb54ec1237 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -14,6 +14,10 @@ buildscript { multiDexEnabled = true googlePlayServicesVersion = "17.0.0" kotlinVersion = '1.6.20' + + // This property configures the type of Mapbox SDK used by the @rnmapbox/maps library. + // "mapbox" indicates the usage of the Mapbox SDK. + RNMapboxMapsImpl = "mapbox" } repositories { google() @@ -48,5 +52,24 @@ allprojects { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url("$rootDir/../node_modules/react-native/android") } + maven { + // Mapbox SDK requires authentication to download from Mapbox's private Maven repository. + url 'https://api.mapbox.com/downloads/v2/releases/maven' + authentication { + basic(BasicAuthentication) + } + credentials { + // 'mapbox' is the fixed username for Mapbox's Maven repository. + username = 'mapbox' + + // The value for password is read from the 'MAPBOX_DOWNLOADS_TOKEN' gradle property. + // Set this property in a gradle.properties file that is not committed to version control. + // Recommended place is in the Gradle user home folder («USER_HOME»/.gradle/gradle.properties). + + // Example gradle.properties entry: + // MAPBOX_DOWNLOADS_TOKEN=YOUR_SECRET_TOKEN_HERE + password = project.properties['MAPBOX_DOWNLOADS_TOKEN'] ?: "" + } + } } } \ No newline at end of file From e2270a2bdb561bd6bc4cb6440ecf3bd5f28f244a Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 9 Aug 2023 16:12:34 -0700 Subject: [PATCH 05/64] feat: make shell script configure android too --- ...igure-netrc-for-mapbox-sdk-installation.sh | 115 ++++++++++++++---- 1 file changed, 92 insertions(+), 23 deletions(-) diff --git a/scripts/configure-netrc-for-mapbox-sdk-installation.sh b/scripts/configure-netrc-for-mapbox-sdk-installation.sh index 5922c21373fa..9437d0119b73 100755 --- a/scripts/configure-netrc-for-mapbox-sdk-installation.sh +++ b/scripts/configure-netrc-for-mapbox-sdk-installation.sh @@ -1,33 +1,63 @@ #!/bin/bash -# Mapbox SDK Configuration Script -# ================================ +# Mapbox SDK Configuration Script for iOS and Android +# =================================================== # # Purpose: # -------- # This script configures the development environment to download Mapbox SDKs -# for iOS and Android builds. We use Mapbox to display maps in the App. As Mapbox SDKs +# for both iOS and Android builds. We use Mapbox to display maps in the App. As Mapbox SDKs # are closed-sourced, we need to authenticate with Mapbox during the download. # # Background: # ----------- # Engineers are required to obtain a secret token from Mapbox and store it on -# their development machine. This allows tools like CocoaPods or Gradle to access -# the Mapbox SDK during the build process. +# their development machine. This allows tools like CocoaPods for iOS or Gradle for Android +# to access the Mapbox SDK during the build process. # -# The `.netrc` file: -# ------------------ -# The token is stored in the `.netrc` file located in the user's home directory. +# The `.netrc` file for iOS Configuration: +# ---------------------------------------- +# The token for iOS is stored in the `.netrc` file located in the user's home directory. # This file is used in Unix-like systems to store credentials for remote machine access. # +# The `gradle.properties` file for Android Configuration: +# ------------------------------------------------------- +# The token for Android is stored in the `gradle.properties` file located in the .gradle directory +# in the user's home. This is accessed by the Android build system during the SDK download. +# # How this script helps: # ---------------------- -# This script streamlines the process of adding the credential to the `.netrc` file. -# When executed, it prompts the user for the secret token and then saves it -# to the `.netrc` file along with other necessary information. +# This script streamlines the process of adding the credential to both the `.netrc` and +# `gradle.properties` files. When executed, it prompts the user for the secret token and +# then saves it to the respective files along with other necessary information.\n + +NETRC_PATH="$HOME/.netrc" +GRADLE_PROPERTIES_PATH="$HOME/.gradle/gradle.properties" + +# This function provides a user-friendly error message when the script encounters an error. +# It informs the user about probable permission issues and suggests commands to resolve them. +handleError() { + echo -e "\n" + + echo -e "\033[1;31mError:\033[0m The script failed." + echo "The most probable reason is permissions." + echo -e "Please ensure you have read/write permissions for the following:\n" + + echo -e "1. \033[1m$NETRC_PATH\033[0m" + echo -e "2. \033[1m$GRADLE_PROPERTIES_PATH\033[0m" + echo -e "\nYou can grant permissions using the commands:" + echo -e "\033[1mchmod u+rw $NETRC_PATH\033[0m" + echo -e "\033[1mchmod u+rw $GRADLE_PROPERTIES_PATH\033[0m" + + echo -e "\n" + exit 1 +} + +# Set a trap to call the handleError function when any of the commands fail +trap handleError ERR # Prompt the user for the token -read -p "Enter your secret Mapbox access token: " TOKEN +read -s -p "Enter your secret Mapbox access token: " TOKEN # If the user didn't provide the token, exit if [ -z "$TOKEN" ]; then @@ -35,27 +65,66 @@ if [ -z "$TOKEN" ]; then exit 1 fi +# ----------------------------------------------- +# iOS Configuration for .netrc +# ----------------------------------------------- +echo -e "\n\nConfiguring $NETRC_PATH for Mapbox iOS SDK download" + # Check for existing Mapbox entries in .netrc -if grep -q "api.mapbox.com" ~/.netrc; then +if grep -q "api.mapbox.com" $NETRC_PATH; then # Extract the current token from .netrc - CURRENT_TOKEN=$(grep -A2 "api.mapbox.com" ~/.netrc | grep "password" | awk '{print $2}') + CURRENT_TOKEN=$(grep -A2 "api.mapbox.com" $NETRC_PATH | grep "password" | awk '{print $2}') # Compare the current token to the entered token if [ "$CURRENT_TOKEN" == "$TOKEN" ]; then - echo "The entered token matches the existing token in .netrc. No changes made." + echo -e "\nThe entered token matches the existing token in $NETRC_PATH. No changes made." else # Use sed to replace the old token with the new one - sed -i.bak "/api.mapbox.com/,+2s/password $CURRENT_TOKEN/password $TOKEN/" ~/.netrc - echo "Token updated in .netrc!" + sed -i.bak "/api.mapbox.com/,+2s/password $CURRENT_TOKEN/password $TOKEN/" $NETRC_PATH + echo -e "\nToken updated in $NETRC_PATH" fi else # If no existing entry, append the new credentials - echo "machine api.mapbox.com" >> ~/.netrc - echo "login mapbox" >> ~/.netrc - echo "password $TOKEN" >> ~/.netrc + echo "machine api.mapbox.com" >> $NETRC_PATH + echo "login mapbox" >> $NETRC_PATH + echo "password $TOKEN" >> $NETRC_PATH # Set the permissions of the .netrc file to ensure it's kept private - chmod 600 ~/.netrc + chmod 600 $NETRC_PATH + + echo -e "\n$NETRC_PATH has been updated with new credentials" +fi + +# ----------------------------------------------- +# Android Configuration for gradle.properties +# ----------------------------------------------- +echo -e "\nConfiguring $GRADLE_PROPERTIES_PATH for Mapbox Android SDK download" + +# Ensure the .gradle directory exists +if [ ! -d "$HOME/.gradle" ]; then + mkdir "$HOME/.gradle" +fi + +# Check if gradle.properties exists. If not, create one. +if [ ! -f $GRADLE_PROPERTIES_PATH ]; then + touch $GRADLE_PROPERTIES_PATH +fi + +# Check if MAPBOX_DOWNLOADS_TOKEN already exists in the file +if grep -q "MAPBOX_DOWNLOADS_TOKEN" $GRADLE_PROPERTIES_PATH; then + # Extract the current token from gradle.properties + CURRENT_ANDROID_TOKEN=$(grep "MAPBOX_DOWNLOADS_TOKEN" $GRADLE_PROPERTIES_PATH | cut -d'=' -f2) + + # Compare the current token to the entered token + if [ "$CURRENT_ANDROID_TOKEN" == "$TOKEN" ]; then + echo -e "\nThe entered token matches the existing token in $GRADLE_PROPERTIES_PATH. No changes made." + else + sed -i.bak "s/MAPBOX_DOWNLOADS_TOKEN=$CURRENT_ANDROID_TOKEN/MAPBOX_DOWNLOADS_TOKEN=$TOKEN/" $GRADLE_PROPERTIES_PATH + echo -e "\nToken updated in $GRADLE_PROPERTIES_PATH" + fi +else + echo "MAPBOX_DOWNLOADS_TOKEN=$TOKEN" >> $GRADLE_PROPERTIES_PATH + echo -e "\n$GRADLE_PROPERTIES_PATH has been updated with new credentials" +fi - echo ".netrc has been updated with new credentials!" -fi \ No newline at end of file +echo -e "\n" From c6deb548ce55386b3745267770ae8ddd114292d6 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Thu, 10 Aug 2023 10:23:58 -0700 Subject: [PATCH 06/64] feat: add test library --- package-lock.json | 654 ++++++++++++++++++++++++++++-- package.json | 4 + src/components/DistanceRequest.js | 16 +- 3 files changed, 639 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e19183565e7..dadc9c97740c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@formatjs/intl-numberformat": "^8.5.0", "@formatjs/intl-pluralrules": "^5.2.2", "@gorhom/portal": "^1.0.14", + "@hayata/react-native-test-package": "^1.0.26", "@oguzhnatly/react-native-image-manipulator": "github:Expensify/react-native-image-manipulator#5cdae3d4455b03a04c57f50be3863e2fe6c92c52", "@onfido/react-native-sdk": "7.4.0", "@react-native-async-storage/async-storage": "^1.17.10", @@ -51,6 +52,7 @@ "localforage-removeitems": "^1.4.0", "lodash": "4.17.21", "lottie-react-native": "^5.1.6", + "mapbox-gl": "^2.15.0", "metro-config": "^0.71.3", "moment": "^2.29.4", "moment-timezone": "^0.5.31", @@ -63,6 +65,7 @@ "react-collapse": "^5.1.0", "react-content-loader": "^6.1.0", "react-dom": "18.1.0", + "react-map-gl": "^7.1.3", "react-native": "0.72.1", "react-native-blob-util": "^0.17.3", "react-native-collapsible": "^1.6.0", @@ -144,6 +147,7 @@ "@types/jest-when": "^3.5.2", "@types/js-yaml": "^4.0.5", "@types/lodash": "^4.14.195", + "@types/mapbox-gl": "^2.7.13", "@types/metro-config": "^0.76.3", "@types/mock-fs": "^4.13.1", "@types/pusher-js": "^5.1.0", @@ -3947,6 +3951,19 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@hayata/react-native-test-package": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/@hayata/react-native-test-package/-/react-native-test-package-1.0.26.tgz", + "integrity": "sha512-op90UuAkVESwDhegrEw6gNwRoDboZsFDFyOVwpvRKYvX7rNN3DroYCuRyPbEGWp9MNWRv4P6xGH6DGr1ot3RIw==", + "peerDependencies": { + "@math.gl/web-mercator": "^3.6.3", + "@rnmapbox/maps": "^10.0.11", + "mapbox-gl": "^2.15.0", + "react": "^18.2.0", + "react-map-gl": "^7.1.3", + "react-native": "^0.72.3" + } + }, "node_modules/@html-ng/bounding-client-rect-observer": { "version": "0.1.3", "license": "Apache-2.0" @@ -5451,6 +5468,31 @@ "node": ">= 10.0.0" } }, + "node_modules/@mapbox/geojson-rewind": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", + "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", + "dependencies": { + "get-stream": "^6.0.1", + "minimist": "^1.2.6" + }, + "bin": { + "geojson-rewind": "geojson-rewind" + } + }, + "node_modules/@mapbox/jsonlint-lines-primitives": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@mapbox/mapbox-gl-supported": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.1.tgz", + "integrity": "sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ==" + }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", @@ -5518,6 +5560,65 @@ "node": ">=6" } }, + "node_modules/@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==" + }, + "node_modules/@mapbox/tiny-sdf": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz", + "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" + }, + "node_modules/@mapbox/unitbezier": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" + }, + "node_modules/@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "dependencies": { + "@mapbox/point-geometry": "~0.1.0" + } + }, + "node_modules/@mapbox/whoots-js": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@maplibre/maplibre-gl-style-spec": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-19.3.0.tgz", + "integrity": "sha512-ZbhX9CTV+Z7vHwkRIasDOwTSzr76e8Q6a55RMsAibjyX6+P0ZNL1qAKNzOjjBDP3+aEfNMl7hHo5knuY6pTAUQ==", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^3.0.0", + "minimist": "^1.2.8", + "rw": "^1.3.3", + "sort-object": "^3.0.3" + }, + "bin": { + "gl-style-format": "dist/gl-style-format.mjs", + "gl-style-migrate": "dist/gl-style-migrate.mjs", + "gl-style-validate": "dist/gl-style-validate.mjs" + } + }, + "node_modules/@math.gl/web-mercator": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.6.3.tgz", + "integrity": "sha512-UVrkSOs02YLehKaehrxhAejYMurehIHPfFQvPFZmdJHglHOU4V2cCUApTVEwOksvCp161ypEqVp+9H6mGhTTcw==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.0", + "gl-matrix": "^3.4.0" + } + }, "node_modules/@mdx-js/mdx": { "version": "1.6.22", "dev": true, @@ -20250,6 +20351,14 @@ "version": "4.0.2", "license": "MIT" }, + "node_modules/@types/mapbox-gl": { + "version": "2.7.13", + "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-2.7.13.tgz", + "integrity": "sha512-qNffhTdYkeFl8QG9Q1zPPJmcs8PvHgmLa1PcwP1rxvcfMsIgcFr/FnrCttG0ZnH7Kzdd7xfECSRNTWSr4jC3PQ==", + "dependencies": { + "@types/geojson": "*" + } + }, "node_modules/@types/mdast": { "version": "3.0.10", "dev": true, @@ -22155,7 +22264,6 @@ }, "node_modules/arr-union": { "version": "3.1.0", - "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -22348,7 +22456,6 @@ }, "node_modules/assign-symbols": { "version": "1.0.0", - "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -24041,6 +24148,23 @@ "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==", + "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==", + "dependencies": { + "typewise-core": "^1.2" + } + }, "node_modules/c8": { "version": "7.12.0", "dev": true, @@ -26098,6 +26222,11 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==" + }, "node_modules/cssesc": { "version": "3.0.0", "dev": true, @@ -26946,6 +27075,11 @@ "stream-shift": "^1.0.0" } }, + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -29562,7 +29696,6 @@ }, "node_modules/extend-shallow": { "version": "3.0.2", - "devOptional": true, "license": "MIT", "dependencies": { "assign-symbols": "^1.0.0", @@ -30587,6 +30720,11 @@ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" }, + "node_modules/geojson-vt": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", + "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==" + }, "node_modules/get-caller-file": { "version": "2.0.5", "license": "ISC", @@ -30656,7 +30794,6 @@ }, "node_modules/get-value": { "version": "2.0.6", - "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -30675,6 +30812,11 @@ "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", "dev": true }, + "node_modules/gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, "node_modules/glob": { "version": "7.1.6", "license": "ISC", @@ -30829,6 +30971,11 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/grid-index": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", + "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" + }, "node_modules/gzip-size": { "version": "6.0.0", "dev": true, @@ -32535,7 +32682,6 @@ }, "node_modules/is-extendable": { "version": "1.0.1", - "devOptional": true, "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4" @@ -32546,7 +32692,6 @@ }, "node_modules/is-extendable/node_modules/is-plain-object": { "version": "2.0.4", - "devOptional": true, "license": "MIT", "dependencies": { "isobject": "^3.0.1" @@ -35816,6 +35961,11 @@ "dev": true, "license": "MIT" }, + "node_modules/json-stringify-pretty-compact": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz", + "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==" + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "dev": true, @@ -35865,6 +36015,11 @@ "node": ">=8" } }, + "node_modules/kdbush": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" + }, "node_modules/kebab-case": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/kebab-case/-/kebab-case-1.0.2.tgz", @@ -36774,6 +36929,35 @@ "node": ">=0.10.0" } }, + "node_modules/mapbox-gl": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.15.0.tgz", + "integrity": "sha512-fjv+aYrd5TIHiL7wRa+W7KjtUqKWziJMZUkK5hm8TvJ3OLeNPx4NmW/DgfYhd/jHej8wWL+QJBDbdMMAKvNC0A==", + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^2.0.1", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^2.0.6", + "@mapbox/unitbezier": "^0.0.1", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.4", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.4.3", + "grid-index": "^1.1.0", + "kdbush": "^4.0.1", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^2.0.0", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^8.0.0", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.3" + } + }, "node_modules/markdown-builder": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/markdown-builder/-/markdown-builder-0.9.0.tgz", @@ -39697,8 +39881,12 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "license": "MIT" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minipass": { "version": "3.3.4", @@ -39975,6 +40163,11 @@ "multicast-dns": "cli.js" } }, + "node_modules/murmurhash-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", + "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" + }, "node_modules/mute-stream": { "version": "0.0.8", "dev": true, @@ -41433,6 +41626,18 @@ "through": "~2.3" } }, + "node_modules/pbf": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", + "dependencies": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, "node_modules/pbkdf2": { "version": "3.1.2", "license": "MIT", @@ -41824,6 +42029,11 @@ "version": "4.2.0", "license": "MIT" }, + "node_modules/potpack": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz", + "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==" + }, "node_modules/preact": { "version": "10.11.3", "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz", @@ -42030,6 +42240,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/protocol-buffers-schema": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" + }, "node_modules/proxy-addr": { "version": "2.0.7", "dev": true, @@ -42594,6 +42809,29 @@ "version": "16.13.1", "license": "MIT" }, + "node_modules/react-map-gl": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-7.1.3.tgz", + "integrity": "sha512-uMiwk3x/XxYqSxWWBPgqitvLh8y+O9AabEIBeg3tLjoCVBEyFiZko7tAcRqA7WLT079KX/lyDL1N2zALqJb/MQ==", + "dependencies": { + "@maplibre/maplibre-gl-style-spec": "^19.2.1", + "@types/mapbox-gl": ">=1.0.0" + }, + "peerDependencies": { + "mapbox-gl": ">=1.13.0", + "maplibre-gl": ">=1.13.0", + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + }, + "peerDependenciesMeta": { + "mapbox-gl": { + "optional": true + }, + "maplibre-gl": { + "optional": true + } + } + }, "node_modules/react-native": { "version": "0.72.1", "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.1.tgz", @@ -44995,6 +45233,14 @@ "version": "2.2.0", "license": "MIT" }, + "node_modules/resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "dependencies": { + "protocol-buffers-schema": "^3.3.1" + } + }, "node_modules/resolve-url": { "version": "0.2.1", "devOptional": true, @@ -45161,6 +45407,11 @@ "dev": true, "license": "ISC" }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "node_modules/rxjs": { "version": "6.6.7", "dev": true, @@ -45530,7 +45781,6 @@ }, "node_modules/set-value": { "version": "2.0.1", - "devOptional": true, "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", @@ -45544,7 +45794,6 @@ }, "node_modules/set-value/node_modules/extend-shallow": { "version": "2.0.1", - "devOptional": true, "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" @@ -45555,7 +45804,6 @@ }, "node_modules/set-value/node_modules/is-extendable": { "version": "0.1.1", - "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -45563,7 +45811,6 @@ }, "node_modules/set-value/node_modules/is-plain-object": { "version": "2.0.4", - "devOptional": true, "license": "MIT", "dependencies": { "isobject": "^3.0.1" @@ -46139,6 +46386,46 @@ "node": ">= 10" } }, + "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==", + "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==", + "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==", + "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/sort-object/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==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-list-map": { "version": "2.0.1", "license": "MIT" @@ -46282,7 +46569,6 @@ }, "node_modules/split-string": { "version": "3.1.0", - "devOptional": true, "license": "MIT", "dependencies": { "extend-shallow": "^3.0.0" @@ -46840,6 +47126,14 @@ "node": ">= 8.0" } }, + "node_modules/supercluster": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", + "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", + "dependencies": { + "kdbush": "^4.0.2" + } + }, "node_modules/superstruct": { "version": "0.6.2", "license": "MIT", @@ -47438,6 +47732,11 @@ "version": "1.0.3", "license": "MIT" }, + "node_modules/tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" + }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -47814,6 +48113,19 @@ "node": ">=4.2.0" } }, + "node_modules/typewise": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", + "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==", + "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==" + }, "node_modules/ua-parser-js": { "version": "0.7.31", "funding": [ @@ -47956,7 +48268,6 @@ }, "node_modules/union-value": { "version": "1.0.1", - "devOptional": true, "license": "MIT", "dependencies": { "arr-union": "^3.1.0", @@ -47970,7 +48281,6 @@ }, "node_modules/union-value/node_modules/is-extendable": { "version": "0.1.1", - "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -48603,6 +48913,16 @@ "version": "1.1.2", "license": "MIT" }, + "node_modules/vt-pbf": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", + "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", + "dependencies": { + "@mapbox/point-geometry": "0.1.0", + "@mapbox/vector-tile": "^1.3.1", + "pbf": "^3.2.1" + } + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "dev": true, @@ -52695,6 +53015,12 @@ "@hapi/hoek": "^9.0.0" } }, + "@hayata/react-native-test-package": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/@hayata/react-native-test-package/-/react-native-test-package-1.0.26.tgz", + "integrity": "sha512-op90UuAkVESwDhegrEw6gNwRoDboZsFDFyOVwpvRKYvX7rNN3DroYCuRyPbEGWp9MNWRv4P6xGH6DGr1ot3RIw==", + "requires": {} + }, "@html-ng/bounding-client-rect-observer": { "version": "0.1.3" }, @@ -53738,6 +54064,25 @@ "tmp-promise": "^3.0.2" } }, + "@mapbox/geojson-rewind": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", + "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", + "requires": { + "get-stream": "^6.0.1", + "minimist": "^1.2.6" + } + }, + "@mapbox/jsonlint-lines-primitives": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==" + }, + "@mapbox/mapbox-gl-supported": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.1.tgz", + "integrity": "sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ==" + }, "@mapbox/node-pre-gyp": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", @@ -53791,6 +54136,57 @@ } } }, + "@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==" + }, + "@mapbox/tiny-sdf": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz", + "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" + }, + "@mapbox/unitbezier": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" + }, + "@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "requires": { + "@mapbox/point-geometry": "~0.1.0" + } + }, + "@mapbox/whoots-js": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" + }, + "@maplibre/maplibre-gl-style-spec": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-19.3.0.tgz", + "integrity": "sha512-ZbhX9CTV+Z7vHwkRIasDOwTSzr76e8Q6a55RMsAibjyX6+P0ZNL1qAKNzOjjBDP3+aEfNMl7hHo5knuY6pTAUQ==", + "requires": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^3.0.0", + "minimist": "^1.2.8", + "rw": "^1.3.3", + "sort-object": "^3.0.3" + } + }, + "@math.gl/web-mercator": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@math.gl/web-mercator/-/web-mercator-3.6.3.tgz", + "integrity": "sha512-UVrkSOs02YLehKaehrxhAejYMurehIHPfFQvPFZmdJHglHOU4V2cCUApTVEwOksvCp161ypEqVp+9H6mGhTTcw==", + "peer": true, + "requires": { + "@babel/runtime": "^7.12.0", + "gl-matrix": "^3.4.0" + } + }, "@mdx-js/mdx": { "version": "1.6.22", "dev": true, @@ -64074,6 +64470,14 @@ "@types/long": { "version": "4.0.2" }, + "@types/mapbox-gl": { + "version": "2.7.13", + "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-2.7.13.tgz", + "integrity": "sha512-qNffhTdYkeFl8QG9Q1zPPJmcs8PvHgmLa1PcwP1rxvcfMsIgcFr/FnrCttG0ZnH7Kzdd7xfECSRNTWSr4jC3PQ==", + "requires": { + "@types/geojson": "*" + } + }, "@types/mdast": { "version": "3.0.10", "dev": true, @@ -65425,8 +65829,7 @@ "devOptional": true }, "arr-union": { - "version": "3.1.0", - "devOptional": true + "version": "3.1.0" }, "array-find-index": { "version": "1.0.2", @@ -65552,8 +65955,7 @@ "optional": true }, "assign-symbols": { - "version": "1.0.0", - "devOptional": true + "version": "1.0.0" }, "ast-types": { "version": "0.14.2", @@ -66725,6 +67127,23 @@ "bytes": { "version": "3.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" + } + }, "c8": { "version": "7.12.0", "dev": true, @@ -68085,6 +68504,11 @@ "css-what": { "version": "6.1.0" }, + "csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==" + }, "cssesc": { "version": "3.0.0", "dev": true @@ -68674,6 +69098,11 @@ "stream-shift": "^1.0.0" } }, + "earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -70465,7 +70894,6 @@ }, "extend-shallow": { "version": "3.0.2", - "devOptional": true, "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -71150,6 +71578,11 @@ } } }, + "geojson-vt": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", + "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==" + }, "get-caller-file": { "version": "2.0.5" }, @@ -71185,8 +71618,7 @@ } }, "get-value": { - "version": "2.0.6", - "devOptional": true + "version": "2.0.6" }, "getenv": { "version": "1.0.0" @@ -71197,6 +71629,11 @@ "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", "dev": true }, + "gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, "glob": { "version": "7.1.6", "requires": { @@ -71300,6 +71737,11 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "grid-index": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", + "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" + }, "gzip-size": { "version": "6.0.0", "dev": true, @@ -72408,14 +72850,12 @@ }, "is-extendable": { "version": "1.0.1", - "devOptional": true, "requires": { "is-plain-object": "^2.0.4" }, "dependencies": { "is-plain-object": { "version": "2.0.4", - "devOptional": true, "requires": { "isobject": "^3.0.1" } @@ -74563,6 +75003,11 @@ "version": "1.0.1", "dev": true }, + "json-stringify-pretty-compact": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz", + "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==" + }, "json-stringify-safe": { "version": "5.0.1", "dev": true @@ -74592,6 +75037,11 @@ "version": "3.1.0", "dev": true }, + "kdbush": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" + }, "kebab-case": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/kebab-case/-/kebab-case-1.0.2.tgz", @@ -75229,6 +75679,35 @@ "object-visit": "^1.0.0" } }, + "mapbox-gl": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.15.0.tgz", + "integrity": "sha512-fjv+aYrd5TIHiL7wRa+W7KjtUqKWziJMZUkK5hm8TvJ3OLeNPx4NmW/DgfYhd/jHej8wWL+QJBDbdMMAKvNC0A==", + "requires": { + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^2.0.1", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^2.0.6", + "@mapbox/unitbezier": "^0.0.1", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.4", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.4.3", + "grid-index": "^1.1.0", + "kdbush": "^4.0.1", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^2.0.0", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^8.0.0", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.3" + } + }, "markdown-builder": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/markdown-builder/-/markdown-builder-0.9.0.tgz", @@ -77269,7 +77748,9 @@ } }, "minimist": { - "version": "1.2.6" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, "minipass": { "version": "3.3.4", @@ -77463,6 +77944,11 @@ "thunky": "^1.0.2" } }, + "murmurhash-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", + "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" + }, "mute-stream": { "version": "0.0.8", "dev": true @@ -78443,6 +78929,15 @@ "through": "~2.3" } }, + "pbf": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", + "requires": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + } + }, "pbkdf2": { "version": "3.1.2", "requires": { @@ -78705,6 +79200,11 @@ "postcss-value-parser": { "version": "4.2.0" }, + "potpack": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz", + "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==" + }, "preact": { "version": "10.11.3", "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz", @@ -78836,6 +79336,11 @@ "xtend": "^4.0.0" } }, + "protocol-buffers-schema": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" + }, "proxy-addr": { "version": "2.0.7", "dev": true, @@ -79205,6 +79710,15 @@ "react-is": { "version": "16.13.1" }, + "react-map-gl": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-7.1.3.tgz", + "integrity": "sha512-uMiwk3x/XxYqSxWWBPgqitvLh8y+O9AabEIBeg3tLjoCVBEyFiZko7tAcRqA7WLT079KX/lyDL1N2zALqJb/MQ==", + "requires": { + "@maplibre/maplibre-gl-style-spec": "^19.2.1", + "@types/mapbox-gl": ">=1.0.0" + } + }, "react-native": { "version": "0.72.1", "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.1.tgz", @@ -80818,6 +81332,14 @@ "resolve-pathname": { "version": "2.2.0" }, + "resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "requires": { + "protocol-buffers-schema": "^3.3.1" + } + }, "resolve-url": { "version": "0.2.1", "devOptional": true @@ -80918,6 +81440,11 @@ } } }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "rxjs": { "version": "6.6.7", "dev": true, @@ -81192,7 +81719,6 @@ }, "set-value": { "version": "2.0.1", - "devOptional": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -81202,18 +81728,15 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "devOptional": true, "requires": { "is-extendable": "^0.1.0" } }, "is-extendable": { - "version": "0.1.1", - "devOptional": true + "version": "0.1.1" }, "is-plain-object": { "version": "2.0.4", - "devOptional": true, "requires": { "isobject": "^3.0.1" } @@ -81624,6 +82147,36 @@ "socks": "^2.6.2" } }, + "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" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + } + } + }, "source-list-map": { "version": "2.0.1" }, @@ -81731,7 +82284,6 @@ }, "split-string": { "version": "3.1.0", - "devOptional": true, "requires": { "extend-shallow": "^3.0.0" } @@ -82110,6 +82662,14 @@ "debug": "^4.1.0" } }, + "supercluster": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", + "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", + "requires": { + "kdbush": "^4.0.2" + } + }, "superstruct": { "version": "0.6.2", "requires": { @@ -82508,6 +83068,11 @@ "tiny-warning": { "version": "1.0.3" }, + "tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" + }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -82752,6 +83317,19 @@ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "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==" + }, "ua-parser-js": { "version": "0.7.31" }, @@ -82838,7 +83416,6 @@ }, "union-value": { "version": "1.0.1", - "devOptional": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -82847,8 +83424,7 @@ }, "dependencies": { "is-extendable": { - "version": "0.1.1", - "devOptional": true + "version": "0.1.1" } } }, @@ -83267,6 +83843,16 @@ "vm-browserify": { "version": "1.1.2" }, + "vt-pbf": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", + "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", + "requires": { + "@mapbox/point-geometry": "0.1.0", + "@mapbox/vector-tile": "^1.3.1", + "pbf": "^3.2.1" + } + }, "w3c-hr-time": { "version": "1.0.2", "dev": true, diff --git a/package.json b/package.json index dfc4973df2db..7c94544250d3 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "@formatjs/intl-numberformat": "^8.5.0", "@formatjs/intl-pluralrules": "^5.2.2", "@gorhom/portal": "^1.0.14", + "@hayata/react-native-test-package": "^1.0.26", "@oguzhnatly/react-native-image-manipulator": "github:Expensify/react-native-image-manipulator#5cdae3d4455b03a04c57f50be3863e2fe6c92c52", "@onfido/react-native-sdk": "7.4.0", "@react-native-async-storage/async-storage": "^1.17.10", @@ -91,6 +92,7 @@ "localforage-removeitems": "^1.4.0", "lodash": "4.17.21", "lottie-react-native": "^5.1.6", + "mapbox-gl": "^2.15.0", "metro-config": "^0.71.3", "moment": "^2.29.4", "moment-timezone": "^0.5.31", @@ -103,6 +105,7 @@ "react-collapse": "^5.1.0", "react-content-loader": "^6.1.0", "react-dom": "18.1.0", + "react-map-gl": "^7.1.3", "react-native": "0.72.1", "react-native-blob-util": "^0.17.3", "react-native-collapsible": "^1.6.0", @@ -184,6 +187,7 @@ "@types/jest-when": "^3.5.2", "@types/js-yaml": "^4.0.5", "@types/lodash": "^4.14.195", + "@types/mapbox-gl": "^2.7.13", "@types/metro-config": "^0.76.3", "@types/mock-fs": "^4.13.1", "@types/pusher-js": "^5.1.0", diff --git a/src/components/DistanceRequest.js b/src/components/DistanceRequest.js index 7bbbfe3f3a01..a61c9c5a7226 100644 --- a/src/components/DistanceRequest.js +++ b/src/components/DistanceRequest.js @@ -6,6 +6,7 @@ import Text from './Text'; import * as IOU from '../libs/actions/IOU'; import styles from '../styles/styles'; import ONYXKEYS from '../ONYXKEYS'; +import {MapView} from '@hayata/react-native-test-package'; const propTypes = { /** The transactionID of this request */ @@ -25,9 +26,22 @@ function DistanceRequest(props) { }, [props.transactionID]); return ( - + Distance Request transactionID: {props.transactionID} + + + ); } From fbed8b97a54c07f137c702de9ec96080b2da48ec Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Thu, 10 Aug 2023 11:54:18 -0700 Subject: [PATCH 07/64] style: rename script file name --- ...e-netrc-for-mapbox-sdk-installation.sh => configure-mapbox.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename scripts/{configure-netrc-for-mapbox-sdk-installation.sh => configure-mapbox.sh} (100%) diff --git a/scripts/configure-netrc-for-mapbox-sdk-installation.sh b/scripts/configure-mapbox.sh similarity index 100% rename from scripts/configure-netrc-for-mapbox-sdk-installation.sh rename to scripts/configure-mapbox.sh From cee9748d72e0deb180aa582b6fb76e6aa0387547 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Thu, 10 Aug 2023 17:35:28 -0700 Subject: [PATCH 08/64] feat: divide script for CI and interactive ones --- package.json | 4 ++-- scripts/configure-mapbox-walkthrough.sh | 15 +++++++++++++++ scripts/configure-mapbox.sh | 16 ++++++++++------ 3 files changed, 27 insertions(+), 8 deletions(-) create mode 100755 scripts/configure-mapbox-walkthrough.sh diff --git a/package.json b/package.json index 06a73ecfddeb..285b65a56698 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "license": "MIT", "private": true, "scripts": { - "configure:mapbox": "scripts/configure-netrc-for-mapbox-sdk-installation.sh", + "configure:mapbox": "scripts/configure-mapbox-walkthrough.sh", "postinstall": "scripts/postInstall.sh", "clean": "npx react-native clean-project-auto", "android": "scripts/set-pusher-suffix.sh && npx react-native run-android", @@ -57,7 +57,7 @@ "@formatjs/intl-numberformat": "^8.5.0", "@formatjs/intl-pluralrules": "^5.2.2", "@gorhom/portal": "^1.0.14", - "@hayata/react-native-test-package": "^1.0.26", + "@hayata/react-native-test-package": "1.0.28", "@oguzhnatly/react-native-image-manipulator": "github:Expensify/react-native-image-manipulator#5cdae3d4455b03a04c57f50be3863e2fe6c92c52", "@onfido/react-native-sdk": "7.4.0", "@react-native-async-storage/async-storage": "^1.17.10", diff --git a/scripts/configure-mapbox-walkthrough.sh b/scripts/configure-mapbox-walkthrough.sh new file mode 100755 index 000000000000..b60700e57e8a --- /dev/null +++ b/scripts/configure-mapbox-walkthrough.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +echo -e "This script helps you set up crednetials needed to use Mapbox SDKs for iOS and Android\n\nWe need two kinds of tokens: one for donlowding Mapbox's closed-sourced SDKs, and the other for accessing Mapbox's API from these SDKs" + +echo -e "\nStep 1: Go to https://account.mapbox.com/access-tokens/. If you don't have a Mapbox account yet, crease one. Copy the token named \"Default public token.\" This token is used to call Mapbox API to display maps and get directions. Paste the copied token below and hit enter (the token won't be displayed)\n" + +read -s -p "Default public token: " PUBLIC_TOKEN + +echo -e "\n\nStep 2: Next, we will create a secret token needed to download Mapbox SDKs.\nIf you haven't already, create a secret token by clicking "Create a token" button on "https://account.mapbox.com/access-tokens/". Give the token a useful name (ex. Token for SDK downloads) and tik the checkbox next to "Downloads:Read" under the "Secret scopes".\nAll checkboxes under the "Public scopes" should be tiked by default, and you can leave them as is. Then, click the "Create token" button at the bottom of the page.\nCopy the value of the newly created token. You only have once chance to copy it. Paste the value below.\n" + +read -s -p "Secret download token: " SECRET_TOKEN + +echo -e "\n\nThank you for providing necessary credentials. Setting these credentials in relevant files...\n" + +./scripts/configure-mapbox.sh $SECRET_TOKEN \ No newline at end of file diff --git a/scripts/configure-mapbox.sh b/scripts/configure-mapbox.sh index 9437d0119b73..f748545b54c1 100755 --- a/scripts/configure-mapbox.sh +++ b/scripts/configure-mapbox.sh @@ -30,6 +30,11 @@ # This script streamlines the process of adding the credential to both the `.netrc` and # `gradle.properties` files. When executed, it prompts the user for the secret token and # then saves it to the respective files along with other necessary information.\n +# +# Usage: +# ------ +# To run this script, pass the secret Mapbox access token as a command-line argument: +# ./scriptname.sh YOUR_MAPBOX_ACCESS_TOKEN NETRC_PATH="$HOME/.netrc" GRADLE_PROPERTIES_PATH="$HOME/.gradle/gradle.properties" @@ -56,11 +61,12 @@ handleError() { # Set a trap to call the handleError function when any of the commands fail trap handleError ERR -# Prompt the user for the token -read -s -p "Enter your secret Mapbox access token: " TOKEN +# Take the token as a command-line argument +TOKEN="$1" -# If the user didn't provide the token, exit +# Check if the token was provided if [ -z "$TOKEN" ]; then + echo "Usage: $0 " echo "No token provided. Exiting." exit 1 fi @@ -68,7 +74,7 @@ fi # ----------------------------------------------- # iOS Configuration for .netrc # ----------------------------------------------- -echo -e "\n\nConfiguring $NETRC_PATH for Mapbox iOS SDK download" +echo -e "Configuring $NETRC_PATH for Mapbox iOS SDK download" # Check for existing Mapbox entries in .netrc if grep -q "api.mapbox.com" $NETRC_PATH; then @@ -126,5 +132,3 @@ else echo "MAPBOX_DOWNLOADS_TOKEN=$TOKEN" >> $GRADLE_PROPERTIES_PATH echo -e "\n$GRADLE_PROPERTIES_PATH has been updated with new credentials" fi - -echo -e "\n" From f11c64b5e051b90169fe53c796f034e799015064 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Fri, 11 Aug 2023 09:01:16 -0700 Subject: [PATCH 09/64] chore: bump the version of temp library --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index c3514ff4f77b..51e24e780499 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@formatjs/intl-numberformat": "^8.5.0", "@formatjs/intl-pluralrules": "^5.2.2", "@gorhom/portal": "^1.0.14", - "@hayata/react-native-test-package": "^1.0.26", + "@hayata/react-native-test-package": "1.0.28", "@oguzhnatly/react-native-image-manipulator": "github:Expensify/react-native-image-manipulator#5cdae3d4455b03a04c57f50be3863e2fe6c92c52", "@onfido/react-native-sdk": "7.4.0", "@react-native-async-storage/async-storage": "^1.17.10", @@ -3954,9 +3954,9 @@ } }, "node_modules/@hayata/react-native-test-package": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/@hayata/react-native-test-package/-/react-native-test-package-1.0.26.tgz", - "integrity": "sha512-op90UuAkVESwDhegrEw6gNwRoDboZsFDFyOVwpvRKYvX7rNN3DroYCuRyPbEGWp9MNWRv4P6xGH6DGr1ot3RIw==", + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/@hayata/react-native-test-package/-/react-native-test-package-1.0.28.tgz", + "integrity": "sha512-EiiJJeVEcDkxckcXAxBIfjcTVqqPzRrp73wc9HQLqSRVWACAHh09OivaBj5xj58kX9C+2DxgJXCz3oaLX6pd6g==", "peerDependencies": { "@math.gl/web-mercator": "^3.6.3", "@rnmapbox/maps": "^10.0.11", @@ -53035,9 +53035,9 @@ } }, "@hayata/react-native-test-package": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/@hayata/react-native-test-package/-/react-native-test-package-1.0.26.tgz", - "integrity": "sha512-op90UuAkVESwDhegrEw6gNwRoDboZsFDFyOVwpvRKYvX7rNN3DroYCuRyPbEGWp9MNWRv4P6xGH6DGr1ot3RIw==", + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/@hayata/react-native-test-package/-/react-native-test-package-1.0.28.tgz", + "integrity": "sha512-EiiJJeVEcDkxckcXAxBIfjcTVqqPzRrp73wc9HQLqSRVWACAHh09OivaBj5xj58kX9C+2DxgJXCz3oaLX6pd6g==", "requires": {} }, "@html-ng/bounding-client-rect-observer": { From fa00c54126ae7a0f05627fed9fb83b319db5ddb3 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Fri, 11 Aug 2023 09:01:51 -0700 Subject: [PATCH 10/64] feat: configure .env file as part of map setup --- scripts/configure-mapbox.sh | 44 +++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/scripts/configure-mapbox.sh b/scripts/configure-mapbox.sh index f748545b54c1..c6cfc8626507 100755 --- a/scripts/configure-mapbox.sh +++ b/scripts/configure-mapbox.sh @@ -33,11 +33,12 @@ # # Usage: # ------ -# To run this script, pass the secret Mapbox access token as a command-line argument: -# ./scriptname.sh YOUR_MAPBOX_ACCESS_TOKEN +# To run this script, pass the secret Mapbox access token and public token as command-line arguments: +# ./scriptname.sh YOUR_MAPBOX_ACCESS_TOKEN YOUR_MAPBOX_PUBLIC_TOKEN NETRC_PATH="$HOME/.netrc" GRADLE_PROPERTIES_PATH="$HOME/.gradle/gradle.properties" +ENV_PATH="../.env" # This function provides a user-friendly error message when the script encounters an error. # It informs the user about probable permission issues and suggests commands to resolve them. @@ -61,16 +62,18 @@ handleError() { # Set a trap to call the handleError function when any of the commands fail trap handleError ERR -# Take the token as a command-line argument +# Take the tokens as command-line arguments TOKEN="$1" +PUBLIC_TOKEN="$2" -# Check if the token was provided -if [ -z "$TOKEN" ]; then - echo "Usage: $0 " - echo "No token provided. Exiting." +# Check if the tokens were provided +if [ -z "$TOKEN" ] || [ -z "$PUBLIC_TOKEN" ]; then + echo "Usage: $0 " + echo "Token(s) missing. Exiting." exit 1 fi + # ----------------------------------------------- # iOS Configuration for .netrc # ----------------------------------------------- @@ -132,3 +135,30 @@ else echo "MAPBOX_DOWNLOADS_TOKEN=$TOKEN" >> $GRADLE_PROPERTIES_PATH echo -e "\n$GRADLE_PROPERTIES_PATH has been updated with new credentials" fi + +# ----------------------------------------------- +# Configuration for .env +# ----------------------------------------------- +echo -e "\nConfiguring $ENV_PATH for Mapbox public token" + +# Check if .env exists. If not, create one. +if [ ! -f $ENV_PATH ]; then + touch $ENV_PATH +fi + +# Check if MAPBOX_PUBLIC_TOKEN already exists in the file +if grep -q "MAPBOX_PUBLIC_TOKEN" $ENV_PATH; then + # Extract the current public token from .env + CURRENT_PUBLIC_TOKEN=$(grep "MAPBOX_PUBLIC_TOKEN" $ENV_PATH | cut -d'=' -f2) + + # Compare the current public token to the entered public token + if [ "$CURRENT_PUBLIC_TOKEN" == "$PUBLIC_TOKEN" ]; then + echo -e "\nThe entered public token matches the existing public token in $ENV_PATH. No changes made." + else + sed -i.bak "s/MAPBOX_PUBLIC_TOKEN=$CURRENT_PUBLIC_TOKEN/MAPBOX_PUBLIC_TOKEN=$PUBLIC_TOKEN/" $ENV_PATH + echo -e "\nPublic token updated in $ENV_PATH" + fi +else + echo "MAPBOX_PUBLIC_TOKEN=$PUBLIC_TOKEN" >> $ENV_PATH + echo -e "\n$ENV_PATH has been updated with new public token" +fi \ No newline at end of file From e11ca166236d7a1840dddd8016ce2b7669c0fa82 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Fri, 11 Aug 2023 09:02:36 -0700 Subject: [PATCH 11/64] feat: use new MapView API --- src/components/DistanceRequest.js | 33 +++++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/components/DistanceRequest.js b/src/components/DistanceRequest.js index 05243f819038..922e6809f310 100644 --- a/src/components/DistanceRequest.js +++ b/src/components/DistanceRequest.js @@ -20,6 +20,9 @@ import LinearGradient from './LinearGradient'; const MAX_WAYPOINTS = 25; const MAX_WAYPOINTS_TO_DISPLAY = 4; +const SF_COORDINATES = [-122.4194, 37.7749]; +const DEFAULT_ZOOM_LEVEL = 15; + const propTypes = { /** The transactionID of this request */ transactionID: PropTypes.string, @@ -128,19 +131,6 @@ function DistanceRequest({transactionID, transaction, translate}) { /> )} - - -