diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..a65b41774 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +lib diff --git a/.gitignore b/.gitignore index b5426661e..5afb68c96 100644 --- a/.gitignore +++ b/.gitignore @@ -21,14 +21,6 @@ DerivedData *.xcuserstate project.xcworkspace -# Gradle -/build/ -/RNTester/android/app/build/ -/RNTester/android/app/gradle/ -/RNTester/android/app/gradlew -/RNTester/android/app/gradlew.bat -/ReactAndroid/build/ - # Watchman .watchmanconfig @@ -40,7 +32,6 @@ local.properties node_modules *.log .nvm -/bots/node_modules/ # Yarn .yarn/* @@ -58,35 +49,11 @@ package.tgz .DS_Store # Test generated files -/ReactAndroid/src/androidTest/assets/AndroidTestBundle.js *.js.meta -/coverage -/third-party - # Root dir shouldn't have Xcode project /*.xcodeproj -# ReactCommon subdir shouldn't have Xcode project -/ReactCommon/**/*.xcodeproj -RNTester/build - -# Libs that shouldn't have Xcode project -/Libraries/FBLazyVector/**/*.xcodeproj -/Libraries/FBReactNativeSpec/**/*.xcodeproj -/Libraries/RCTRequired/**/*.xcodeproj -/React/CoreModules/**/*.xcodeproj -/packages/react-native-codegen/**/*.xcodeproj - -# CocoaPods -/template/ios/Pods/ -/template/ios/Podfile.lock -/RNTester/Gemfile.lock - -# Ignore RNTester specific Pods, but keep the __offline_mirrors__ here. -RNTester/Pods/* -!RNTester/Pods/__offline_mirrors - # react-native-codegen /ReactCommon/fabric/components/rncore/ /schema-rncore.json @@ -96,8 +63,6 @@ RNTester/Pods/* .vs # project specific -ios/Mapbox.framework -ios/Maplibre.framework ios/temp.zip ios/.framework_version ios/Pods/ @@ -110,19 +75,19 @@ android/gradle/ android/gradlew android/gradlew.bat android/local.properties - .idea coverage .project *.core.prefs *.iml - -# Config plugin -/plugin/build - .env -.yarn # Expo packages/expo-app/ios -packages/expo-app/android \ No newline at end of file +packages/expo-app/android + +# Build by config plugin +/plugin/build + +# Build by bob +lib/ diff --git a/.npmignore b/.npmignore index 997ea7df6..4c0e5f907 100644 --- a/.npmignore +++ b/.npmignore @@ -42,7 +42,3 @@ android/local.properties example __tests__ coverage - -plugin/src -plugin/jest.config.js -plugin/tsconfig.json diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ea5eedf00..ea372b624 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,7 +28,7 @@ Make sure to correctly configure your Editor following [this docs](https://yarnp The metro bundlers under [`/packages/react-native-app`](/packages/react-native-app) and [ `/packages/expo-app`](/packages/expo-app) is set up to use the libraries files under root. Which means, when you change something within [ -`/javascript/components/UserLocation.tsx`](/javascript/components/UserLocation.tsx) +`/src/components/UserLocation.tsx`](/src/components/UserLocation.tsx) it will be reflected in any scene in example that uses that component. TODO: A better overview of how we use jest, detox, etc. (issue #22) diff --git a/README.md b/README.md index 283bafe9f..7b9239860 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,11 @@ diverged, it has become necessary to separate the projects into specific wrapper
-Indoor Building Map Android -Indoor Building Map iOS diff --git a/__tests__/components/BackgroundLayer.test.js b/__tests__/components/BackgroundLayer.test.js index 2c5dfa3b1..48c764500 100644 --- a/__tests__/components/BackgroundLayer.test.js +++ b/__tests__/components/BackgroundLayer.test.js @@ -1,7 +1,7 @@ import { render } from "@testing-library/react-native"; import React from "react"; -import BackgroundLayer from "../../javascript/components/BackgroundLayer"; +import BackgroundLayer from "../../src/components/BackgroundLayer"; describe("BackgroundLayer", () => { test("renders correctly with default props", () => { diff --git a/__tests__/components/Callout.test.js b/__tests__/components/Callout.test.js index ca1a55df7..9f27809dc 100644 --- a/__tests__/components/Callout.test.js +++ b/__tests__/components/Callout.test.js @@ -2,7 +2,7 @@ import { render } from "@testing-library/react-native"; import React from "react"; import { View } from "react-native"; -import Callout from "../../javascript/components/Callout"; +import Callout from "../../src/components/Callout"; describe("Callout", () => { test("renders with custom title", () => { diff --git a/__tests__/components/Camera.test.tsx b/__tests__/components/Camera.test.tsx index f03cfc3cc..81df8726d 100644 --- a/__tests__/components/Camera.test.tsx +++ b/__tests__/components/Camera.test.tsx @@ -2,19 +2,19 @@ import { render } from "@testing-library/react-native"; import React from "react"; import Camera, { - CameraBounds, - CameraProps, - CameraRef, - CameraStop, - CameraStops, + type CameraBounds, + type CameraProps, + type CameraRef, + type CameraStop, + type CameraStops, getNativeCameraMode, - NativeCameraProps, + type NativeCameraProps, UserTrackingMode, -} from "../../javascript/components/Camera"; -import { NativeRef } from "../../javascript/hooks/useNativeRef"; +} from "../../src/components/Camera"; +import { type NativeRef } from "../../src/hooks/useNativeRef"; const mockCameraNativeRef = React.createRef>(); -jest.mock("../../javascript/hooks/useNativeRef", () => ({ +jest.mock("../../src/hooks/useNativeRef", () => ({ useNativeRef: () => { return mockCameraNativeRef; }, diff --git a/__tests__/components/CircleLayer.test.js b/__tests__/components/CircleLayer.test.js index 86746e7b1..e76952cdc 100644 --- a/__tests__/components/CircleLayer.test.js +++ b/__tests__/components/CircleLayer.test.js @@ -1,7 +1,7 @@ import { render } from "@testing-library/react-native"; import React from "react"; -import CircleLayer from "../../javascript/components/CircleLayer"; +import CircleLayer from "../../src/components/CircleLayer"; describe("CircleLayer", () => { test("renders correctly with default props", () => { diff --git a/__tests__/components/HeatmapLayer.test.js b/__tests__/components/HeatmapLayer.test.js index 7b3388ec9..e866c010b 100644 --- a/__tests__/components/HeatmapLayer.test.js +++ b/__tests__/components/HeatmapLayer.test.js @@ -1,7 +1,7 @@ import { render } from "@testing-library/react-native"; import React from "react"; -import HeatmapLayer from "../../javascript/components/HeatmapLayer"; +import HeatmapLayer from "../../src/components/HeatmapLayer"; describe("HeatmapLayer", () => { test("renders correctly with default props", () => { diff --git a/__tests__/components/Light.test.js b/__tests__/components/Light.test.js index 6e567a66b..79d22854c 100644 --- a/__tests__/components/Light.test.js +++ b/__tests__/components/Light.test.js @@ -1,7 +1,7 @@ import { render } from "@testing-library/react-native"; import React from "react"; -import Light from "../../javascript/components/Light"; +import Light from "../../src/components/Light"; describe("Light", () => { test("renders correctly", () => { diff --git a/__tests__/components/MapView.test.js b/__tests__/components/MapView.test.js index 0877e49e8..3e9b972dc 100644 --- a/__tests__/components/MapView.test.js +++ b/__tests__/components/MapView.test.js @@ -1,7 +1,7 @@ import { render } from "@testing-library/react-native"; import * as React from "react"; -import MapView from "../../javascript/components/MapView"; +import MapView from "../../src/components/MapView"; describe("MapView", () => { test("renders with testID", () => { diff --git a/__tests__/components/Style.test.js b/__tests__/components/Style.test.js index fd204912d..72beb79ba 100644 --- a/__tests__/components/Style.test.js +++ b/__tests__/components/Style.test.js @@ -1,19 +1,19 @@ import { render } from "@testing-library/react-native"; import React from "react"; -import BackgroundLayer from "../../javascript/components/BackgroundLayer"; -import CircleLayer from "../../javascript/components/CircleLayer"; -import FillExtrusionLayer from "../../javascript/components/FillExtrusionLayer"; -import FillLayer from "../../javascript/components/FillLayer"; -import HeatmapLayer from "../../javascript/components/HeatmapLayer"; -import ImageSource from "../../javascript/components/ImageSource"; -import LineLayer from "../../javascript/components/LineLayer"; -import RasterLayer from "../../javascript/components/RasterLayer"; -import RasterSource from "../../javascript/components/RasterSource"; -import ShapeSource from "../../javascript/components/ShapeSource"; -import Style from "../../javascript/components/Style"; -import SymbolLayer from "../../javascript/components/SymbolLayer"; -import VectorSource from "../../javascript/components/VectorSource"; +import BackgroundLayer from "../../src/components/BackgroundLayer"; +import CircleLayer from "../../src/components/CircleLayer"; +import FillExtrusionLayer from "../../src/components/FillExtrusionLayer"; +import FillLayer from "../../src/components/FillLayer"; +import HeatmapLayer from "../../src/components/HeatmapLayer"; +import ImageSource from "../../src/components/ImageSource"; +import LineLayer from "../../src/components/LineLayer"; +import RasterLayer from "../../src/components/RasterLayer"; +import RasterSource from "../../src/components/RasterSource"; +import ShapeSource from "../../src/components/ShapeSource"; +import Style from "../../src/components/Style"; +import SymbolLayer from "../../src/components/SymbolLayer"; +import VectorSource from "../../src/components/VectorSource"; describe("Style", () => { test("renders vectory source correctly", () => { diff --git a/__tests__/components/SymbolLayer.test.js b/__tests__/components/SymbolLayer.test.js index b669fffc1..56e1c743c 100644 --- a/__tests__/components/SymbolLayer.test.js +++ b/__tests__/components/SymbolLayer.test.js @@ -3,7 +3,7 @@ import React from "react"; import SymbolLayer, { NATIVE_MODULE_NAME, -} from "../../javascript/components/SymbolLayer"; +} from "../../src/components/SymbolLayer"; describe("SymbolLayer", () => { test("renders correctly with default props", () => { diff --git a/__tests__/components/UserLocation.test.js b/__tests__/components/UserLocation.test.js index 2cf9fd1b1..413f4a1e5 100644 --- a/__tests__/components/UserLocation.test.js +++ b/__tests__/components/UserLocation.test.js @@ -1,10 +1,10 @@ import { render, fireEvent, waitFor } from "@testing-library/react-native"; import React from "react"; -import CircleLayer from "../../javascript/components/CircleLayer"; -import ShapeSource from "../../javascript/components/ShapeSource"; -import UserLocation from "../../javascript/components/UserLocation"; -import locationManager from "../../javascript/modules/location/locationManager"; +import CircleLayer from "../../src/components/CircleLayer"; +import ShapeSource from "../../src/components/ShapeSource"; +import UserLocation from "../../src/components/UserLocation"; +import locationManager from "../../src/modules/location/locationManager"; const position = { coords: { diff --git a/__tests__/interface.test.js b/__tests__/interface.test.js index e179547cc..5327800d8 100644 --- a/__tests__/interface.test.js +++ b/__tests__/interface.test.js @@ -1,6 +1,6 @@ -import MapLibreGL from "../javascript"; +import MapLibreGL from "../src"; -// Assert that all required Maplibre modules are accessible and exported +// Assert that all required MapLibre modules are accessible and exported describe("Public Interface", () => { it("should contain all expected components and utils", () => { const actualKeys = Object.keys(MapLibreGL); diff --git a/__tests__/modules/location/locationManager.test.js b/__tests__/modules/location/locationManager.test.js index f7395f76d..befe8822c 100644 --- a/__tests__/modules/location/locationManager.test.js +++ b/__tests__/modules/location/locationManager.test.js @@ -2,7 +2,7 @@ import { NativeModules } from "react-native"; import LocationManager, { LocationModuleEventEmitter, -} from "../../../javascript/modules/location/locationManager"; +} from "../../../src/modules/location/locationManager"; const MapLibreGL = NativeModules.MLNModule; const MapLibreGLLocationManager = NativeModules.MLNLocationModule; diff --git a/__tests__/modules/offline/OfflineCreatePackOptions.test.js b/__tests__/modules/offline/OfflineCreatePackOptions.test.js index 82c85fe0f..f533bdf23 100644 --- a/__tests__/modules/offline/OfflineCreatePackOptions.test.js +++ b/__tests__/modules/offline/OfflineCreatePackOptions.test.js @@ -1,6 +1,6 @@ import { featureCollection, point } from "@turf/helpers"; -import OfflineCreatePackOptions from "../../../javascript/modules/offline/OfflineCreatePackOptions"; +import OfflineCreatePackOptions from "../../../src/modules/offline/OfflineCreatePackOptions"; describe("OfflineCreatePackOptions", () => { const options = { diff --git a/__tests__/modules/offline/OfflinePack.test.js b/__tests__/modules/offline/OfflinePack.test.js index 5ebd9b59c..effc9695e 100644 --- a/__tests__/modules/offline/OfflinePack.test.js +++ b/__tests__/modules/offline/OfflinePack.test.js @@ -1,6 +1,6 @@ import { NativeModules } from "react-native"; -import OfflinePack from "../../../javascript/modules/offline/OfflinePack"; +import OfflinePack from "../../../src/modules/offline/OfflinePack"; describe("OfflinePack", () => { const fakeNativePack = { diff --git a/__tests__/modules/offline/offlineManager.test.js b/__tests__/modules/offline/offlineManager.test.js index b13ca7087..93cb294af 100644 --- a/__tests__/modules/offline/offlineManager.test.js +++ b/__tests__/modules/offline/offlineManager.test.js @@ -1,7 +1,7 @@ import { NativeModules, Platform } from "react-native"; -import MapLibreGL from "../../../javascript"; -import { OfflineModuleEventEmitter } from "../../../javascript/modules/offline/offlineManager"; +import MapLibreGL from "../../../src"; +import { OfflineModuleEventEmitter } from "../../../src/modules/offline/offlineManager"; describe("offlineManager", () => { const packOptions = { diff --git a/__tests__/modules/snapshot/SnapshotOptions.test.js b/__tests__/modules/snapshot/SnapshotOptions.test.js index 68fd1c75e..fab768d91 100644 --- a/__tests__/modules/snapshot/SnapshotOptions.test.js +++ b/__tests__/modules/snapshot/SnapshotOptions.test.js @@ -1,7 +1,7 @@ import { featureCollection, point } from "@turf/helpers"; import { NativeModules } from "react-native"; -import SnapshotOptions from "../../../javascript/modules/snapshot/SnapshotOptions"; +import SnapshotOptions from "../../../src/modules/snapshot/SnapshotOptions"; describe("SnapshotOptions", () => { it("should throw error if no centerCoordinate or bounds are provided", () => { diff --git a/__tests__/modules/snapshot/snapshotManager.test.js b/__tests__/modules/snapshot/snapshotManager.test.js index 6b95f7cd9..076db9794 100644 --- a/__tests__/modules/snapshot/snapshotManager.test.js +++ b/__tests__/modules/snapshot/snapshotManager.test.js @@ -1,4 +1,4 @@ -import MapLibreGL from "../../../javascript"; +import MapLibreGL from "../../../src"; describe("snapshotManager", () => { it("should resolve uri", async () => { diff --git a/__tests__/utils/BridgeValue.test.js b/__tests__/utils/BridgeValue.test.js index 63b88ead1..99e3516b4 100644 --- a/__tests__/utils/BridgeValue.test.js +++ b/__tests__/utils/BridgeValue.test.js @@ -1,4 +1,4 @@ -import BridgeValue from "../../javascript/utils/BridgeValue"; +import BridgeValue from "../../src/utils/BridgeValue"; describe("BridgeValue", () => { it("should convert to array of numbers", () => { diff --git a/__tests__/utils/animated/AnimatedCoordinatesArray.test.js b/__tests__/utils/animated/AnimatedCoordinatesArray.test.js index 1a28a0e9d..fd48f6836 100644 --- a/__tests__/utils/animated/AnimatedCoordinatesArray.test.js +++ b/__tests__/utils/animated/AnimatedCoordinatesArray.test.js @@ -3,9 +3,9 @@ import React from "react"; import { Animated, Easing } from "react-native"; import TestRenderer from "react-test-renderer"; -import ShapeSource from "../../../javascript/components/ShapeSource"; -import AnimatedCoordinatesArray from "../../../javascript/utils/animated/AnimatedCoordinatesArray"; -import AnimatedShape from "../../../javascript/utils/animated/AnimatedShape"; +import ShapeSource from "../../../src/components/ShapeSource"; +import AnimatedCoordinatesArray from "../../../src/utils/animated/AnimatedCoordinatesArray"; +import AnimatedShape from "../../../src/utils/animated/AnimatedShape"; let clock = null; let oldNodeEnv = null; diff --git a/__tests__/utils/filterUtils.test.js b/__tests__/utils/filterUtils.test.js index c00301da1..91f02c131 100644 --- a/__tests__/utils/filterUtils.test.js +++ b/__tests__/utils/filterUtils.test.js @@ -1,5 +1,5 @@ -import BridgeValue from "../../javascript/utils/BridgeValue"; -import { getFilter } from "../../javascript/utils/filterUtils"; +import BridgeValue from "../../src/utils/BridgeValue"; +import { getFilter } from "../../src/utils/filterUtils"; const FilterItem = BridgeValue; diff --git a/babel.config.js b/babel.config.js index 32c77c86a..cf231eecd 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,12 +1,5 @@ module.exports = { - presets: ["module:@react-native/babel-preset"], - plugins: [ - ["@babel/plugin-proposal-class-properties", { loose: true }], - ["@babel/plugin-transform-private-methods", { loose: true }], + presets: [ + ["module:react-native-builder-bob/babel-preset", { modules: "commonjs" }], ], - env: { - production: { - plugins: ["transform-remove-console"], - }, - }, }; diff --git a/docs/Annotation.md b/docs/Annotation.md index e6f8db1b5..6709a2e11 100644 --- a/docs/Annotation.md +++ b/docs/Annotation.md @@ -1,5 +1,5 @@ - + # `` diff --git a/docs/BackgroundLayer.md b/docs/BackgroundLayer.md index d18be83ed..552786c56 100644 --- a/docs/BackgroundLayer.md +++ b/docs/BackgroundLayer.md @@ -1,5 +1,5 @@ - + # `` diff --git a/docs/Callout.md b/docs/Callout.md index 0a5abb2b9..be75f887a 100644 --- a/docs/Callout.md +++ b/docs/Callout.md @@ -1,5 +1,5 @@ - + # `` Callout that displays information about a selected annotation near the annotation. diff --git a/docs/Camera.md b/docs/Camera.md index 0f5c09688..16620de03 100644 --- a/docs/Camera.md +++ b/docs/Camera.md @@ -1,5 +1,5 @@ - + # `` @@ -23,7 +23,7 @@ | followZoomLevel | `number` | `none` | `false` | The zoomLevel on map while followUserLocation is set to `true` | | followPitch | `number` | `none` | `false` | The pitch on map while followUserLocation is set to `true` | | followHeading | `number` | `none` | `false` | The heading on map while followUserLocation is set to `true` | -| onUserTrackingModeChange | `func` | `none` | `false` | Triggered when `followUserLocation` or `followUserMode` changes
*signature:*`(event:MaplibreGLEvent) => void` | +| onUserTrackingModeChange | `func` | `none` | `false` | Triggered when `followUserLocation` or `followUserMode` changes
*signature:*`(event:MapLibreRNEvent) => void` | ## Methods ### `fitBounds(ne, sw, [padding], [animationDuration])` diff --git a/docs/CircleLayer.md b/docs/CircleLayer.md index 41252c94e..cde208781 100644 --- a/docs/CircleLayer.md +++ b/docs/CircleLayer.md @@ -1,5 +1,5 @@ - + # `` CircleLayer is a style layer that renders one or more filled circles on the map. diff --git a/docs/FillExtrusionLayer.md b/docs/FillExtrusionLayer.md index 9508decf8..af71e61d1 100644 --- a/docs/FillExtrusionLayer.md +++ b/docs/FillExtrusionLayer.md @@ -1,5 +1,5 @@ - + # `` FillExtrusionLayer is a style layer that renders one or more 3D extruded polygons on the map. diff --git a/docs/FillLayer.md b/docs/FillLayer.md index fb310d5e7..af87e33d9 100644 --- a/docs/FillLayer.md +++ b/docs/FillLayer.md @@ -1,5 +1,5 @@ - + # `` FillLayer is a style layer that renders one or more filled (and optionally stroked) polygons on the map. diff --git a/docs/HeadingIndicator.md b/docs/HeadingIndicator.md index 34cbaabf3..96e9e6bdc 100644 --- a/docs/HeadingIndicator.md +++ b/docs/HeadingIndicator.md @@ -1,5 +1,5 @@ - + # `` diff --git a/docs/HeatmapLayer.md b/docs/HeatmapLayer.md index e2e286de8..6089bb84c 100644 --- a/docs/HeatmapLayer.md +++ b/docs/HeatmapLayer.md @@ -1,5 +1,5 @@ - + # `` HeatmapLayer is a style layer that renders one or more filled circles on the map. diff --git a/docs/ImageSource.md b/docs/ImageSource.md index f9782bad5..cb32c6232 100644 --- a/docs/ImageSource.md +++ b/docs/ImageSource.md @@ -1,5 +1,5 @@ - + # `` ImageSource is a content source that is used for a georeferenced raster image to be shown on the map.
The georeferenced image scales and rotates as the user zooms and rotates the map diff --git a/docs/Images.md b/docs/Images.md index b4c77f1e7..a500e76db 100644 --- a/docs/Images.md +++ b/docs/Images.md @@ -1,5 +1,5 @@ - + # `` Images defines the images used in Symbol etc layers diff --git a/docs/Light.md b/docs/Light.md index 66179665a..e78d3ed5a 100644 --- a/docs/Light.md +++ b/docs/Light.md @@ -1,5 +1,5 @@ - + # `` Light represents the light source for extruded geometries diff --git a/docs/LineLayer.md b/docs/LineLayer.md index 7fce88149..3b32dfa6b 100644 --- a/docs/LineLayer.md +++ b/docs/LineLayer.md @@ -1,5 +1,5 @@ - + # `` LineLayer is a style layer that renders one or more stroked polylines on the map. diff --git a/docs/MapView.md b/docs/MapView.md index 4605b9857..dde92d465 100644 --- a/docs/MapView.md +++ b/docs/MapView.md @@ -1,5 +1,5 @@ - + # `` MapView backed by MapLibre Native diff --git a/docs/MarkerView.md b/docs/MarkerView.md index 02e29f195..da9a4a963 100644 --- a/docs/MarkerView.md +++ b/docs/MarkerView.md @@ -1,5 +1,5 @@ - + # `` MarkerView allows you to place a interactive react native marker to the map.

If you have static view consider using PointAnnotation or SymbolLayer they'll offer much better performance
.
This is based on [MakerView plugin](https://docs.mapbox.com/android/plugins/overview/markerview/) on Android
and PointAnnotation on iOS. diff --git a/docs/NativeUserLocation.md b/docs/NativeUserLocation.md index 9e63e7eda..697729b78 100644 --- a/docs/NativeUserLocation.md +++ b/docs/NativeUserLocation.md @@ -1,5 +1,5 @@ - + # `` diff --git a/docs/PointAnnotation.md b/docs/PointAnnotation.md index 97c95f631..b396e4dfa 100644 --- a/docs/PointAnnotation.md +++ b/docs/PointAnnotation.md @@ -1,5 +1,5 @@ - + # `` PointAnnotation represents a one-dimensional shape located at a single geographical coordinate.

Consider using ShapeSource and SymbolLayer instead, if you have many points and you have static images,
they'll offer much better performance

.
If you need interctive views please use MarkerView,
as with PointAnnotation on Android child views are rendered onto a bitmap for better performance. diff --git a/docs/RasterLayer.md b/docs/RasterLayer.md index 8a377762d..b9ab8d920 100644 --- a/docs/RasterLayer.md +++ b/docs/RasterLayer.md @@ -1,5 +1,5 @@ - + # `` diff --git a/docs/RasterSource.md b/docs/RasterSource.md index b54bb9926..ba02b41ae 100644 --- a/docs/RasterSource.md +++ b/docs/RasterSource.md @@ -1,5 +1,5 @@ - + # `` RasterSource is a map content source that supplies raster image tiles to be shown on the map.
The location of and metadata about the tiles are defined either by an option dictionary
or by an external file that conforms to the TileJSON specification. diff --git a/docs/ShapeSource.md b/docs/ShapeSource.md index 73a7cb89e..13c647200 100644 --- a/docs/ShapeSource.md +++ b/docs/ShapeSource.md @@ -1,5 +1,5 @@ - + # `` ShapeSource is a map content source that supplies vector shapes to be shown on the map.
The shape may be a url or a GeoJSON object diff --git a/docs/Style.md b/docs/Style.md index 1591334b9..0da87dd42 100644 --- a/docs/Style.md +++ b/docs/Style.md @@ -1,11 +1,11 @@ - + # `` Style is a component that automatically adds sources / layers to the map using MapLibre Style Spec.
Only [`sources`](https://maplibre.org/maplibre-gl-js-docs/style-spec/sources/) & [`layers`](https://maplibre.org/maplibre-gl-js-docs/style-spec/layers/) are supported.
Other fields such as `sprites`, `glyphs` etc. will be ignored. Not all layer / source attributes from the style spec are supported, in general the supported attributes will be mentioned under https://github.com/maplibre/maplibre-react-native/tree/main/docs.

TODO: Maintainer forking this project does not understand the above comment regarding what is supported. ## Props | Prop | Type | Default | Required | Description | | ---- | :--: | :-----: | :------: | :----------: | -| json | `MaplibreJSON \| URL` | `none` | `false` | A JSON object conforming to the schema described in the MapLibre Style Specification, or a URL to such JSON. | +| json | `MapLibreJSON \| URL` | `none` | `false` | A JSON object conforming to the schema described in the MapLibre Style Specification, or a URL to such JSON. | diff --git a/docs/SymbolLayer.md b/docs/SymbolLayer.md index 4a4fe8ace..e663f6464 100644 --- a/docs/SymbolLayer.md +++ b/docs/SymbolLayer.md @@ -1,5 +1,5 @@ - + # `` SymbolLayer is a style layer that renders icon and text labels at points or along lines on the map. diff --git a/docs/UserLocation.md b/docs/UserLocation.md index a99b32938..7ff852e21 100644 --- a/docs/UserLocation.md +++ b/docs/UserLocation.md @@ -1,5 +1,5 @@ - + # `` diff --git a/docs/VectorSource.md b/docs/VectorSource.md index c80f3411e..6944ce80a 100644 --- a/docs/VectorSource.md +++ b/docs/VectorSource.md @@ -1,5 +1,5 @@ - + # `` VectorSource is a map content source that supplies tiled vector data in Mapbox Vector Tile format to be shown on the map.
The location of and metadata about the tiles are defined either by an option dictionary or by an external file that conforms to the TileJSON specification. diff --git a/assets/indoor_building_map_android.png b/docs/assets/indoor-building-map-android.png similarity index 100% rename from assets/indoor_building_map_android.png rename to docs/assets/indoor-building-map-android.png diff --git a/assets/indoor_building_map_ios.png b/docs/assets/indoor-building-map-ios.png similarity index 100% rename from assets/indoor_building_map_ios.png rename to docs/assets/indoor-building-map-ios.png diff --git a/docs/coordinates.md b/docs/coordinates.md index e26f838b1..d51df86c8 100644 --- a/docs/coordinates.md +++ b/docs/coordinates.md @@ -1,5 +1,5 @@ - + # `` Coorinates sent by locationManager diff --git a/docs/docs.json b/docs/docs.json index 9eb698217..d7f926fb1 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -81,7 +81,7 @@ "description": "FIX ME NO DESCRIPTION" } ], - "filePath": "javascript/components/Annotation.tsx", + "filePath": "src/components/Annotation.tsx", "name": "Annotation" }, "BackgroundLayer": { @@ -108,7 +108,7 @@ "BaseProps", "BaseLayerProps" ], - "filePath": "javascript/components/BackgroundLayer.tsx", + "filePath": "src/components/BackgroundLayer.tsx", "name": "BackgroundLayer", "styles": [ { @@ -237,7 +237,7 @@ "composes": [ "Omit" ], - "filePath": "javascript/components/Callout.tsx", + "filePath": "src/components/Callout.tsx", "name": "Callout" }, "Camera": { @@ -538,16 +538,16 @@ "required": false, "type": { "name": "func", - "funcSignature": "(event:MaplibreGLEvent) => void" + "funcSignature": "(event:MapLibreRNEvent) => void" }, "default": "none", - "description": "Triggered when `followUserLocation` or `followUserMode` changes\n*signature:*`(event:MaplibreGLEvent) => void`" + "description": "Triggered when `followUserLocation` or `followUserMode` changes\n*signature:*`(event:MapLibreRNEvent) => void`" } ], "composes": [ "BaseProps" ], - "filePath": "javascript/components/Camera.tsx", + "filePath": "src/components/Camera.tsx", "name": "Camera" }, "CircleLayer": { @@ -574,7 +574,7 @@ "BaseProps", "BaseLayerProps" ], - "filePath": "javascript/components/CircleLayer.tsx", + "filePath": "src/components/CircleLayer.tsx", "name": "CircleLayer", "styles": [ { @@ -877,7 +877,7 @@ "BaseProps", "BaseLayerProps" ], - "filePath": "javascript/components/FillExtrusionLayer.tsx", + "filePath": "src/components/FillExtrusionLayer.tsx", "name": "FillExtrusionLayer", "styles": [ { @@ -1091,7 +1091,7 @@ "BaseProps", "BaseLayerProps" ], - "filePath": "javascript/components/FillLayer.tsx", + "filePath": "src/components/FillLayer.tsx", "name": "FillLayer", "styles": [ { @@ -1290,7 +1290,7 @@ "composes": [ "BaseProps" ], - "filePath": "javascript/components/HeadingIndicator.tsx", + "filePath": "src/components/HeadingIndicator.tsx", "name": "HeadingIndicator" }, "HeatmapLayer": { @@ -1317,7 +1317,7 @@ "BaseProps", "BaseLayerProps" ], - "filePath": "javascript/components/HeatmapLayer.tsx", + "filePath": "src/components/HeatmapLayer.tsx", "name": "HeatmapLayer", "styles": [ { @@ -1493,7 +1493,7 @@ "composes": [ "BaseProps" ], - "filePath": "javascript/components/ImageSource.tsx", + "filePath": "src/components/ImageSource.tsx", "name": "ImageSource" }, "Images": { @@ -1546,7 +1546,7 @@ "composes": [ "BaseProps" ], - "filePath": "javascript/components/Images.tsx", + "filePath": "src/components/Images.tsx", "name": "Images" }, "Light": { @@ -1566,7 +1566,7 @@ "BaseProps", "BaseLayerProps" ], - "filePath": "javascript/components/Light.tsx", + "filePath": "src/components/Light.tsx", "name": "Light", "styles": [ { @@ -1678,7 +1678,7 @@ "BaseProps", "BaseLayerProps" ], - "filePath": "javascript/components/LineLayer.tsx", + "filePath": "src/components/LineLayer.tsx", "name": "LineLayer", "styles": [ { @@ -2558,7 +2558,7 @@ "composes": [ "BaseProps" ], - "filePath": "javascript/components/MapView.tsx", + "filePath": "src/components/MapView.tsx", "name": "MapView" }, "MarkerView": { @@ -2623,7 +2623,7 @@ "composes": [ "ViewProps" ], - "filePath": "javascript/components/MarkerView.tsx", + "filePath": "src/components/MarkerView.tsx", "name": "MarkerView" }, "NativeUserLocation": { @@ -2653,7 +2653,7 @@ "description": "Android only. Set max FPS at which location animators can output updates. Use this setting to limit animation rate of the location puck on higher zoom levels to decrease the stress on the device's CPU which can directly improve battery life, without sacrificing UX." } ], - "filePath": "javascript/components/NativeUserLocation.tsx", + "filePath": "src/components/NativeUserLocation.tsx", "name": "NativeUserLocation" }, "PointAnnotation": { @@ -2757,7 +2757,7 @@ "description": "FIX ME NO DESCRIPTION" } ], - "filePath": "javascript/components/PointAnnotation.tsx", + "filePath": "src/components/PointAnnotation.tsx", "name": "PointAnnotation" }, "RasterLayer": { @@ -2784,7 +2784,7 @@ "BaseProps", "BaseLayerProps" ], - "filePath": "javascript/components/RasterLayer.tsx", + "filePath": "src/components/RasterLayer.tsx", "name": "RasterLayer", "styles": [ { @@ -3037,7 +3037,7 @@ "composes": [ "BaseProps" ], - "filePath": "javascript/components/RasterSource.tsx", + "filePath": "src/components/RasterSource.tsx", "name": "RasterSource" }, "ShapeSource": { @@ -3345,7 +3345,7 @@ "composes": [ "BaseProps" ], - "filePath": "javascript/components/ShapeSource.tsx", + "filePath": "src/components/ShapeSource.tsx", "name": "ShapeSource" }, "Style": { @@ -3356,12 +3356,12 @@ { "name": "json", "required": false, - "type": "MaplibreJSON \\| URL", + "type": "MapLibreJSON \\| URL", "default": "none", "description": "A JSON object conforming to the schema described in the MapLibre Style Specification, or a URL to such JSON." } ], - "filePath": "javascript/components/Style.tsx", + "filePath": "src/components/Style.tsx", "name": "Style" }, "SymbolLayer": { @@ -3395,7 +3395,7 @@ "BaseProps", "BaseLayerProps" ], - "filePath": "javascript/components/SymbolLayer.tsx", + "filePath": "src/components/SymbolLayer.tsx", "name": "SymbolLayer", "styles": [ { @@ -4846,7 +4846,7 @@ "description": "Custom location icon of type mapbox-gl-native components\n\nNOTE: Forking maintainer does not understand the above comment." } ], - "filePath": "javascript/components/UserLocation.tsx", + "filePath": "src/components/UserLocation.tsx", "name": "UserLocation" }, "VectorSource": { @@ -5009,12 +5009,12 @@ "composes": [ "BaseProps" ], - "filePath": "javascript/components/VectorSource.tsx", + "filePath": "src/components/VectorSource.tsx", "name": "VectorSource" }, "coordinates": { "name": "coordinates", - "filePath": "javascript/modules/location/locationManager.ts", + "filePath": "src/modules/location/locationManager.ts", "description": "Coorinates sent by locationManager", "props": [], "styles": [], @@ -5022,7 +5022,7 @@ }, "location": { "name": "location", - "filePath": "javascript/modules/location/locationManager.ts", + "filePath": "src/modules/location/locationManager.ts", "description": "Location sent by locationManager", "props": [], "styles": [], @@ -5030,7 +5030,7 @@ }, "offlineManager": { "name": "offlineManager", - "filePath": "javascript/modules/offline/offlineManager.ts", + "filePath": "src/modules/offline/offlineManager.ts", "description": "OfflineManager implements a singleton (shared object) that manages offline packs.\nAll of this class’s instance methods are asynchronous, reflecting the fact that offline resources are stored in a database.\nThe shared object maintains a canonical collection of offline packs.", "props": [], "styles": [], @@ -5051,17 +5051,17 @@ "name": "progressListener", "description": "Callback that listens for status events while downloading the offline resource.", "type": { - "name": "Callback" + "name": "ProgressListener" }, - "optional": true + "optional": false }, { "name": "errorListener", "description": "Callback that listens for status events while downloading the offline resource.", "type": { - "name": "Callback" + "name": "ErrorListener" }, - "optional": true + "optional": false } ], "examples": [ @@ -5299,7 +5299,7 @@ "name": "packName", "description": "Name of the offline pack.", "type": { - "name": "String" + "name": "string" }, "optional": false }, @@ -5307,7 +5307,7 @@ "name": "progressListener", "description": "Callback that listens for status events while downloading the offline resource.", "type": { - "name": "Callback" + "name": "ProgressListener" }, "optional": false }, @@ -5315,7 +5315,7 @@ "name": "errorListener", "description": "Callback that listens for status events while downloading the offline resource.", "type": { - "name": "Callback" + "name": "ErrorListener" }, "optional": false } @@ -5357,7 +5357,7 @@ }, "snapshotManager": { "name": "snapshotManager", - "filePath": "javascript/modules/snapshot/snapshotManager.ts", + "filePath": "src/modules/snapshot/snapshotManager.ts", "description": "The snapshotManager generates static raster images of the map.\nEach snapshot image depicts a portion of a map defined by an SnapshotOptions object you provide.\nThe snapshotter generates the snapshot asynchronous.", "props": [], "styles": [], diff --git a/docs/location.md b/docs/location.md index 9c1604d9e..17f690303 100644 --- a/docs/location.md +++ b/docs/location.md @@ -1,5 +1,5 @@ - + # `` Location sent by locationManager diff --git a/docs/offlineManager.md b/docs/offlineManager.md index 380776dee..dd4ac1da8 100644 --- a/docs/offlineManager.md +++ b/docs/offlineManager.md @@ -1,11 +1,11 @@ - + # `` OfflineManager implements a singleton (shared object) that manages offline packs.
All of this class’s instance methods are asynchronous, reflecting the fact that offline resources are stored in a database.
The shared object maintains a canonical collection of offline packs. ## Methods -### `createPack(options, [progressListener], [errorListener])` +### `createPack(options, progressListener, errorListener)` Creates and registers an offline pack that downloads the resources needed to use the given region offline. @@ -13,8 +13,8 @@ Creates and registers an offline pack that downloads the resources needed to use | Name | Type | Required | Description | | ---- | :--: | :------: | :----------: | | `options` | `OfflineCreatePackOptions` | `Yes` | Create options for a offline pack that specifices zoom levels, style url, and the region to download. | -| `progressListener` | `Callback` | `No` | Callback that listens for status events while downloading the offline resource. | -| `errorListener` | `Callback` | `No` | Callback that listens for status events while downloading the offline resource. | +| `progressListener` | `ProgressListener` | `Yes` | Callback that listens for status events while downloading the offline resource. | +| `errorListener` | `ErrorListener` | `Yes` | Callback that listens for status events while downloading the offline resource. | @@ -199,9 +199,9 @@ Subscribe to download status/error events for the requested offline pack.
No #### Arguments | Name | Type | Required | Description | | ---- | :--: | :------: | :----------: | -| `packName` | `String` | `Yes` | Name of the offline pack. | -| `progressListener` | `Callback` | `Yes` | Callback that listens for status events while downloading the offline resource. | -| `errorListener` | `Callback` | `Yes` | Callback that listens for status events while downloading the offline resource. | +| `packName` | `string` | `Yes` | Name of the offline pack. | +| `progressListener` | `ProgressListener` | `Yes` | Callback that listens for status events while downloading the offline resource. | +| `errorListener` | `ErrorListener` | `Yes` | Callback that listens for status events while downloading the offline resource. | diff --git a/docs/snapshotManager.md b/docs/snapshotManager.md index 958b74161..caf7541ef 100644 --- a/docs/snapshotManager.md +++ b/docs/snapshotManager.md @@ -1,5 +1,5 @@ - + # `` The snapshotManager generates static raster images of the map.
Each snapshot image depicts a portion of a map defined by an SnapshotOptions object you provide.
The snapshotter generates the snapshot asynchronous. diff --git a/javascript/index.ts b/javascript/index.ts deleted file mode 100644 index 120af94d2..000000000 --- a/javascript/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import * as Maplibre from "./Maplibre"; -export * from "./Maplibre"; - -export default Maplibre; diff --git a/javascript/types/BaseProps.ts b/javascript/types/BaseProps.ts deleted file mode 100644 index deb8fa6f4..000000000 --- a/javascript/types/BaseProps.ts +++ /dev/null @@ -1,5 +0,0 @@ -interface BaseProps { - testID?: string; -} - -export default BaseProps; diff --git a/javascript/types/index.ts b/javascript/types/index.ts deleted file mode 100644 index 8a59a428b..000000000 --- a/javascript/types/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { SyntheticEvent } from "react"; - -export type MaplibreGLEvent< - T extends string, - P = GeoJSON.Feature, - V = Element, -> = SyntheticEvent; - -export enum StyleURL { - Default = "https://demotiles.maplibre.org/style.json", -} diff --git a/jest.config.js b/jest.config.js index b735c7cba..44283f0d7 100644 --- a/jest.config.js +++ b/jest.config.js @@ -3,6 +3,6 @@ module.exports = { moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json"], setupFilesAfterEnv: ["./jest-setup.ts"], setupFiles: ["./__tests__/__mocks__/react-native.mock.js"], - modulePathIgnorePatterns: ["__tests__/__mocks__", "fixtures"], - collectCoverageFrom: ["javascript/**/*.{ts,tsx,js,jsx}"], + modulePathIgnorePatterns: ["./lib", "__tests__/__mocks__", "fixtures"], + collectCoverageFrom: ["src/**/*.{ts,tsx,js,jsx}"], }; diff --git a/package.json b/package.json index 166f31d1a..d0d58f49a 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "access": "public" }, "author": "MapLibre", - "main": "./javascript/index.ts", "keywords": [ "maps", "ios", @@ -16,27 +15,104 @@ "mapbox" ], "license": "MIT", + "homepage": "https://github.com/maplibre/maplibre-react-native#readme", "repository": { "type": "git", - "url": "https://github.com/maplibre/maplibre-react-native" + "url": "git+https://github.com/maplibre/maplibre-react-native.git" + }, + "bugs": { + "url": "https://github.com/maplibre/maplibre-react-native/issues" }, "scripts": { "codegen": "tsx scripts/codegen.ts", "test": "jest", - "lint": "yarn lint:eslint && yarn lint:tsc", + "lint": "yarn lint:tsc && yarn lint:eslint", "lint:eslint": "eslint .", "lint:eslint:fix": "eslint . --fix", - "lint:tsc": "tsc --project . --noEmit && tsc --project ./packages/examples", + "lint:tsc": "tsc --project . && tsc --project ./packages/examples", "plugin:build": "tsc --build plugin", "plugin:lint": "eslint plugin/src/*", "plugin:test": "jest plugin", - "prepack": "yarn plugin:build" + "prepack": "bob build && yarn plugin:build" }, "workspaces": [ "apps/*", "packages/*" ], "packageManager": "yarn@4.1.0", + "main": "./lib/commonjs/index.js", + "source": "./src/index.ts", + "module": "./lib/module/index.js", + "types": "./lib/typescript/commonjs/src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./lib/typescript/module/src/index.d.ts", + "default": "./lib/module/index.js" + }, + "require": { + "types": "./lib/typescript/commonjs/src/index.d.ts", + "default": "./lib/commonjs/index.js" + } + }, + "./app.plugin.js": { + "require": { + "default": "./app.plugin.js" + } + }, + "./plugin": { + "require": { + "types": "./plugin/build/witMapLibre.d.ts", + "default": "./plugin/build/withMapLibre.js" + } + } + }, + "files": [ + "src", + "lib", + "android", + "ios", + "cpp", + "*.podspec", + "react-native.config.json", + "app.plugin.js", + "plugin/build/**", + "!ios/build", + "!android/build", + "!android/gradle", + "!android/gradlew", + "!android/gradlew.bat", + "!android/local.properties", + "!**/__tests__", + "!**/__fixtures__", + "!**/__mocks__", + "!**/.*" + ], + "react-native-builder-bob": { + "source": "src", + "output": "lib", + "targets": [ + [ + "commonjs", + { + "esm": true + } + ], + [ + "module", + { + "esm": true + } + ], + [ + "typescript", + { + "esm": true, + "project": "tsconfig.build.json" + } + ] + ] + }, "peerDependenciesMeta": { "@expo/config-plugins": { "optional": true @@ -87,6 +163,7 @@ "react": "18.2.0", "react-docgen": "^7.1.0", "react-native": "^0.74.6", + "react-native-builder-bob": "^0.32.0", "react-test-renderer": "18.2.0", "tsx": "^4.19.2", "typescript": "^5.3.3" diff --git a/packages/examples/MetroWithMonorepoPaths.js b/packages/examples/MetroWithMonorepoPaths.js new file mode 100644 index 000000000..7a27ac887 --- /dev/null +++ b/packages/examples/MetroWithMonorepoPaths.js @@ -0,0 +1,53 @@ +/* eslint-env node */ +const path = require("path"); +const { getConfig } = require("react-native-builder-bob/metro-config"); + +const pkg = require("../../package.json"); +const root = path.resolve(__dirname, "..", ".."); + +/** + * @param {import('metro-config').MetroConfig} config + * @param {object} options + * @param {string} options.project + * @returns {import('metro-config').MetroConfig} + */ +function withMonorepoPaths(config, { project }) { + config = getConfig(config, { + root, + pkg, + project, + }); + + // Watch all files in the monorepo + config.watchFolders = [root]; + + // Set `node_modules` to resolve + config.resolver.nodeModulesPaths = [ + path.resolve(project, "node_modules"), + path.resolve(__dirname, "node_modules"), + path.resolve(root, "node_modules"), + ]; + + // Resolve only (sub)dependencies from the `nodeModulesPaths` + config.resolver.disableHierarchicalLookup = true; + + // Use src instead of lib + config.resolver.resolveRequest = (context, moduleName, platform) => { + if (moduleName.startsWith(pkg.name)) { + return { + filePath: path.resolve(root, "src", "index.ts"), + type: "sourceFile", + }; + } + + return context.resolveRequest(context, moduleName, platform); + }; + + return getConfig(config, { + root, + pkg, + project, + }); +} + +exports.withMonorepoPaths = withMonorepoPaths; diff --git a/packages/examples/package.json b/packages/examples/package.json index d5106efdd..c2269ca7c 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -6,18 +6,13 @@ "module": "index.js", "react-native": "index.js", "source": "index.js", - "files": [ - "index.js", - "src", - "!**/__tests__" - ], "peerDependencies": { - "@react-native-masked-view/masked-view": "^0.3.1", - "react": "18.2.0", - "react-native": ">=0.74.0", - "react-native-gesture-handler": "^2.20.0", - "react-native-safe-area-context": "^4.11.1", - "react-native-screens": "^3.34.0" + "@react-native-masked-view/masked-view": "*", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": "*", + "react-native-safe-area-context": "*", + "react-native-screens": "*" }, "dependencies": { "@mapbox/geo-viewport": "^0.5.0", diff --git a/packages/examples/src/App.tsx b/packages/examples/src/App.tsx index b4cba5f19..f6683a0da 100755 --- a/packages/examples/src/App.tsx +++ b/packages/examples/src/App.tsx @@ -1,5 +1,5 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import React, { useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import { StyleSheet, Text, View, LogBox } from "react-native"; import { SafeAreaView, SafeAreaProvider } from "react-native-safe-area-context"; import "react-native-gesture-handler"; diff --git a/packages/examples/src/assets/index.d.ts b/packages/examples/src/assets/index.d.ts deleted file mode 100644 index 2506705cb..000000000 --- a/packages/examples/src/assets/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare module "*.jpg" { - const content: number; - export default content; -} - -declare module "*.png" { - const content: number; - export default content; -} diff --git a/packages/examples/src/assets/jpg.d.ts b/packages/examples/src/assets/jpg.d.ts new file mode 100644 index 000000000..65c6260d3 --- /dev/null +++ b/packages/examples/src/assets/jpg.d.ts @@ -0,0 +1,4 @@ +declare module "*.jpg" { + const content: number; + export default content; +} diff --git a/packages/examples/src/assets/png.d.ts b/packages/examples/src/assets/png.d.ts new file mode 100644 index 000000000..d779e258a --- /dev/null +++ b/packages/examples/src/assets/png.d.ts @@ -0,0 +1,4 @@ +declare module "*.png" { + const content: number; + export default content; +} diff --git a/packages/examples/src/examples/Animations/AnimateCircleAlongLine.tsx b/packages/examples/src/examples/Animations/AnimateCircleAlongLine.tsx index d78d3007c..136cde8a2 100755 --- a/packages/examples/src/examples/Animations/AnimateCircleAlongLine.tsx +++ b/packages/examples/src/examples/Animations/AnimateCircleAlongLine.tsx @@ -1,5 +1,7 @@ -import MapLibreGL, { LineLayerStyle } from "@maplibre/maplibre-react-native"; -import React, { useEffect, useState } from "react"; +import MapLibreGL, { + type LineLayerStyle, +} from "@maplibre/maplibre-react-native"; +import { useEffect, useState } from "react"; import sheet from "../../styles/sheet"; import RouteSimulator from "../../utils/RouteSimulator"; @@ -71,7 +73,7 @@ export default function AnimateCircleAlongLine() { const { nearestIndex } = currentPoint.properties; const coords = ROUTE_FEATURE.geometry.coordinates.filter( - (c, i) => i <= nearestIndex, + (_coordinates, index) => index <= nearestIndex, ); coords.push(currentPoint.geometry.coordinates); diff --git a/packages/examples/src/examples/Annotations/CustomCallout.tsx b/packages/examples/src/examples/Annotations/CustomCallout.tsx index 20d2d0604..b253e0904 100644 --- a/packages/examples/src/examples/Annotations/CustomCallout.tsx +++ b/packages/examples/src/examples/Annotations/CustomCallout.tsx @@ -1,6 +1,14 @@ -import MapLibreGL, { SymbolLayerStyle } from "@maplibre/maplibre-react-native"; -import React, { FC, ReactElement, useState } from "react"; -import { StyleProp, Text, TextStyle, View, ViewStyle } from "react-native"; +import MapLibreGL, { + type SymbolLayerStyle, +} from "@maplibre/maplibre-react-native"; +import { type ReactElement, useState } from "react"; +import { + type StyleProp, + Text, + type TextStyle, + View, + type ViewStyle, +} from "react-native"; import exampleIcon from "../../assets/pin.png"; import sheet from "../../styles/sheet"; @@ -33,7 +41,7 @@ type CustomCalloutViewProps = { message: string; }; -const CustomCalloutView: FC = ({ message }) => { +const CustomCalloutView = ({ message }: CustomCalloutViewProps) => { return ( {message} diff --git a/packages/examples/src/examples/Annotations/MarkerView.tsx b/packages/examples/src/examples/Annotations/MarkerView.tsx index e7fd96570..85ea52ee9 100644 --- a/packages/examples/src/examples/Annotations/MarkerView.tsx +++ b/packages/examples/src/examples/Annotations/MarkerView.tsx @@ -1,5 +1,4 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import React from "react"; import { StyleSheet, Text, TouchableOpacity, View } from "react-native"; import sheet from "../../styles/sheet"; @@ -43,7 +42,7 @@ function AnnotationContent({ title }: AnnotationContentProps) { const COORDINATES = [ [-73.99155, 40.73581], [-73.99155, 40.73681], -]; +] as [GeoJSON.Position, GeoJSON.Position]; export default function MarkerView() { return ( diff --git a/packages/examples/src/examples/Annotations/ShowPointAnnotation.tsx b/packages/examples/src/examples/Annotations/ShowPointAnnotation.tsx index db8db0172..0a6632f66 100755 --- a/packages/examples/src/examples/Annotations/ShowPointAnnotation.tsx +++ b/packages/examples/src/examples/Annotations/ShowPointAnnotation.tsx @@ -1,5 +1,5 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import React, { useRef, useState } from "react"; +import { useRef, useState, type ReactNode } from "react"; import { View, Text, @@ -83,11 +83,9 @@ const ShowPointAnnotation = () => { ); const renderAnnotations = () => { - const items = []; - - for (let i = 0; i < coordinates.length; i++) { - const coordinate = coordinates[i]; + const items: ReactNode[] = []; + coordinates.forEach((coordinate, i) => { const title = `Lon: ${coordinate[0]} Lat: ${coordinate[1]}`; const id = `pointAnnotation${i}`; @@ -115,7 +113,7 @@ const ShowPointAnnotation = () => {
, ); } - } + }); return items; }; diff --git a/packages/examples/src/examples/FillRasterLayer/IndoorBuilding.tsx b/packages/examples/src/examples/FillRasterLayer/IndoorBuilding.tsx index ed6fc8d3e..6e924a926 100755 --- a/packages/examples/src/examples/FillRasterLayer/IndoorBuilding.tsx +++ b/packages/examples/src/examples/FillRasterLayer/IndoorBuilding.tsx @@ -1,14 +1,13 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import React, { useState } from "react"; +import { useState } from "react"; -import { FillExtrusionLayerStyle } from "../../../../../javascript"; import indoorMapGeoJSON from "../../assets/indoor_3d_map.json"; import sheet from "../../styles/sheet"; import TabBarPage from "../common/TabBarPage"; const OPTIONS = [-180, -90, 0, 90, 180]; -const layerStyles: { building: FillExtrusionLayerStyle } = { +const layerStyles: { building: MapLibreGL.FillExtrusionLayerStyle } = { building: { fillExtrusionOpacity: 0.5, fillExtrusionHeight: ["get", "height"], @@ -28,7 +27,7 @@ export default function IndoorBuilding() { label: option.toString(), data: option, }))} - onOptionPress={(index, data) => setValue(data)} + onOptionPress={(_index, data) => setValue(data)} > setValue(data)} + onOptionPress={(_index, data) => setValue(data)} > ({ })); export default function SetTintColor() { - const [tintColor, setTintColor] = useState(OPTIONS[0].data); + const [tintColor, setTintColor] = useState(OPTIONS[0]!.data); return ( { + onOptionPress={(_index, data) => { setTintColor(data); }} > diff --git a/packages/examples/src/examples/Map/ShowMap.tsx b/packages/examples/src/examples/Map/ShowMap.tsx index 90bf34e2b..d4167d1ef 100755 --- a/packages/examples/src/examples/Map/ShowMap.tsx +++ b/packages/examples/src/examples/Map/ShowMap.tsx @@ -1,5 +1,5 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import React, { useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import { Alert } from "react-native"; import sheet from "../../styles/sheet"; @@ -16,7 +16,7 @@ const OPTIONS = Object.keys(MapLibreGL.StyleURL) .sort(onSortOptions); export default function ShowMap() { - const [styleURL, setStyleURL] = useState(OPTIONS[0].data); + const [styleURL, setStyleURL] = useState(OPTIONS[0]!.data); useEffect(() => { MapLibreGL.locationManager.start(); @@ -30,7 +30,7 @@ export default function ShowMap() { { + onOptionPress={(_index, data): void => { setStyleURL(data); }} > diff --git a/packages/examples/src/examples/Map/ShowMapLocalStyle.tsx b/packages/examples/src/examples/Map/ShowMapLocalStyle.tsx index 23c136000..b971fe666 100644 --- a/packages/examples/src/examples/Map/ShowMapLocalStyle.tsx +++ b/packages/examples/src/examples/Map/ShowMapLocalStyle.tsx @@ -1,5 +1,5 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import React, { FC, useEffect } from "react"; +import { useEffect } from "react"; import { Alert } from "react-native"; import sheet from "../../styles/sheet"; @@ -8,7 +8,7 @@ import Page from "../common/Page"; // eslint-disable-next-line @typescript-eslint/no-var-requires const style = JSON.stringify(require("../../assets/map-styleURL-style.json")); -const ShowMap: FC = (props) => { +const ShowMap = () => { useEffect(() => { MapLibreGL.locationManager.start(); diff --git a/packages/examples/src/examples/SymbolCircleLayer/EarthQuakes.tsx b/packages/examples/src/examples/SymbolCircleLayer/EarthQuakes.tsx index 41c028638..93c2e74fa 100755 --- a/packages/examples/src/examples/SymbolCircleLayer/EarthQuakes.tsx +++ b/packages/examples/src/examples/SymbolCircleLayer/EarthQuakes.tsx @@ -1,7 +1,6 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import { FeatureCollection } from "geojson"; import moment from "moment"; -import React, { useRef, useState } from "react"; +import { useRef, useState } from "react"; import { FlatList, Modal, @@ -12,11 +11,6 @@ import { } from "react-native"; import { SafeAreaProvider, SafeAreaView } from "react-native-safe-area-context"; -import { - CircleLayerStyle, - ShapeSourceRef, - SymbolLayerStyle, -} from "../../../../../javascript"; import earthQuakesJSON from "../../assets/earthquakes.json"; import colors from "../../styles/colors"; import sheet from "../../styles/sheet"; @@ -24,9 +18,9 @@ import { SF_OFFICE_COORDINATE } from "../../utils"; import Page from "../common/Page"; const layerStyles: { - singlePoint: CircleLayerStyle; - clusteredPoints: CircleLayerStyle; - clusterCount: SymbolLayerStyle; + singlePoint: MapLibreGL.CircleLayerStyle; + clusteredPoints: MapLibreGL.CircleLayerStyle; + clusterCount: MapLibreGL.SymbolLayerStyle; } = { singlePoint: { circleColor: "green", @@ -122,7 +116,7 @@ const mag4 = ["all", [">=", ["get", "mag"], 4], ["<", ["get", "mag"], 5]]; const mag5 = [">=", ["get", "mag"], 5]; export default function EarthQuakes() { - const shapeSource = useRef(null); + const shapeSource = useRef(null); const [cluster, setCluster] = useState(); return ( @@ -194,21 +188,19 @@ export default function EarthQuakes() { { const cluster = event.features[0]; - console.log(cluster.type); - if (cluster.type === "Feature") { + console.log(cluster?.type); + if (cluster?.type === "Feature") { const collection = await shapeSource.current?.getClusterLeaves( - // TODO: improve once GeoJSON types are aligned - // @ts-ignore cluster, 999, 0, ); - setCluster(collection as FeatureCollection); + setCluster(collection as GeoJSON.FeatureCollection); } }} cluster diff --git a/packages/examples/src/examples/UserLocation/FollowUserLocationAlignment.tsx b/packages/examples/src/examples/UserLocation/FollowUserLocationAlignment.tsx index 98957bd4c..5e533f8f9 100755 --- a/packages/examples/src/examples/UserLocation/FollowUserLocationAlignment.tsx +++ b/packages/examples/src/examples/UserLocation/FollowUserLocationAlignment.tsx @@ -1,5 +1,5 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import React, { useState } from "react"; +import { useState } from "react"; import sheet from "../../styles/sheet"; import TabBarPage from "../common/TabBarPage"; @@ -25,7 +25,7 @@ export default function FollowUserLocationAlignment() { label: alignmentValue, data: alignmentValue, }))} - onOptionPress={(index, data) => { + onOptionPress={(_index, data) => { setAlignment(data); }} > diff --git a/packages/examples/src/examples/UserLocation/FollowUserLocationRenderMode.tsx b/packages/examples/src/examples/UserLocation/FollowUserLocationRenderMode.tsx index cdf783590..2ab3b8caa 100755 --- a/packages/examples/src/examples/UserLocation/FollowUserLocationRenderMode.tsx +++ b/packages/examples/src/examples/UserLocation/FollowUserLocationRenderMode.tsx @@ -2,7 +2,7 @@ import MapLibreGL, { UserLocationRenderMode, UserTrackingMode, } from "@maplibre/maplibre-react-native"; -import React, { ReactNode, useState } from "react"; +import { type ReactNode, useState } from "react"; import { Button, Platform, Text, View } from "react-native"; import { ButtonGroup } from "../../components/ButtonGroup"; @@ -79,7 +79,7 @@ export default function FollowUserLocationRenderMode() { options={Object.values(UserTrackingMode)} value={Object.values(UserTrackingMode).indexOf(followUserMode)} onPress={(index) => { - setFollowUserMode(Object.values(UserTrackingMode)[index]); + setFollowUserMode(Object.values(UserTrackingMode)[index]!); }} /> @@ -91,7 +91,7 @@ export default function FollowUserLocationRenderMode() { options={ANDROID_RENDER_MODES} value={ANDROID_RENDER_MODES.indexOf(androidRenderMode)} onPress={(index) => { - setAndroidRenderMode(ANDROID_RENDER_MODES[index]); + setAndroidRenderMode(ANDROID_RENDER_MODES[index]!); }} /> @@ -146,7 +146,7 @@ export default function FollowUserLocationRenderMode() { value={Object.values(ExampleRenderMode).indexOf(renderMode)} options={Object.values(ExampleRenderMode).map(humanize)} onPress={(index: number) => { - setRenderMode(Object.values(ExampleRenderMode)[index]); + setRenderMode(Object.values(ExampleRenderMode)[index]!); }} /> diff --git a/packages/examples/src/examples/UserLocation/SetAndroidPreferredFramesPerSecond.tsx b/packages/examples/src/examples/UserLocation/SetAndroidPreferredFramesPerSecond.tsx index 0f00aaacd..134782248 100644 --- a/packages/examples/src/examples/UserLocation/SetAndroidPreferredFramesPerSecond.tsx +++ b/packages/examples/src/examples/UserLocation/SetAndroidPreferredFramesPerSecond.tsx @@ -1,5 +1,5 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import React, { useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import sheet from "../../styles/sheet"; import TabBarPage from "../common/TabBarPage"; @@ -8,7 +8,7 @@ const OPTIONS = [5, 10, 15].map((data) => ({ label: data + " FPS", data })); export default function SetAndroidPreferredFramesPerSecond() { const [androidPreferredFramesPerSecond, setAndroidPreferredFramesPerSecond] = - useState(OPTIONS[0].data); + useState(OPTIONS[0]?.data); useEffect(() => { MapLibreGL.locationManager.start(); @@ -21,7 +21,7 @@ export default function SetAndroidPreferredFramesPerSecond() { return ( { + onOptionPress={(_index, data) => { setAndroidPreferredFramesPerSecond(data); }} > diff --git a/packages/examples/src/examples/UserLocation/UserLocationDisplacement.tsx b/packages/examples/src/examples/UserLocation/UserLocationDisplacement.tsx index 2b0c77b59..17584ecc9 100644 --- a/packages/examples/src/examples/UserLocation/UserLocationDisplacement.tsx +++ b/packages/examples/src/examples/UserLocation/UserLocationDisplacement.tsx @@ -1,5 +1,5 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import React, { useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import sheet from "../../styles/sheet"; import TabBarPage from "../common/TabBarPage"; @@ -7,7 +7,7 @@ import TabBarPage from "../common/TabBarPage"; const OPTIONS = [0, 5, 10].map((data) => ({ label: data + " Meter", data })); export default function UserLocationDisplacement() { - const [minDisplacement, setMinDisplacement] = useState(OPTIONS[0].data); + const [minDisplacement, setMinDisplacement] = useState(OPTIONS[0]!.data); useEffect(() => { MapLibreGL.locationManager.start(); @@ -20,7 +20,7 @@ export default function UserLocationDisplacement() { return ( { + onOptionPress={(_index, data) => { setMinDisplacement(data); }} > diff --git a/packages/examples/src/examples/UserLocation/UserLocationUpdate.tsx b/packages/examples/src/examples/UserLocation/UserLocationUpdate.tsx index 3fd13939a..0ec090c50 100755 --- a/packages/examples/src/examples/UserLocation/UserLocationUpdate.tsx +++ b/packages/examples/src/examples/UserLocation/UserLocationUpdate.tsx @@ -1,5 +1,5 @@ import MapLibreGL from "@maplibre/maplibre-react-native"; -import React, { useState } from "react"; +import { useState } from "react"; import { Text } from "react-native"; import sheet from "../../styles/sheet"; diff --git a/packages/examples/src/examples/common/Bubble.tsx b/packages/examples/src/examples/common/Bubble.tsx index 22b74fe69..7867be09e 100755 --- a/packages/examples/src/examples/common/Bubble.tsx +++ b/packages/examples/src/examples/common/Bubble.tsx @@ -1,12 +1,12 @@ -import React, { ReactNode } from "react"; +import { type ReactNode } from "react"; import { - StyleProp, + type StyleProp, StyleSheet, TouchableOpacity, View, - ViewStyle, + type ViewStyle, } from "react-native"; -import { GestureResponderEvent } from "react-native/Libraries/Types/CoreEventTypes"; +import { type GestureResponderEvent } from "react-native/Libraries/Types/CoreEventTypes"; const styles = StyleSheet.create({ container: { diff --git a/packages/examples/src/examples/common/Page.tsx b/packages/examples/src/examples/common/Page.tsx index 8bda4168b..1f4060a1d 100755 --- a/packages/examples/src/examples/common/Page.tsx +++ b/packages/examples/src/examples/common/Page.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode } from "react"; +import { type ReactNode } from "react"; import { SafeAreaView } from "react-native-safe-area-context"; import sheet from "../../styles/sheet"; diff --git a/packages/examples/src/examples/common/PulseCircleLayer.tsx b/packages/examples/src/examples/common/PulseCircleLayer.tsx index dfcd0b807..e336c9c97 100755 --- a/packages/examples/src/examples/common/PulseCircleLayer.tsx +++ b/packages/examples/src/examples/common/PulseCircleLayer.tsx @@ -1,6 +1,7 @@ -import MapLibreGL, { CircleLayerStyle } from "@maplibre/maplibre-react-native"; -import { ShapeSourceProps } from "@maplibre/maplibre-react-native/javascript/components/ShapeSource"; -import React, { useEffect, useRef } from "react"; +import MapLibreGL, { + type CircleLayerStyle, +} from "@maplibre/maplibre-react-native"; +import { useEffect, useRef } from "react"; import { Animated } from "react-native"; const styles: { @@ -28,7 +29,7 @@ interface PulseCircleLayerProps { radius?: number; pulseRadius?: number; duration?: number; - shape?: ShapeSourceProps["shape"]; + shape?: GeoJSON.Feature | GeoJSON.Point; aboveLayerID?: string; } diff --git a/packages/examples/src/examples/common/TabBarPage.tsx b/packages/examples/src/examples/common/TabBarPage.tsx index 658945f87..963eb5452 100755 --- a/packages/examples/src/examples/common/TabBarPage.tsx +++ b/packages/examples/src/examples/common/TabBarPage.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode, useState } from "react"; +import { type ReactNode, useState } from "react"; import Page from "./Page"; import { ButtonGroup } from "../../components/ButtonGroup"; @@ -28,7 +28,7 @@ function TabBarPage({ options={options.map((option) => option.label)} onPress={(index: number) => { setValue(index); - onOptionPress(index, options[index].data); + onOptionPress(index, options[index]!.data); }} scrollable={scrollable} /> diff --git a/packages/examples/src/examples/index.ts b/packages/examples/src/examples/index.ts index de5888ae2..19f41fd07 100644 --- a/packages/examples/src/examples/index.ts +++ b/packages/examples/src/examples/index.ts @@ -1,3 +1,4 @@ +// @ts-nocheck // ANIMATIONS export { default as AnimatedLine } from "./Animations/AnimatedLine"; export { default as AnimateCircleAlongLine } from "./Animations/AnimateCircleAlongLine"; diff --git a/packages/examples/src/scenes/Examples.tsx b/packages/examples/src/scenes/Examples.tsx index b9c9744c6..faa049685 100644 --- a/packages/examples/src/scenes/Examples.tsx +++ b/packages/examples/src/scenes/Examples.tsx @@ -1,6 +1,5 @@ import { DefaultTheme, NavigationContainer } from "@react-navigation/native"; import { createStackNavigator } from "@react-navigation/stack"; -import React from "react"; import { FlatList, StyleSheet, diff --git a/packages/examples/src/utils/RouteSimulator.js b/packages/examples/src/utils/RouteSimulator.js deleted file mode 100755 index b338b5234..000000000 --- a/packages/examples/src/utils/RouteSimulator.js +++ /dev/null @@ -1,113 +0,0 @@ -import along from "@turf/along"; -import findDistance from "@turf/distance"; -import { point } from "@turf/helpers"; -import { Animated } from "react-native"; - -class Polyline { - constructor(lineStringFeature) { - this._coordinates = lineStringFeature.geometry.coordinates; - this._lineStringFeature = lineStringFeature; - - this._totalDistance = 0; - for (let i = 1; i < this._coordinates.length; i++) { - this._totalDistance += findDistance(this.get(i - 1), this.get(i)); - } - } - - coordinateFromStart(distance) { - const pointAlong = along(this._lineStringFeature, distance); - pointAlong.properties.distance = distance; - pointAlong.properties.nearestIndex = this.findNearestFloorIndex(distance); - return pointAlong; - } - - findNearestFloorIndex(currentDistance) { - let runningDistance = 0; - - for (let i = 1; i < this._coordinates.length; i++) { - runningDistance += findDistance(this.get(i - 1), this.get(i)); - - if (runningDistance >= currentDistance) { - return i - 1; - } - } - - return -1; - } - - get(index) { - return point(this._coordinates[index]); - } - - get totalDistance() { - return this._totalDistance; - } -} - -class RouteSimulator { - constructor(lineString, speed = 0.04) { - this._polyline = new Polyline(lineString); - this._previousDistance = 0; - this._currentDistance = 0; - this._speed = speed; - } - - addListener(listener) { - this._listener = listener; - } - - start() { - this.tick(); - } - - reset() { - this._previousDistance = 0; - this._currentDistance = 0; - this.start(); - } - - stop() { - if (this._anim) { - this._anim.stop(); - } - } - - tick() { - requestAnimationFrame(() => { - this._previousDistance = this._currentDistance; - this._currentDistance += this._speed; - - // interpolate between previous to current distance - const listener = (step) => { - const currentPosition = this._polyline.coordinateFromStart(step.value); - this.emit(currentPosition); - }; - - this._animatedValue = new Animated.Value(this._previousDistance); - this._animatedValue.addListener(listener); - - this._anim = Animated.timing(this._animatedValue, { - toValue: this._currentDistance, - duration: 5, - useNativeDriver: false, - }); - - this._anim.start(() => { - this._animatedValue.removeListener(listener); - - if (this._currentDistance > this._polyline.totalDistance) { - this.reset(); - return; - } - - this.tick(); - }); - }); - } - - emit(pointFeature) { - this._listener(pointFeature); - } -} - -export default RouteSimulator; diff --git a/packages/examples/src/utils/RouteSimulator.ts b/packages/examples/src/utils/RouteSimulator.ts new file mode 100755 index 000000000..33c6e5aef --- /dev/null +++ b/packages/examples/src/utils/RouteSimulator.ts @@ -0,0 +1,155 @@ +import along from "@turf/along"; +import findDistance from "@turf/distance"; +import { point } from "@turf/helpers"; +import { Animated } from "react-native"; + +type RouteSimulatorFeature = GeoJSON.Feature< + GeoJSON.Point, + { distance: number; nearestIndex: number } +>; + +class Polyline { + private readonly coordinates: GeoJSON.Position[]; + private readonly lineStringFeature: GeoJSON.Feature; + public readonly totalDistance: number; + + constructor(lineStringFeature: GeoJSON.Feature) { + this.coordinates = lineStringFeature.geometry.coordinates; + this.lineStringFeature = lineStringFeature; + + this.totalDistance = 0; + for (let i = 1; i < this.coordinates.length; i++) { + this.totalDistance += findDistance(this.get(i - 1), this.get(i)); + } + } + + coordinateFromStart(distance: number): RouteSimulatorFeature { + const pointAlong = along(this.lineStringFeature, distance); + + return { + ...pointAlong, + properties: { + ...pointAlong.properties, + distance, + nearestIndex: this.findNearestFloorIndex(distance), + }, + }; + } + + findNearestFloorIndex(currentDistance: number) { + let runningDistance = 0; + + for (let i = 1; i < this.coordinates.length; i++) { + runningDistance += findDistance(this.get(i - 1), this.get(i)); + + if (runningDistance >= currentDistance) { + return i - 1; + } + } + + return -1; + } + + get(index: number) { + const coordinates = this.coordinates[index]; + + if (!coordinates) { + throw new Error("RouteSimulator coordinates not found"); + } + + return point(coordinates); + } +} + +class RouteSimulator { + private readonly polyline: Polyline; + private previousDistance: number; + private currentDistance: number; + private readonly speed: number; + + private animatedValue: Animated.Value | undefined; + private anim: Animated.CompositeAnimation | undefined; + private listener: + | (( + point: GeoJSON.Feature< + GeoJSON.Point, + { distance: number; nearestIndex: number } + >, + ) => void) + | undefined; + + constructor(lineString: GeoJSON.Feature, speed = 0.04) { + this.polyline = new Polyline(lineString); + this.previousDistance = 0; + this.currentDistance = 0; + this.speed = speed; + } + + addListener( + listener: ( + point: GeoJSON.Feature< + GeoJSON.Point, + { distance: number; nearestIndex: number } + >, + ) => void, + ) { + this.listener = listener; + } + + start() { + this.tick(); + } + + reset() { + this.previousDistance = 0; + this.currentDistance = 0; + this.start(); + } + + stop() { + if (this.anim) { + this.anim.stop(); + } + } + + tick() { + requestAnimationFrame(() => { + this.previousDistance = this.currentDistance; + this.currentDistance += this.speed; + + // interpolate between previous to current distance + const listener: Animated.ValueListenerCallback = (step) => { + const currentPosition = this.polyline.coordinateFromStart(step.value); + this.emit(currentPosition); + }; + + this.animatedValue = new Animated.Value( + this.previousDistance, + ) as Animated.Value; + const listenerId = this.animatedValue.addListener(listener); + + this.anim = Animated.timing(this.animatedValue, { + toValue: this.currentDistance, + duration: 5, + useNativeDriver: false, + }); + + this.anim.start(() => { + this.animatedValue?.removeListener(listenerId); + + if (this.currentDistance > this.polyline.totalDistance) { + this.reset(); + return; + } + + this.tick(); + }); + }); + } + + emit(pointFeature: RouteSimulatorFeature) { + this.listener?.(pointFeature); + } +} + +export default RouteSimulator; diff --git a/packages/examples/src/utils/index.js b/packages/examples/src/utils/index.ts similarity index 81% rename from packages/examples/src/utils/index.js rename to packages/examples/src/utils/index.ts index 24e8f3c7b..1a71d9474 100755 --- a/packages/examples/src/utils/index.js +++ b/packages/examples/src/utils/index.ts @@ -4,7 +4,7 @@ export const IS_ANDROID = Platform.OS === "android"; export const DEFAULT_CENTER_COORDINATE = [-77.036086, 38.910233]; export const SF_OFFICE_COORDINATE = [-122.400021, 37.789085]; -export function onSortOptions(a, b) { +export function onSortOptions(a: { label: string }, b: { label: string }) { if (a.label < b.label) { return -1; } diff --git a/packages/examples/tsconfig.json b/packages/examples/tsconfig.json index 1c8ae81f4..6f83eb665 100644 --- a/packages/examples/tsconfig.json +++ b/packages/examples/tsconfig.json @@ -1,9 +1,3 @@ { "extends": "../../tsconfig.json", - "compilerOptions": { - "strict": true, - "noEmit": true, - "resolveJsonModule": true - }, - "include": ["**/*.ts", "**/*.tsx"] } diff --git a/packages/expo-app/app.config.ts b/packages/expo-app/app.config.ts index 2fe52e424..3c6375798 100644 --- a/packages/expo-app/app.config.ts +++ b/packages/expo-app/app.config.ts @@ -1,4 +1,5 @@ -import { ExpoConfig, ConfigContext } from "expo/config"; +import "ts-node/register"; +import { type ExpoConfig, type ConfigContext } from "expo/config"; export default ({ config }: ConfigContext): ExpoConfig => ({ ...config, @@ -28,5 +29,5 @@ export default ({ config }: ConfigContext): ExpoConfig => ({ }, package: "org.maplibre.expo.example", }, - plugins: ["@maplibre/maplibre-react-native"], + plugins: ["../../plugin/src/withMapLibre.ts"], }); diff --git a/packages/expo-app/babel.config.js b/packages/expo-app/babel.config.js index 54751c2de..4587c554e 100644 --- a/packages/expo-app/babel.config.js +++ b/packages/expo-app/babel.config.js @@ -1,3 +1,14 @@ -module.exports = { - presets: ["babel-preset-expo"], -}; +/* eslint-env node */ +const path = require("path"); +const { getConfig } = require("react-native-builder-bob/babel-config"); + +const pkg = require("../../package.json"); + +const root = path.resolve(__dirname, "..", ".."); + +module.exports = getConfig( + { + presets: ["babel-preset-expo"], + }, + { root, pkg }, +); diff --git a/packages/expo-app/metro.config.js b/packages/expo-app/metro.config.js index 0a475929d..f8652dd01 100644 --- a/packages/expo-app/metro.config.js +++ b/packages/expo-app/metro.config.js @@ -1,29 +1,9 @@ /* eslint-env node */ +const { + withMonorepoPaths, +} = require("@maplibre-react-native/examples/MetroWithMonorepoPaths"); const { getDefaultConfig } = require("expo/metro-config"); -const path = require("path"); -const projectRoot = __dirname; -const workspaceRoot = path.resolve(projectRoot, "../.."); +const project = __dirname; -/** - * @param config {import('expo/metro-config').MetroConfig} - * @returns {import('expo/metro-config').MetroConfig} - */ -function withMonorepoPaths(config) { - // Watch all files in the monorepo - config.watchFolders = [workspaceRoot]; - - // Set `node_modules` to resolve - config.resolver.nodeModulesPaths = [ - path.resolve(projectRoot, "node_modules"), - path.resolve(workspaceRoot, "packages/examples/node_modules"), - path.resolve(workspaceRoot, "node_modules"), - ]; - - // Resolve only (sub)dependencies from the `nodeModulesPaths` - config.resolver.disableHierarchicalLookup = true; - - return config; -} - -module.exports = withMonorepoPaths(getDefaultConfig(projectRoot)); +module.exports = withMonorepoPaths(getDefaultConfig(project), { project }); diff --git a/packages/expo-app/package.json b/packages/expo-app/package.json index 779da890f..d90e3fe72 100644 --- a/packages/expo-app/package.json +++ b/packages/expo-app/package.json @@ -12,17 +12,18 @@ "dependencies": { "@maplibre-react-native/examples": "workspace:*", "@maplibre/maplibre-react-native": "workspace:*", - "@react-native-masked-view/masked-view": "^0.3.1", - "expo": "^52.0.0", - "expo-dev-client": "~5.0.1", + "@react-native-masked-view/masked-view": "0.3.2", + "expo": "~52.0.11", + "expo-dev-client": "~5.0.4", "expo-status-bar": "~2.0.0", "react": "18.3.1", - "react-native": "0.76.1", + "react-native": "0.76.3", "react-native-gesture-handler": "~2.20.2", "react-native-safe-area-context": "4.12.0", - "react-native-screens": "~4.0.0" + "react-native-screens": "~4.1.0" }, "devDependencies": { - "@babel/core": "^7.25.8" + "@babel/core": "^7.25.8", + "ts-node": "^10.9.2" } } diff --git a/packages/expo-app/tsconfig.json b/packages/expo-app/tsconfig.json index c7b95c2a0..9acf97281 100644 --- a/packages/expo-app/tsconfig.json +++ b/packages/expo-app/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "expo/tsconfig.base", "compilerOptions": { - "strict": true - }, - "include": ["**/*.ts", "**/*.tsx"] + "strict": true, + } } diff --git a/packages/react-native-app/android/app/build.gradle b/packages/react-native-app/android/app/build.gradle index 667fcecee..f30f8846f 100644 --- a/packages/react-native-app/android/app/build.gradle +++ b/packages/react-native-app/android/app/build.gradle @@ -36,7 +36,7 @@ react { // The name of the generated asset file containing your JS bundle // bundleAssetName = "MyApplication.android.bundle" // - // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // The entry file for bundle generation. Default is 'index.android.js' or 'index.ts' // entryFile = file("../js/MyApplication.android.js") // // A list of extra flags to pass to the 'bundle' commands. diff --git a/packages/react-native-app/babel.config.js b/packages/react-native-app/babel.config.js index 3c25e5d95..0d9d90f71 100644 --- a/packages/react-native-app/babel.config.js +++ b/packages/react-native-app/babel.config.js @@ -1,3 +1,14 @@ -module.exports = { - presets: ["module:@react-native/babel-preset"], -}; +/* eslint-env node */ +const path = require("path"); +const { getConfig } = require("react-native-builder-bob/babel-config"); + +const pkg = require("../../package.json"); + +const root = path.resolve(__dirname, "..", ".."); + +module.exports = getConfig( + { + presets: ["module:@react-native/babel-preset"], + }, + { root, pkg }, +); diff --git a/packages/react-native-app/metro.config.js b/packages/react-native-app/metro.config.js index a8aed0a57..e3fc1d297 100644 --- a/packages/react-native-app/metro.config.js +++ b/packages/react-native-app/metro.config.js @@ -1,29 +1,9 @@ /* eslint-env node */ +const { + withMonorepoPaths, +} = require("@maplibre-react-native/examples/MetroWithMonorepoPaths"); const { getDefaultConfig } = require("@react-native/metro-config"); -const path = require("path"); -const projectRoot = __dirname; -const workspaceRoot = path.resolve(projectRoot, "../.."); +const project = __dirname; -/** - * @param config {import('metro-config').MetroConfig} - * @returns {import('expo/metro-config').MetroConfig} - */ -function withMonorepoPaths(config) { - // Watch all files in the monorepo - config.watchFolders = [workspaceRoot]; - - // Set `node_modules` to resolve - config.resolver.nodeModulesPaths = [ - path.resolve(projectRoot, "node_modules"), - path.resolve(workspaceRoot, "packages/examples/node_modules"), - path.resolve(workspaceRoot, "node_modules"), - ]; - - // Resolve only (sub)dependencies from the `nodeModulesPaths` - config.resolver.disableHierarchicalLookup = true; - - return config; -} - -module.exports = withMonorepoPaths(getDefaultConfig(projectRoot)); +module.exports = withMonorepoPaths(getDefaultConfig(project), { project }); diff --git a/packages/react-native-app/tsconfig.json b/packages/react-native-app/tsconfig.json index 772c415ae..4082f16a5 100644 --- a/packages/react-native-app/tsconfig.json +++ b/packages/react-native-app/tsconfig.json @@ -1,7 +1,3 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "strict": true - }, - "include": ["**/*.ts", "**/*.tsx"] + "extends": "../../tsconfig.json" } diff --git a/plugin/src/__tests__/__snapshots__/withMapLibre-test.ts.snap b/plugin/__tests__/__snapshots__/withMapLibre-test.ts.snap similarity index 100% rename from plugin/src/__tests__/__snapshots__/withMapLibre-test.ts.snap rename to plugin/__tests__/__snapshots__/withMapLibre-test.ts.snap diff --git a/plugin/src/__tests__/fixtures/cocoapodFiles.ts b/plugin/__tests__/fixtures/cocoapodFiles.ts similarity index 100% rename from plugin/src/__tests__/fixtures/cocoapodFiles.ts rename to plugin/__tests__/fixtures/cocoapodFiles.ts diff --git a/plugin/src/__tests__/tsconfig.eslint.json b/plugin/__tests__/tsconfig.eslint.json similarity index 100% rename from plugin/src/__tests__/tsconfig.eslint.json rename to plugin/__tests__/tsconfig.eslint.json diff --git a/plugin/src/__tests__/withMapLibre-test.ts b/plugin/__tests__/withMapLibre-test.ts similarity index 96% rename from plugin/src/__tests__/withMapLibre-test.ts rename to plugin/__tests__/withMapLibre-test.ts index 050f55f83..5b9ecd0df 100644 --- a/plugin/src/__tests__/withMapLibre-test.ts +++ b/plugin/__tests__/withMapLibre-test.ts @@ -1,4 +1,4 @@ -import { applyCocoaPodsModifications } from "../withMapLibre"; +import { applyCocoaPodsModifications } from "../src/withMapLibre"; import * as fixtures from "./fixtures/cocoapodFiles"; describe("applyCocoaPodsModifications", () => { diff --git a/plugin/src/withMapLibre.ts b/plugin/src/withMapLibre.ts index f7ea3ff5d..cb4451189 100644 --- a/plugin/src/withMapLibre.ts +++ b/plugin/src/withMapLibre.ts @@ -1,9 +1,9 @@ import { - ConfigPlugin, + type ConfigPlugin, createRunOncePlugin, withDangerousMod, withXcodeProject, - XcodeProject, + type XcodeProject, } from "@expo/config-plugins"; import { mergeContents, diff --git a/scripts/codegen.ts b/scripts/codegen.ts index 753911fed..0086c9c76 100644 --- a/scripts/codegen.ts +++ b/scripts/codegen.ts @@ -32,7 +32,7 @@ const ANDROID_OUTPUT_PATH = path.join( "styles", ); -const JS_OUTPUT_PATH = path.join(__dirname, "..", "javascript", "utils"); +const JS_OUTPUT_PATH = path.join(__dirname, "..", "src", "utils"); const TEMPLATE_MAPPINGS = [ { @@ -40,8 +40,8 @@ const TEMPLATE_MAPPINGS = [ output: path.join(IOS_OUTPUT_PATH, "RCTMLNStyle.h"), }, { - input: path.join(TEMPLATES_PATH, "MaplibreStyles.ts.ejs"), - output: path.join(JS_OUTPUT_PATH, "MaplibreStyles.d.ts"), + input: path.join(TEMPLATES_PATH, "MapLibreRNStyles.ts.ejs"), + output: path.join(JS_OUTPUT_PATH, "MapLibreRNStyles.d.ts"), }, { input: path.join(TEMPLATES_PATH, "RCTMLNStyle.m.ejs"), @@ -180,7 +180,7 @@ async function generate() { for (let i = 0; i < words.length; i++) { const word = words[i]; - if (word.includes("-")) { + if (word?.includes("-")) { words[i] = camelCase(word); } } diff --git a/scripts/templates/MaplibreStyles.ts.ejs b/scripts/templates/MapLibreRNStyles.ts.ejs similarity index 100% rename from scripts/templates/MaplibreStyles.ts.ejs rename to scripts/templates/MapLibreRNStyles.ts.ejs diff --git a/scripts/utils/DocJSONBuilder.ts b/scripts/utils/DocJSONBuilder.ts index d9801c5d8..d40f4ca65 100644 --- a/scripts/utils/DocJSONBuilder.ts +++ b/scripts/utils/DocJSONBuilder.ts @@ -9,12 +9,8 @@ import { pascalCase } from "./TemplateHelpers"; const WORKSPACE_ROOT = path.join(__dirname, "..", ".."); -const COMPONENT_DIRECTORY = path.join( - WORKSPACE_ROOT, - "javascript", - "components", -); -const MODULES_DIRECTORY = path.join(WORKSPACE_ROOT, "javascript", "modules"); +const COMPONENT_DIRECTORY = path.join(WORKSPACE_ROOT, "src", "components"); +const MODULES_DIRECTORY = path.join(WORKSPACE_ROOT, "src", "modules"); const OUTPUT_PATH = path.join(WORKSPACE_ROOT, "docs", "docs.json"); const IGNORE_METHODS = ["setNativeProps"]; diff --git a/scripts/utils/TemplateHelpers.ts b/scripts/utils/TemplateHelpers.ts index 70fa98ad2..6146466de 100644 --- a/scripts/utils/TemplateHelpers.ts +++ b/scripts/utils/TemplateHelpers.ts @@ -236,7 +236,7 @@ export function jsStyleType(prop: any) { export function jsDocPropRequires(prop: any) { if (!prop.doc.requires) { - return; + return undefined; } let desc = ""; @@ -499,7 +499,8 @@ export function getStyleDefaultValue(style: any) { Object.keys(iosSpecOverrides).forEach((propName) => { const camelCasePropName = camelCase(propName); + iosPropNameOverrides[camelCasePropName] = camelCase( - iosSpecOverrides[propName], + iosSpecOverrides[propName]!, ); }); diff --git a/scripts/utils/getNativeVersion.ts b/scripts/utils/getNativeVersion.ts index d6449bab7..ac02f5806 100644 --- a/scripts/utils/getNativeVersion.ts +++ b/scripts/utils/getNativeVersion.ts @@ -5,7 +5,7 @@ async function getNativeVersion(pathSegments: string[], regex: RegExp) { const resolvedFilePath = path.join(__dirname, "..", "..", ...pathSegments); const lines = (await fs.readFile(resolvedFilePath, "utf8")).split("\n"); const line = lines.filter((i) => regex.exec(i))[0]; - const version = regex.exec(line)?.[1]; + const version = line && regex.exec(line)?.[1]; if (!version) { throw new Error("Could not find native version from " + resolvedFilePath); diff --git a/javascript/MLNModule.ts b/src/MLNModule.ts similarity index 100% rename from javascript/MLNModule.ts rename to src/MLNModule.ts diff --git a/javascript/Maplibre.ts b/src/MapLibreRN.ts similarity index 98% rename from javascript/Maplibre.ts rename to src/MapLibreRN.ts index 49ca7a5c2..d0618d374 100644 --- a/javascript/Maplibre.ts +++ b/src/MapLibreRN.ts @@ -64,7 +64,7 @@ export type { HillshadeLayerStyleProps as HillshadeLayerStyle, BackgroundLayerStyleProps as BackgroundLayerStyle, LightLayerStyleProps as LightLayerStyle, -} from "./utils/MaplibreStyles"; +} from "./utils/MapLibreRNStyles"; /** @deprecated UserTrackingModes is deprecated use UserTrackingMode */ export const UserTrackingModes = UserTrackingMode; diff --git a/assets/heading.png b/src/assets/heading.png similarity index 100% rename from assets/heading.png rename to src/assets/heading.png diff --git a/assets/heading@2x.png b/src/assets/heading@2x.png similarity index 100% rename from assets/heading@2x.png rename to src/assets/heading@2x.png diff --git a/assets/heading@3x.png b/src/assets/heading@3x.png similarity index 100% rename from assets/heading@3x.png rename to src/assets/heading@3x.png diff --git a/src/assets/png.d.ts b/src/assets/png.d.ts new file mode 100644 index 000000000..d779e258a --- /dev/null +++ b/src/assets/png.d.ts @@ -0,0 +1,4 @@ +declare module "*.png" { + const content: number; + export default content; +} diff --git a/javascript/components/Annotation.tsx b/src/components/Annotation.tsx similarity index 91% rename from javascript/components/Annotation.tsx rename to src/components/Annotation.tsx index c06e7b464..6c8ec6811 100644 --- a/javascript/components/Annotation.tsx +++ b/src/components/Annotation.tsx @@ -1,14 +1,16 @@ -import React, { - ReactElement, +import { + forwardRef, + type ReactElement, useCallback, useEffect, useImperativeHandle, + useState, } from "react"; import { Animated as RNAnimated, Easing } from "react-native"; import SymbolLayer from "./SymbolLayer"; -import OnPressEvent from "../types/OnPressEvent"; -import { SymbolLayerStyleProps } from "../utils/MaplibreStyles"; +import { type OnPressEvent } from "../types/OnPressEvent"; +import { type SymbolLayerStyleProps } from "../utils/MapLibreRNStyles"; import { AnimatedShapeSource } from "../utils/animated/Animated"; import AnimatedMapPoint from "../utils/animated/AnimatedPoint"; @@ -47,7 +49,7 @@ interface AnnotationRef { symbolStyle: SymbolLayerStyleProps | undefined; } -const Annotation = React.forwardRef( +const Annotation = forwardRef( ( { animated = false, @@ -72,9 +74,7 @@ const Annotation = React.forwardRef( }), ); - const [shape, setShape] = React.useState( - getShapeFromProps(props), - ); + const [shape, setShape] = useState(getShapeFromProps(props)); // this will run useEffect only when actual coordinates values change const coordinateDeps = props.coordinates?.join(","); diff --git a/javascript/components/BackgroundLayer.tsx b/src/components/BackgroundLayer.tsx similarity index 86% rename from javascript/components/BackgroundLayer.tsx rename to src/components/BackgroundLayer.tsx index 6b3c854bc..1b7a06844 100644 --- a/javascript/components/BackgroundLayer.tsx +++ b/src/components/BackgroundLayer.tsx @@ -2,11 +2,11 @@ import React from "react"; import { NativeModules, requireNativeComponent } from "react-native"; import useAbstractLayer, { - BaseLayerProps, - NativeBaseProps, + type BaseLayerProps, + type NativeBaseProps, } from "../hooks/useAbstractLayer"; -import BaseProps from "../types/BaseProps"; -import { BackgroundLayerStyleProps } from "../utils/MaplibreStyles"; +import { type BaseProps } from "../types/BaseProps"; +import { type BackgroundLayerStyleProps } from "../utils/MapLibreRNStyles"; const MapLibreGL = NativeModules.MLNModule; diff --git a/javascript/components/Callout.tsx b/src/components/Callout.tsx similarity index 95% rename from javascript/components/Callout.tsx rename to src/components/Callout.tsx index c94723f66..0dd9052be 100644 --- a/javascript/components/Callout.tsx +++ b/src/components/Callout.tsx @@ -1,13 +1,13 @@ -import React, { ReactElement } from "react"; +import { Children, type ReactElement } from "react"; import { View, Text, Animated, requireNativeComponent, StyleSheet, - ViewStyle, - ViewProps, - StyleProp, + type ViewStyle, + type ViewProps, + type StyleProp, } from "react-native"; export const NATIVE_MODULE_NAME = "RCTMLNCallout"; @@ -102,7 +102,7 @@ const Callout = (props: CalloutProps): ReactElement => { } as ViewStyle, ]; - const _hasChildren = React.Children.count(children) > 0; + const _hasChildren = Children.count(children) > 0; const _renderDefaultCallout = (): ReactElement => { return ( diff --git a/javascript/components/Camera.tsx b/src/components/Camera.tsx similarity index 97% rename from javascript/components/Camera.tsx rename to src/components/Camera.tsx index 0196207f3..3d1d2e5d1 100644 --- a/javascript/components/Camera.tsx +++ b/src/components/Camera.tsx @@ -1,12 +1,12 @@ import { point } from "@turf/helpers"; -import React, { forwardRef, memo, useImperativeHandle, useMemo } from "react"; -import { requireNativeComponent, ViewProps } from "react-native"; +import { forwardRef, memo, useImperativeHandle, useMemo } from "react"; +import { requireNativeComponent, type ViewProps } from "react-native"; import { CameraModes } from "../MLNModule"; import { useNativeRef } from "../hooks/useNativeRef"; -import { MaplibreGLEvent } from "../types"; -import BaseProps from "../types/BaseProps"; +import { type BaseProps } from "../types/BaseProps"; import { CameraMode } from "../types/CameraMode"; +import type { MapLibreRNEvent } from "../types/MapLibreRNEvent"; import { makeNativeBounds } from "../utils/makeNativeBounds"; export const NATIVE_MODULE_NAME = "RCTMLNCamera"; @@ -18,7 +18,7 @@ export enum UserTrackingMode { } export type UserTrackingModeChangeCallback = ( - event: MaplibreGLEvent< + event: MapLibreRNEvent< "usertrackingmodechange", { followUserLocation: boolean; diff --git a/javascript/components/CircleLayer.tsx b/src/components/CircleLayer.tsx similarity index 86% rename from javascript/components/CircleLayer.tsx rename to src/components/CircleLayer.tsx index 46d5418d6..cb95fa3c3 100644 --- a/javascript/components/CircleLayer.tsx +++ b/src/components/CircleLayer.tsx @@ -2,11 +2,11 @@ import React from "react"; import { NativeModules, requireNativeComponent } from "react-native"; import useAbstractLayer, { - BaseLayerProps, - NativeBaseProps, + type BaseLayerProps, + type NativeBaseProps, } from "../hooks/useAbstractLayer"; -import BaseProps from "../types/BaseProps"; -import { CircleLayerStyleProps } from "../utils/MaplibreStyles"; +import { type BaseProps } from "../types/BaseProps"; +import { type CircleLayerStyleProps } from "../utils/MapLibreRNStyles"; const MapLibreGL = NativeModules.MLNModule; diff --git a/javascript/components/FillExtrusionLayer.tsx b/src/components/FillExtrusionLayer.tsx similarity index 86% rename from javascript/components/FillExtrusionLayer.tsx rename to src/components/FillExtrusionLayer.tsx index a39ee5dd4..cd000f0ad 100644 --- a/javascript/components/FillExtrusionLayer.tsx +++ b/src/components/FillExtrusionLayer.tsx @@ -2,11 +2,11 @@ import React from "react"; import { NativeModules, requireNativeComponent } from "react-native"; import useAbstractLayer, { - BaseLayerProps, - NativeBaseProps, + type BaseLayerProps, + type NativeBaseProps, } from "../hooks/useAbstractLayer"; -import BaseProps from "../types/BaseProps"; -import { FillExtrusionLayerStyleProps } from "../utils/MaplibreStyles"; +import { type BaseProps } from "../types/BaseProps"; +import { type FillExtrusionLayerStyleProps } from "../utils/MapLibreRNStyles"; const MapLibreGL = NativeModules.MLNModule; diff --git a/javascript/components/FillLayer.tsx b/src/components/FillLayer.tsx similarity index 86% rename from javascript/components/FillLayer.tsx rename to src/components/FillLayer.tsx index a09203c87..cfb58d7ef 100644 --- a/javascript/components/FillLayer.tsx +++ b/src/components/FillLayer.tsx @@ -2,11 +2,11 @@ import React from "react"; import { NativeModules, requireNativeComponent } from "react-native"; import useAbstractLayer, { - BaseLayerProps, - NativeBaseProps, + type BaseLayerProps, + type NativeBaseProps, } from "../hooks/useAbstractLayer"; -import BaseProps from "../types/BaseProps"; -import { FillLayerStyleProps } from "../utils/MaplibreStyles"; +import { type BaseProps } from "../types/BaseProps"; +import { type FillLayerStyleProps } from "../utils/MapLibreRNStyles"; const MapLibreGL = NativeModules.MLNModule; diff --git a/javascript/components/HeadingIndicator.tsx b/src/components/HeadingIndicator.tsx similarity index 79% rename from javascript/components/HeadingIndicator.tsx rename to src/components/HeadingIndicator.tsx index 068e77137..0aa4b6ccb 100644 --- a/javascript/components/HeadingIndicator.tsx +++ b/src/components/HeadingIndicator.tsx @@ -1,9 +1,8 @@ -import React, { ReactElement } from "react"; +import { type ReactElement } from "react"; import SymbolLayer from "./SymbolLayer"; -// @ts-ignore -import headingIcon from "../../assets/heading.png"; -import BaseProps from "../types/BaseProps"; +import headingIcon from "../assets/heading.png"; +import { type BaseProps } from "../types/BaseProps"; const style = { iconImage: headingIcon, diff --git a/javascript/components/HeatmapLayer.tsx b/src/components/HeatmapLayer.tsx similarity index 86% rename from javascript/components/HeatmapLayer.tsx rename to src/components/HeatmapLayer.tsx index 3712d482c..c8f30a8a0 100644 --- a/javascript/components/HeatmapLayer.tsx +++ b/src/components/HeatmapLayer.tsx @@ -2,11 +2,11 @@ import React from "react"; import { NativeModules, requireNativeComponent } from "react-native"; import useAbstractLayer, { - BaseLayerProps, - NativeBaseProps, + type BaseLayerProps, + type NativeBaseProps, } from "../hooks/useAbstractLayer"; -import BaseProps from "../types/BaseProps"; -import { HeatmapLayerStyleProps } from "../utils/MaplibreStyles"; +import { type BaseProps } from "../types/BaseProps"; +import { type HeatmapLayerStyleProps } from "../utils/MapLibreRNStyles"; const MapLibreGL = NativeModules.MLNModule; diff --git a/javascript/components/ImageSource.tsx b/src/components/ImageSource.tsx similarity index 94% rename from javascript/components/ImageSource.tsx rename to src/components/ImageSource.tsx index 2c2261397..753a885e0 100644 --- a/javascript/components/ImageSource.tsx +++ b/src/components/ImageSource.tsx @@ -1,8 +1,8 @@ -import React, { ReactElement } from "react"; +import { type ReactElement } from "react"; import { requireNativeComponent } from "react-native"; import useAbstractSource from "../hooks/useAbstractSource"; -import BaseProps from "../types/BaseProps"; +import { type BaseProps } from "../types/BaseProps"; import { cloneReactChildrenWithProps, isNumber, diff --git a/javascript/components/Images.tsx b/src/components/Images.tsx similarity index 92% rename from javascript/components/Images.tsx rename to src/components/Images.tsx index e3595545d..678b2929d 100644 --- a/javascript/components/Images.tsx +++ b/src/components/Images.tsx @@ -1,14 +1,14 @@ -import React, { ReactElement } from "react"; +import { type ReactElement } from "react"; import { requireNativeComponent, Image, - NativeSyntheticEvent, - ImageSourcePropType, - ImageURISource, + type NativeSyntheticEvent, + type ImageSourcePropType, + type ImageURISource, } from "react-native"; import { SHAPE_SOURCE_NATIVE_ASSETS_KEY } from "./ShapeSource"; -import BaseProps from "../types/BaseProps"; +import { type BaseProps } from "../types/BaseProps"; export const NATIVE_MODULE_NAME = "RCTMLNImages"; @@ -90,9 +90,9 @@ const Images = ({ `Use of ${SHAPE_SOURCE_NATIVE_ASSETS_KEY} in Images#images is deprecated please use Images#nativeAssetImages`, ); nativeImages = value; - } else if (_isUrlOrPath(value)) { + } else if (value && _isUrlOrPath(value)) { imagesResult[imageName] = value; - } else if (_isImageSourcePropType(value)) { + } else if (value && _isImageSourcePropType(value)) { const res = Image.resolveAssetSource(value); if (res && res.uri) { imagesResult[imageName] = res; diff --git a/javascript/components/Light.tsx b/src/components/Light.tsx similarity index 75% rename from javascript/components/Light.tsx rename to src/components/Light.tsx index fb8e1beb3..449280e60 100644 --- a/javascript/components/Light.tsx +++ b/src/components/Light.tsx @@ -1,10 +1,12 @@ import React from "react"; import { requireNativeComponent } from "react-native"; -import useAbstractLayer, { BaseLayerProps } from "../hooks/useAbstractLayer"; -import BaseProps from "../types/BaseProps"; -import { LightLayerStyleProps } from "../utils/MaplibreStyles"; -import { StyleValue } from "../utils/StyleValue"; +import useAbstractLayer, { + type BaseLayerProps, +} from "../hooks/useAbstractLayer"; +import { type BaseProps } from "../types/BaseProps"; +import { type LightLayerStyleProps } from "../utils/MapLibreRNStyles"; +import { type StyleValue } from "../utils/StyleValue"; export const NATIVE_MODULE_NAME = "RCTMLNLight"; diff --git a/javascript/components/LineLayer.tsx b/src/components/LineLayer.tsx similarity index 85% rename from javascript/components/LineLayer.tsx rename to src/components/LineLayer.tsx index 48148a0f3..d286196d2 100644 --- a/javascript/components/LineLayer.tsx +++ b/src/components/LineLayer.tsx @@ -2,11 +2,11 @@ import React from "react"; import { NativeModules, requireNativeComponent } from "react-native"; import useAbstractLayer, { - BaseLayerProps, - NativeBaseProps, + type BaseLayerProps, + type NativeBaseProps, } from "../hooks/useAbstractLayer"; -import BaseProps from "../types/BaseProps"; -import { LineLayerStyleProps } from "../utils/MaplibreStyles"; +import { type BaseProps } from "../types/BaseProps"; +import { type LineLayerStyleProps } from "../utils/MapLibreRNStyles"; const MapLibreGL = NativeModules.MLNModule; diff --git a/javascript/components/MapView.tsx b/src/components/MapView.tsx similarity index 98% rename from javascript/components/MapView.tsx rename to src/components/MapView.tsx index 850b490bf..8ea0b7ca4 100644 --- a/javascript/components/MapView.tsx +++ b/src/components/MapView.tsx @@ -1,9 +1,10 @@ import debounce from "debounce"; -import React, { +import { Component, + forwardRef, memo, - ReactElement, - ReactNode, + type ReactElement, + type ReactNode, useCallback, useEffect, useImperativeHandle, @@ -16,18 +17,18 @@ import { StyleSheet, NativeModules, requireNativeComponent, - ViewProps, - NativeMethods, - NativeSyntheticEvent, + type ViewProps, + type NativeMethods, + type NativeSyntheticEvent, } from "react-native"; import useNativeBridge from "../hooks/useNativeBridge"; import useOnce from "../hooks/useOnce"; -import { Location } from "../modules/location/locationManager"; -import BaseProps from "../types/BaseProps"; +import { type Location } from "../modules/location/locationManager"; +import { type BaseProps } from "../types/BaseProps"; import { isFunction, isAndroid } from "../utils"; import Logger from "../utils/Logger"; -import { FilterExpression } from "../utils/MaplibreStyles"; +import { type FilterExpression } from "../utils/MapLibreRNStyles"; import { getFilter } from "../utils/filterUtils"; const MapLibreGL = NativeModules.MLNModule; @@ -284,7 +285,7 @@ export interface MapViewRef { * MapView backed by MapLibre Native */ const MapView = memo( - React.forwardRef( + forwardRef( ( { localizeLabels = false, @@ -760,7 +761,7 @@ const MapView = memo( const contentInsetValue = useMemo(() => { if (props.contentInset === undefined) { - return; + return undefined; } if (!Array.isArray(props.contentInset)) { diff --git a/javascript/components/MarkerView.tsx b/src/components/MarkerView.tsx similarity index 94% rename from javascript/components/MarkerView.tsx rename to src/components/MarkerView.tsx index a37382fe7..ffd6a741f 100644 --- a/javascript/components/MarkerView.tsx +++ b/src/components/MarkerView.tsx @@ -1,6 +1,6 @@ import { point } from "@turf/helpers"; -import React, { ReactElement, useMemo } from "react"; -import { Platform, requireNativeComponent, ViewProps } from "react-native"; +import { type ReactElement, useMemo } from "react"; +import { Platform, requireNativeComponent, type ViewProps } from "react-native"; import PointAnnotation from "./PointAnnotation"; import { toJSONString } from "../utils"; diff --git a/javascript/components/NativeUserLocation.tsx b/src/components/NativeUserLocation.tsx similarity index 96% rename from javascript/components/NativeUserLocation.tsx rename to src/components/NativeUserLocation.tsx index 32f5b3136..7e9051541 100644 --- a/javascript/components/NativeUserLocation.tsx +++ b/src/components/NativeUserLocation.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement } from "react"; +import { type ReactElement } from "react"; import { requireNativeComponent } from "react-native"; const NATIVE_MODULE_NAME = "RCTMLNNativeUserLocation"; diff --git a/javascript/components/PointAnnotation.tsx b/src/components/PointAnnotation.tsx similarity index 97% rename from javascript/components/PointAnnotation.tsx rename to src/components/PointAnnotation.tsx index d9b72b973..c18469294 100644 --- a/javascript/components/PointAnnotation.tsx +++ b/src/components/PointAnnotation.tsx @@ -1,20 +1,20 @@ import { point } from "@turf/helpers"; -import React, { +import { Component, - SyntheticEvent, + type SyntheticEvent, forwardRef, useImperativeHandle, useRef, - ReactElement, + type ReactElement, } from "react"; import { Platform, StyleSheet, - ViewProps, + type ViewProps, requireNativeComponent, } from "react-native"; -import useNativeBridge, { RNMLEvent } from "../hooks/useNativeBridge"; +import useNativeBridge, { type RNMLEvent } from "../hooks/useNativeBridge"; import { isFunction, toJSONString } from "../utils"; export const NATIVE_MODULE_NAME = "RCTMLNPointAnnotation"; diff --git a/javascript/components/RasterLayer.tsx b/src/components/RasterLayer.tsx similarity index 84% rename from javascript/components/RasterLayer.tsx rename to src/components/RasterLayer.tsx index 85560ff52..926a0cd29 100644 --- a/javascript/components/RasterLayer.tsx +++ b/src/components/RasterLayer.tsx @@ -2,11 +2,11 @@ import React from "react"; import { NativeModules, requireNativeComponent } from "react-native"; import useAbstractLayer, { - BaseLayerProps, - NativeBaseProps, + type BaseLayerProps, + type NativeBaseProps, } from "../hooks/useAbstractLayer"; -import BaseProps from "../types/BaseProps"; -import { RasterLayerStyleProps } from "../utils/MaplibreStyles"; +import { type BaseProps } from "../types/BaseProps"; +import { type RasterLayerStyleProps } from "../utils/MapLibreRNStyles"; const MapLibreGL = NativeModules.MLNModule; diff --git a/javascript/components/RasterSource.tsx b/src/components/RasterSource.tsx similarity index 98% rename from javascript/components/RasterSource.tsx rename to src/components/RasterSource.tsx index f2cdaf4b3..ed7e02646 100644 --- a/javascript/components/RasterSource.tsx +++ b/src/components/RasterSource.tsx @@ -3,7 +3,7 @@ import { NativeModules, requireNativeComponent } from "react-native"; import useAbstractSource from "../hooks/useAbstractSource"; import useOnce from "../hooks/useOnce"; -import BaseProps from "../types/BaseProps"; +import { type BaseProps } from "../types/BaseProps"; import { cloneReactChildrenWithProps } from "../utils"; const MapLibreGL = NativeModules.MLNModule; diff --git a/javascript/components/ShapeSource.tsx b/src/components/ShapeSource.tsx similarity index 97% rename from javascript/components/ShapeSource.tsx rename to src/components/ShapeSource.tsx index ed6aaf29d..98d41b9fb 100644 --- a/javascript/components/ShapeSource.tsx +++ b/src/components/ShapeSource.tsx @@ -1,27 +1,31 @@ -import React, { +import { Component, - ReactElement, + type ReactElement, + forwardRef, memo, useImperativeHandle, useRef, } from "react"; import { - NativeMethods, + type NativeMethods, NativeModules, - NativeSyntheticEvent, + type NativeSyntheticEvent, requireNativeComponent, } from "react-native"; import useNativeBridge from "../hooks/useNativeBridge"; -import BaseProps from "../types/BaseProps"; -import OnPressEvent from "../types/OnPressEvent"; +import { type BaseProps } from "../types/BaseProps"; +import { type OnPressEvent } from "../types/OnPressEvent"; import { cloneReactChildrenWithProps, isAndroid, isFunction, toJSONString, } from "../utils"; -import { ExpressionField, FilterExpression } from "../utils/MaplibreStyles"; +import { + type ExpressionField, + type FilterExpression, +} from "../utils/MapLibreRNStyles"; import { copyPropertiesAsDeprecated } from "../utils/deprecation"; import { getFilter } from "../utils/filterUtils"; @@ -158,7 +162,7 @@ export interface ShapeSourceRef { * The shape may be a url or a GeoJSON object */ const ShapeSource = memo( - React.forwardRef( + forwardRef( ( { id: shapeId = MapLibreGL.StyleSource.DefaultSourceID, @@ -356,7 +360,7 @@ const ShapeSource = memo( function _getShape(): string | undefined { if (!props.shape) { - return; + return undefined; } return toJSONString(props.shape); } diff --git a/javascript/components/Style.tsx b/src/components/Style.tsx similarity index 86% rename from javascript/components/Style.tsx rename to src/components/Style.tsx index 74130c6d7..b48f10f31 100644 --- a/javascript/components/Style.tsx +++ b/src/components/Style.tsx @@ -1,26 +1,29 @@ -import React, { +import { useMemo, useState, useEffect, - ReactElement, - ComponentType, + type ReactElement, + type ComponentType, } from "react"; -import BackgroundLayer, { BackgroundLayerProps } from "./BackgroundLayer"; -import CircleLayer, { CircleLayerProps } from "./CircleLayer"; +import BackgroundLayer, { type BackgroundLayerProps } from "./BackgroundLayer"; +import CircleLayer, { type CircleLayerProps } from "./CircleLayer"; import FillExtrusionLayer, { - FillExtrusionLayerProps, + type FillExtrusionLayerProps, } from "./FillExtrusionLayer"; -import FillLayer, { FillLayerProps } from "./FillLayer"; -import HeatmapLayer, { HeatmapLayerProps } from "./HeatmapLayer"; +import FillLayer, { type FillLayerProps } from "./FillLayer"; +import HeatmapLayer, { type HeatmapLayerProps } from "./HeatmapLayer"; import ImageSource from "./ImageSource"; -import LineLayer, { LineLayerProps } from "./LineLayer"; -import RasterLayer, { RasterLayerProps } from "./RasterLayer"; +import LineLayer, { type LineLayerProps } from "./LineLayer"; +import RasterLayer, { type RasterLayerProps } from "./RasterLayer"; import RasterSource from "./RasterSource"; import ShapeSource from "./ShapeSource"; -import SymbolLayer, { SymbolLayerProps } from "./SymbolLayer"; +import SymbolLayer, { type SymbolLayerProps } from "./SymbolLayer"; import VectorSource from "./VectorSource"; -import { ExpressionField, FilterExpression } from "../utils/MaplibreStyles"; +import { + type ExpressionField, + type FilterExpression, +} from "../utils/MapLibreRNStyles"; function toCamelCase(s: string): string { return s.replace(/([-_][a-z])/gi, ($1) => { @@ -59,7 +62,7 @@ type LayerProps = | HeatmapLayerProps; function getLayerComponentType( - layer: MaplibreJSONLayer, + layer: MapLibreJSONLayer, ): ComponentType | null { const { type } = layer; @@ -87,7 +90,7 @@ function getLayerComponentType( return null; } -interface MaplibreJSONLayer { +interface MapLibreJSONLayer { type: string; paint: { [k: string]: unknown }; layout: { [k: string]: unknown }; @@ -100,7 +103,7 @@ interface MaplibreJSONLayer { } function asLayerComponent( - layer: MaplibreJSONLayer, + layer: MapLibreJSONLayer, ): ReactElement | null { const LayerComponent = getLayerComponentType(layer); @@ -137,7 +140,7 @@ function asLayerComponent( return ; } -interface MaplibreJSONSource { +interface MapLibreJSONSource { type: string; url?: string; tiles?: string[]; @@ -175,7 +178,7 @@ type SourceProps = { tms?: boolean; }; -function getTileSourceProps(source: MaplibreJSONSource): SourceProps { +function getTileSourceProps(source: MapLibreJSONSource): SourceProps { const sourceProps: Partial = {}; if (source.url) { sourceProps.url = source.url; @@ -198,12 +201,12 @@ function getTileSourceProps(source: MaplibreJSONSource): SourceProps { return sourceProps; } -function getVectorSource(id: string, source: MaplibreJSONSource): ReactElement { +function getVectorSource(id: string, source: MapLibreJSONSource): ReactElement { const sourceProps = { ...getTileSourceProps(source) }; return ; } -function getRasterSource(id: string, source: MaplibreJSONSource): ReactElement { +function getRasterSource(id: string, source: MapLibreJSONSource): ReactElement { const sourceProps: SourceProps & { tileSize?: number } = { ...getTileSourceProps(source), }; @@ -213,7 +216,7 @@ function getRasterSource(id: string, source: MaplibreJSONSource): ReactElement { return ; } -function getImageSource(id: string, source: MaplibreJSONSource): ReactElement { +function getImageSource(id: string, source: MapLibreJSONSource): ReactElement { const sourceProps = { url: source.url, coordinates: source.coordinates, @@ -223,7 +226,7 @@ function getImageSource(id: string, source: MaplibreJSONSource): ReactElement { type ShapeSourceShape = (typeof ShapeSource.prototype.props)["shape"]; -function getShapeSource(id: string, source: MaplibreJSONSource): ReactElement { +function getShapeSource(id: string, source: MapLibreJSONSource): ReactElement { const sourceProps: SourceProps & { shape?: ShapeSourceShape; cluster?: boolean; @@ -268,7 +271,7 @@ function getShapeSource(id: string, source: MaplibreJSONSource): ReactElement { function asSourceComponent( id: string, - source: MaplibreJSONSource, + source: MapLibreJSONSource, ): ReactElement | null { switch (source.type) { case "vector": @@ -286,16 +289,16 @@ function asSourceComponent( return null; } -interface MaplibreJSON { - layers?: MaplibreJSONLayer[]; - sources?: { [key: string]: MaplibreJSONSource }; +interface MapLibreJSON { + layers?: MapLibreJSONLayer[]; + sources?: { [key: string]: MapLibreJSONSource }; } interface StyleProps { /** * A JSON object conforming to the schema described in the MapLibre Style Specification, or a URL to such JSON. */ - json?: MaplibreJSON | URL; + json?: MapLibreJSON | URL; } /** @@ -307,7 +310,7 @@ interface StyleProps { */ const Style = (props: StyleProps): ReactElement => { const [fetchedJson, setFetchedJson] = useState({}); - const json: MaplibreJSON = + const json: MapLibreJSON = typeof props.json === "object" ? props.json : fetchedJson; // Fetch style when props.json is a URL @@ -352,8 +355,8 @@ const Style = (props: StyleProps): ReactElement => { if (!sources || !Object.keys(sources)) { return []; } - return Object.keys(sources) - .map((id) => asSourceComponent(id, sources[id])) + return Object.entries(sources) + .map(([id, source]) => asSourceComponent(id, source)) .filter((x) => !!x); }, [json]); diff --git a/javascript/components/SymbolLayer.tsx b/src/components/SymbolLayer.tsx similarity index 83% rename from javascript/components/SymbolLayer.tsx rename to src/components/SymbolLayer.tsx index f24dfbf18..606d3b0ce 100644 --- a/javascript/components/SymbolLayer.tsx +++ b/src/components/SymbolLayer.tsx @@ -1,12 +1,12 @@ -import React, { ReactElement } from "react"; +import { Children, type ReactElement } from "react"; import { View, NativeModules, requireNativeComponent } from "react-native"; import useAbstractLayer, { - BaseLayerProps, - NativeBaseProps, + type BaseLayerProps, + type NativeBaseProps, } from "../hooks/useAbstractLayer"; -import BaseProps from "../types/BaseProps"; -import { type SymbolLayerStyleProps } from "../utils/MaplibreStyles"; +import { type BaseProps } from "../types/BaseProps"; +import { type SymbolLayerStyleProps } from "../utils/MapLibreRNStyles"; const MapLibreGL = NativeModules.MLNModule; @@ -50,11 +50,11 @@ const SymbolLayer: React.FC = ({ const _shouldSnapshot = (): boolean => { let isSnapshot = false; - if (React.Children.count(props.children) <= 0) { + if (Children.count(props.children) <= 0) { return isSnapshot; } - React.Children.forEach(props.children, (child) => { + Children.forEach(props.children, (child) => { if (child?.type === View) { isSnapshot = true; } diff --git a/javascript/components/UserLocation.tsx b/src/components/UserLocation.tsx similarity index 93% rename from javascript/components/UserLocation.tsx rename to src/components/UserLocation.tsx index 77fd9bb79..e5ded6551 100644 --- a/javascript/components/UserLocation.tsx +++ b/src/components/UserLocation.tsx @@ -1,11 +1,21 @@ -import React, { ReactElement, useEffect, useImperativeHandle } from "react"; +import { + forwardRef, + memo, + type ReactElement, + useEffect, + useImperativeHandle, + useRef, + useState, +} from "react"; import Annotation from "./Annotation"; import CircleLayer from "./CircleLayer"; import HeadingIndicator from "./HeadingIndicator"; import NativeUserLocation from "./NativeUserLocation"; -import locationManager, { Location } from "../modules/location/locationManager"; -import { CircleLayerStyleProps } from "../utils/MaplibreStyles"; +import locationManager, { + type Location, +} from "../modules/location/locationManager"; +import { type CircleLayerStyleProps } from "../utils/MapLibreRNStyles"; const mapboxBlue = "rgba(51, 181, 229, 100)"; @@ -124,8 +134,8 @@ export interface UserLocationRef { _onLocationUpdate: (location: Location | null) => void; } -const UserLocation = React.memo( - React.forwardRef( +const UserLocation = memo( + forwardRef( ( { animated = true, @@ -141,11 +151,11 @@ const UserLocation = React.memo( }: UserLocationProps, ref, ) => { - const _isMounted = React.useRef(null); - const locationManagerRunning = React.useRef(false); + const _isMounted = useRef(null); + const locationManagerRunning = useRef(false); const [userLocationState, setUserLocationState] = - React.useState({ + useState({ shouldShowUserLocation: false, }); diff --git a/javascript/components/VectorSource.tsx b/src/components/VectorSource.tsx similarity index 96% rename from javascript/components/VectorSource.tsx rename to src/components/VectorSource.tsx index b94880c64..08b07a72e 100644 --- a/javascript/components/VectorSource.tsx +++ b/src/components/VectorSource.tsx @@ -1,17 +1,17 @@ import { featureCollection } from "@turf/helpers"; -import React, { memo, useImperativeHandle } from "react"; +import { forwardRef, memo, useImperativeHandle } from "react"; import { NativeModules, - NativeSyntheticEvent, + type NativeSyntheticEvent, requireNativeComponent, } from "react-native"; import useAbstractSource from "../hooks/useAbstractSource"; import useNativeBridge from "../hooks/useNativeBridge"; -import BaseProps from "../types/BaseProps"; -import OnPressEvent from "../types/OnPressEvent"; +import { type BaseProps } from "../types/BaseProps"; +import { type OnPressEvent } from "../types/OnPressEvent"; import { cloneReactChildrenWithProps, isFunction, isAndroid } from "../utils"; -import { FilterExpression } from "../utils/MaplibreStyles"; +import { type FilterExpression } from "../utils/MapLibreRNStyles"; import { copyPropertiesAsDeprecated } from "../utils/deprecation"; import { getFilter } from "../utils/filterUtils"; @@ -91,7 +91,7 @@ const RCTMLNVectorSource = * The location of and metadata about the tiles are defined either by an option dictionary or by an external file that conforms to the TileJSON specification. */ const VectorSource = memo( - React.forwardRef( + forwardRef( ( { id = MapLibreGL.StyleSource.DefaultSourceID, diff --git a/javascript/hooks/useAbstractLayer.ts b/src/hooks/useAbstractLayer.ts similarity index 89% rename from javascript/hooks/useAbstractLayer.ts rename to src/hooks/useAbstractLayer.ts index 32e239f3a..5e9aeef5f 100644 --- a/javascript/hooks/useAbstractLayer.ts +++ b/src/hooks/useAbstractLayer.ts @@ -1,14 +1,14 @@ -import React, { useMemo, useRef } from "react"; -import { processColor, NativeMethods } from "react-native"; +import { useMemo, useRef } from "react"; +import { processColor, type NativeMethods } from "react-native"; -import BaseProps from "../types/BaseProps"; +import { type BaseProps } from "../types/BaseProps"; import { - AllLayerStyleProps, - ExpressionField, - ExpressionName, - FilterExpression, -} from "../utils/MaplibreStyles"; -import { StyleValue, transformStyle } from "../utils/StyleValue"; + type AllLayerStyleProps, + type ExpressionField, + type ExpressionName, + type FilterExpression, +} from "../utils/MapLibreRNStyles"; +import { type StyleValue, transformStyle } from "../utils/StyleValue"; import { getFilter } from "../utils/filterUtils"; export interface BaseLayerProps { diff --git a/javascript/hooks/useAbstractSource.ts b/src/hooks/useAbstractSource.ts similarity index 91% rename from javascript/hooks/useAbstractSource.ts rename to src/hooks/useAbstractSource.ts index 24b0cdd15..6def4303e 100644 --- a/javascript/hooks/useAbstractSource.ts +++ b/src/hooks/useAbstractSource.ts @@ -1,5 +1,5 @@ -import React, { useRef } from "react"; -import { NativeMethods } from "react-native"; +import { useRef } from "react"; +import { type NativeMethods } from "react-native"; export default function useAbstractSource(): { _nativeRef: diff --git a/javascript/hooks/useNativeBridge.ts b/src/hooks/useNativeBridge.ts similarity index 96% rename from javascript/hooks/useNativeBridge.ts rename to src/hooks/useNativeBridge.ts index 369969889..445f6326a 100644 --- a/javascript/hooks/useNativeBridge.ts +++ b/src/hooks/useNativeBridge.ts @@ -1,6 +1,6 @@ -import React, { Component, SyntheticEvent, useRef } from "react"; +import { Component, type SyntheticEvent, useRef } from "react"; -import { runNativeCommand, isAndroid, NativeArg } from "../utils"; +import { runNativeCommand, isAndroid, type NativeArg } from "../utils"; export type RNMLEvent = { payload: PayloadType; diff --git a/javascript/hooks/useNativeRef.ts b/src/hooks/useNativeRef.ts similarity index 76% rename from javascript/hooks/useNativeRef.ts rename to src/hooks/useNativeRef.ts index 8bf43ad30..587e12c64 100644 --- a/javascript/hooks/useNativeRef.ts +++ b/src/hooks/useNativeRef.ts @@ -1,5 +1,5 @@ -import React, { Component, useRef } from "react"; -import { NativeMethods } from "react-native"; +import { Component, useRef } from "react"; +import { type NativeMethods } from "react-native"; export type NativeRef = Component & Readonly; diff --git a/javascript/hooks/useOnce.ts b/src/hooks/useOnce.ts similarity index 100% rename from javascript/hooks/useOnce.ts rename to src/hooks/useOnce.ts diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 000000000..429fc66c7 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,4 @@ +import * as MapLibreRN from "./MapLibreRN"; +export * from "./MapLibreRN"; + +export default MapLibreRN; diff --git a/javascript/modules/location/locationManager.ts b/src/modules/location/locationManager.ts similarity index 99% rename from javascript/modules/location/locationManager.ts rename to src/modules/location/locationManager.ts index 68c21fef8..c3a561d74 100644 --- a/javascript/modules/location/locationManager.ts +++ b/src/modules/location/locationManager.ts @@ -1,7 +1,7 @@ import { NativeModules, NativeEventEmitter, - EmitterSubscription, + type EmitterSubscription, } from "react-native"; const MapLibreGL = NativeModules.MLNModule; diff --git a/javascript/modules/offline/OfflineCreatePackOptions.ts b/src/modules/offline/OfflineCreatePackOptions.ts similarity index 100% rename from javascript/modules/offline/OfflineCreatePackOptions.ts rename to src/modules/offline/OfflineCreatePackOptions.ts diff --git a/javascript/modules/offline/OfflinePack.ts b/src/modules/offline/OfflinePack.ts similarity index 100% rename from javascript/modules/offline/OfflinePack.ts rename to src/modules/offline/OfflinePack.ts diff --git a/javascript/modules/offline/offlineManager.ts b/src/modules/offline/offlineManager.ts similarity index 93% rename from javascript/modules/offline/offlineManager.ts rename to src/modules/offline/offlineManager.ts index 81be62ee3..f8f2ef0ce 100644 --- a/javascript/modules/offline/offlineManager.ts +++ b/src/modules/offline/offlineManager.ts @@ -1,11 +1,11 @@ import { NativeModules, NativeEventEmitter, - EventSubscription, + type EventSubscription, } from "react-native"; import OfflineCreatePackOptions, { - OfflineCreatePackInputOptions, + type OfflineCreatePackInputOptions, } from "./OfflineCreatePackOptions"; import OfflinePack from "./OfflinePack"; import { isUndefined, isFunction, isAndroid } from "../../utils"; @@ -90,8 +90,8 @@ class OfflineManager { * }, progressListener, errorListener) * * @param {OfflineCreatePackOptions} options Create options for a offline pack that specifices zoom levels, style url, and the region to download. - * @param {Callback=} progressListener Callback that listens for status events while downloading the offline resource. - * @param {Callback=} errorListener Callback that listens for status events while downloading the offline resource. + * @param {ProgressListener} progressListener Callback that listens for status events while downloading the offline resource. + * @param {ErrorListener} errorListener Callback that listens for status events while downloading the offline resource. * @return {void} */ async createPack( @@ -230,9 +230,10 @@ class OfflineManager { */ async getPacks(): Promise { await this._initialize(); - return Object.keys(this._offlinePacks).map( - (name) => this._offlinePacks[name], - ); + + return Object.keys(this._offlinePacks) + .map((name) => this._offlinePacks[name]) + .filter((pack) => !!pack); } /** @@ -244,7 +245,7 @@ class OfflineManager { * @param {String} name Name of the offline pack. * @return {OfflinePack} */ - async getPack(name: string): Promise { + async getPack(name: string) { await this._initialize(); return this._offlinePacks[name]; } @@ -300,9 +301,9 @@ class OfflineManager { * const errorListener = (offlinePack, err) => console.log(offlinePack, err) * MapLibreGL.offlineManager.subscribe('packName', progressListener, errorListener) * - * @param {String} packName Name of the offline pack. - * @param {Callback} progressListener Callback that listens for status events while downloading the offline resource. - * @param {Callback} errorListener Callback that listens for status events while downloading the offline resource. + * @param {string} packName Name of the offline pack. + * @param {ProgressListener} progressListener Callback that listens for status events while downloading the offline resource. + * @param {ErrorListener} errorListener Callback that listens for status events while downloading the offline resource. * @return {void} */ async subscribe( @@ -399,7 +400,9 @@ class OfflineManager { } const pack = this._offlinePacks[name]; - this._progressListeners[name](pack, e.payload); + if (pack) { + this._progressListeners[name]?.(pack, e.payload); + } // cleanup listeners now that they are no longer needed if (state === MapLibreGL.OfflinePackDownloadState.Complete) { @@ -415,7 +418,9 @@ class OfflineManager { } const pack = this._offlinePacks[name]; - this._errorListeners[name](pack, e.payload); + if (pack) { + this._errorListeners[name]?.(pack, e.payload); + } } _hasListeners( diff --git a/javascript/modules/snapshot/SnapshotOptions.ts b/src/modules/snapshot/SnapshotOptions.ts similarity index 100% rename from javascript/modules/snapshot/SnapshotOptions.ts rename to src/modules/snapshot/SnapshotOptions.ts diff --git a/javascript/modules/snapshot/snapshotManager.ts b/src/modules/snapshot/snapshotManager.ts similarity index 96% rename from javascript/modules/snapshot/snapshotManager.ts rename to src/modules/snapshot/snapshotManager.ts index 77f65c4a4..8bea9586a 100644 --- a/javascript/modules/snapshot/snapshotManager.ts +++ b/src/modules/snapshot/snapshotManager.ts @@ -1,6 +1,6 @@ import { NativeModules } from "react-native"; -import SnapshotOptions, { SnapshotInputOptions } from "./SnapshotOptions"; +import SnapshotOptions, { type SnapshotInputOptions } from "./SnapshotOptions"; const MapLibreGLSnapshotManger = NativeModules.MLNSnapshotModule; diff --git a/javascript/requestAndroidLocationPermissions.ts b/src/requestAndroidLocationPermissions.ts similarity index 72% rename from javascript/requestAndroidLocationPermissions.ts rename to src/requestAndroidLocationPermissions.ts index 964ac0d31..ab7416606 100644 --- a/javascript/requestAndroidLocationPermissions.ts +++ b/src/requestAndroidLocationPermissions.ts @@ -1,12 +1,12 @@ -import { Permission, PermissionsAndroid } from "react-native"; +import { type Permission, PermissionsAndroid } from "react-native"; import { isAndroid } from "./utils"; export async function requestAndroidLocationPermissions(): Promise { if (isAndroid()) { const res = await PermissionsAndroid.requestMultiple([ - PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, - PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION, + PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION as Permission, + PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION as Permission, ]); if (!res) { diff --git a/src/types/BaseProps.ts b/src/types/BaseProps.ts new file mode 100644 index 000000000..7389d0240 --- /dev/null +++ b/src/types/BaseProps.ts @@ -0,0 +1,3 @@ +export interface BaseProps { + testID?: string; +} diff --git a/javascript/types/CameraMode.ts b/src/types/CameraMode.ts similarity index 100% rename from javascript/types/CameraMode.ts rename to src/types/CameraMode.ts diff --git a/src/types/MapLibreRNEvent.ts b/src/types/MapLibreRNEvent.ts new file mode 100644 index 000000000..64a43a04e --- /dev/null +++ b/src/types/MapLibreRNEvent.ts @@ -0,0 +1,7 @@ +import { type SyntheticEvent } from "react"; + +export type MapLibreRNEvent< + T extends string, + P = GeoJSON.Feature, + V = Element, +> = SyntheticEvent; diff --git a/javascript/types/OnPressEvent.ts b/src/types/OnPressEvent.ts similarity index 72% rename from javascript/types/OnPressEvent.ts rename to src/types/OnPressEvent.ts index a2b831ee6..9ae2a5c40 100644 --- a/javascript/types/OnPressEvent.ts +++ b/src/types/OnPressEvent.ts @@ -1,4 +1,4 @@ -interface OnPressEvent { +export interface OnPressEvent { features: GeoJSON.Feature[]; coordinates: { latitude: number; @@ -9,5 +9,3 @@ interface OnPressEvent { y: number; }; } - -export default OnPressEvent; diff --git a/src/types/StyleURL.ts b/src/types/StyleURL.ts new file mode 100644 index 000000000..728218f2f --- /dev/null +++ b/src/types/StyleURL.ts @@ -0,0 +1,3 @@ +export enum StyleURL { + Default = "https://demotiles.maplibre.org/style.json", +} diff --git a/javascript/utils/BridgeValue.ts b/src/utils/BridgeValue.ts similarity index 87% rename from javascript/utils/BridgeValue.ts rename to src/utils/BridgeValue.ts index c2e3d3435..0d6ba5be1 100644 --- a/javascript/utils/BridgeValue.ts +++ b/src/utils/BridgeValue.ts @@ -60,15 +60,15 @@ export default class BridgeValue { value.push(bridgeValue.toJSON()); } } else if (type === "hashmap") { - value = []; const rawValue = this.rawValue as { [key: string]: RawValueType }; - const stringKeys = Object.keys(this.rawValue); - for (const stringKey of stringKeys) { - value.push([ - new BridgeValue(stringKey).toJSON(), - new BridgeValue(rawValue[stringKey]).toJSON(), - ] as [StyleValueJSON, StyleValueJSON]); - } + + value = Object.entries(rawValue).map( + ([key, value]) => + [new BridgeValue(key).toJSON(), new BridgeValue(value).toJSON()] as [ + StyleValueJSON, + StyleValueJSON, + ], + ); } else if (type === "boolean" || type === "number" || type === "string") { value = this.rawValue; } else { diff --git a/javascript/utils/Logger.ts b/src/utils/Logger.ts similarity index 99% rename from javascript/utils/Logger.ts rename to src/utils/Logger.ts index 71cfc5843..dc95ffaf6 100644 --- a/javascript/utils/Logger.ts +++ b/src/utils/Logger.ts @@ -1,5 +1,5 @@ import { - EmitterSubscription, + type EmitterSubscription, NativeEventEmitter, NativeModules, } from "react-native"; diff --git a/javascript/utils/MaplibreStyles.d.ts b/src/utils/MapLibreRNStyles.d.ts similarity index 99% rename from javascript/utils/MaplibreStyles.d.ts rename to src/utils/MapLibreRNStyles.d.ts index d475d042c..65f3b40d6 100644 --- a/javascript/utils/MaplibreStyles.d.ts +++ b/src/utils/MapLibreRNStyles.d.ts @@ -1,5 +1,5 @@ // DO NOT MODIFY -// This file is auto-generated from scripts/templates/MaplibreStyles.ts.ejs +// This file is auto-generated from scripts/templates/MapLibreRNStyles.ts.ejs import { type ImageSourcePropType } from "react-native"; diff --git a/javascript/utils/StyleValue.ts b/src/utils/StyleValue.ts similarity index 94% rename from javascript/utils/StyleValue.ts rename to src/utils/StyleValue.ts index 28aa4c6eb..cec2c0cde 100644 --- a/javascript/utils/StyleValue.ts +++ b/src/utils/StyleValue.ts @@ -4,7 +4,7 @@ import BridgeValue, { type RawValueType, type StyleValueJSON, } from "./BridgeValue"; -import { AllLayerStyleProps } from "./MaplibreStyles"; +import { type AllLayerStyleProps } from "./MapLibreRNStyles"; import { getStyleType } from "./styleMap"; export type StyleValue = { @@ -16,7 +16,7 @@ export function transformStyle( style: AllLayerStyleProps | undefined, ): undefined | { [key: string]: StyleValue } { if (!style) { - return; + return undefined; } const nativeStyle: { [key: string]: StyleValue } = {}; diff --git a/javascript/utils/animated/AbstractAnimatedCoordinates.ts b/src/utils/animated/AbstractAnimatedCoordinates.ts similarity index 100% rename from javascript/utils/animated/AbstractAnimatedCoordinates.ts rename to src/utils/animated/AbstractAnimatedCoordinates.ts diff --git a/javascript/utils/animated/Animated.ts b/src/utils/animated/Animated.ts similarity index 98% rename from javascript/utils/animated/Animated.ts rename to src/utils/animated/Animated.ts index 7728b4c4a..0a684e193 100644 --- a/javascript/utils/animated/Animated.ts +++ b/src/utils/animated/Animated.ts @@ -13,8 +13,8 @@ import ImageSource from "../../components/ImageSource"; import LineLayer from "../../components/LineLayer"; import RasterLayer from "../../components/RasterLayer"; import ShapeSource, { - ShapeSourceProps, - ShapeSourceRef, + type ShapeSourceProps, + type ShapeSourceRef, } from "../../components/ShapeSource"; import SymbolLayer from "../../components/SymbolLayer"; diff --git a/javascript/utils/animated/AnimatedCoordinatesArray.ts b/src/utils/animated/AnimatedCoordinatesArray.ts similarity index 68% rename from javascript/utils/animated/AnimatedCoordinatesArray.ts rename to src/utils/animated/AnimatedCoordinatesArray.ts index 5dee3a7ea..c622ee026 100644 --- a/javascript/utils/animated/AnimatedCoordinatesArray.ts +++ b/src/utils/animated/AnimatedCoordinatesArray.ts @@ -1,5 +1,5 @@ import AbstractAnimatedCoordinates, { - AnimatedCoordinates, + type AnimatedCoordinates, } from "./AbstractAnimatedCoordinates"; interface CoordinatesState { @@ -16,7 +16,10 @@ class AnimatedCoordinatesArray extends AbstractAnimatedCoordinates [coord[0], coord[1]]), + coords: coordinatesArray.map((coordinates) => [ + coordinates[0], + coordinates[1], + ]), targetCoords: [], }; } @@ -48,37 +51,39 @@ class AnimatedCoordinatesArray extends AbstractAnimatedCoordinates [ - origCoord[0] * origF + targetCoords[i][0] * newF, - origCoord[1] * origF + targetCoords[i][1] * newF, + .map((originalCoordinates, i): [number, number] => [ + originalCoordinates[0] * origF + (targetCoords[i]?.[0] ?? 0) * newF, + originalCoordinates[1] * origF + (targetCoords[i]?.[1] ?? 0) * newF, ]); if (targetCoords.length > coords.length) { // only in new (adding) - const addingOrig = + const addingOriginal = coords.length > 0 ? coords[coords.length - 1] : targetCoords[0]; + const adding = targetCoords .slice(commonLen, targetCoords.length) - .map((newCoord): [number, number] => [ - addingOrig[0] * origF + newCoord[0] * newF, - addingOrig[1] * origF + newCoord[1] * newF, + .map((newCoordinates): [number, number] => [ + (addingOriginal?.[0] ?? 0) * origF + newCoordinates[0] * newF, + (addingOriginal?.[1] ?? 0) * origF + newCoordinates[1] * newF, ]); + return { coords: [...common, ...adding], targetCoords }; } if (coords.length > targetCoords.length) { - // only in orig (dissapearing) - const dissapearingNew = + // only in orig (disappearing) + const disappearingNew = targetCoords.length > 0 ? targetCoords[targetCoords.length - 1] : coords[0]; - const dissapearing = coords + const disappearing = coords .slice(commonLen, coords.length) - .map((origCoord): [number, number] => [ - origCoord[0] * origF + dissapearingNew[0] * newF, - origCoord[1] * origF + dissapearingNew[1] * newF, + .map((originalCoordinates): [number, number] => [ + originalCoordinates[0] * origF + (disappearingNew?.[0] ?? 0) * newF, + originalCoordinates[1] * origF + (disappearingNew?.[1] ?? 0) * newF, ]); - return { coords: [...common, ...dissapearing], targetCoords }; + return { coords: [...common, ...disappearing], targetCoords }; } return { coords: common, targetCoords }; @@ -87,8 +92,8 @@ class AnimatedCoordinatesArray extends AbstractAnimatedCoordinates [coord[0], coord[1]], + (coordinates): AnimatedCoordinates => [coordinates[0], coordinates[1]], ); return { ...state, diff --git a/javascript/utils/animated/AnimatedExtractCoordinateFromArray.ts b/src/utils/animated/AnimatedExtractCoordinateFromArray.ts similarity index 100% rename from javascript/utils/animated/AnimatedExtractCoordinateFromArray.ts rename to src/utils/animated/AnimatedExtractCoordinateFromArray.ts diff --git a/javascript/utils/animated/AnimatedPoint.ts b/src/utils/animated/AnimatedPoint.ts similarity index 95% rename from javascript/utils/animated/AnimatedPoint.ts rename to src/utils/animated/AnimatedPoint.ts index b84bf4d0e..55a73823b 100644 --- a/javascript/utils/animated/AnimatedPoint.ts +++ b/src/utils/animated/AnimatedPoint.ts @@ -83,12 +83,12 @@ export class AnimatedPoint extends AnimatedWithChildren { return Animated.parallel([ Animated.spring(this.longitude, { ...config, - toValue: config.coordinates[0], + toValue: config.coordinates[0]!, useNativeDriver: false, }), Animated.spring(this.latitude, { ...config, - toValue: config.coordinates[1], + toValue: config.coordinates[1]!, useNativeDriver: false, }), ]); @@ -102,12 +102,12 @@ export class AnimatedPoint extends AnimatedWithChildren { return Animated.parallel([ Animated.timing(this.longitude, { ...config, - toValue: config.coordinates[0], + toValue: config.coordinates[0]!, useNativeDriver: false, }), Animated.timing(this.latitude, { ...config, - toValue: config.coordinates[1], + toValue: config.coordinates[1]!, useNativeDriver: false, }), ]); diff --git a/javascript/utils/animated/AnimatedRouteCoordinatesArray.ts b/src/utils/animated/AnimatedRouteCoordinatesArray.ts similarity index 89% rename from javascript/utils/animated/AnimatedRouteCoordinatesArray.ts rename to src/utils/animated/AnimatedRouteCoordinatesArray.ts index 7b3ec8b33..fb554a111 100644 --- a/javascript/utils/animated/AnimatedRouteCoordinatesArray.ts +++ b/src/utils/animated/AnimatedRouteCoordinatesArray.ts @@ -1,10 +1,16 @@ import distance from "@turf/distance"; -import { lineString, point, convertLength, Coord, Units } from "@turf/helpers"; +import { + lineString, + point, + convertLength, + type Coord, + type Units, +} from "@turf/helpers"; import length from "@turf/length"; import nearestPointOnLine from "@turf/nearest-point-on-line"; import AbstractAnimatedCoordinates, { - AnimatedCoordinates, + type AnimatedCoordinates, } from "./AbstractAnimatedCoordinates"; interface AnimatedRouteState { @@ -63,11 +69,10 @@ export default class AnimatedRouteCoordinatesArray extends AbstractAnimatedCoord let i = fullRoute.length - 1; while (actsum < currentEnd && i > 0) { prevsum = actsum; - actsum += distance( - point(fullRoute[i]), - point(fullRoute[i - 1]), - this.distconf, - ); + const start = fullRoute[i]; + const end = fullRoute[i - 1]; + actsum += + start && end ? distance(point(start), point(end), this.distconf) : 0; i -= 1; } if (actsum <= currentEnd) { @@ -80,8 +85,8 @@ export default class AnimatedRouteCoordinatesArray extends AbstractAnimatedCoord const actRoute = [ ...fullRoute.slice(0, i + 1), [ - fullRoute[i][0] * r + fullRoute[i + 1][0] * or, - fullRoute[i][1] * r + fullRoute[i + 1][1] * or, + (fullRoute[i]?.[0] ?? 0) * r + (fullRoute[i + 1]?.[0] ?? 0) * or, + (fullRoute[i]?.[1] ?? 0) * r + (fullRoute[i + 1]?.[1] ?? 0) * or, ] as AnimatedCoordinates, ]; return { fullRoute, end: { ...end, current: currentEnd }, actRoute }; diff --git a/javascript/utils/animated/AnimatedShape.ts b/src/utils/animated/AnimatedShape.ts similarity index 100% rename from javascript/utils/animated/AnimatedShape.ts rename to src/utils/animated/AnimatedShape.ts diff --git a/javascript/utils/deprecation.ts b/src/utils/deprecation.ts similarity index 100% rename from javascript/utils/deprecation.ts rename to src/utils/deprecation.ts diff --git a/javascript/utils/filterUtils.ts b/src/utils/filterUtils.ts similarity index 74% rename from javascript/utils/filterUtils.ts rename to src/utils/filterUtils.ts index 14d878f30..39ffd8a63 100644 --- a/javascript/utils/filterUtils.ts +++ b/src/utils/filterUtils.ts @@ -1,4 +1,4 @@ -import { FilterExpression } from "./MaplibreStyles"; +import { type FilterExpression } from "./MapLibreRNStyles"; export function getFilter(filter: FilterExpression | undefined): string[] { if (!Array.isArray(filter) || filter.length === 0) { diff --git a/javascript/utils/index.ts b/src/utils/index.ts similarity index 92% rename from javascript/utils/index.ts rename to src/utils/index.ts index af3f09856..902b82bf0 100644 --- a/javascript/utils/index.ts +++ b/src/utils/index.ts @@ -1,10 +1,10 @@ -import React, { Component, ReactElement } from "react"; +import { Children, cloneElement, Component, type ReactElement } from "react"; import { Image, NativeModules, findNodeHandle, Platform, - ImageSourcePropType, + type ImageSourcePropType, UIManager, } from "react-native"; @@ -95,7 +95,7 @@ export function runNativeCommand( } export function cloneReactChildrenWithProps( - children: Parameters[0], + children: Parameters[0], propsToAdd: { [key: string]: string } = {}, ): ReactElement[] | undefined { if (!children) { @@ -111,8 +111,8 @@ export function cloneReactChildrenWithProps( } const filteredChildren = foundChildren.filter((child) => !!child); // filter out falsy children, since some can be null - return React.Children.map(filteredChildren, (child) => - React.cloneElement(child, propsToAdd), + return Children.map(filteredChildren, (child) => + cloneElement(child, propsToAdd), ); } diff --git a/javascript/utils/makeNativeBounds.ts b/src/utils/makeNativeBounds.ts similarity index 100% rename from javascript/utils/makeNativeBounds.ts rename to src/utils/makeNativeBounds.ts diff --git a/javascript/utils/styleMap.ts b/src/utils/styleMap.ts similarity index 100% rename from javascript/utils/styleMap.ts rename to src/utils/styleMap.ts diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 000000000..16492f78e --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig", + "exclude": ["lib", "packages", "plugin", "scripts", "__tests__", "jest-setup.ts"] +} diff --git a/tsconfig.json b/tsconfig.json index f0a251295..739b366e1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,22 +1,29 @@ { "compilerOptions": { - "declaration": true, - "preserveSymlinks": true, - "target": "es6", - "module": "es6", - "lib": ["es6"], - "allowJs": true, - "jsx": "react-native", - "isolatedModules": true, - "skipLibCheck": true, - "strict": true, - "strictNullChecks": true, - "types": ["node", "react-native", "geojson", "jest"], - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, + "rootDir": ".", + "paths": { + "@maplibre/maplibre-react-native": ["./src/index"] + }, + "allowUnreachableCode": false, + "allowUnusedLabels": false, "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react-jsx", + "lib": ["ESNext"], + "module": "ESNext", + "moduleResolution": "Bundler", + "noEmit": true, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "noImplicitUseStrict": false, + "noStrictGenericChecks": false, + "noUncheckedIndexedAccess": true, "noUnusedLocals": true, - "noImplicitReturns": true - }, - "include": ["javascript/**/*", "index.ts"] + "noUnusedParameters": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ESNext", + "verbatimModuleSyntax": true + } } diff --git a/yarn.lock b/yarn.lock index 3bb9a3f74..87cee8876 100644 --- a/yarn.lock +++ b/yarn.lock @@ -125,6 +125,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.26.0": + version: 7.26.2 + resolution: "@babel/compat-data@npm:7.26.2" + checksum: 10/ed9eed6b62ce803ef4a320b1dac76b0302abbb29c49dddf96f3e3207d9717eb34e299a8651bb1582e9c3346ead74b6d595ffced5b3dae718afa08b18741f8402 + languageName: node + linkType: hard + "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.10, @babel/core@npm:^7.18.9, @babel/core@npm:^7.20.0, @babel/core@npm:^7.20.5, @babel/core@npm:^7.23.9": version: 7.25.2 resolution: "@babel/core@npm:7.25.2" @@ -308,6 +315,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.9" + dependencies: + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/e1bb465b3b0155702d82cfef09e3813e87a6d777cdd2c513796861eac14953340491eafea1d4109278bf4ceb48b54074c45758f042c0544d00c498090bee5a6f + languageName: node + linkType: hard + "@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.7, @babel/helper-compilation-targets@npm:^7.24.8, @babel/helper-compilation-targets@npm:^7.25.2": version: 7.25.2 resolution: "@babel/helper-compilation-targets@npm:7.25.2" @@ -394,6 +411,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-regexp-features-plugin@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + regexpu-core: "npm:^6.1.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/bc2b6a365ddf490c416661833dbf4430ae0c66132acccb5ce257e82026dd9db54da788bfbdcb7e0032aa0cba965cb1be169b1e1fb2c8c029b81625da4963f6b9 + languageName: node + linkType: hard + "@babel/helper-define-polyfill-provider@npm:^0.6.2": version: 0.6.2 resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2" @@ -568,6 +598,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-remap-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-wrap-function": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/ea37ad9f8f7bcc27c109963b8ebb9d22bac7a5db2a51de199cb560e251d5593fe721e46aab2ca7d3e7a24b0aa4aff0eaf9c7307af9c2fd3a1d84268579073052 + languageName: node + linkType: hard + "@babel/helper-replace-supers@npm:^7.24.7, @babel/helper-replace-supers@npm:^7.25.0": version: 7.25.0 resolution: "@babel/helper-replace-supers@npm:7.25.0" @@ -718,6 +761,17 @@ __metadata: languageName: node linkType: hard +"@babel/helper-wrap-function@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-wrap-function@npm:7.25.9" + dependencies: + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/988dcf49159f1c920d6b9486762a93767a6e84b5e593a6342bc235f3e47cc1cb0c048d8fca531a48143e6b7fce1ff12ddbf735cf5f62cb2f07192cf7c27b89cf + languageName: node + linkType: hard + "@babel/helpers@npm:^7.25.0": version: 7.25.6 resolution: "@babel/helpers@npm:7.25.6" @@ -850,6 +904,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/3c23ef34e3fd7da3578428cb488180ab6b7b96c9c141438374b6d87fa814d87de099f28098e5fc64726c19193a1da397e4d2351d40b459bcd2489993557e2c74 + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.0": version: 7.25.0 resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.0" @@ -861,6 +927,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/d3e14ab1cb9cb50246d20cab9539f2fbd1e7ef1ded73980c8ad7c0561b4d5e0b144d362225f0976d47898e04cbd40f2000e208b0913bd788346cf7791b96af91 + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.0": version: 7.25.0 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.0" @@ -872,6 +949,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/a9d1ee3fd100d3eb6799a2f2bbd785296f356c531d75c9369f71541811fa324270258a374db103ce159156d006da2f33370330558d0133e6f7584152c34997ca + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.7" @@ -885,6 +973,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 10/5b298b28e156f64de51cdb03a2c5b80c7f978815ef1026f3ae8b9fc48d28bf0a83817d8fbecb61ef8fb94a7201f62cca5103cc6e7b9e8f28e38f766d7905b378 + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.0": version: 7.25.0 resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.0" @@ -897,6 +998,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/cb893e5deb9312a0120a399835b6614a016c036714de7123c8edabccc56a09c4455016e083c5c4dd485248546d4e5e55fc0e9132b3c3a9bd16abf534138fe3f2 + languageName: node + linkType: hard + "@babel/plugin-proposal-async-generator-functions@npm:^7.0.0": version: 7.20.7 resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" @@ -1165,6 +1278,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-import-assertions@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/b58f2306df4a690ca90b763d832ec05202c50af787158ff8b50cdf3354359710bce2e1eb2b5135fcabf284756ac8eadf09ca74764aa7e76d12a5cac5f6b21e67 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-attributes@npm:^7.24.7": version: 7.25.6 resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.6" @@ -1176,6 +1300,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-import-attributes@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/c122aa577166c80ee67f75aebebeef4150a132c4d3109d25d7fc058bf802946f883e330f20b78c1d3e3a5ada631c8780c263d2d01b5dbaecc69efefeedd42916 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-meta@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" @@ -1353,6 +1488,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-arrow-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/c29f081224859483accf55fb4d091db2aac0dcd0d7954bac5ca889030cc498d3f771aa20eb2e9cd8310084ec394d85fa084b97faf09298b6bc9541182b3eb5bb + languageName: node + linkType: hard + "@babel/plugin-transform-async-generator-functions@npm:^7.24.3, @babel/plugin-transform-async-generator-functions@npm:^7.25.4": version: 7.25.4 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.4" @@ -1367,6 +1513,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-generator-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-remap-async-to-generator": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/99306c44a4a791abd51a56d89fa61c4cfe805a58e070c7fb1cbf950886778a6c8c4f25a92d231f91da1746d14a338436073fd83038e607f03a2a98ac5340406b + languageName: node + linkType: hard + "@babel/plugin-transform-async-to-generator@npm:^7.20.0, @babel/plugin-transform-async-to-generator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7" @@ -1380,6 +1539,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.9" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-remap-async-to-generator": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/b3ad50fb93c171644d501864620ed23952a46648c4df10dc9c62cc9ad08031b66bd272cfdd708faeee07c23b6251b16f29ce0350473e4c79f0c32178d38ce3a6 + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoped-functions@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7" @@ -1391,6 +1563,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoped-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/bf31896556b33a80f017af3d445ceb532ec0f5ca9d69bc211a963ac92514d172d5c24c5ac319f384d9dfa7f1a4d8dc23032c2fe3e74f98a59467ecd86f7033ae + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.25.0": version: 7.25.0 resolution: "@babel/plugin-transform-block-scoping@npm:7.25.0" @@ -1402,6 +1585,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoping@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/89dcdd7edb1e0c2f44e3c568a8ad8202e2574a8a8308248550a9391540bc3f5c9fbd8352c60ae90769d46f58d3ab36f2c3a0fbc1c3620813d92ff6fccdfa79c8 + languageName: node + linkType: hard + "@babel/plugin-transform-class-properties@npm:^7.24.1, @babel/plugin-transform-class-properties@npm:^7.25.4": version: 7.25.4 resolution: "@babel/plugin-transform-class-properties@npm:7.25.4" @@ -1414,6 +1608,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/a8d69e2c285486b63f49193cbcf7a15e1d3a5f632c1c07d7a97f65306df7f554b30270b7378dde143f8b557d1f8f6336c643377943dec8ec405e4cd11e90b9ea + languageName: node + linkType: hard + "@babel/plugin-transform-class-static-block@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7" @@ -1427,6 +1633,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-static-block@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-transform-class-static-block@npm:7.26.0" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 10/60cba3f125a7bc4f90706af0a011697c7ffd2eddfba336ed6f84c5f358c44c3161af18b0202475241a96dee7964d96dd3a342f46dbf85b75b38bb789326e1766 + languageName: node + linkType: hard + "@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.25.4": version: 7.25.4 resolution: "@babel/plugin-transform-classes@npm:7.25.4" @@ -1443,6 +1661,22 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-classes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-classes@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + globals: "npm:^11.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/1914ebe152f35c667fba7bf17ce0d9d0f33df2fb4491990ce9bb1f9ec5ae8cbd11d95b0dc371f7a4cc5e7ce4cf89467c3e34857302911fc6bfb6494a77f7b37e + languageName: node + linkType: hard + "@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" @@ -1455,6 +1689,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-computed-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-computed-properties@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/template": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/aa1a9064d6a9d3b569b8cae6972437315a38a8f6553ee618406da5122500a06c2f20b9fa93aeed04dd895923bf6f529c09fc79d4be987ec41785ceb7d2203122 + languageName: node + linkType: hard + "@babel/plugin-transform-destructuring@npm:^7.20.0, @babel/plugin-transform-destructuring@npm:^7.24.8": version: 7.24.8 resolution: "@babel/plugin-transform-destructuring@npm:7.24.8" @@ -1466,6 +1712,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-destructuring@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-destructuring@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/51b24fbead910ad0547463b2d214dd08076b22a66234b9f878b8bac117603dd23e05090ff86e9ffc373214de23d3e5bf1b095fe54cce2ca16b010264d90cf4f5 + languageName: node + linkType: hard + "@babel/plugin-transform-dotall-regex@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7" @@ -1478,6 +1735,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-dotall-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/8bdf1bb9e6e3a2cc8154ae88a3872faa6dc346d6901994505fb43ac85f858728781f1219f40b67f7bb0687c507450236cb7838ac68d457e65637f98500aa161b + languageName: node + linkType: hard + "@babel/plugin-transform-duplicate-keys@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.7" @@ -1489,6 +1758,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-duplicate-keys@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/10dbb87bc09582416f9f97ca6c40563655abf33e3fd0fee25eeaeff28e946a06651192112a2bc2b18c314a638fa15c55b8365a677ef67aa490848cefdc57e1d8 + languageName: node + linkType: hard + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.0": version: 7.25.0 resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.0" @@ -1501,6 +1781,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/f7233cf596be8c6843d31951afaf2464a62a610cb89c72c818c044765827fab78403ab8a7d3a6386f838c8df574668e2a48f6c206b1d7da965aff9c6886cb8e6 + languageName: node + linkType: hard + "@babel/plugin-transform-dynamic-import@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.7" @@ -1513,6 +1805,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-dynamic-import@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/aaca1ccda819be9b2b85af47ba08ddd2210ff2dbea222f26e4cd33f97ab020884bf81a66197e50872721e9daf36ceb5659502c82199884ea74d5d75ecda5c58b + languageName: node + linkType: hard + "@babel/plugin-transform-exponentiation-operator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.7" @@ -1525,6 +1828,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-exponentiation-operator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.9" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/57e1bb4135dd16782fe84b49dd360cce8f9bf5f62eb10424dcdaf221e54a8bacdf50f2541c5ac01dea9f833a6c628613d71be915290938a93454389cba4de06b + languageName: node + linkType: hard + "@babel/plugin-transform-export-namespace-from@npm:^7.22.11, @babel/plugin-transform-export-namespace-from@npm:^7.23.4, @babel/plugin-transform-export-namespace-from@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7" @@ -1537,6 +1852,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-export-namespace-from@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/4dfe8df86c5b1d085d591290874bb2d78a9063090d71567ed657a418010ad333c3f48af2c974b865f53bbb718987a065f89828d43279a7751db1a56c9229078d + languageName: node + linkType: hard + "@babel/plugin-transform-flow-strip-types@npm:^7.20.0, @babel/plugin-transform-flow-strip-types@npm:^7.24.7": version: 7.25.2 resolution: "@babel/plugin-transform-flow-strip-types@npm:7.25.2" @@ -1549,7 +1875,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.25.2": +"@babel/plugin-transform-flow-strip-types@npm:^7.25.2, @babel/plugin-transform-flow-strip-types@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-flow-strip-types@npm:7.25.9" dependencies: @@ -1573,6 +1899,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-for-of@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-for-of@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/63a2db7fe06c2e3f5fc1926f478dac66a5f7b3eaeb4a0ffae577e6f3cb3d822cb1ed2ed3798f70f5cb1aa06bc2ad8bcd1f557342f5c425fd83c37a8fc1cfd2ba + languageName: node + linkType: hard + "@babel/plugin-transform-function-name@npm:^7.0.0, @babel/plugin-transform-function-name@npm:^7.25.1": version: 7.25.1 resolution: "@babel/plugin-transform-function-name@npm:7.25.1" @@ -1586,6 +1924,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-function-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-function-name@npm:7.25.9" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/a8d7c8d019a6eb57eab5ca1be3e3236f175557d55b1f3b11f8ad7999e3fbb1cf37905fd8cb3a349bffb4163a558e9f33b63f631597fdc97c858757deac1b2fd7 + languageName: node + linkType: hard + "@babel/plugin-transform-json-strings@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-json-strings@npm:7.24.7" @@ -1598,6 +1949,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-json-strings@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-json-strings@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/e2498d84761cfd05aaea53799933d55af309c9d6204e66b38778792d171e4d1311ad34f334259a3aa3407dd0446f6bd3e390a1fcb8ce2e42fe5aabed0e41bee1 + languageName: node + linkType: hard + "@babel/plugin-transform-literals@npm:^7.0.0, @babel/plugin-transform-literals@npm:^7.25.2": version: 7.25.2 resolution: "@babel/plugin-transform-literals@npm:7.25.2" @@ -1609,6 +1971,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-literals@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/3cca75823a38aab599bc151b0fa4d816b5e1b62d6e49c156aa90436deb6e13649f5505973151a10418b64f3f9d1c3da53e38a186402e0ed7ad98e482e70c0c14 + languageName: node + linkType: hard + "@babel/plugin-transform-logical-assignment-operators@npm:^7.24.1, @babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" @@ -1621,6 +1994,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/8c6febb4ac53852314d28b5e2c23d5dbbff7bf1e57d61f9672e0d97531ef7778b3f0ad698dcf1179f5486e626c77127508916a65eb846a89e98a92f70ed3537b + languageName: node + linkType: hard + "@babel/plugin-transform-member-expression-literals@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7" @@ -1632,6 +2016,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-member-expression-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/db92041ae87b8f59f98b50359e0bb172480f6ba22e5e76b13bdfe07122cbf0daa9cd8ad2e78dcb47939938fed88ad57ab5989346f64b3a16953fc73dea3a9b1f + languageName: node + linkType: hard + "@babel/plugin-transform-modules-amd@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-modules-amd@npm:7.24.7" @@ -1644,6 +2039,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-amd@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-amd@npm:7.25.9" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/75d34c6e709a23bcfa0e06f722c9a72b1d9ac3e7d72a07ef54a943d32f65f97cbbf0e387d874eb9d9b4c8d33045edfa8e8441d0f8794f3c2b9f1d71b928acf2c + languageName: node + linkType: hard + "@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.24.7, @babel/plugin-transform-modules-commonjs@npm:^7.24.8": version: 7.24.8 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.8" @@ -1657,6 +2064,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-commonjs@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.25.9" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-simple-access": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/a7390ca999373ccdef91075f274d1ace3a5cb79f9b9118ed6f76e94867ed454cf798a6f312ce2c4cdc1e035a25d810d754e4cb2e4d866acb4219490f3585de60 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-systemjs@npm:^7.25.0": version: 7.25.0 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.0" @@ -1671,6 +2091,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-systemjs@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.9" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/03145aa89b7c867941a03755216cfb503df6d475a78df84849a157fa5f2fcc17ba114a968d0579ae34e7c61403f35d1ba5d188fdfb9ad05f19354eb7605792f9 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-umd@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-modules-umd@npm:7.24.7" @@ -1683,6 +2117,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-umd@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-umd@npm:7.25.9" + dependencies: + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/47d03485fedac828832d9fee33b3b982a6db8197e8651ceb5d001890e276150b5a7ee3e9780749e1ba76453c471af907a159108832c24f93453dd45221788e97 + languageName: node + linkType: hard + "@babel/plugin-transform-named-capturing-groups-regex@npm:^7.0.0, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7" @@ -1695,6 +2141,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/434346ba05cf74e3f4704b3bdd439287b95cd2a8676afcdc607810b8c38b6f4798cd69c1419726b2e4c7204e62e4a04d31b0360e91ca57a930521c9211e07789 + languageName: node + linkType: hard + "@babel/plugin-transform-new-target@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-new-target@npm:7.24.7" @@ -1706,6 +2164,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-new-target@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-new-target@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/07bb3a09028ee7b8e8ede6e6390e3b3aecc5cf9adb2fc5475ff58036c552b8a3f8e63d4c43211a60545f3307cdc15919f0e54cb5455d9546daed162dc54ff94e + languageName: node + linkType: hard + "@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.1, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.7" @@ -1718,6 +2187,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/26e03b1c2c0408cc300e46d8f8cb639653ff3a7b03456d0d8afbb53c44f33a89323f51d99991dade3a5676921119bbdf869728bb7911799b5ef99ffafa2cdd24 + languageName: node + linkType: hard + "@babel/plugin-transform-numeric-separator@npm:^7.24.1, @babel/plugin-transform-numeric-separator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" @@ -1730,6 +2210,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-numeric-separator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/0528ef041ed88e8c3f51624ee87b8182a7f246fe4013f0572788e0727d20795b558f2b82e3989b5dd416cbd339500f0d88857de41b6d3b6fdacb1d5344bcc5b1 + languageName: node + linkType: hard + "@babel/plugin-transform-object-rest-spread@npm:^7.12.13, @babel/plugin-transform-object-rest-spread@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" @@ -1744,7 +2235,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.24.5": +"@babel/plugin-transform-object-rest-spread@npm:^7.24.5, @babel/plugin-transform-object-rest-spread@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" dependencies: @@ -1769,6 +2260,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-super@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-object-super@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/1817b5d8b80e451ae1ad9080cca884f4f16df75880a158947df76a2ed8ab404d567a7dce71dd8051ef95f90fbe3513154086a32aba55cc76027f6cbabfbd7f98 + languageName: node + linkType: hard + "@babel/plugin-transform-optional-catch-binding@npm:^7.24.1, @babel/plugin-transform-optional-catch-binding@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7" @@ -1781,6 +2284,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-catch-binding@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/b46a8d1e91829f3db5c252583eb00d05a779b4660abeea5500fda0f8ffa3584fd18299443c22f7fddf0ed9dfdb73c782c43b445dc468d4f89803f2356963b406 + languageName: node + linkType: hard + "@babel/plugin-transform-optional-chaining@npm:^7.24.5, @babel/plugin-transform-optional-chaining@npm:^7.24.7, @babel/plugin-transform-optional-chaining@npm:^7.24.8": version: 7.24.8 resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.8" @@ -1794,6 +2308,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-chaining@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/bc838a499fd9892e163b8bc9bfbc4bf0b28cc3232ee0a6406ae078257c8096518f871d09b4a32c11f4a2d6953c3bc1984619ef748f7ad45aed0b0d9689a8eb36 + languageName: node + linkType: hard + "@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.22.15, @babel/plugin-transform-parameters@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-parameters@npm:7.24.7" @@ -1828,7 +2354,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.24.7": +"@babel/plugin-transform-private-methods@npm:^7.24.7, @babel/plugin-transform-private-methods@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" dependencies: @@ -1854,6 +2380,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-property-in-object@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/aa45bb5669b610afa763d774a4b5583bb60ce7d38e4fd2dedfd0703e73e25aa560e6c6124e155aa90b101601743b127d9e5d3eb00989a7e4b4ab9c2eb88475ba + languageName: node + linkType: hard + "@babel/plugin-transform-property-literals@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-property-literals@npm:7.24.7" @@ -1865,6 +2404,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-property-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-property-literals@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/436046ab07d54a9b44a384eeffec701d4e959a37a7547dda72e069e751ca7ff753d1782a8339e354b97c78a868b49ea97bf41bf5a44c6d7a3c0a05ad40eeb49c + languageName: node + linkType: hard + "@babel/plugin-transform-react-display-name@npm:^7.0.0, @babel/plugin-transform-react-display-name@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-react-display-name@npm:7.24.7" @@ -1876,6 +2426,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-display-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-display-name@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/dc7affde0ed98e40f629ee92a2fc44fbd8008aabda1ddb3f5bd2632699d3289b08dff65b26cf3b89dab46397ec440f453d19856bbb3a9a83df5b4ac6157c5c39 + languageName: node + linkType: hard + "@babel/plugin-transform-react-jsx-development@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-react-jsx-development@npm:7.24.7" @@ -1887,6 +2448,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-jsx-development@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.9" + dependencies: + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/537d38369537f1eb56041c4b770bc0733fde1801a7f5ffef40a1217ea448f33ee2fa8e6098a58a82fd00e432c1b9426a66849496da419020c9eca3b1b1a23779 + languageName: node + linkType: hard + "@babel/plugin-transform-react-jsx-self@npm:^7.0.0": version: 7.24.7 resolution: "@babel/plugin-transform-react-jsx-self@npm:7.24.7" @@ -1946,7 +2518,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.25.2": +"@babel/plugin-transform-react-jsx@npm:^7.25.2, @babel/plugin-transform-react-jsx@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9" dependencies: @@ -1973,6 +2545,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-pure-annotations@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/9995c0fc7c25d3aaaa0ce84233de02eab2564ea111d0813ec5baa538eb21520402879cc787ad1ad4c2061b99cebc3beb09910e64c9592e8ccb42ae62d9e4fd9a + languageName: node + linkType: hard + "@babel/plugin-transform-regenerator@npm:^7.20.0, @babel/plugin-transform-regenerator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" @@ -1985,6 +2569,30 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-regenerator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-regenerator@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + regenerator-transform: "npm:^0.15.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/1c09e8087b476c5967282c9790fb8710e065eda77c60f6cb5da541edd59ded9d003d96f8ef640928faab4a0b35bf997673499a194973da4f0c97f0935807a482 + languageName: node + linkType: hard + +"@babel/plugin-transform-regexp-modifiers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.26.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/726deca486bbd4b176f8a966eb0f4aabc19d9def3b8dabb8b3a656778eca0df1fda3f3c92b213aa5a184232fdafd5b7bd73b4e24ca4345c498ef6baff2bda4e1 + languageName: node + linkType: hard + "@babel/plugin-transform-reserved-words@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7" @@ -1996,6 +2604,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-reserved-words@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-reserved-words@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/8beda04481b25767acbd1f6b9ef7b3a9c12fbd9dcb24df45a6ad120e1dc4b247c073db60ac742f9093657d6d8c050501fc0606af042f81a3bb6a3ff862cddc47 + languageName: node + linkType: hard + "@babel/plugin-transform-runtime@npm:^7.0.0": version: 7.25.4 resolution: "@babel/plugin-transform-runtime@npm:7.25.4" @@ -2039,26 +2658,71 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-spread@npm:7.24.7" +"@babel/plugin-transform-shorthand-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/f774995d58d4e3a992b732cf3a9b8823552d471040e280264dd15e0735433d51b468fef04d75853d061309389c66bda10ce1b298297ce83999220eb0ad62741d + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-spread@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/76e2c8544129d727d5a698e2a67d74e438bc35df843adb5f769316ec432c5e1bbb4128123a95b2fe8ef0aec7b26d87efe81d64326291c77ad757ff184d38448a + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-spread@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/fe72c6545267176cdc9b6f32f30f9ced37c1cafa1290e4436b83b8f377b4f1c175dad404228c96e3efdec75da692f15bfb9db2108fcd9ad260bc9968778ee41e + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.0.0, @babel/plugin-transform-sticky-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/3b9a99ae043ef363c81bfb097fa7a553fcf7c7d9fddc13dd2b47b3b2e45cf2741a9ca78cfe55f463983b043b365f0f8452f2d5eaadbdea20e6d6de50c16bed25 + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/76e2c8544129d727d5a698e2a67d74e438bc35df843adb5f769316ec432c5e1bbb4128123a95b2fe8ef0aec7b26d87efe81d64326291c77ad757ff184d38448a + checksum: 10/7454b00844dbe924030dd15e2b3615b36e196500c4c47e98dabc6b37a054c5b1038ecd437e910aabf0e43bf56b973cb148d3437d50f6e2332d8309568e3e979b languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.0.0, @babel/plugin-transform-sticky-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" +"@babel/plugin-transform-strict-mode@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-strict-mode@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/3b9a99ae043ef363c81bfb097fa7a553fcf7c7d9fddc13dd2b47b3b2e45cf2741a9ca78cfe55f463983b043b365f0f8452f2d5eaadbdea20e6d6de50c16bed25 + checksum: 10/87b4a937b7c6f9cc4ed557ce1e2037898ec9c2af18f5523a5200f714cfd4101b0e278c732418b59a779e912cdf5574e35db01714d5b4e6fff2e31584501e4364 languageName: node linkType: hard @@ -2073,6 +2737,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-template-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-template-literals@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/92eb1d6e2d95bd24abbb74fa7640d02b66ff6214e0bb616d7fda298a7821ce15132a4265d576a3502a347a3c9e94b6c69ed265bb0784664592fa076785a3d16a + languageName: node + linkType: hard + "@babel/plugin-transform-typeof-symbol@npm:^7.24.8": version: 7.24.8 resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.8" @@ -2084,6 +2759,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typeof-symbol@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/3ae240358f0b0cd59f8610d6c59d395c216fd1bab407f7de58b86d592f030fb42b4d18e2456a29bee4a2ff014c4c1e3404c8ae64462b1155d1c053b2f9d73438 + languageName: node + linkType: hard + "@babel/plugin-transform-typescript@npm:^7.24.7, @babel/plugin-transform-typescript@npm:^7.5.0": version: 7.25.2 resolution: "@babel/plugin-transform-typescript@npm:7.25.2" @@ -2099,7 +2785,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.25.2": +"@babel/plugin-transform-typescript@npm:^7.25.2, @babel/plugin-transform-typescript@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-typescript@npm:7.25.9" dependencies: @@ -2125,6 +2811,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-escapes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/f138cbee539963fb3da13f684e6f33c9f7495220369ae12a682b358f1e25ac68936825562c38eae87f01ac9992b2129208b35ec18533567fc805ce5ed0ffd775 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-property-regex@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.7" @@ -2137,6 +2834,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-property-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/201f6f46c1beb399e79aa208b94c5d54412047511795ce1e790edcd189cef73752e6a099fdfc01b3ad12205f139ae344143b62f21f44bbe02338a95e8506a911 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-regex@npm:^7.0.0, @babel/plugin-transform-unicode-regex@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.7" @@ -2149,6 +2858,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/e8baae867526e179467c6ef5280d70390fa7388f8763a19a27c21302dd59b121032568be080749514b097097ceb9af716bf4b90638f1b3cf689aa837ba20150f + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-sets-regex@npm:^7.25.4": version: 7.25.4 resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.4" @@ -2161,6 +2882,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/4445ef20de687cb4dcc95169742a8d9013d680aa5eee9186d8e25875bbfa7ee5e2de26a91177ccf70b1db518e36886abcd44750d28db5d7a9539f0efa6839f4b + languageName: node + linkType: hard + "@babel/preset-env@npm:^7.23.8": version: 7.25.4 resolution: "@babel/preset-env@npm:7.25.4" @@ -2254,6 +2987,85 @@ __metadata: languageName: node linkType: hard +"@babel/preset-env@npm:^7.25.2": + version: 7.26.0 + resolution: "@babel/preset-env@npm:7.26.0" + dependencies: + "@babel/compat-data": "npm:^7.26.0" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.9" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions": "npm:^7.26.0" + "@babel/plugin-syntax-import-attributes": "npm:^7.26.0" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.25.9" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.9" + "@babel/plugin-transform-async-to-generator": "npm:^7.25.9" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.25.9" + "@babel/plugin-transform-block-scoping": "npm:^7.25.9" + "@babel/plugin-transform-class-properties": "npm:^7.25.9" + "@babel/plugin-transform-class-static-block": "npm:^7.26.0" + "@babel/plugin-transform-classes": "npm:^7.25.9" + "@babel/plugin-transform-computed-properties": "npm:^7.25.9" + "@babel/plugin-transform-destructuring": "npm:^7.25.9" + "@babel/plugin-transform-dotall-regex": "npm:^7.25.9" + "@babel/plugin-transform-duplicate-keys": "npm:^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.9" + "@babel/plugin-transform-dynamic-import": "npm:^7.25.9" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.25.9" + "@babel/plugin-transform-export-namespace-from": "npm:^7.25.9" + "@babel/plugin-transform-for-of": "npm:^7.25.9" + "@babel/plugin-transform-function-name": "npm:^7.25.9" + "@babel/plugin-transform-json-strings": "npm:^7.25.9" + "@babel/plugin-transform-literals": "npm:^7.25.9" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.9" + "@babel/plugin-transform-member-expression-literals": "npm:^7.25.9" + "@babel/plugin-transform-modules-amd": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.9" + "@babel/plugin-transform-modules-systemjs": "npm:^7.25.9" + "@babel/plugin-transform-modules-umd": "npm:^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.9" + "@babel/plugin-transform-new-target": "npm:^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.9" + "@babel/plugin-transform-numeric-separator": "npm:^7.25.9" + "@babel/plugin-transform-object-rest-spread": "npm:^7.25.9" + "@babel/plugin-transform-object-super": "npm:^7.25.9" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.25.9" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.9" + "@babel/plugin-transform-parameters": "npm:^7.25.9" + "@babel/plugin-transform-private-methods": "npm:^7.25.9" + "@babel/plugin-transform-private-property-in-object": "npm:^7.25.9" + "@babel/plugin-transform-property-literals": "npm:^7.25.9" + "@babel/plugin-transform-regenerator": "npm:^7.25.9" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.26.0" + "@babel/plugin-transform-reserved-words": "npm:^7.25.9" + "@babel/plugin-transform-shorthand-properties": "npm:^7.25.9" + "@babel/plugin-transform-spread": "npm:^7.25.9" + "@babel/plugin-transform-sticky-regex": "npm:^7.25.9" + "@babel/plugin-transform-template-literals": "npm:^7.25.9" + "@babel/plugin-transform-typeof-symbol": "npm:^7.25.9" + "@babel/plugin-transform-unicode-escapes": "npm:^7.25.9" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.25.9" + "@babel/plugin-transform-unicode-regex": "npm:^7.25.9" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.25.9" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.10" + babel-plugin-polyfill-corejs3: "npm:^0.10.6" + babel-plugin-polyfill-regenerator: "npm:^0.6.1" + core-js-compat: "npm:^3.38.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/a7a80314f845deea713985a6316361c476621c76cfe5c6c28e8b9558f01634b49bbfdd3581ef94b5d6cff5c2b8830468aa53a73f5b5c1224db2dfea5db7e676f + languageName: node + linkType: hard + "@babel/preset-flow@npm:^7.13.13": version: 7.24.7 resolution: "@babel/preset-flow@npm:7.24.7" @@ -2267,6 +3079,19 @@ __metadata: languageName: node linkType: hard +"@babel/preset-flow@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/preset-flow@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-transform-flow-strip-types": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/b1591ea63a7ace7e34bcefa6deba9e2814d7f082e3c074e2648efb68a1a49016ccefbea024156ba28bd3042a4e768e3eb8b5ecfe433978144fdaaadd36203ba2 + languageName: node + linkType: hard + "@babel/preset-modules@npm:0.1.6-no-external-plugins": version: 0.1.6-no-external-plugins resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" @@ -2296,6 +3121,22 @@ __metadata: languageName: node linkType: hard +"@babel/preset-react@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/preset-react@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-transform-react-display-name": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-development": "npm:^7.25.9" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/3c9daf47cf51568d96984d21b9f83992590c0e91f16a333f999100bb3c2c200730cde6806ed37fd2c999e0a63becefc881740b8f765b5a4aff4efc674e3e4197 + languageName: node + linkType: hard + "@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.23.0, @babel/preset-typescript@npm:^7.23.3": version: 7.24.7 resolution: "@babel/preset-typescript@npm:7.24.7" @@ -2311,6 +3152,21 @@ __metadata: languageName: node linkType: hard +"@babel/preset-typescript@npm:^7.24.7": + version: 7.26.0 + resolution: "@babel/preset-typescript@npm:7.26.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.9" + "@babel/plugin-transform-typescript": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/81a60826160163a3daae017709f42147744757b725b50c9024ef3ee5a402ee45fd2e93eaecdaaa22c81be91f7940916249cfb7711366431cfcacc69c95878c03 + languageName: node + linkType: hard + "@babel/register@npm:^7.13.16": version: 7.24.6 resolution: "@babel/register@npm:7.24.6" @@ -2478,6 +3334,15 @@ __metadata: languageName: node linkType: hard +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10/b6e38a1712fab242c86a241c229cf562195aad985d0564bd352ac404be583029e89e93028ffd2c251d2c407ecac5fb0cbdca94a2d5c10f29ac806ede0508b3ff + languageName: node + linkType: hard + "@egjs/hammerjs@npm:^2.0.17": version: 2.0.17 resolution: "@egjs/hammerjs@npm:2.0.17" @@ -2713,15 +3578,15 @@ __metadata: languageName: node linkType: hard -"@expo/cli@npm:0.21.1": - version: 0.21.1 - resolution: "@expo/cli@npm:0.21.1" +"@expo/cli@npm:0.21.8": + version: 0.21.8 + resolution: "@expo/cli@npm:0.21.8" dependencies: "@0no-co/graphql.web": "npm:^1.0.8" "@babel/runtime": "npm:^7.20.0" "@expo/code-signing-certificates": "npm:^0.0.5" - "@expo/config": "npm:~10.0.2" - "@expo/config-plugins": "npm:~9.0.3" + "@expo/config": "npm:~10.0.4" + "@expo/config-plugins": "npm:~9.0.10" "@expo/devcert": "npm:^1.1.2" "@expo/env": "npm:~0.4.0" "@expo/image-utils": "npm:^0.6.0" @@ -2730,11 +3595,11 @@ __metadata: "@expo/osascript": "npm:^2.0.31" "@expo/package-manager": "npm:^1.5.0" "@expo/plist": "npm:^0.2.0" - "@expo/prebuild-config": "npm:^8.0.9" + "@expo/prebuild-config": "npm:^8.0.17" "@expo/rudder-sdk-node": "npm:^1.1.1" "@expo/spawn-async": "npm:^1.7.2" "@expo/xcpretty": "npm:^4.3.0" - "@react-native/dev-middleware": "npm:0.76.1" + "@react-native/dev-middleware": "npm:0.76.3" "@urql/core": "npm:^5.0.6" "@urql/exchange-retry": "npm:^1.3.0" accepts: "npm:^1.3.8" @@ -2775,7 +3640,7 @@ __metadata: resolve-from: "npm:^5.0.0" resolve.exports: "npm:^2.0.2" semver: "npm:^7.6.0" - send: "npm:^0.18.0" + send: "npm:^0.19.0" slugify: "npm:^1.3.4" source-map-support: "npm:~0.5.21" stacktrace-parser: "npm:^0.1.10" @@ -2790,7 +3655,7 @@ __metadata: ws: "npm:^8.12.1" bin: expo-internal: build/bin/cli - checksum: 10/25dce7156c487697763c9ab939163bee28fe0cab461f915f8bb6b6284393a1d58b1c21254981d9a54ca71ae95f1e8377488e84e44225acb9dc64dd519d4ac2a5 + checksum: 10/0060fda1a040769db71a6b0fd9a13bd90fdf1000302ca7a0e103a1acf7c9653d1ece1a984ac0db12f843c4cf4b525c9b65e7d7f23a5c91ee18f18a6dcd1a74dd languageName: node linkType: hard @@ -2804,7 +3669,7 @@ __metadata: languageName: node linkType: hard -"@expo/config-plugins@npm:9.0.9, @expo/config-plugins@npm:^9.0.9, @expo/config-plugins@npm:~9.0.0, @expo/config-plugins@npm:~9.0.3": +"@expo/config-plugins@npm:^9.0.9, @expo/config-plugins@npm:~9.0.0": version: 9.0.9 resolution: "@expo/config-plugins@npm:9.0.9" dependencies: @@ -2826,6 +3691,28 @@ __metadata: languageName: node linkType: hard +"@expo/config-plugins@npm:~9.0.10": + version: 9.0.10 + resolution: "@expo/config-plugins@npm:9.0.10" + dependencies: + "@expo/config-types": "npm:^52.0.0" + "@expo/json-file": "npm:~9.0.0" + "@expo/plist": "npm:^0.2.0" + "@expo/sdk-runtime-versions": "npm:^1.0.0" + chalk: "npm:^4.1.2" + debug: "npm:^4.3.5" + getenv: "npm:^1.0.0" + glob: "npm:^10.4.2" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.5.4" + slash: "npm:^3.0.0" + slugify: "npm:^1.6.6" + xcode: "npm:^3.0.1" + xml2js: "npm:0.6.0" + checksum: 10/c2212c4362183996199e6bb9c57e43759fed293e228d780250e95bf75f2c6ccb70d263aa1c4a54b479be33786ea3a338ecd3e708d5132a9fe5016ed0327d3654 + languageName: node + linkType: hard + "@expo/config-types@npm:^52.0.0": version: 52.0.1 resolution: "@expo/config-types@npm:52.0.1" @@ -2833,7 +3720,7 @@ __metadata: languageName: node linkType: hard -"@expo/config@npm:10.0.3, @expo/config@npm:~10.0.0, @expo/config@npm:~10.0.2": +"@expo/config@npm:~10.0.0": version: 10.0.3 resolution: "@expo/config@npm:10.0.3" dependencies: @@ -2854,6 +3741,27 @@ __metadata: languageName: node linkType: hard +"@expo/config@npm:~10.0.4, @expo/config@npm:~10.0.5": + version: 10.0.5 + resolution: "@expo/config@npm:10.0.5" + dependencies: + "@babel/code-frame": "npm:~7.10.4" + "@expo/config-plugins": "npm:~9.0.10" + "@expo/config-types": "npm:^52.0.0" + "@expo/json-file": "npm:^9.0.0" + deepmerge: "npm:^4.3.1" + getenv: "npm:^1.0.0" + glob: "npm:^10.4.2" + require-from-string: "npm:^2.0.2" + resolve-from: "npm:^5.0.0" + resolve-workspace-root: "npm:^2.0.0" + semver: "npm:^7.6.0" + slugify: "npm:^1.3.4" + sucrase: "npm:3.35.0" + checksum: 10/d74b73b367a549c5b7fa4920680f2f2635f261f1e5a63533684ceeb08599ce91ded487eb187d5994bb1e95e0af1842ea9dd490899a7197501bc978227ea13b0b + languageName: node + linkType: hard + "@expo/devcert@npm:^1.1.2": version: 1.1.4 resolution: "@expo/devcert@npm:1.1.4" @@ -2947,7 +3855,33 @@ __metadata: languageName: node linkType: hard -"@expo/metro-config@npm:0.19.2, @expo/metro-config@npm:~0.19.0": +"@expo/metro-config@npm:0.19.4": + version: 0.19.4 + resolution: "@expo/metro-config@npm:0.19.4" + dependencies: + "@babel/core": "npm:^7.20.0" + "@babel/generator": "npm:^7.20.5" + "@babel/parser": "npm:^7.20.0" + "@babel/types": "npm:^7.20.0" + "@expo/config": "npm:~10.0.4" + "@expo/env": "npm:~0.4.0" + "@expo/json-file": "npm:~9.0.0" + "@expo/spawn-async": "npm:^1.7.2" + chalk: "npm:^4.1.0" + debug: "npm:^4.3.2" + fs-extra: "npm:^9.1.0" + getenv: "npm:^1.0.0" + glob: "npm:^10.4.2" + jsc-safe-url: "npm:^0.2.4" + lightningcss: "npm:~1.27.0" + minimatch: "npm:^3.0.4" + postcss: "npm:~8.4.32" + resolve-from: "npm:^5.0.0" + checksum: 10/6320148c414669ccaf269648596f5d43fb0e3e9e64b93da5f38213748279c8ae6a835ea907fff2d940d91594dba22396f5c32b20db592504f8deb4dc375d0e4d + languageName: node + linkType: hard + +"@expo/metro-config@npm:~0.19.0": version: 0.19.2 resolution: "@expo/metro-config@npm:0.19.2" dependencies: @@ -3025,22 +3959,22 @@ __metadata: languageName: node linkType: hard -"@expo/prebuild-config@npm:^8.0.9": - version: 8.0.13 - resolution: "@expo/prebuild-config@npm:8.0.13" +"@expo/prebuild-config@npm:^8.0.17": + version: 8.0.20 + resolution: "@expo/prebuild-config@npm:8.0.20" dependencies: - "@expo/config": "npm:~10.0.0" - "@expo/config-plugins": "npm:~9.0.0" + "@expo/config": "npm:~10.0.4" + "@expo/config-plugins": "npm:~9.0.10" "@expo/config-types": "npm:^52.0.0" "@expo/image-utils": "npm:^0.6.0" "@expo/json-file": "npm:^9.0.0" - "@react-native/normalize-colors": "npm:0.76.1" + "@react-native/normalize-colors": "npm:0.76.3" debug: "npm:^4.3.1" fs-extra: "npm:^9.0.0" resolve-from: "npm:^5.0.0" semver: "npm:^7.6.0" xml2js: "npm:0.6.0" - checksum: 10/e5fdc6db1f829bdb7cded65ec91d07d540d3da9614dabda7274a42a3bf9cd53a7a58137957ca55166f8cff48a05531bb73f74e73b49fbe61e59b48281fad37e9 + checksum: 10/4b0c3842c09be147607084e26361a0046e0638f3c8beb67f49d35accaeb6b63878ea408ef0ad29eb5701dd9c902eac254eb2b511bd09044d096b99a514a14acc languageName: node linkType: hard @@ -3450,7 +4384,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.1.0": +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d @@ -3481,6 +4415,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10/83deafb8e7a5ca98993c2c6eeaa93c270f6f647a4c0dc00deb38c9cf9b2d3b7bf15e8839540155247ef034a052c0ec4466f980bf0c9e2ab63b97d16c0cedd3ff + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" @@ -3551,12 +4495,12 @@ __metadata: react-native-screens: "npm:^3.34.0" typescript: "npm:^5.5.3" peerDependencies: - "@react-native-masked-view/masked-view": ^0.3.1 - react: 18.2.0 - react-native: ">=0.74.0" - react-native-gesture-handler: ^2.20.0 - react-native-safe-area-context: ^4.11.1 - react-native-screens: ^3.34.0 + "@react-native-masked-view/masked-view": "*" + react: "*" + react-native: "*" + react-native-gesture-handler: "*" + react-native-safe-area-context: "*" + react-native-screens: "*" languageName: unknown linkType: soft @@ -3639,6 +4583,7 @@ __metadata: react: "npm:18.2.0" react-docgen: "npm:^7.1.0" react-native: "npm:^0.74.6" + react-native-builder-bob: "npm:^0.32.0" react-test-renderer: "npm:18.2.0" tsx: "npm:^4.19.2" typescript: "npm:^5.3.3" @@ -4078,6 +5023,16 @@ __metadata: languageName: node linkType: hard +"@react-native-masked-view/masked-view@npm:0.3.2": + version: 0.3.2 + resolution: "@react-native-masked-view/masked-view@npm:0.3.2" + peerDependencies: + react: ">=16" + react-native: ">=0.57" + checksum: 10/04ffbc01083aa563ca1e2d7ef6759e7b326b8129f5bb1aa5f3142348adab06d5e321a400cf70a5434324dfa906add383f8214640697c48c9e5311b30bfea03d9 + languageName: node + linkType: hard + "@react-native-masked-view/masked-view@npm:^0.3.1": version: 0.3.1 resolution: "@react-native-masked-view/masked-view@npm:0.3.1" @@ -4102,10 +5057,10 @@ __metadata: languageName: node linkType: hard -"@react-native/assets-registry@npm:0.76.1": - version: 0.76.1 - resolution: "@react-native/assets-registry@npm:0.76.1" - checksum: 10/da78a53ee18889ba3c229dcc0f99496e99debe7e0143cbcb413277355bdbc8fbfa3f7459e9b85de2730bd902a5190cffa90fb6a92602290401543d915264dd06 +"@react-native/assets-registry@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/assets-registry@npm:0.76.3" + checksum: 10/e56bf32d5900933474ff77b5441a285d6494fa8762eefcb3d3d1ffac85bade6464437142eb156f9c7214bff1a4107ff2054fe96d6e33f74b9b26001868706678 languageName: node linkType: hard @@ -4136,6 +5091,15 @@ __metadata: languageName: node linkType: hard +"@react-native/babel-plugin-codegen@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/babel-plugin-codegen@npm:0.76.3" + dependencies: + "@react-native/codegen": "npm:0.76.3" + checksum: 10/7edff369085919470c60da81b86c589d67dd94fdceda44dcf28cd18d21be0bb77c66428796205b23c9c6e440ea15effd12596197235cef81a4e50252804dc1ec + languageName: node + linkType: hard + "@react-native/babel-preset@npm:0.74.88, @react-native/babel-preset@npm:^0.74.88": version: 0.74.88 resolution: "@react-native/babel-preset@npm:0.74.88" @@ -4299,6 +5263,61 @@ __metadata: languageName: node linkType: hard +"@react-native/babel-preset@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/babel-preset@npm:0.76.3" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + "@babel/plugin-syntax-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-transform-arrow-functions": "npm:^7.24.7" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.4" + "@babel/plugin-transform-async-to-generator": "npm:^7.24.7" + "@babel/plugin-transform-block-scoping": "npm:^7.25.0" + "@babel/plugin-transform-class-properties": "npm:^7.25.4" + "@babel/plugin-transform-classes": "npm:^7.25.4" + "@babel/plugin-transform-computed-properties": "npm:^7.24.7" + "@babel/plugin-transform-destructuring": "npm:^7.24.8" + "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2" + "@babel/plugin-transform-for-of": "npm:^7.24.7" + "@babel/plugin-transform-function-name": "npm:^7.25.1" + "@babel/plugin-transform-literals": "npm:^7.25.2" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7" + "@babel/plugin-transform-numeric-separator": "npm:^7.24.7" + "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.24.8" + "@babel/plugin-transform-parameters": "npm:^7.24.7" + "@babel/plugin-transform-private-methods": "npm:^7.24.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" + "@babel/plugin-transform-react-display-name": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx": "npm:^7.25.2" + "@babel/plugin-transform-react-jsx-self": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx-source": "npm:^7.24.7" + "@babel/plugin-transform-regenerator": "npm:^7.24.7" + "@babel/plugin-transform-runtime": "npm:^7.24.7" + "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7" + "@babel/plugin-transform-spread": "npm:^7.24.7" + "@babel/plugin-transform-sticky-regex": "npm:^7.24.7" + "@babel/plugin-transform-typescript": "npm:^7.25.2" + "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" + "@babel/template": "npm:^7.25.0" + "@react-native/babel-plugin-codegen": "npm:0.76.3" + babel-plugin-syntax-hermes-parser: "npm:^0.25.1" + babel-plugin-transform-flow-enums: "npm:^0.0.2" + react-refresh: "npm:^0.14.0" + peerDependencies: + "@babel/core": "*" + checksum: 10/adbe03b9915430c5174769589a96999fa43f1db5ee6229b0e78780787f262d861d842e9376ece2d4215d299dbf81df814e3c23c548b83bf1fc0afd05296b2e11 + languageName: node + linkType: hard + "@react-native/codegen@npm:0.74.88": version: 0.74.88 resolution: "@react-native/codegen@npm:0.74.88" @@ -4349,7 +5368,25 @@ __metadata: yargs: "npm:^17.6.2" peerDependencies: "@babel/preset-env": ^7.1.6 - checksum: 10/ae0032f6ef556dee0ec24190ef43a46c680ac8e6a5a8130ccc2b1e5348b2764e4f369e867299266580071bcd20d999fbdf44203ff68dfe5ef518dbd39f25809c + checksum: 10/ae0032f6ef556dee0ec24190ef43a46c680ac8e6a5a8130ccc2b1e5348b2764e4f369e867299266580071bcd20d999fbdf44203ff68dfe5ef518dbd39f25809c + languageName: node + linkType: hard + +"@react-native/codegen@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/codegen@npm:0.76.3" + dependencies: + "@babel/parser": "npm:^7.25.3" + glob: "npm:^7.1.1" + hermes-parser: "npm:0.23.1" + invariant: "npm:^2.2.4" + jscodeshift: "npm:^0.14.0" + mkdirp: "npm:^0.5.1" + nullthrows: "npm:^1.1.1" + yargs: "npm:^17.6.2" + peerDependencies: + "@babel/preset-env": ^7.1.6 + checksum: 10/2bc81548059095acff0d775a4f6b101b3b559992aaca8dd979faf83177a2d2d4f8653efd970a3b6563a339649d5d0e3f856ad5980c30f99861c0f948e6b34942 languageName: node linkType: hard @@ -4392,12 +5429,12 @@ __metadata: languageName: node linkType: hard -"@react-native/community-cli-plugin@npm:0.76.1": - version: 0.76.1 - resolution: "@react-native/community-cli-plugin@npm:0.76.1" +"@react-native/community-cli-plugin@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/community-cli-plugin@npm:0.76.3" dependencies: - "@react-native/dev-middleware": "npm:0.76.1" - "@react-native/metro-babel-transformer": "npm:0.76.1" + "@react-native/dev-middleware": "npm:0.76.3" + "@react-native/metro-babel-transformer": "npm:0.76.3" chalk: "npm:^4.0.0" execa: "npm:^5.1.1" invariant: "npm:^2.2.4" @@ -4406,12 +5443,13 @@ __metadata: metro-core: "npm:^0.81.0" node-fetch: "npm:^2.2.0" readline: "npm:^1.3.0" + semver: "npm:^7.1.3" peerDependencies: "@react-native-community/cli-server-api": "*" peerDependenciesMeta: "@react-native-community/cli-server-api": optional: true - checksum: 10/6263c971c377fec9e6e675ee8710bd6dc92a38e90071325f96f0f5422d20eacdc7b18f436c27665769bedee5d315e08365b01bacef3574a3ab66ec07ad098945 + checksum: 10/c415f26bdebb9c32230423879ca206a34343a644c307e4efc07d09a677b1394ef945b1b65d615c84913227cd03bf205315728c8cd9188e5cb51c5cb3b12b589d languageName: node linkType: hard @@ -4429,10 +5467,10 @@ __metadata: languageName: node linkType: hard -"@react-native/debugger-frontend@npm:0.76.1": - version: 0.76.1 - resolution: "@react-native/debugger-frontend@npm:0.76.1" - checksum: 10/02811e0840a6afccb0817e7b9f44f726087ef64a1c72b75454ea40a8e3b4f83f38f122196f8d8e31afeefa5f56b4a92fd688b2b7e2a848fdfa64bb654007c32c +"@react-native/debugger-frontend@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/debugger-frontend@npm:0.76.3" + checksum: 10/6a652a3c18fad1850ec369588e60c4503306ff307404028019d34b31789e9ccb63343d4e8c6b6263dd994f609579380e827e1f42daaacd770d3be636de1ef836 languageName: node linkType: hard @@ -4477,12 +5515,12 @@ __metadata: languageName: node linkType: hard -"@react-native/dev-middleware@npm:0.76.1": - version: 0.76.1 - resolution: "@react-native/dev-middleware@npm:0.76.1" +"@react-native/dev-middleware@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/dev-middleware@npm:0.76.3" dependencies: "@isaacs/ttlcache": "npm:^1.4.1" - "@react-native/debugger-frontend": "npm:0.76.1" + "@react-native/debugger-frontend": "npm:0.76.3" chrome-launcher: "npm:^0.15.2" chromium-edge-launcher: "npm:^0.2.0" connect: "npm:^3.6.5" @@ -4492,7 +5530,7 @@ __metadata: selfsigned: "npm:^2.4.1" serve-static: "npm:^1.13.1" ws: "npm:^6.2.3" - checksum: 10/83d767ce00058b3f249fa9c6b8ee0b3886e24cbe745d27eb4ffec90987b2e2cc120ae9ec4fadf40395d3ed63a8a63c1d3dc7dd0e7ed84fa7d1a2a1908a49e44a + checksum: 10/d104275f7276837b92cc230dfdeeb8406f834518516bac99c82e81e54487540407627b670705f9b7f8e8a3a506bf7ee86043b4c4b37d6ce970d58309d8f5d251 languageName: node linkType: hard @@ -4510,10 +5548,10 @@ __metadata: languageName: node linkType: hard -"@react-native/gradle-plugin@npm:0.76.1": - version: 0.76.1 - resolution: "@react-native/gradle-plugin@npm:0.76.1" - checksum: 10/19486fb1dfb3e0dd41938b8a88a673de845a6cc7671df3b1d7cc0e746b916eb0ed807015f5e62b506389924a0e3490ae08082a91f57d114e8368293461118e72 +"@react-native/gradle-plugin@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/gradle-plugin@npm:0.76.3" + checksum: 10/331263f289418b5416f298328d8ef7b1cf7cc4fcb13707d941f666414c4628d59b2fba988ec4dc38b3a9dbcd2e937053e2259aec7dbdcac890017914ea24516d languageName: node linkType: hard @@ -4531,10 +5569,10 @@ __metadata: languageName: node linkType: hard -"@react-native/js-polyfills@npm:0.76.1": - version: 0.76.1 - resolution: "@react-native/js-polyfills@npm:0.76.1" - checksum: 10/64e565de7feaee213a2e0db35d101fd0c0ec8fa4e8336e4097372604f3a3c79d9b7218a5dd79b608033012f4675bbc65ff7089738f9c9802583af89e3834a13d +"@react-native/js-polyfills@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/js-polyfills@npm:0.76.3" + checksum: 10/6bf86f6003a26fcee796a5e6642eea0c8b8f49016d5fb8c39a5c13397b7c3c26cc0e3c96c9dc40ac8983148a252904ec6fa2201fcbe6c47819bde891d2db0a77 languageName: node linkType: hard @@ -4566,17 +5604,17 @@ __metadata: languageName: node linkType: hard -"@react-native/metro-babel-transformer@npm:0.76.1": - version: 0.76.1 - resolution: "@react-native/metro-babel-transformer@npm:0.76.1" +"@react-native/metro-babel-transformer@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/metro-babel-transformer@npm:0.76.3" dependencies: "@babel/core": "npm:^7.25.2" - "@react-native/babel-preset": "npm:0.76.1" + "@react-native/babel-preset": "npm:0.76.3" hermes-parser: "npm:0.23.1" nullthrows: "npm:^1.1.1" peerDependencies: "@babel/core": "*" - checksum: 10/a88ca81edea5cb61720960241975cabf54536e482746a4ad37fadc52606990590b96f3bb55e4acd76f3ed3704436628c6aae56112f7ec525c40f240ffa6955ff + checksum: 10/00cc1092042a530665ceadae6315441de8efb41448f2011fdfa7f586c8787346ec90c68f740980b56b1271cea2436497d82b78f5f1551b8df83eab032d05b251 languageName: node linkType: hard @@ -4618,10 +5656,10 @@ __metadata: languageName: node linkType: hard -"@react-native/normalize-colors@npm:0.76.1": - version: 0.76.1 - resolution: "@react-native/normalize-colors@npm:0.76.1" - checksum: 10/18fcab73b04e1b38794f7bd9d1172bb7f1b0d336df7d8ce669ec6b40eabbc254a58954330fdcae8fb3c7eef384368988fb3d7864a3668f12499c1f1c84a05989 +"@react-native/normalize-colors@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/normalize-colors@npm:0.76.3" + checksum: 10/5675856bba8184f2049249cc217dc417857408fba6c4043d8ad2c941a33eba00af2574fa9e884c1f8073c99bd945308a310bbf89f63e67f17f4e6c11fdebf4fa languageName: node linkType: hard @@ -4659,9 +5697,9 @@ __metadata: languageName: node linkType: hard -"@react-native/virtualized-lists@npm:0.76.1": - version: 0.76.1 - resolution: "@react-native/virtualized-lists@npm:0.76.1" +"@react-native/virtualized-lists@npm:0.76.3": + version: 0.76.3 + resolution: "@react-native/virtualized-lists@npm:0.76.3" dependencies: invariant: "npm:^2.2.4" nullthrows: "npm:^1.1.1" @@ -4672,7 +5710,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10/100920545f6c91778c0cc64c377f126f85145f66410c91de2f55c1545e042addeab37c022c7a382a28987056740bf3f6d33194cbc9a2c88c65f5e0eab8474c1a + checksum: 10/e3a43d669ff00379f93a03c8de4fddc88c0eafd30b1da9927c9613208e8b04bb1a41d1c955c29a2a7a0390ec318bc14aca6364541c9e29e0f803cedc8c0d2542 languageName: node linkType: hard @@ -4879,6 +5917,34 @@ __metadata: languageName: node linkType: hard +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node10@npm:1.0.11" + checksum: 10/51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10/5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10/19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10/202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff + languageName: node + linkType: hard + "@tsconfig/node18@npm:^18.2.2": version: 18.2.4 resolution: "@tsconfig/node18@npm:18.2.4" @@ -5757,7 +6823,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.0.2": +"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": version: 8.3.4 resolution: "acorn-walk@npm:8.3.4" dependencies: @@ -5784,6 +6850,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.4.1": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" + bin: + acorn: bin/acorn + checksum: 10/6df29c35556782ca9e632db461a7f97947772c6c1d5438a81f0c873a3da3a792487e83e404d1c6c25f70513e91aa18745f6eafb1fcc3a43ecd1920b21dd173d2 + languageName: node + linkType: hard + "agent-base@npm:6": version: 6.0.2 resolution: "agent-base@npm:6.0.2" @@ -5966,6 +7041,13 @@ __metadata: languageName: node linkType: hard +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 10/969b491082f20cad166649fa4d2073ea9e974a4e5ac36247ca23d2e5a8b3cb12d60e9ff70a8acfe26d76566c71fd351ee5e6a9a6595157eb36f92b1fd64e1599 + languageName: node + linkType: hard + "arg@npm:^5.0.2": version: 5.0.2 resolution: "arg@npm:5.0.2" @@ -6221,6 +7303,19 @@ __metadata: languageName: node linkType: hard +"babel-plugin-module-resolver@npm:^5.0.2": + version: 5.0.2 + resolution: "babel-plugin-module-resolver@npm:5.0.2" + dependencies: + find-babel-config: "npm:^2.1.1" + glob: "npm:^9.3.3" + pkg-up: "npm:^3.1.0" + reselect: "npm:^4.1.7" + resolve: "npm:^1.22.8" + checksum: 10/8084fa8a4cd96aaa861e5fe765a6cd03accef64d21d4108e314029bcd5f3a7fd96faf0c877c575a6a24d4fe0d87458d49748ca56faa4c77b2b812e4ed6023768 + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs2@npm:^0.4.10": version: 0.4.11 resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" @@ -6273,6 +7368,15 @@ __metadata: languageName: node linkType: hard +"babel-plugin-syntax-hermes-parser@npm:^0.25.1": + version: 0.25.1 + resolution: "babel-plugin-syntax-hermes-parser@npm:0.25.1" + dependencies: + hermes-parser: "npm:0.25.1" + checksum: 10/dc80fafde1aed8e60cf86ecd2e9920e7f35ffe02b33bd4e772daaa786167bcf508aac3fc1aea425ff4c7a0be94d82528f3fe8619b7f41dac853264272d640c04 + languageName: node + linkType: hard + "babel-plugin-transform-flow-enums@npm:^0.0.2": version: 0.0.2 resolution: "babel-plugin-transform-flow-enums@npm:0.0.2" @@ -6332,6 +7436,31 @@ __metadata: languageName: node linkType: hard +"babel-preset-expo@npm:~12.0.2": + version: 12.0.2 + resolution: "babel-preset-expo@npm:12.0.2" + dependencies: + "@babel/plugin-proposal-decorators": "npm:^7.12.9" + "@babel/plugin-transform-export-namespace-from": "npm:^7.22.11" + "@babel/plugin-transform-object-rest-spread": "npm:^7.12.13" + "@babel/plugin-transform-parameters": "npm:^7.22.15" + "@babel/preset-react": "npm:^7.22.15" + "@babel/preset-typescript": "npm:^7.23.0" + "@react-native/babel-preset": "npm:0.76.3" + babel-plugin-react-native-web: "npm:~0.19.13" + react-refresh: "npm:^0.14.2" + peerDependencies: + babel-plugin-react-compiler: ^19.0.0-beta-9ee70a1-20241017 + react-compiler-runtime: ^19.0.0-beta-8a03594-20241020 + peerDependenciesMeta: + babel-plugin-react-compiler: + optional: true + react-compiler-runtime: + optional: true + checksum: 10/e3f56940e1e11193ba2c8c8c25db0973918f52b464f674de8f352ab82d38957f5abdfdf9a22af0de295f1f3bae50c4e39ca77282d9ea6b21e2e62eefbf504112 + languageName: node + linkType: hard + "babel-preset-jest@npm:^29.6.3": version: 29.6.3 resolution: "babel-preset-jest@npm:29.6.3" @@ -6468,31 +7597,31 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.23.1, browserslist@npm:^4.23.3": - version: 4.23.3 - resolution: "browserslist@npm:4.23.3" +"browserslist@npm:^4.20.4, browserslist@npm:^4.24.0, browserslist@npm:^4.24.2": + version: 4.24.2 + resolution: "browserslist@npm:4.24.2" dependencies: - caniuse-lite: "npm:^1.0.30001646" - electron-to-chromium: "npm:^1.5.4" + caniuse-lite: "npm:^1.0.30001669" + electron-to-chromium: "npm:^1.5.41" node-releases: "npm:^2.0.18" - update-browserslist-db: "npm:^1.1.0" + update-browserslist-db: "npm:^1.1.1" bin: browserslist: cli.js - checksum: 10/e266d18c6c6c5becf9a1a7aa264477677b9796387972e8fce34854bb33dc1666194dc28389780e5dc6566e68a95e87ece2ce222e1c4ca93c2b75b61dfebd5f1c + checksum: 10/f8a9d78bbabe466c57ffd5c50a9e5582a5df9aa68f43078ca62a9f6d0d6c70ba72eca72d0a574dbf177cf55cdca85a46f7eb474917a47ae5398c66f8b76f7d1c languageName: node linkType: hard -"browserslist@npm:^4.24.0": - version: 4.24.2 - resolution: "browserslist@npm:4.24.2" +"browserslist@npm:^4.23.1, browserslist@npm:^4.23.3": + version: 4.23.3 + resolution: "browserslist@npm:4.23.3" dependencies: - caniuse-lite: "npm:^1.0.30001669" - electron-to-chromium: "npm:^1.5.41" + caniuse-lite: "npm:^1.0.30001646" + electron-to-chromium: "npm:^1.5.4" node-releases: "npm:^2.0.18" - update-browserslist-db: "npm:^1.1.1" + update-browserslist-db: "npm:^1.1.0" bin: browserslist: cli.js - checksum: 10/f8a9d78bbabe466c57ffd5c50a9e5582a5df9aa68f43078ca62a9f6d0d6c70ba72eca72d0a574dbf177cf55cdca85a46f7eb474917a47ae5398c66f8b76f7d1c + checksum: 10/e266d18c6c6c5becf9a1a7aa264477677b9796387972e8fce34854bb33dc1666194dc28389780e5dc6566e68a95e87ece2ce222e1c4ca93c2b75b61dfebd5f1c languageName: node linkType: hard @@ -7225,6 +8354,15 @@ __metadata: languageName: node linkType: hard +"core-js-compat@npm:^3.38.1": + version: 3.39.0 + resolution: "core-js-compat@npm:3.39.0" + dependencies: + browserslist: "npm:^4.24.2" + checksum: 10/82d5fcb54087f1fc174283c2d30b62908edc828537574f95bb49a5b7f235bcc88ba43f37dbe470c47e17fd9bc01cbc1db905062fd96ba65ff1a03c235f288aca + languageName: node + linkType: hard + "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" @@ -7278,6 +8416,13 @@ __metadata: languageName: node linkType: hard +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 10/a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff + languageName: node + linkType: hard + "cross-fetch@npm:^3.1.5": version: 3.1.8 resolution: "cross-fetch@npm:3.1.8" @@ -7497,6 +8642,13 @@ __metadata: languageName: node linkType: hard +"dedent@npm:^0.7.0": + version: 0.7.0 + resolution: "dedent@npm:0.7.0" + checksum: 10/87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 + languageName: node + linkType: hard + "dedent@npm:^1.0.0": version: 1.5.3 resolution: "dedent@npm:1.5.3" @@ -7578,7 +8730,7 @@ __metadata: languageName: node linkType: hard -"del@npm:^6.0.0": +"del@npm:^6.0.0, del@npm:^6.1.1": version: 6.1.1 resolution: "del@npm:6.1.1" dependencies: @@ -7710,6 +8862,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 10/ec09ec2101934ca5966355a229d77afcad5911c92e2a77413efda5455636c4cf2ce84057e2d7715227a2eeeda04255b849bd3ae3a4dd22eb22e86e76456df069 + languageName: node + linkType: hard + "diff@npm:^5.0.0, diff@npm:^5.1.0": version: 5.2.0 resolution: "diff@npm:5.2.0" @@ -8784,6 +9943,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:^4.0.3": + version: 4.1.0 + resolution: "execa@npm:4.1.0" + dependencies: + cross-spawn: "npm:^7.0.0" + get-stream: "npm:^5.0.0" + human-signals: "npm:^1.1.1" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.0" + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + strip-final-newline: "npm:^2.0.0" + checksum: 10/ed58e41fe424797f3d837c8fb622548eeb72fa03324f2676af95f806568904eb55f196127a097f87d4517cab524c169ece13e6c9e201867de57b089584864b8f + languageName: node + linkType: hard + "execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -8835,15 +10011,16 @@ __metadata: "@babel/core": "npm:^7.25.8" "@maplibre-react-native/examples": "workspace:*" "@maplibre/maplibre-react-native": "workspace:*" - "@react-native-masked-view/masked-view": "npm:^0.3.1" - expo: "npm:^52.0.0" - expo-dev-client: "npm:~5.0.1" + "@react-native-masked-view/masked-view": "npm:0.3.2" + expo: "npm:~52.0.11" + expo-dev-client: "npm:~5.0.4" expo-status-bar: "npm:~2.0.0" react: "npm:18.3.1" - react-native: "npm:0.76.1" + react-native: "npm:0.76.3" react-native-gesture-handler: "npm:~2.20.2" react-native-safe-area-context: "npm:4.12.0" - react-native-screens: "npm:~4.0.0" + react-native-screens: "npm:~4.1.0" + ts-node: "npm:^10.9.2" languageName: unknown linkType: soft @@ -8863,7 +10040,7 @@ __metadata: languageName: node linkType: hard -"expo-constants@npm:~17.0.0, expo-constants@npm:~17.0.2": +"expo-constants@npm:~17.0.0": version: 17.0.2 resolution: "expo-constants@npm:17.0.2" dependencies: @@ -8876,62 +10053,77 @@ __metadata: languageName: node linkType: hard -"expo-dev-client@npm:~5.0.1": - version: 5.0.1 - resolution: "expo-dev-client@npm:5.0.1" +"expo-constants@npm:~17.0.3": + version: 17.0.3 + resolution: "expo-constants@npm:17.0.3" + dependencies: + "@expo/config": "npm:~10.0.4" + "@expo/env": "npm:~0.4.0" + peerDependencies: + expo: "*" + react-native: "*" + checksum: 10/25487b469010c57ffbb1bf5e052d5e546db0bc7af9a68acd0e359a2f3978c99fc28b49527514da862dfcaf6b7915674b16d70a3c63d31a64cbdb0d27c6294a69 + languageName: node + linkType: hard + +"expo-dev-client@npm:~5.0.4": + version: 5.0.4 + resolution: "expo-dev-client@npm:5.0.4" dependencies: - expo-dev-launcher: "npm:5.0.13" - expo-dev-menu: "npm:6.0.8" - expo-dev-menu-interface: "npm:1.9.1" + expo-dev-launcher: "npm:5.0.16" + expo-dev-menu: "npm:6.0.11" + expo-dev-menu-interface: "npm:1.9.2" expo-manifests: "npm:~0.15.0" expo-updates-interface: "npm:~1.0.0" peerDependencies: expo: "*" - checksum: 10/92f3eceb7ca44f99c84390a89077dc29dbdebb12b7593d149dcf653fe7ca06ee4802a6877356ac95defa941b50fa36b727630c2667d03dd61c6cfc5b04892abc + checksum: 10/0fe774660ebd5fbd68ab3e42b4ccfb6071bd1b8740ab429ea59e0188655a513d1b091323035317368ebb3e8b874ab2d2dd60345a714949af8246b7347bf29766 languageName: node linkType: hard -"expo-dev-launcher@npm:5.0.13": - version: 5.0.13 - resolution: "expo-dev-launcher@npm:5.0.13" +"expo-dev-launcher@npm:5.0.16": + version: 5.0.16 + resolution: "expo-dev-launcher@npm:5.0.16" dependencies: ajv: "npm:8.11.0" - expo-dev-menu: "npm:6.0.8" + expo-dev-menu: "npm:6.0.11" expo-manifests: "npm:~0.15.0" resolve-from: "npm:^5.0.0" peerDependencies: expo: "*" - checksum: 10/649760e282e335e42d424318fe21f5d118c30c2dcfac773f194efb805458a85be7a46fbb43ff9da2cc2e451d4c63ed37d99de1ad9abf49d3bc47aacaf8d66fb9 + checksum: 10/da4a677bfce0709c1c9d6c379b7043faebdefe7168eb6c5ee5e5c3ff333f6d9554797361e01291e4e4002178a386f1e96f54bff52dd077e1ab52df999789de60 languageName: node linkType: hard -"expo-dev-menu-interface@npm:1.9.1": - version: 1.9.1 - resolution: "expo-dev-menu-interface@npm:1.9.1" +"expo-dev-menu-interface@npm:1.9.2": + version: 1.9.2 + resolution: "expo-dev-menu-interface@npm:1.9.2" peerDependencies: expo: "*" - checksum: 10/f94e04b2d824febce329f27d9367379aa9734cf1561aaea3526dc4500dfb4e873ec4531fd08750438d805c81fbce0302916fc9f853918681fa7754c3eafbec60 + checksum: 10/a65c95aadf959b0be9a83ba302d9ac3f4bffec6ad947cbeba2351fd1958a6d95470357ccfc659ba519364dd9564e6a8c32f66c3e9bb0239a717326680a35e3e5 languageName: node linkType: hard -"expo-dev-menu@npm:6.0.8": - version: 6.0.8 - resolution: "expo-dev-menu@npm:6.0.8" +"expo-dev-menu@npm:6.0.11": + version: 6.0.11 + resolution: "expo-dev-menu@npm:6.0.11" dependencies: - expo-dev-menu-interface: "npm:1.9.1" + expo-dev-menu-interface: "npm:1.9.2" peerDependencies: expo: "*" - checksum: 10/f01db4001bec9d85cd25ad73398e1cf84127529eb69be65b6bffba11b99a31a9ddb6b17ed78c13f1efa0dcc77231cfbb4fb9ff9bf02a1d4d0065266efa8a27aa + checksum: 10/9d92ef2b55c35e443f76495da826f946542a1a58e65ea2ebc3586480427e9a9dc381f331a54074f59f408452fcd41de846d9c64fd98ce3a6ede9524218215bdd languageName: node linkType: hard -"expo-file-system@npm:~18.0.2": - version: 18.0.2 - resolution: "expo-file-system@npm:18.0.2" +"expo-file-system@npm:~18.0.4": + version: 18.0.4 + resolution: "expo-file-system@npm:18.0.4" + dependencies: + web-streams-polyfill: "npm:^3.3.2" peerDependencies: expo: "*" react-native: "*" - checksum: 10/1aaf89e1686a63e609001fac3f039e133086a377cd74614f8a226e36cacdc82d1630abf9b754ce73aff3571e9007b61cbfb7f751ce357cf4e7a295e35679e502 + checksum: 10/cd4092f70224ca611936d0225491124d57c32dde9a515bb12f3d396bba1717cd16f0eeda3c7a721b29cf21412bfb3fb8bd8c5c7f78fcca226044d53be17a7fa3 languageName: node linkType: hard @@ -9005,9 +10197,9 @@ __metadata: languageName: node linkType: hard -"expo-modules-autolinking@npm:2.0.1": - version: 2.0.1 - resolution: "expo-modules-autolinking@npm:2.0.1" +"expo-modules-autolinking@npm:2.0.2": + version: 2.0.2 + resolution: "expo-modules-autolinking@npm:2.0.2" dependencies: "@expo/spawn-async": "npm:^1.7.2" chalk: "npm:^4.1.0" @@ -9019,16 +10211,16 @@ __metadata: resolve-from: "npm:^5.0.0" bin: expo-modules-autolinking: bin/expo-modules-autolinking.js - checksum: 10/b9999056fc09033784f9ce4c89c5b99cf7d089fb8e9410d877821f2a71c86ec5cd5bb97fc0099aa85608791ac8b59c193254e6efbdf34aaab6928f3f6c2e8133 + checksum: 10/8eac2313fc8e0fe30e4a3a2d9bbfa85cb525d2b43a04898b4c395d4ce66a1b57567d79689cbbf90e038279b8bd077323c120288b724788c1b6265b4ce39cf79c languageName: node linkType: hard -"expo-modules-core@npm:2.0.1": - version: 2.0.1 - resolution: "expo-modules-core@npm:2.0.1" +"expo-modules-core@npm:2.0.6": + version: 2.0.6 + resolution: "expo-modules-core@npm:2.0.6" dependencies: invariant: "npm:^2.2.4" - checksum: 10/232687e70a2a290365cbc4b6c40f5edd1ac186f4c9dc6226b0415030e9987c12c29f84abadf3fe3cf7daf861a35361efc864ac62aabbc4242a1168955b9473e8 + checksum: 10/4488350ef81d2552a0467f5841bb19f9751f39f59c1791f850312bfe9cb37f49fd285c828396c578383b216886fdd4e1a9ef54676d936047de4686ae8ba4d949 languageName: node linkType: hard @@ -9051,25 +10243,25 @@ __metadata: languageName: node linkType: hard -"expo@npm:^52.0.0": - version: 52.0.4 - resolution: "expo@npm:52.0.4" +"expo@npm:~52.0.11": + version: 52.0.11 + resolution: "expo@npm:52.0.11" dependencies: "@babel/runtime": "npm:^7.20.0" - "@expo/cli": "npm:0.21.1" - "@expo/config": "npm:10.0.3" - "@expo/config-plugins": "npm:9.0.9" + "@expo/cli": "npm:0.21.8" + "@expo/config": "npm:~10.0.5" + "@expo/config-plugins": "npm:~9.0.10" "@expo/fingerprint": "npm:0.11.2" - "@expo/metro-config": "npm:0.19.2" + "@expo/metro-config": "npm:0.19.4" "@expo/vector-icons": "npm:^14.0.0" - babel-preset-expo: "npm:~12.0.0" + babel-preset-expo: "npm:~12.0.2" expo-asset: "npm:~11.0.1" - expo-constants: "npm:~17.0.2" - expo-file-system: "npm:~18.0.2" + expo-constants: "npm:~17.0.3" + expo-file-system: "npm:~18.0.4" expo-font: "npm:~13.0.1" expo-keep-awake: "npm:~14.0.1" - expo-modules-autolinking: "npm:2.0.1" - expo-modules-core: "npm:2.0.1" + expo-modules-autolinking: "npm:2.0.2" + expo-modules-core: "npm:2.0.6" fbemitter: "npm:^3.0.0" web-streams-polyfill: "npm:^3.3.2" whatwg-url-without-unicode: "npm:8.0.0-3" @@ -9088,7 +10280,7 @@ __metadata: optional: true bin: expo: bin/cli - checksum: 10/b81b50a3956d2c4e1e75094a73ad1e42d383b25ce6ad309483fa901b40377516478245e65804efa787dc42971c1336daf540fe56c126ab9a7b52db938e200714 + checksum: 10/c88e8cc1e7ab7f2b94761005761124c0ff819d867afe5c1db142cf339fafcf1f0236bf743d5666687ebb1bbd0968aad6079f6a9011cce0dc038820620468bcf3 languageName: node linkType: hard @@ -9270,6 +10462,15 @@ __metadata: languageName: node linkType: hard +"find-babel-config@npm:^2.1.1": + version: 2.1.2 + resolution: "find-babel-config@npm:2.1.2" + dependencies: + json5: "npm:^2.2.3" + checksum: 10/f0fae1a9125a379cf660fc1b5ca7c1fc1edac5f47e521a89e4c2b92865c8e57101a9152ee503eef9f33e16f196182f2cff03d7768b7caf5eef81c80f1c124a2f + languageName: node + linkType: hard + "find-cache-dir@npm:^2.0.0": version: 2.1.0 resolution: "find-cache-dir@npm:2.1.0" @@ -9444,6 +10645,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^10.1.0": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10/05ce2c3b59049bcb7b52001acd000e44b3c4af4ec1f8839f383ef41ec0048e3cfa7fd8a637b1bddfefad319145db89be91f4b7c1db2908205d38bf91e7d1d3b7 + languageName: node + linkType: hard + "fs-extra@npm:^11.0.0": version: 11.2.0 resolution: "fs-extra@npm:11.2.0" @@ -9612,6 +10824,15 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^5.0.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: "npm:^3.0.0" + checksum: 10/13a73148dca795e41421013da6e3ebff8ccb7fba4d2f023fd0c6da2c166ec4e789bec9774a73a7b49c08daf2cae552f8a3e914042ac23b5f59dd278cc8f9cbfb + languageName: node + linkType: hard + "get-stream@npm:^6.0.0": version: 6.0.1 resolution: "get-stream@npm:6.0.1" @@ -9753,6 +10974,18 @@ __metadata: languageName: node linkType: hard +"glob@npm:^9.3.3": + version: 9.3.5 + resolution: "glob@npm:9.3.5" + dependencies: + fs.realpath: "npm:^1.0.0" + minimatch: "npm:^8.0.2" + minipass: "npm:^4.2.4" + path-scurry: "npm:^1.6.1" + checksum: 10/e5fa8a58adf53525bca42d82a1fad9e6800032b7e4d372209b80cfdca524dd9a7dbe7d01a92d7ed20d89c572457f12c250092bc8817cb4f1c63efefdf9b658c0 + languageName: node + linkType: hard + "globals-docs@npm:^2.4.1": version: 2.4.1 resolution: "globals-docs@npm:2.4.1" @@ -10040,6 +11273,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.25.1": + version: 0.25.1 + resolution: "hermes-estree@npm:0.25.1" + checksum: 10/7b1eca98b264a25632064cffa5771360d30cf452e77db1e191f9913ee45cf78c292b2dbca707e92fb71b0870abb97e94b506a5ab80abd96ba237fee169b601fe + languageName: node + linkType: hard + "hermes-parser@npm:0.19.1": version: 0.19.1 resolution: "hermes-parser@npm:0.19.1" @@ -10076,6 +11316,15 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.25.1": + version: 0.25.1 + resolution: "hermes-parser@npm:0.25.1" + dependencies: + hermes-estree: "npm:0.25.1" + checksum: 10/805efc05691420f236654349872c70731121791fa54de521c7ee51059eae34f84dd19f22ee846741dcb60372f8fb5335719b96b4ecb010d2aed7d872f2eff9cc + languageName: node + linkType: hard + "hermes-profile-transformer@npm:^0.0.6": version: 0.0.6 resolution: "hermes-profile-transformer@npm:0.0.6" @@ -10212,6 +11461,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^1.1.1": + version: 1.1.1 + resolution: "human-signals@npm:1.1.1" + checksum: 10/6a58224dffcef5588910b1028bda8623c9a7053460a1fe3367e61921a6b5f6b93aba30f323868a958f968d7de3f5f78421f11d4d9f7e9563b1bd2b00ed9a4deb + languageName: node + linkType: hard + "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -10565,6 +11821,26 @@ __metadata: languageName: node linkType: hard +"is-git-dirty@npm:^2.0.1": + version: 2.0.2 + resolution: "is-git-dirty@npm:2.0.2" + dependencies: + execa: "npm:^4.0.3" + is-git-repository: "npm:^2.0.0" + checksum: 10/13c8f58600e1ea0874703c1fa0ca87825119cf05347bb3b0bbbd331eec42b6a0e89519be4dcb173ac8eda84d1ade97fe187df8af10df599f1df8d0267680abdd + languageName: node + linkType: hard + +"is-git-repository@npm:^2.0.0": + version: 2.0.0 + resolution: "is-git-repository@npm:2.0.0" + dependencies: + execa: "npm:^4.0.3" + is-absolute: "npm:^1.0.0" + checksum: 10/9eba76437998b3239adc6e87ceb9b81f8ef00d6209f8700f2ba523e61359d5b068d11f8f94474bc90f92b39fd3c8261c4d60feb3cd62d18e1838480b0b135b88 + languageName: node + linkType: hard + "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -11698,7 +12974,7 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.0.2": +"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": version: 3.0.2 resolution: "jsesc@npm:3.0.2" bin: @@ -11783,7 +13059,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:^2.2.1, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -11852,7 +13128,7 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^4.0.3": +"kleur@npm:^4.0.3, kleur@npm:^4.1.4": version: 4.1.5 resolution: "kleur@npm:4.1.5" checksum: 10/44d84cc4eedd4311099402ef6d4acd9b2d16e08e499d6ef3bb92389bd4692d7ef09e35248c26e27f98acac532122acb12a1bfee645994ae3af4f0a37996da7df @@ -12198,7 +13474,7 @@ __metadata: languageName: node linkType: hard -"make-error@npm:1.x": +"make-error@npm:1.x, make-error@npm:^1.1.1": version: 1.3.6 resolution: "make-error@npm:1.3.6" checksum: 10/b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 @@ -12557,7 +13833,7 @@ __metadata: languageName: node linkType: hard -"metro-config@npm:0.80.12, metro-config@npm:^0.80.3": +"metro-config@npm:0.80.12, metro-config@npm:^0.80.3, metro-config@npm:^0.80.9": version: 0.80.12 resolution: "metro-config@npm:0.80.12" dependencies: @@ -13377,6 +14653,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^8.0.2": + version: 8.0.4 + resolution: "minimatch@npm:8.0.4" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10/aef05598ee565e1013bc8a10f53410ac681561f901c1a084b8ecfd016c9ed919f58f4bbd5b63e05643189dfb26e8106a84f0e1ff12e4a263aa37e1cae7ce9828 + languageName: node + linkType: hard + "minimatch@npm:^9.0.4": version: 9.0.5 resolution: "minimatch@npm:9.0.5" @@ -13453,6 +14738,13 @@ __metadata: languageName: node linkType: hard +"minipass@npm:^4.2.4": + version: 4.2.8 + resolution: "minipass@npm:4.2.8" + checksum: 10/e148eb6dcb85c980234cad889139ef8ddf9d5bdac534f4f0268446c8792dd4c74f4502479be48de3c1cce2f6450f6da4d0d4a86405a8a12be04c1c36b339569a + languageName: node + linkType: hard + "minipass@npm:^5.0.0": version: 5.0.0 resolution: "minipass@npm:5.0.0" @@ -13799,7 +15091,7 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^4.0.1": +"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: @@ -14329,7 +15621,7 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.11.1": +"path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1": version: 1.11.1 resolution: "path-scurry@npm:1.11.1" dependencies: @@ -14413,6 +15705,15 @@ __metadata: languageName: node linkType: hard +"pkg-up@npm:^3.1.0": + version: 3.1.0 + resolution: "pkg-up@npm:3.1.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10/5bac346b7c7c903613c057ae3ab722f320716199d753f4a7d053d38f2b5955460f3e6ab73b4762c62fd3e947f58e04f1343e92089e7bb6091c90877406fcd8c8 + languageName: node + linkType: hard + "plist@npm:^3.0.5": version: 3.1.0 resolution: "plist@npm:3.1.0" @@ -14791,6 +16092,38 @@ __metadata: languageName: node linkType: hard +"react-native-builder-bob@npm:^0.32.0": + version: 0.32.0 + resolution: "react-native-builder-bob@npm:0.32.0" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/plugin-transform-strict-mode": "npm:^7.24.7" + "@babel/preset-env": "npm:^7.25.2" + "@babel/preset-flow": "npm:^7.24.7" + "@babel/preset-react": "npm:^7.24.7" + "@babel/preset-typescript": "npm:^7.24.7" + babel-plugin-module-resolver: "npm:^5.0.2" + browserslist: "npm:^4.20.4" + cosmiconfig: "npm:^9.0.0" + cross-spawn: "npm:^7.0.3" + dedent: "npm:^0.7.0" + del: "npm:^6.1.1" + escape-string-regexp: "npm:^4.0.0" + fs-extra: "npm:^10.1.0" + glob: "npm:^8.0.3" + is-git-dirty: "npm:^2.0.1" + json5: "npm:^2.2.1" + kleur: "npm:^4.1.4" + metro-config: "npm:^0.80.9" + prompts: "npm:^2.4.2" + which: "npm:^2.0.2" + yargs: "npm:^17.5.1" + bin: + bob: bin/bob + checksum: 10/485dfb1236737bb720b547c6482cf8afd7f6c798a83928e25da68aa6bcac46ada89d447fd65cb6505d9dd86183e39d7f1481e964e152a43476cff861aa42a0f0 + languageName: node + linkType: hard + "react-native-gesture-handler@npm:^2.20.0": version: 2.20.0 resolution: "react-native-gesture-handler@npm:2.20.0" @@ -14869,31 +16202,31 @@ __metadata: languageName: node linkType: hard -"react-native-screens@npm:~4.0.0": - version: 4.0.0 - resolution: "react-native-screens@npm:4.0.0" +"react-native-screens@npm:~4.1.0": + version: 4.1.0 + resolution: "react-native-screens@npm:4.1.0" dependencies: react-freeze: "npm:^1.0.0" warn-once: "npm:^0.1.0" peerDependencies: react: "*" react-native: "*" - checksum: 10/460867348d9293ea92efb9d9083654ee6ae0adcde15bed54dd57c0512d7fe3d2206bfdd8686eb770a397cb37e4e896ea40af2add8772f38d54fccd55765b1872 + checksum: 10/b3758288be667cd265ec958a6c4f8d75fc93c80624ae05b054e8645e12db5e68e1ccb376017aa392a950304bb220c937e4d819ccf0eb579a125bccb6ef4b919a languageName: node linkType: hard -"react-native@npm:0.76.1": - version: 0.76.1 - resolution: "react-native@npm:0.76.1" +"react-native@npm:0.76.3": + version: 0.76.3 + resolution: "react-native@npm:0.76.3" dependencies: "@jest/create-cache-key-function": "npm:^29.6.3" - "@react-native/assets-registry": "npm:0.76.1" - "@react-native/codegen": "npm:0.76.1" - "@react-native/community-cli-plugin": "npm:0.76.1" - "@react-native/gradle-plugin": "npm:0.76.1" - "@react-native/js-polyfills": "npm:0.76.1" - "@react-native/normalize-colors": "npm:0.76.1" - "@react-native/virtualized-lists": "npm:0.76.1" + "@react-native/assets-registry": "npm:0.76.3" + "@react-native/codegen": "npm:0.76.3" + "@react-native/community-cli-plugin": "npm:0.76.3" + "@react-native/gradle-plugin": "npm:0.76.3" + "@react-native/js-polyfills": "npm:0.76.3" + "@react-native/normalize-colors": "npm:0.76.3" + "@react-native/virtualized-lists": "npm:0.76.3" abort-controller: "npm:^3.0.0" anser: "npm:^1.4.9" ansi-regex: "npm:^5.0.0" @@ -14932,7 +16265,7 @@ __metadata: optional: true bin: react-native: cli.js - checksum: 10/423578b05f6cce87fefb2e47f4ae5d30ccb9a9b72f86c4f93b580280df784592be23ab803e3b435ab15c1e1ccf5d5d4df498a7d62818fe05f3715d9d0654dc58 + checksum: 10/973f0310ebb56eae4025de7eebf100c83b8e82cd23dd7c51767f004bdff0ed7eac3b6ddf19630376edaaefd3108953b4e3be728b59b3825b67426e02b7fb724b languageName: node linkType: hard @@ -15231,7 +16564,7 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^10.1.0": +"regenerate-unicode-properties@npm:^10.1.0, regenerate-unicode-properties@npm:^10.2.0": version: 10.2.0 resolution: "regenerate-unicode-properties@npm:10.2.0" dependencies: @@ -15303,6 +16636,38 @@ __metadata: languageName: node linkType: hard +"regexpu-core@npm:^6.1.1": + version: 6.1.1 + resolution: "regexpu-core@npm:6.1.1" + dependencies: + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.2.0" + regjsgen: "npm:^0.8.0" + regjsparser: "npm:^0.11.0" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.1.0" + checksum: 10/6a7ffb42781cacedd7df3c47c72e2d725401a699855be94a37ece5e29d3f25ab3abdd81d73f2d9d32ebc4d41bd25e3c3cc21e5284203faf19e60943adc55252d + languageName: node + linkType: hard + +"regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "regjsgen@npm:0.8.0" + checksum: 10/b930f03347e4123c917d7b40436b4f87f625b8dd3e705b447ddd44804e4616c3addb7453f0902d6e914ab0446c30e816e445089bb641a4714237fe8141a0ef9d + languageName: node + linkType: hard + +"regjsparser@npm:^0.11.0": + version: 0.11.2 + resolution: "regjsparser@npm:0.11.2" + dependencies: + jsesc: "npm:~3.0.2" + bin: + regjsparser: bin/parser + checksum: 10/8075eb76d6cde8a3f188696eb18ebf229376944d35e3043f73b889a15156cf539f2801941a5630433060512cbcb2f92f6a194fac44f2e0f1497517e12aa565b3 + languageName: node + linkType: hard + "regjsparser@npm:^0.9.1": version: 0.9.1 resolution: "regjsparser@npm:0.9.1" @@ -15441,6 +16806,13 @@ __metadata: languageName: node linkType: hard +"reselect@npm:^4.1.7": + version: 4.1.8 + resolution: "reselect@npm:4.1.8" + checksum: 10/199984d9872f71cd207f4aa6e6fd2bd48d95154f7aa9b3aee3398335f39f5491059e732f28c12e9031d5d434adab2c458dc8af5afb6564d0ad37e1644445e09c + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -15492,7 +16864,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.1, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.4": +"resolve@npm:^1.10.1, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.4, resolve@npm:^1.22.8": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -15527,7 +16899,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.10.1#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": +"resolve@patch:resolve@npm%3A^1.10.1#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -15806,14 +17178,14 @@ __metadata: languageName: node linkType: hard -"send@npm:^0.18.0": - version: 0.18.0 - resolution: "send@npm:0.18.0" +"send@npm:^0.19.0": + version: 0.19.1 + resolution: "send@npm:0.19.1" dependencies: debug: "npm:2.6.9" depd: "npm:2.0.0" destroy: "npm:1.2.0" - encodeurl: "npm:~1.0.2" + encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" etag: "npm:~1.8.1" fresh: "npm:0.5.2" @@ -15823,7 +17195,7 @@ __metadata: on-finished: "npm:2.4.1" range-parser: "npm:~1.2.1" statuses: "npm:2.0.1" - checksum: 10/ec66c0ad109680ad8141d507677cfd8b4e40b9559de23191871803ed241718e99026faa46c398dcfb9250676076573bd6bfe5d0ec347f88f4b7b8533d1d391cb + checksum: 10/360bf50a839c7bbc181f67c3a0f3424a7ad8016dfebcd9eb90891f4b762b4377da14414c32250d67b53872e884171c27469110626f6c22765caa7c38c207ee1d languageName: node linkType: hard @@ -17000,6 +18372,44 @@ __metadata: languageName: node linkType: hard +"ts-node@npm:^10.9.2": + version: 10.9.2 + resolution: "ts-node@npm:10.9.2" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 10/a91a15b3c9f76ac462f006fa88b6bfa528130dcfb849dd7ef7f9d640832ab681e235b8a2bc58ecde42f72851cc1d5d4e22c901b0c11aa51001ea1d395074b794 + languageName: node + linkType: hard + "tsconfig-paths@npm:^3.15.0": version: 3.15.0 resolution: "tsconfig-paths@npm:3.15.0" @@ -17495,6 +18905,13 @@ __metadata: languageName: node linkType: hard +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10/88d3423a52b6aaf1836be779cab12f7016d47ad8430dffba6edf766695e6d90ad4adaa3d8eeb512cc05924f3e246c4a4ca51e089dccf4402caa536b5e5be8961 + languageName: node + linkType: hard + "v8-to-istanbul@npm:^9.0.1": version: 9.3.0 resolution: "v8-to-istanbul@npm:9.3.0" @@ -17823,7 +19240,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^2.0.1": +"which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -18128,6 +19545,13 @@ __metadata: languageName: node linkType: hard +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 10/2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"