diff --git a/.circleci/config.yml b/.circleci/config.yml
index ac8a53781b..a7d80b3a17 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -367,7 +367,6 @@ workflows:
- e2e_android
- hold_generate_snapshot:
type: approval
- requires: *release_dependencies
- generate_snapshot:
requires:
- hold_generate_snapshot
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b844d758c6..f6fb6ab8c6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,17 @@
# Changelog
-## [12.4.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.2.0...v12.4.0) (December 6, 2023)
+## [Unreleased](https://github.com/Instabug/Instabug-React-Native/compare/v12.4.0...dev)
+
+### Changed
+
+- Bump Instabug iOS SDK to v12.5.0 ([#1085](https://github.com/Instabug/Instabug-React-Native/pull/1085)). [See release notes](https://github.com/instabug/instabug-ios/releases/tag/12.5.0).
+- Bump Instabug Android SDK to v12.5.1 ([#1088](https://github.com/Instabug/Instabug-React-Native/pull/1085)). See release notes for [v12.5.0](https://github.com/Instabug/android/releases/tag/v12.5.0) and [v12.5.1](https://github.com/Instabug/android/releases/tag/v12.5.1).
+
+### Fixed
+
+- Fix a delay issue in reporting the 'Current View' that resulted in displaying outdated values ([#1080](https://github.com/Instabug/Instabug-React-Native/pull/1080)).
+
+## [12.4.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.2.0...v12.4.0) (December 7, 2023)
### Changed
@@ -12,7 +23,7 @@
- Fix an issue with `Instabug.init` on Android causing the app to crash while trying to get the current `Application` instance through the current activity which can be `null` in some cases by utilizing the React context instead ([#1069](https://github.com/Instabug/Instabug-React-Native/pull/1069)).
- Fix an issue with unhandled JavaScript crashes not getting linked with the current session causing inaccurate session metrics ([#1071](https://github.com/Instabug/Instabug-React-Native/pull/1071)).
-## [12.2.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.2.0...v12.1.0)
+## [12.2.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.1.0...v12.2.0) (November 14, 2023)
### Added
@@ -29,7 +40,7 @@
- Fix an issue with unhandled JavaScript crashes being reported as native iOS crashes ([#1054](https://github.com/Instabug/Instabug-React-Native/pull/1054))
- Re-enable screenshot capturing for Crash Reporting and Session Replay by removing redundant mapping ([#1055](https://github.com/Instabug/Instabug-React-Native/pull/1055)).
-## [12.1.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.1.0...v11.14.0)
+## [12.1.0](https://github.com/Instabug/Instabug-React-Native/compare/v11.14.0...v12.1.0) (October 3, 2023)
### Added
diff --git a/RNInstabug.podspec b/RNInstabug.podspec
index 40c480f4cb..21ae5fc720 100644
--- a/RNInstabug.podspec
+++ b/RNInstabug.podspec
@@ -16,5 +16,5 @@ Pod::Spec.new do |s|
s.source_files = "ios/**/*.{h,m,mm}"
s.dependency 'React-Core'
- use_instabug!(s)
+ s.dependency 'Instabug'
end
diff --git a/android/build.gradle b/android/build.gradle
index 1773a81d11..e0d19227a5 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -4,6 +4,17 @@ apply from: './jacoco.gradle'
apply from: './native.gradle'
apply from: './sourcemaps.gradle'
+
+rootProject.allprojects {
+ repositories {
+ google()
+ jcenter()
+ maven {
+ url 'https://oss.sonatype.org/content/repositories/snapshots'
+ }
+ }
+}
+
String getExtOrDefault(String name) {
def defaultPropertyKey = 'InstabugReactNative_' + name
if (rootProject.ext.has(name)) {
@@ -13,12 +24,12 @@ String getExtOrDefault(String name) {
}
static boolean supportsNamespace() {
- def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
- def major = parsed[0].toInteger()
- def minor = parsed[1].toInteger()
+// def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
+// def major = parsed[0].toInteger()
+// def minor = parsed[1].toInteger()
- // Namespace support was added in 7.3.0
- return (major == 7 && minor >= 3) || major >= 8
+ // Namespace support was added in 7.3.0 (disabled for now)
+ return false
}
void updateManifestPackage() {
diff --git a/android/native.gradle b/android/native.gradle
index af50eeab91..51409c6baa 100644
--- a/android/native.gradle
+++ b/android/native.gradle
@@ -1,5 +1,5 @@
project.ext.instabug = [
- version: '12.4.1'
+ version: '12.4.0.5503778-SNAPSHOT'
]
dependencies {
diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabug.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabug.java
index 7ea469ddbf..9b6348ab43 100644
--- a/android/src/main/java/com/instabug/reactlibrary/RNInstabug.java
+++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabug.java
@@ -18,7 +18,7 @@
public class RNInstabug {
private static RNInstabug instance;
-
+
private RNInstabug() {}
@@ -133,4 +133,117 @@ public void setBaseUrlForDeprecationLogs() {
e.printStackTrace();
}
}
+
+ public static class Builder {
+
+ /**
+ * Application instance to initialize Instabug.
+ */
+ private Application application;
+
+ /**
+ * The application token obtained from the Instabug dashboard.
+ */
+ private String applicationToken;
+
+ /**
+ * The level of detail in logs that you want to print.
+ */
+ private int logLevel = LogLevel.ERROR;
+
+ /**
+ * The Code Push version to be used for all reports.
+ */
+ private String codePushVersion;
+
+ /**
+ * The events that trigger the SDK's user interface.
+ */
+ private InstabugInvocationEvent[] invocationEvents;
+
+
+ /**
+ * Initialize Instabug SDK with application token
+ *
+ * @param application Application object for initialization of library
+ * @param applicationToken The app's identifying token, available on your dashboard.
+ */
+ public Builder(Application application, String applicationToken) {
+ this.application = application;
+ this.applicationToken = applicationToken;
+ }
+
+ /**
+ * Initialize Instabug SDK with application token and invocation trigger events
+ *
+ * @param application Application object for initialization of library
+ * @param applicationToken The app's identifying token, available on your dashboard.
+ * @param invocationEvents The events that trigger the SDK's user interface.
+ *
Choose from the available events listed in {@link InstabugInvocationEvent}.
+ */
+ public Builder(Application application, String applicationToken, InstabugInvocationEvent... invocationEvents) {
+ this.application = application;
+ this.applicationToken = applicationToken;
+ this.invocationEvents = invocationEvents;
+ }
+
+ /**
+ * Sets the filtering level for printed SDK logs.
+ *
+ * @param logLevel The log filtering level to be set.
+ * Choose from {@link LogLevel} constants:
+ * {@link LogLevel#NONE}, {@link LogLevel#ERROR}, {@link LogLevel#DEBUG}, or {@link LogLevel#VERBOSE}.
+ * Default level is {@link LogLevel#ERROR}.
+ */
+ public Builder setLogLevel(int logLevel) {
+ this.logLevel = logLevel;
+ return this;
+ }
+
+ /**
+ * Sets Code Push version to be used for all reports.
+ *
+ * @param codePushVersion the Code Push version to work with.
+ */
+ public Builder setCodePushVersion(String codePushVersion) {
+ this.codePushVersion = codePushVersion;
+ return this;
+ }
+
+ /**
+ * Sets the invocation triggering events for the SDK's user interface
+ *
+ * @param invocationEvents The events that trigger the SDK's user interface.
+ * Choose from the available events listed in {@link InstabugInvocationEvent}.
+ */
+ public Builder setInvocationEvents(InstabugInvocationEvent... invocationEvents) {
+ this.invocationEvents = invocationEvents;
+ return this;
+ }
+
+ /**
+ * Builds the Instabug instance with the provided configurations.
+ */
+ public void build() {
+ try {
+ RNInstabug.getInstance().setBaseUrlForDeprecationLogs();
+ RNInstabug.getInstance().setCurrentPlatform();
+
+ Instabug.Builder instabugBuilder = new Instabug.Builder(application, applicationToken)
+ .setInvocationEvents(invocationEvents)
+ .setSdkDebugLogsLevel(logLevel);
+
+ if (codePushVersion != null) {
+ instabugBuilder.setCodePushVersion(codePushVersion);
+ }
+
+ instabugBuilder.build();
+
+ // Temporarily disabling APM hot launches
+ APM.setHotAppLaunchEnabled(false);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
}
diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java
index d412c62a6d..6692a25972 100644
--- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java
+++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java
@@ -50,6 +50,8 @@
import java.util.Locale;
import java.util.Map;
+import javax.annotation.Nullable;
+
/**
* The type Rn instabug reactnative module.
@@ -117,9 +119,16 @@ public void run() {
* Initializes the SDK.
* @param token The token that identifies the app. You can find it on your dashboard.
* @param invocationEventValues The events that invoke the SDK's UI.
+ * @param logLevel The level of detail in logs that you want to print.
+ * @param codePushVersion The Code Push version to be used for all reports.
*/
@ReactMethod
- public void init(final String token, final ReadableArray invocationEventValues, final String logLevel) {
+ public void init(
+ final String token,
+ final ReadableArray invocationEventValues,
+ final String logLevel,
+ @Nullable final String codePushVersion
+ ) {
MainThreadHandler.runOnMainThread(new Runnable() {
@Override
public void run() {
@@ -130,7 +139,14 @@ public void run() {
final Application application = (Application) reactContext.getApplicationContext();
- RNInstabug.getInstance().init(application, token, parsedLogLevel, invocationEvents);
+ RNInstabug.Builder builder = new RNInstabug.Builder(application, token)
+ .setInvocationEvents(invocationEvents)
+ .setLogLevel(parsedLogLevel);
+
+ if(codePushVersion != null) {
+ builder.setCodePushVersion(codePushVersion);
+ }
+ builder.build();
}
});
}
@@ -916,6 +932,29 @@ public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
});
}
+ /**
+ * Reports that the screen name been changed (Current View).
+ *
+ * @param screenName string containing the screen name
+ *
+ */
+ @ReactMethod
+ public void reportCurrentViewChange(final String screenName) {
+ MainThreadHandler.runOnMainThread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ Method method = getMethod(Class.forName("com.instabug.library.Instabug"), "reportCurrentViewChange", String.class);
+ if (method != null) {
+ method.invoke(null, screenName);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+
/**
* Reports that the screen has been changed (Repro Steps) the screen sent to this method will be the 'current view' on the dashboard
*
diff --git a/android/src/main/java/com/instabug/reactlibrary/utils/ReportUtil.java b/android/src/main/java/com/instabug/reactlibrary/utils/ReportUtil.java
index 69fdde015e..a44da18822 100644
--- a/android/src/main/java/com/instabug/reactlibrary/utils/ReportUtil.java
+++ b/android/src/main/java/com/instabug/reactlibrary/utils/ReportUtil.java
@@ -70,7 +70,7 @@ public static WritableArray parseConsoleLogs(ArrayList consoleLogs) {
for(int i = 0; i < consoleLogs.size(); i++) {
try {
writableArray.pushString(consoleLogs.get(i).toJson());
- } catch (JSONException e) {
+ } catch (Exception e) {
e.printStackTrace();
}
diff --git a/android/src/test/java/com/instabug/reactlibrary/RNInstabugReactnativeModuleTest.java b/android/src/test/java/com/instabug/reactlibrary/RNInstabugReactnativeModuleTest.java
index 1426f9a1f8..148d71d512 100644
--- a/android/src/test/java/com/instabug/reactlibrary/RNInstabugReactnativeModuleTest.java
+++ b/android/src/test/java/com/instabug/reactlibrary/RNInstabugReactnativeModuleTest.java
@@ -482,6 +482,18 @@ public void tearDown() {
}
}
+ @Test
+ public void givenString$reportCurrentViewChange_whenQuery_thenShouldCallNativeApiWithString() throws Exception {
+ // when
+ rnModule.reportCurrentViewChange("screen");
+ Method privateStringMethod = getMethod(Class.forName("com.instabug.library.Instabug"), "reportCurrentViewChange", String.class);
+ privateStringMethod.setAccessible(true);
+
+ // then
+ verify(Instabug.class, VerificationModeFactory.times(1));
+ privateStringMethod.invoke("reportCurrentViewChange","screen");
+ }
+
@Test
public void givenString$reportScreenChange_whenQuery_thenShouldCallNativeApiWithString() throws Exception {
// when
diff --git a/android/src/test/java/com/instabug/reactlibrary/RNInstabugTest.java b/android/src/test/java/com/instabug/reactlibrary/RNInstabugTest.java
index df169df1e1..fde1fc8d01 100644
--- a/android/src/test/java/com/instabug/reactlibrary/RNInstabugTest.java
+++ b/android/src/test/java/com/instabug/reactlibrary/RNInstabugTest.java
@@ -10,6 +10,7 @@
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import android.app.Application;
@@ -112,6 +113,139 @@ public void testSetDeprecationBaseUrl() {
reflected.verify(() -> MockReflected.setBaseUrl(any()));
}
+
+ @Test
+ public void testBuildWithoutLogLevelShouldSetLogLevelToError() {
+ final String token = "fde....";
+
+
+ MockedConstruction mInstabugBuilder = mockConstruction(Instabug.Builder.class, (mock, context) -> {
+ String actualToken = (String) context.arguments().get(1);
+ // Initializes Instabug with the correct token
+ assertEquals(token, actualToken);
+ when(mock.setSdkDebugLogsLevel(anyInt())).thenReturn(mock);
+ when(mock.setInvocationEvents(any())).thenReturn(mock);
+ });
+
+ new RNInstabug.Builder(mContext, token)
+ .build();
+
+ Instabug.Builder builder = mInstabugBuilder.constructed().get(0);
+
+ verify(builder).setSdkDebugLogsLevel(LogLevel.ERROR);
+ verify(builder).setInvocationEvents(null);
+ verify(builder).build();
+
+
+// verify(sut).setBaseUrlForDeprecationLogs();
+// verify(sut).setCurrentPlatform();
+
+
+ mInstabugBuilder.close();
+ }
+
+ @Test
+ public void testBuildWithVerboseLogLevel() {
+ final String token = "fde....";
+ final int logLevel = LogLevel.VERBOSE;
+
+
+ MockedConstruction mInstabugBuilder = mockConstruction(Instabug.Builder.class, (mock, context) -> {
+ String actualToken = (String) context.arguments().get(1);
+ // Initializes Instabug with the correct token
+ assertEquals(token, actualToken);
+ when(mock.setSdkDebugLogsLevel(anyInt())).thenReturn(mock);
+ when(mock.setInvocationEvents(any())).thenReturn(mock);
+ });
+
+ new RNInstabug.Builder(mContext, token)
+ .setLogLevel(logLevel)
+ .build();
+
+ Instabug.Builder builder = mInstabugBuilder.constructed().get(0);
+
+ verify(builder).setSdkDebugLogsLevel(logLevel);
+ verify(builder).setInvocationEvents(null);
+ verify(builder).build();
+
+
+ verify(sut).setBaseUrlForDeprecationLogs();
+ verify(sut).setCurrentPlatform();
+
+
+ mInstabugBuilder.close();
+ }
+
+ @Test
+ public void testBuildWithInvocationEvents() {
+ final InstabugInvocationEvent[] invocationEvents = new InstabugInvocationEvent[]{InstabugInvocationEvent.FLOATING_BUTTON};
+ final String token = "fde....";
+
+
+ MockedConstruction mInstabugBuilder = mockConstruction(Instabug.Builder.class, (mock, context) -> {
+ String actualToken = (String) context.arguments().get(1);
+ // Initializes Instabug with the correct token
+ assertEquals(token, actualToken);
+ when(mock.setSdkDebugLogsLevel(anyInt())).thenReturn(mock);
+ when(mock.setInvocationEvents(any())).thenReturn(mock);
+ });
+
+ new RNInstabug.Builder(mContext, token)
+ .setInvocationEvents(invocationEvents)
+ .build();
+
+ Instabug.Builder builder = mInstabugBuilder.constructed().get(0);
+
+ verify(builder).setSdkDebugLogsLevel(LogLevel.ERROR);
+ verify(builder).setInvocationEvents(invocationEvents);
+ verify(builder).build();
+
+
+// verify(sut).setBaseUrlForDeprecationLogs();
+// verify(sut).setCurrentPlatform();
+
+
+ mInstabugBuilder.close();
+ }
+
+ @Test
+ public void testBuildWithCodePushVersion() {
+ final InstabugInvocationEvent[] invocationEvents = new InstabugInvocationEvent[]{InstabugInvocationEvent.FLOATING_BUTTON};
+ final String token = "fde....";
+ final String codePushVersion = "1.0.0(1)";
+
+
+ MockedConstruction mInstabugBuilder = mockConstruction(Instabug.Builder.class, (mock, context) -> {
+ String actualToken = (String) context.arguments().get(1);
+ // Initializes Instabug with the correct token
+ assertEquals(token, actualToken);
+ when(mock.setSdkDebugLogsLevel(anyInt())).thenReturn(mock);
+ when(mock.setInvocationEvents(any())).thenReturn(mock);
+ when(mock.setCodePushVersion(any())).thenReturn(mock);
+ });
+
+ new RNInstabug.Builder(mContext, token)
+ .setLogLevel(LogLevel.ERROR)
+ .setInvocationEvents(null)
+ .setCodePushVersion(codePushVersion)
+ .build();
+
+ Instabug.Builder builder = mInstabugBuilder.constructed().get(0);
+
+ verify(builder).setSdkDebugLogsLevel(LogLevel.ERROR);
+ verify(builder).setCodePushVersion(codePushVersion);
+ verify(builder).setInvocationEvents(null);
+ verify(builder).build();
+
+
+// verify(sut).setBaseUrlForDeprecationLogs();
+// verify(sut).setCurrentPlatform();
+
+ verifyNoMoreInteractions(sut);
+
+
+ mInstabugBuilder.close();
+ }
}
diff --git a/examples/default/babel.config.js b/examples/default/babel.config.js
index f842b77fcf..983e075de7 100644
--- a/examples/default/babel.config.js
+++ b/examples/default/babel.config.js
@@ -1,3 +1,4 @@
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
+ plugins: ['react-native-reanimated/plugin'],
};
diff --git a/examples/default/index.js b/examples/default/index.js
index ab752cb6e3..9733db05ea 100644
--- a/examples/default/index.js
+++ b/examples/default/index.js
@@ -1,3 +1,4 @@
+import 'react-native-gesture-handler';
import { AppRegistry } from 'react-native';
import { name as appName } from './app.json';
diff --git a/examples/default/ios/InstabugTests/InstabugSampleTests.m b/examples/default/ios/InstabugTests/InstabugSampleTests.m
index 2e6445b5ba..05e085ee3d 100644
--- a/examples/default/ios/InstabugTests/InstabugSampleTests.m
+++ b/examples/default/ios/InstabugTests/InstabugSampleTests.m
@@ -65,12 +65,17 @@ - (void)testSetEnabled {
}
- (void)testInit {
+ id mock = OCMClassMock([Instabug class]);
IBGInvocationEvent floatingButtonInvocationEvent = IBGInvocationEventFloatingButton;
NSString *appToken = @"app_token";
+ NSString *codePushVersion = @"1.0.0(1)";
NSArray *invocationEvents = [NSArray arrayWithObjects:[NSNumber numberWithInteger:floatingButtonInvocationEvent], nil];
IBGSDKDebugLogsLevel sdkDebugLogsLevel = IBGSDKDebugLogsLevelDebug;
+
+ OCMStub([mock setCodePushVersion:codePushVersion]);
- [self.instabugBridge init:appToken invocationEvents:invocationEvents debugLogsLevel:sdkDebugLogsLevel];
+ [self.instabugBridge init:appToken invocationEvents:invocationEvents debugLogsLevel:sdkDebugLogsLevel codePushVersion:codePushVersion];
+ OCMVerify([mock setCodePushVersion:codePushVersion]);
OCMVerify([self.mRNInstabug initWithToken:appToken invocationEvents:floatingButtonInvocationEvent debugLogsLevel:sdkDebugLogsLevel]);
}
diff --git a/examples/default/ios/InstabugTests/RNInstabugTests.m b/examples/default/ios/InstabugTests/RNInstabugTests.m
index 9ceed36621..7f1ddcd00f 100644
--- a/examples/default/ios/InstabugTests/RNInstabugTests.m
+++ b/examples/default/ios/InstabugTests/RNInstabugTests.m
@@ -68,4 +68,11 @@ - (void)testInitWithLogsLevel {
OCMVerify([self.mIBGNetworkLogger setEnabled:YES]);
}
+- (void) testSetCodePushVersion {
+ NSString *codePushVersion = @"1.0.0(1)";
+ [RNInstabug setCodePushVersion:codePushVersion];
+
+ OCMVerify([self.mInstabug setCodePushVersion:codePushVersion]);
+}
+
@end
diff --git a/examples/default/ios/Podfile b/examples/default/ios/Podfile
index b47b0b248c..acaf5db699 100644
--- a/examples/default/ios/Podfile
+++ b/examples/default/ios/Podfile
@@ -26,7 +26,7 @@ target 'InstabugExample' do
# Flags change depending on the env values.
flags = get_default_flags()
-
+ pod 'Instabug', :podspec => 'https://ios-releases.instabug.com/custom/custom-build-force-set-codepush/12.4.3/Instabug.podspec'
use_react_native!(
:path => config[:reactNativePath],
# Hermes is now enabled by default. Disable by setting this flag to false.
diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock
index 4e63cac81d..f426c19d2d 100644
--- a/examples/default/ios/Podfile.lock
+++ b/examples/default/ios/Podfile.lock
@@ -73,7 +73,7 @@ PODS:
- hermes-engine (0.72.3):
- hermes-engine/Pre-built (= 0.72.3)
- hermes-engine/Pre-built (0.72.3)
- - Instabug (12.4.0)
+ - Instabug (12.4.3)
- libevent (2.1.12)
- OCMock (3.9.1)
- OpenSSL-Universal (1.1.1100)
@@ -379,6 +379,8 @@ PODS:
- glog
- react-native-safe-area-context (4.7.1):
- React-Core
+ - react-native-slider (4.4.3):
+ - React-Core
- React-NativeModulesApple (0.72.3):
- hermes-engine
- React-callinvoker
@@ -489,9 +491,41 @@ PODS:
- React-jsi (= 0.72.3)
- React-logger (= 0.72.3)
- React-perflogger (= 0.72.3)
+ - RNGestureHandler (2.13.4):
+ - RCT-Folly (= 2021.07.22.00)
+ - React-Core
- RNInstabug (12.4.0):
- - Instabug (= 12.4.0)
+ - Instabug
+ - React-Core
+ - RNReanimated (3.5.4):
+ - DoubleConversion
+ - FBLazyVector
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCTRequired
+ - RCTTypeSafety
+ - React-callinvoker
- React-Core
+ - React-Core/DevSupport
+ - React-Core/RCTWebSocket
+ - React-CoreModules
+ - React-cxxreact
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-RCTActionSheet
+ - React-RCTAnimation
+ - React-RCTAppDelegate
+ - React-RCTBlob
+ - React-RCTImage
+ - React-RCTLinking
+ - React-RCTNetwork
+ - React-RCTSettings
+ - React-RCTText
+ - ReactCommon/turbomodule/core
+ - Yoga
- RNScreens (3.24.0):
- React-Core
- React-RCTImage
@@ -531,6 +565,7 @@ DEPENDENCIES:
- FlipperKit/SKIOSNetworkPlugin (= 0.182.0)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
+ - Instabug (from `https://ios-releases.instabug.com/custom/custom-build-force-set-codepush/12.4.3/Instabug.podspec`)
- libevent (~> 2.1.12)
- OCMock
- OpenSSL-Universal (= 1.1.1100)
@@ -552,6 +587,7 @@ DEPENDENCIES:
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
+ - "react-native-slider (from `../node_modules/@react-native-community/slider`)"
- React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
@@ -569,7 +605,9 @@ DEPENDENCIES:
- React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
- React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
+ - RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- RNInstabug (from `../node_modules/instabug-reactnative`)
+ - RNReanimated (from `../node_modules/react-native-reanimated`)
- RNScreens (from `../node_modules/react-native-screens`)
- RNSVG (from `../node_modules/react-native-svg`)
- RNVectorIcons (from `../node_modules/react-native-vector-icons`)
@@ -587,7 +625,6 @@ SPEC REPOS:
- Flipper-PeerTalk
- FlipperKit
- fmt
- - Instabug
- libevent
- OCMock
- OpenSSL-Universal
@@ -608,6 +645,8 @@ EXTERNAL SOURCES:
hermes-engine:
:podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
:tag: hermes-2023-03-20-RNv0.72.0-49794cfc7c81fb8f69fd60c3bbf85a7480cc5a77
+ Instabug:
+ :podspec: https://ios-releases.instabug.com/custom/custom-build-force-set-codepush/12.4.3/Instabug.podspec
RCT-Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
RCTRequired:
@@ -640,6 +679,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/logger"
react-native-safe-area-context:
:path: "../node_modules/react-native-safe-area-context"
+ react-native-slider:
+ :path: "../node_modules/@react-native-community/slider"
React-NativeModulesApple:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
React-perflogger:
@@ -674,8 +715,12 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/react/utils"
ReactCommon:
:path: "../node_modules/react-native/ReactCommon"
+ RNGestureHandler:
+ :path: "../node_modules/react-native-gesture-handler"
RNInstabug:
:path: "../node_modules/instabug-reactnative"
+ RNReanimated:
+ :path: "../node_modules/react-native-reanimated"
RNScreens:
:path: "../node_modules/react-native-screens"
RNSVG:
@@ -702,7 +747,7 @@ SPEC CHECKSUMS:
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
hermes-engine: 10fbd3f62405c41ea07e71973ea61e1878d07322
- Instabug: 83bde9d7d4b582ea8f14935f79f1ce39af55e149
+ Instabug: a45124475f99fb282c4765c632b17b3b3bb1d625
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
OCMock: 9491e4bec59e0b267d52a9184ff5605995e74be8
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
@@ -722,6 +767,7 @@ SPEC CHECKSUMS:
React-jsinspector: b511447170f561157547bc0bef3f169663860be7
React-logger: c5b527272d5f22eaa09bb3c3a690fee8f237ae95
react-native-safe-area-context: 9697629f7b2cda43cf52169bb7e0767d330648c2
+ react-native-slider: 1cdd6ba29675df21f30544253bf7351d3c2d68c4
React-NativeModulesApple: c57f3efe0df288a6532b726ad2d0322a9bf38472
React-perflogger: 6bd153e776e6beed54c56b0847e1220a3ff92ba5
React-RCTActionSheet: c0b62af44e610e69d9a2049a682f5dba4e9dff17
@@ -739,7 +785,9 @@ SPEC CHECKSUMS:
React-runtimescheduler: 837c1bebd2f84572db17698cd702ceaf585b0d9a
React-utils: bcb57da67eec2711f8b353f6e3d33bd8e4b2efa3
ReactCommon: 3ccb8fb14e6b3277e38c73b0ff5e4a1b8db017a9
- RNInstabug: ae604474d8e74d7bd2bee96ccbcfd9d7e12a61fe
+ RNGestureHandler: 6e46dde1f87e5f018a54fe5d40cd0e0b942b49ee
+ RNInstabug: a0c5e130f55637d0e41d4070f7cb37f1798d7226
+ RNReanimated: ab2e96c6d5591c3dfbb38a464f54c8d17fb34a87
RNScreens: b21dc57dfa2b710c30ec600786a3fc223b1b92e7
RNSVG: 80584470ff1ffc7994923ea135a3e5ad825546b9
RNVectorIcons: 8b5bb0fa61d54cd2020af4f24a51841ce365c7e9
@@ -747,6 +795,6 @@ SPEC CHECKSUMS:
Yoga: 8796b55dba14d7004f980b54bcc9833ee45b28ce
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
-PODFILE CHECKSUM: d169b4508f413ff5d69cdf38428960e0828e6282
+PODFILE CHECKSUM: 52f1fceaac9b4e47ad2048fb3af43584062fb977
-COCOAPODS: 1.11.3
+COCOAPODS: 1.13.0
diff --git a/examples/default/package.json b/examples/default/package.json
index 26592d3f75..608dd04396 100644
--- a/examples/default/package.json
+++ b/examples/default/package.json
@@ -6,9 +6,11 @@
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
- "lint": "eslint ."
+ "lint": "eslint .",
+ "postinstall": "patch-package"
},
"dependencies": {
+ "@react-native-community/slider": "^4.4.3",
"@react-navigation/bottom-tabs": "^6.5.7",
"@react-navigation/native": "^6.1.6",
"@react-navigation/native-stack": "^6.9.12",
@@ -16,6 +18,8 @@
"native-base": "^3.4.28",
"react": "18.2.0",
"react-native": "0.72.3",
+ "react-native-gesture-handler": "^2.13.4",
+ "react-native-reanimated": "^3.5.4",
"react-native-safe-area-context": "^4.5.3",
"react-native-screens": "^3.20.0",
"react-native-svg": "^13.9.0",
@@ -34,6 +38,7 @@
"detox": "^20.9.0",
"jest": "^29.2.1",
"metro-react-native-babel-preset": "0.77.0",
+ "patch-package": "^8.0.0",
"react-test-renderer": "18.2.0",
"ts-jest": "^29.1.0",
"typescript": "5.1.6"
diff --git a/examples/default/patches/react-native+0.72.3.patch b/examples/default/patches/react-native+0.72.3.patch
new file mode 100644
index 0000000000..e8b2e89654
--- /dev/null
+++ b/examples/default/patches/react-native+0.72.3.patch
@@ -0,0 +1,13 @@
+diff --git a/node_modules/react-native/third-party-podspecs/boost.podspec b/node_modules/react-native/third-party-podspecs/boost.podspec
+index 3d9331c..bbbb738 100644
+--- a/node_modules/react-native/third-party-podspecs/boost.podspec
++++ b/node_modules/react-native/third-party-podspecs/boost.podspec
+@@ -10,7 +10,7 @@ Pod::Spec.new do |spec|
+ spec.homepage = 'http://www.boost.org'
+ spec.summary = 'Boost provides free peer-reviewed portable C++ source libraries.'
+ spec.authors = 'Rene Rivera'
+- spec.source = { :http => 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2',
++ spec.source = { :http => 'https://archives.boost.io/release/1.76.0/source/boost_1_76_0.tar.bz2',
+ :sha256 => 'f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41' }
+
+ # Pinning to the same version as React.podspec.
diff --git a/examples/default/src/App.tsx b/examples/default/src/App.tsx
index fbd116e5aa..6dff03618d 100644
--- a/examples/default/src/App.tsx
+++ b/examples/default/src/App.tsx
@@ -1,5 +1,7 @@
import React, { useEffect } from 'react';
+import { StyleSheet } from 'react-native';
+import { GestureHandlerRootView } from 'react-native-gesture-handler';
import { NavigationContainer } from '@react-navigation/native';
import Instabug, { InvocationEvent, LogLevel } from 'instabug-reactnative';
import { NativeBaseProvider } from 'native-base';
@@ -18,10 +20,18 @@ export const App: React.FC = () => {
}, []);
return (
-
-
-
-
-
+
+
+
+
+
+
+
);
};
+
+const styles = StyleSheet.create({
+ root: {
+ flex: 1,
+ },
+});
diff --git a/examples/default/src/components/Screen.tsx b/examples/default/src/components/Screen.tsx
index 63745b8cbe..c0f296aaa8 100644
--- a/examples/default/src/components/Screen.tsx
+++ b/examples/default/src/components/Screen.tsx
@@ -4,7 +4,7 @@ import { VStack } from 'native-base';
export const Screen: React.FC = ({ children }) => {
return (
-
+
{children}
);
diff --git a/examples/default/src/components/Section.tsx b/examples/default/src/components/Section.tsx
new file mode 100644
index 0000000000..eed7586e2b
--- /dev/null
+++ b/examples/default/src/components/Section.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Heading, VStack } from 'native-base';
+
+interface SectionProps {
+ title: string;
+ flex?: number;
+ children?: React.ReactNode;
+}
+
+export const Section: React.FC = ({ title, flex, children }) => {
+ return (
+
+
+ {title}
+
+
+ {children}
+
+ );
+};
diff --git a/examples/default/src/images/logo.png b/examples/default/src/images/logo.png
new file mode 100644
index 0000000000..4d71f0134c
Binary files /dev/null and b/examples/default/src/images/logo.png differ
diff --git a/examples/default/src/navigation/HomeStack.tsx b/examples/default/src/navigation/HomeStack.tsx
index 737a257558..360a274448 100644
--- a/examples/default/src/navigation/HomeStack.tsx
+++ b/examples/default/src/navigation/HomeStack.tsx
@@ -8,6 +8,12 @@ import { FeatureRequestsScreen } from '../screens/FeatureRequestsScreen';
import { HomeScreen } from '../screens/HomeScreen';
import { RepliesScreen } from '../screens/RepliesScreen';
import { SurveysScreen } from '../screens/SurveysScreen';
+import { UserStepsScreen } from '../screens/user-steps/UserStepsScreen';
+import { BasicComponentsScreen } from '../screens/user-steps/BasicComponentsScreen';
+import { ScrollViewScreen } from '../screens/user-steps/ScrollViewScreen';
+import { FlatListScreen } from '../screens/user-steps/FlatListScreen';
+import { SectionListScreen } from '../screens/user-steps/SectionListScreen';
+import { GesturesScreen } from '../screens/user-steps/GesturesScreen';
export type HomeStackParamList = {
Home: undefined;
@@ -16,6 +22,12 @@ export type HomeStackParamList = {
FeatureRequests: undefined;
Replies: undefined;
Surveys: undefined;
+ UserSteps: undefined;
+ BasicComponents: undefined;
+ ScrollView: undefined;
+ FlatList: undefined;
+ SectionList: undefined;
+ Gestures: undefined;
};
const HomeStack = createNativeStackNavigator();
@@ -41,6 +53,32 @@ export const HomeStackNavigator: React.FC = () => {
/>
+
+
+
+
+
+
);
};
diff --git a/examples/default/src/screens/HomeScreen.tsx b/examples/default/src/screens/HomeScreen.tsx
index cf74a1d435..8ec8bd65f7 100644
--- a/examples/default/src/screens/HomeScreen.tsx
+++ b/examples/default/src/screens/HomeScreen.tsx
@@ -16,6 +16,7 @@ export const HomeScreen: React.FC navigation.navigate('FeatureRequests')} />
navigation.navigate('Replies')} />
navigation.navigate('Surveys')} />
+ navigation.navigate('UserSteps')} />
);
};
diff --git a/examples/default/src/screens/user-steps/BasicComponentsScreen.tsx b/examples/default/src/screens/user-steps/BasicComponentsScreen.tsx
new file mode 100644
index 0000000000..4149ad5e80
--- /dev/null
+++ b/examples/default/src/screens/user-steps/BasicComponentsScreen.tsx
@@ -0,0 +1,134 @@
+import React, { useState } from 'react';
+import {
+ Alert,
+ Button,
+ Image,
+ Pressable,
+ StyleSheet,
+ Text,
+ TextInput,
+ TouchableOpacity,
+ Switch,
+ useWindowDimensions,
+ ActivityIndicator,
+} from 'react-native';
+import Slider from '@react-native-community/slider';
+import { Center, HStack, ScrollView, VStack } from 'native-base';
+
+import { Screen } from '../../components/Screen';
+import { Section } from '../../components/Section';
+import { nativeBaseTheme } from '../../theme/nativeBaseTheme';
+
+/**
+ * A screen that demonstates the usage of user steps with basic React Native components.
+ *
+ * This specific screen doesn't use NativeBase in some parts since we need to focus on
+ * capturing React Native provided components rather than implementations built on top of it.
+ */
+export const BasicComponentsScreen: React.FC = () => {
+ const [isSwitchOn, setIsSwitchOn] = useState(false);
+ const { width } = useWindowDimensions();
+
+ const onPress = (label: string) => {
+ return () => {
+ Alert.alert(`Pressed "${label}"`);
+ };
+ };
+
+ return (
+
+
+
+
+ Lorem ipsum, dolor sit amet consectetur adipisicing elit. Alias tempore inventore quas
+ cum cupiditate ratione, iusto itaque natus maiores fugit.
+
+
+
+
+
+
+
+
+
+
+
+
+ Pressable Button
+
+
+
+ Touchable Button
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+const formControlStyles = StyleSheet.create({
+ formControl: {
+ paddingVertical: 16,
+ paddingHorizontal: 24,
+ fontSize: 16,
+ borderRadius: 5,
+ },
+});
+
+const styles = StyleSheet.create({
+ text: {
+ fontSize: 16,
+ lineHeight: 24,
+ },
+ image: {
+ resizeMode: 'contain',
+ },
+ textInput: StyleSheet.flatten([
+ formControlStyles.formControl,
+ {
+ backgroundColor: 'white',
+ borderWidth: 1,
+ borderColor: '#ccc',
+ },
+ ]),
+ buttonText: {
+ color: 'white',
+ textAlign: 'center',
+ fontWeight: 'bold',
+ },
+ button: StyleSheet.flatten([
+ formControlStyles.formControl,
+ {
+ backgroundColor: nativeBaseTheme.colors.primary[600],
+ },
+ ]),
+});
diff --git a/examples/default/src/screens/user-steps/FlatListScreen.tsx b/examples/default/src/screens/user-steps/FlatListScreen.tsx
new file mode 100644
index 0000000000..7ab8caa2ef
--- /dev/null
+++ b/examples/default/src/screens/user-steps/FlatListScreen.tsx
@@ -0,0 +1,38 @@
+import React from 'react';
+import { FlatList, RefreshControl } from 'react-native';
+import { Skeleton } from 'native-base';
+
+import { Screen } from '../../components/Screen';
+import { Section } from '../../components/Section';
+import { createList } from '../../utils/createList';
+import { useDelayedRefresh } from '../../utils/useDelayedRefresh';
+
+export const FlatListScreen: React.FC = () => {
+ const { refreshing, onRefresh } = useDelayedRefresh();
+
+ return (
+
+
+ item.toString()}
+ renderItem={() => (
+
+ )}
+ />
+
+
+
+ }
+ data={createList(20)}
+ keyExtractor={(item) => item.toString()}
+ renderItem={() => (
+
+ )}
+ />
+
+
+ );
+};
diff --git a/examples/default/src/screens/user-steps/GesturesScreen.tsx b/examples/default/src/screens/user-steps/GesturesScreen.tsx
new file mode 100644
index 0000000000..655a85b8de
--- /dev/null
+++ b/examples/default/src/screens/user-steps/GesturesScreen.tsx
@@ -0,0 +1,93 @@
+import React from 'react';
+import { Alert, ScrollView } from 'react-native';
+
+import Animated, { runOnJS, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';
+import { Gesture, GestureDetector, Swipeable } from 'react-native-gesture-handler';
+import { Box, Center, Text } from 'native-base';
+
+import { Screen } from '../../components/Screen';
+import { Section } from '../../components/Section';
+
+const AnimatedBox = Animated.createAnimatedComponent(Box);
+
+export const GesturesScreen: React.FC = () => {
+ const showAlert = (message: string) => {
+ Alert.alert(message);
+ };
+
+ const tapGesture = Gesture.Tap()
+ .maxDuration(250)
+ .onStart(() => {
+ runOnJS(showAlert)('Tapped.');
+ });
+
+ const doubleTapGesture = Gesture.Tap()
+ .maxDuration(250)
+ .numberOfTaps(2)
+ .onStart(() => {
+ runOnJS(showAlert)('Double tapped.');
+ });
+
+ const scale = useSharedValue(1);
+ const savedScale = useSharedValue(1);
+ const pinchGesture = Gesture.Pinch()
+ .onUpdate((e) => {
+ scale.value = savedScale.value * e.scale;
+ })
+ .onEnd(() => {
+ savedScale.value = scale.value;
+ });
+ const pinchStyle = useAnimatedStyle(() => ({ transform: [{ scale: scale.value }] }));
+
+ return (
+
+
+
+
+
+
+
+
+ Double Tap
+
+
+
+
+
+
+ }
+ renderRightActions={() => }>
+
+
+ Swipe
+
+
+
+
+
+
+
+
+ );
+};
diff --git a/examples/default/src/screens/user-steps/ScrollViewScreen.tsx b/examples/default/src/screens/user-steps/ScrollViewScreen.tsx
new file mode 100644
index 0000000000..f0eab8e3ff
--- /dev/null
+++ b/examples/default/src/screens/user-steps/ScrollViewScreen.tsx
@@ -0,0 +1,37 @@
+import React from 'react';
+
+import { Screen } from '../../components/Screen';
+import { RefreshControl, ScrollView } from 'react-native';
+import { VStack, Skeleton, HStack } from 'native-base';
+import { createList } from '../../utils/createList';
+import { Section } from '../../components/Section';
+import { useDelayedRefresh } from '../../utils/useDelayedRefresh';
+
+export const ScrollViewScreen: React.FC = () => {
+ const { refreshing, onRefresh } = useDelayedRefresh();
+
+ return (
+
+
+
+
+ {createList(10).map((num) => (
+
+ ))}
+
+
+
+
+
+ }>
+
+ {createList(20).map((num) => (
+
+ ))}
+
+
+
+
+ );
+};
diff --git a/examples/default/src/screens/user-steps/SectionListScreen.tsx b/examples/default/src/screens/user-steps/SectionListScreen.tsx
new file mode 100644
index 0000000000..f392129b08
--- /dev/null
+++ b/examples/default/src/screens/user-steps/SectionListScreen.tsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import { RefreshControl, SectionList } from 'react-native';
+import { Heading, Skeleton } from 'native-base';
+
+import { Screen } from '../../components/Screen';
+import { createList } from '../../utils/createList';
+import { useDelayedRefresh } from '../../utils/useDelayedRefresh';
+
+const sections = [
+ {
+ title: 'Section A',
+ data: createList(10),
+ },
+ {
+ title: 'Section B',
+ data: createList(10),
+ },
+];
+
+export const SectionListScreen: React.FC = () => {
+ const { refreshing, onRefresh } = useDelayedRefresh();
+
+ return (
+
+ }
+ sections={sections}
+ keyExtractor={(item) => item.toString()}
+ renderSectionHeader={(info) => (
+
+ {info.section.title}
+
+ )}
+ renderItem={() => (
+
+ )}
+ />
+
+ );
+};
diff --git a/examples/default/src/screens/user-steps/UserStepsScreen.tsx b/examples/default/src/screens/user-steps/UserStepsScreen.tsx
new file mode 100644
index 0000000000..219cd5bbd6
--- /dev/null
+++ b/examples/default/src/screens/user-steps/UserStepsScreen.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+
+import { ListTile } from '../../components/ListTile';
+import { Screen } from '../../components/Screen';
+import type { HomeStackParamList } from '../../navigation/HomeStack';
+import type { NativeStackScreenProps } from '@react-navigation/native-stack';
+
+export const UserStepsScreen: React.FC> = ({
+ navigation,
+}) => {
+ return (
+
+ navigation.navigate('BasicComponents')} />
+ navigation.navigate('ScrollView')} />
+ navigation.navigate('FlatList')} />
+ navigation.navigate('SectionList')} />
+ navigation.navigate('Gestures')} />
+
+ );
+};
diff --git a/examples/default/src/utils/createList.ts b/examples/default/src/utils/createList.ts
new file mode 100644
index 0000000000..1719c2d75c
--- /dev/null
+++ b/examples/default/src/utils/createList.ts
@@ -0,0 +1,3 @@
+export function createList(length: number) {
+ return Array.from({ length }, (_, i) => i + 1);
+}
diff --git a/examples/default/src/utils/useDelayedRefresh.ts b/examples/default/src/utils/useDelayedRefresh.ts
new file mode 100644
index 0000000000..813acc0c94
--- /dev/null
+++ b/examples/default/src/utils/useDelayedRefresh.ts
@@ -0,0 +1,18 @@
+import { useState } from 'react';
+
+export function useDelayedRefresh() {
+ const [refreshing, setIsRefreshing] = useState(false);
+
+ const onRefresh = () => {
+ if (refreshing) {
+ return;
+ }
+
+ setIsRefreshing(true);
+ setTimeout(() => {
+ setIsRefreshing(false);
+ }, 1000);
+ };
+
+ return { refreshing, onRefresh };
+}
diff --git a/examples/default/yarn.lock b/examples/default/yarn.lock
index 9a695546a7..f036714d72 100644
--- a/examples/default/yarn.lock
+++ b/examples/default/yarn.lock
@@ -93,7 +93,7 @@
"@babel/helper-split-export-declaration" "^7.22.6"
semver "^6.3.1"
-"@babel/helper-create-class-features-plugin@^7.22.11":
+"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15":
version "7.22.15"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4"
integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==
@@ -133,6 +133,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98"
integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==
+"@babel/helper-environment-visitor@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
+ integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
+
"@babel/helper-function-name@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be"
@@ -162,6 +167,13 @@
dependencies:
"@babel/types" "^7.22.5"
+"@babel/helper-module-imports@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0"
+ integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
+ dependencies:
+ "@babel/types" "^7.22.15"
+
"@babel/helper-module-imports@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c"
@@ -180,6 +192,17 @@
"@babel/helper-split-export-declaration" "^7.22.6"
"@babel/helper-validator-identifier" "^7.22.5"
+"@babel/helper-module-transforms@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e"
+ integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-module-imports" "^7.22.15"
+ "@babel/helper-simple-access" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/helper-validator-identifier" "^7.22.20"
+
"@babel/helper-optimise-call-expression@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e"
@@ -246,6 +269,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193"
integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==
+"@babel/helper-validator-option@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040"
+ integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==
+
"@babel/helper-validator-option@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac"
@@ -741,6 +769,15 @@
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/helper-simple-access" "^7.22.5"
+"@babel/plugin-transform-modules-commonjs@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481"
+ integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.23.0"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-simple-access" "^7.22.5"
+
"@babel/plugin-transform-modules-systemjs@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496"
@@ -790,6 +827,13 @@
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
+"@babel/plugin-transform-object-assign@^7.16.7":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.22.5.tgz#290c1b9555dcea48bb2c29ad94237777600d04f9"
+ integrity sha512-iDhx9ARkXq4vhZ2CYOSnQXkmxkDgosLi3J8Z17mKz7LyzthtkdVchLD7WZ3aXeCuvJDOW3+1I5TpJmwIbF9MKQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-object-rest-spread@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1"
@@ -963,6 +1007,16 @@
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
+"@babel/plugin-transform-typescript@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127"
+ integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-create-class-features-plugin" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-typescript" "^7.22.5"
+
"@babel/plugin-transform-typescript@^7.22.5", "@babel/plugin-transform-typescript@^7.5.0":
version "7.22.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz#91e08ad1eb1028ecc62662a842e93ecfbf3c7234"
@@ -1121,6 +1175,17 @@
"@babel/plugin-transform-modules-commonjs" "^7.22.5"
"@babel/plugin-transform-typescript" "^7.22.5"
+"@babel/preset-typescript@^7.16.7":
+ version "7.23.2"
+ resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4"
+ integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-validator-option" "^7.22.15"
+ "@babel/plugin-syntax-jsx" "^7.22.5"
+ "@babel/plugin-transform-modules-commonjs" "^7.23.0"
+ "@babel/plugin-transform-typescript" "^7.22.15"
+
"@babel/register@^7.13.16":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.5.tgz#e4d8d0f615ea3233a27b5c6ada6750ee59559939"
@@ -1178,7 +1243,7 @@
"@babel/helper-validator-identifier" "^7.22.5"
to-fast-properties "^2.0.0"
-"@babel/types@^7.23.0":
+"@babel/types@^7.22.15", "@babel/types@^7.23.0":
version "7.23.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb"
integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==
@@ -1192,6 +1257,13 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
+"@egjs/hammerjs@^2.0.17":
+ version "2.0.17"
+ resolved "https://registry.yarnpkg.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124"
+ integrity sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==
+ dependencies:
+ "@types/hammerjs" "^2.0.36"
+
"@formatjs/ecma402-abstract@1.17.0":
version "1.17.0"
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.17.0.tgz#2ce191a3bde4c65c6684e03fa247062a4a294b9e"
@@ -2126,6 +2198,11 @@
prompts "^2.4.0"
semver "^6.3.0"
+"@react-native-community/slider@^4.4.3":
+ version "4.4.3"
+ resolved "https://registry.yarnpkg.com/@react-native-community/slider/-/slider-4.4.3.tgz#9b9dc639b88f5bfda72bd72a9dff55cbf9f777ed"
+ integrity sha512-WdjvGtqJfqcCiLwtbzie53Z/H6w6dIfRHhlW832D89ySAdE5DxLAsqRhDOG0eacuAxxEB+T9sGCkVMD0fa3aBg==
+
"@react-native/assets-registry@^0.72.0":
version "0.72.0"
resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.72.0.tgz#c82a76a1d86ec0c3907be76f7faf97a32bbed05d"
@@ -2779,6 +2856,11 @@
dependencies:
"@types/node" "*"
+"@types/hammerjs@^2.0.36":
+ version "2.0.43"
+ resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.43.tgz#8660dd1e0e5fd979395e2f999e670cdb9484d1e9"
+ integrity sha512-wqxfwHk83RS7+6OpytGdo5wqkqtvx+bGaIs1Rwm5NrtQHUfL4OgWs/5p0OipmjmT+fexePh37Ek+mqIpdNjQKA==
+
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
version "2.0.4"
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
@@ -2883,6 +2965,11 @@
dependencies:
"@types/yargs-parser" "*"
+"@yarnpkg/lockfile@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
+ integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
+
abort-controller@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
@@ -3010,6 +3097,11 @@ async@^3.2.2:
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
+at-least-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
babel-core@^7.0.0-bridge.0:
version "7.0.0-bridge.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
@@ -3264,6 +3356,15 @@ caf@^15.0.1:
resolved "https://registry.yarnpkg.com/caf/-/caf-15.0.1.tgz#28f1f17bd93dc4b5d95207ad07066eddf4768160"
integrity sha512-Xp/IK6vMwujxWZXra7djdYzPdPnEQKa7Mudu2wZgDQ3TJry1I0TgtjEgwZHpoBcMp68j4fb0/FZ1SJyMEgJrXQ==
+call-bind@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513"
+ integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==
+ dependencies:
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.1"
+ set-function-length "^1.1.1"
+
caller-callsite@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
@@ -3344,6 +3445,11 @@ ci-info@^3.2.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
+ci-info@^3.7.0:
+ version "3.9.0"
+ resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
+ integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
+
cjs-module-lexer@^1.0.0:
version "1.2.3"
resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107"
@@ -3658,6 +3764,15 @@ defaults@^1.0.3:
dependencies:
clone "^1.0.2"
+define-data-property@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3"
+ integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==
+ dependencies:
+ get-intrinsic "^1.2.1"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.0"
+
denodeify@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631"
@@ -4014,6 +4129,13 @@ find-up@^5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
+find-yarn-workspace-root@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd"
+ integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==
+ dependencies:
+ micromatch "^4.0.2"
+
flat@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
@@ -4057,6 +4179,16 @@ fs-extra@^8.1.0:
jsonfile "^4.0.0"
universalify "^0.1.0"
+fs-extra@^9.0.0:
+ version "9.1.0"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -4072,6 +4204,11 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
funpermaproxy@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/funpermaproxy/-/funpermaproxy-1.1.0.tgz#39cb0b8bea908051e4608d8a414f1d87b55bf557"
@@ -4087,6 +4224,16 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b"
+ integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==
+ dependencies:
+ function-bind "^1.1.2"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ hasown "^2.0.0"
+
get-package-type@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
@@ -4136,6 +4283,13 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
@@ -4151,6 +4305,23 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+has-property-descriptors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340"
+ integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==
+ dependencies:
+ get-intrinsic "^1.2.2"
+
+has-proto@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
+ integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
+
+has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@@ -4158,6 +4329,13 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
+hasown@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
+ integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
+ dependencies:
+ function-bind "^1.1.2"
+
hermes-estree@0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.12.0.tgz#8a289f9aee854854422345e6995a48613bac2ca8"
@@ -4189,6 +4367,13 @@ hermes-profile-transformer@^0.0.6:
dependencies:
source-map "^0.7.3"
+hoist-non-react-statics@^3.3.0:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
html-escaper@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
@@ -4322,6 +4507,11 @@ is-directory@^0.3.1:
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==
+is-docker@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
@@ -4374,6 +4564,18 @@ is-wsl@^1.1.0:
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==
+is-wsl@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+isarray@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
+ integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -4933,6 +5135,16 @@ json-schema-traverse@^1.0.0:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+json-stable-stringify@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz#43d39c7c8da34bfaf785a61a56808b0def9f747d"
+ integrity sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA==
+ dependencies:
+ call-bind "^1.0.5"
+ isarray "^2.0.5"
+ jsonify "^0.0.1"
+ object-keys "^1.1.1"
+
json5@^2.2.2, json5@^2.2.3:
version "2.2.3"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
@@ -4954,11 +5166,23 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
+jsonify@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
+ integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
+
kind-of@^6.0.2:
version "6.0.3"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+klaw-sync@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c"
+ integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+
kleur@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
@@ -5071,7 +5295,7 @@ lodash.uniqueid@^4.0.1:
resolved "https://registry.yarnpkg.com/lodash.uniqueid/-/lodash.uniqueid-4.0.1.tgz#3268f26a7c88e4f4b1758d679271814e31fa5b26"
integrity sha512-GQQWaIeGlL6DIIr06kj1j6sSmBxyNMwI8kaX9aKpHR/XsMTiaXDVPNPAkiboOTK9OJpTJF/dXT3xYoFQnj386Q==
-lodash@^4.17.11:
+lodash@^4.17.11, lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -5661,7 +5885,7 @@ metro@0.79.1:
ws "^7.5.1"
yargs "^17.6.2"
-micromatch@^4.0.4:
+micromatch@^4.0.2, micromatch@^4.0.4:
version "4.0.5"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
@@ -5927,6 +6151,11 @@ object-assign@^4.1.0, object-assign@^4.1.1:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
on-finished@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
@@ -5967,6 +6196,14 @@ open@^6.2.0:
dependencies:
is-wsl "^1.1.0"
+open@^7.4.2:
+ version "7.4.2"
+ resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
+ integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
+ dependencies:
+ is-docker "^2.0.0"
+ is-wsl "^2.1.1"
+
ora@^5.4.1:
version "5.4.1"
resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
@@ -5982,6 +6219,11 @@ ora@^5.4.1:
strip-ansi "^6.0.0"
wcwidth "^1.0.1"
+os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
+
p-limit@^2.0.0, p-limit@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
@@ -6045,6 +6287,27 @@ parseurl@~1.3.3:
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+patch-package@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61"
+ integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==
+ dependencies:
+ "@yarnpkg/lockfile" "^1.1.0"
+ chalk "^4.1.2"
+ ci-info "^3.7.0"
+ cross-spawn "^7.0.3"
+ find-yarn-workspace-root "^2.0.0"
+ fs-extra "^9.0.0"
+ json-stable-stringify "^1.0.2"
+ klaw-sync "^6.0.0"
+ minimist "^1.2.6"
+ open "^7.4.2"
+ rimraf "^2.6.3"
+ semver "^7.5.3"
+ slash "^2.0.0"
+ tmp "^0.0.33"
+ yaml "^2.2.2"
+
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
@@ -6230,7 +6493,7 @@ react-freeze@^1.0.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
-react-is@^16.13.0, react-is@^16.13.1:
+react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -6240,6 +6503,27 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+react-native-gesture-handler@^2.13.4:
+ version "2.13.4"
+ resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.13.4.tgz#6a99384330278c4488bcfc7f1814be3e0d7401fd"
+ integrity sha512-smpYOVbvWABpq2H+lmDnfOLCTH934aUPO1w2/pQXvm1j+M/vmGQmvgRDJOpXcks17HLtNNKXD6tcODf3aPqDfA==
+ dependencies:
+ "@egjs/hammerjs" "^2.0.17"
+ hoist-non-react-statics "^3.3.0"
+ invariant "^2.2.4"
+ lodash "^4.17.21"
+ prop-types "^15.7.2"
+
+react-native-reanimated@^3.5.4:
+ version "3.5.4"
+ resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.5.4.tgz#a6c2b0c43b6dad246f5d276213974afedb8e3fc7"
+ integrity sha512-8we9LLDO1o4Oj9/DICeEJ2K1tjfqkJagqQUglxeUAkol/HcEJ6PGxIrpBcNryLqCDYEcu6FZWld/FzizBIw6bg==
+ dependencies:
+ "@babel/plugin-transform-object-assign" "^7.16.7"
+ "@babel/preset-typescript" "^7.16.7"
+ convert-source-map "^2.0.0"
+ invariant "^2.2.4"
+
react-native-safe-area-context@^4.5.3:
version "4.7.1"
resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.7.1.tgz#b7be2d68dee909717cfa439bb5c7966042d231e8"
@@ -6484,6 +6768,13 @@ retry@^0.12.0:
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
+rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
@@ -6604,6 +6895,16 @@ set-blocking@^2.0.0:
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
+set-function-length@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed"
+ integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==
+ dependencies:
+ define-data-property "^1.1.1"
+ get-intrinsic "^1.2.1"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.0"
+
setprototypeof@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
@@ -6650,6 +6951,11 @@ sisteransi@^1.0.5:
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
+slash@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
+ integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
+
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
@@ -6916,6 +7222,13 @@ tinycolor2@^1.4.2:
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e"
integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
tmpl@1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
@@ -7254,6 +7567,11 @@ yaml@^2.2.1:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b"
integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==
+yaml@^2.2.2:
+ version "2.3.4"
+ resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2"
+ integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==
+
yargs-parser@^18.1.2:
version "18.1.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
diff --git a/ios/RNInstabug/InstabugReactBridge.h b/ios/RNInstabug/InstabugReactBridge.h
index cc90bb86c1..24baf146a3 100644
--- a/ios/RNInstabug/InstabugReactBridge.h
+++ b/ios/RNInstabug/InstabugReactBridge.h
@@ -27,7 +27,7 @@
- (void)setEnabled:(BOOL)isEnabled;
-- (void)init:(NSString *)token invocationEvents:(NSArray *)invocationEventsArray debugLogsLevel:(IBGSDKDebugLogsLevel)sdkDebugLogsLevel;
+- (void)init:(NSString *)token invocationEvents:(NSArray *)invocationEventsArray debugLogsLevel:(IBGSDKDebugLogsLevel)sdkDebugLogsLevel codePushVersion:(NSString *)codePushVersion;
- (void)setUserData:(NSString *)userData;
diff --git a/ios/RNInstabug/InstabugReactBridge.m b/ios/RNInstabug/InstabugReactBridge.m
index bf97d0ff99..2483caa9f7 100644
--- a/ios/RNInstabug/InstabugReactBridge.m
+++ b/ios/RNInstabug/InstabugReactBridge.m
@@ -37,14 +37,22 @@ - (dispatch_queue_t)methodQueue {
Instabug.enabled = isEnabled;
}
-RCT_EXPORT_METHOD(init:(NSString *)token invocationEvents:(NSArray*)invocationEventsArray debugLogsLevel:(IBGSDKDebugLogsLevel)sdkDebugLogsLevel) {
+RCT_EXPORT_METHOD(init:(NSString *)token
+ invocationEvents:(NSArray *)invocationEventsArray
+ debugLogsLevel:(IBGSDKDebugLogsLevel)sdkDebugLogsLevel
+ codePushVersion:(NSString *)codePushVersion) {
IBGInvocationEvent invocationEvents = 0;
for (NSNumber *boxedValue in invocationEventsArray) {
invocationEvents |= [boxedValue intValue];
}
- [RNInstabug initWithToken:token invocationEvents:invocationEvents debugLogsLevel:sdkDebugLogsLevel];
+ [Instabug setCodePushVersion:codePushVersion];
+ NSLog(@“[Instabug] CodePush: %@“, codePushVersion);
+
+ [RNInstabug initWithToken:token
+ invocationEvents:invocationEvents
+ debugLogsLevel:sdkDebugLogsLevel];
}
RCT_EXPORT_METHOD(setReproStepsConfig:(IBGUserStepsMode)bugMode :(IBGUserStepsMode)crashMode:(IBGUserStepsMode)sessionReplayMode) {
diff --git a/ios/RNInstabug/RNInstabug.h b/ios/RNInstabug/RNInstabug.h
index b18b4d41fa..e42b38844b 100644
--- a/ios/RNInstabug/RNInstabug.h
+++ b/ios/RNInstabug/RNInstabug.h
@@ -8,6 +8,17 @@
+ (void)initWithToken:(NSString *)token invocationEvents:(IBGInvocationEvent)invocationEvents debugLogsLevel:(IBGSDKDebugLogsLevel)debugLogsLevel;
+ (void)initWithToken:(NSString *)token invocationEvents:(IBGInvocationEvent)invocationEvents;
+/**
+ @brief Set codePush version before starting the SDK.
+
+ @discussion Sets Code Push version to be used for all reports.
+ should be called from `-[UIApplicationDelegate application:didFinishLaunchingWithOptions:]`
+ and before `startWithToken`.
+
+ @param codePushVersion the Code Push version to be used for all reports.
+ */
++ (void)setCodePushVersion:(NSString *)codePushVersion;
+
@end
#endif /* RNInstabug_h */
diff --git a/ios/RNInstabug/RNInstabug.m b/ios/RNInstabug/RNInstabug.m
index 209670a5ee..378835f72d 100644
--- a/ios/RNInstabug/RNInstabug.m
+++ b/ios/RNInstabug/RNInstabug.m
@@ -14,11 +14,6 @@ + (void)reset {
}
+ (void)initWithToken:(NSString *)token invocationEvents:(IBGInvocationEvent)invocationEvents {
- // Initialization is performed only once to avoid unexpected behavior.
- if (didInit) {
- NSLog(@"IBG-RN: Skipped iOS SDK re-initialization");
- return;
- }
didInit = YES;
@@ -49,6 +44,10 @@ + (void)initWithToken:(NSString *)token
[self initWithToken:token invocationEvents:invocationEvents];
}
++ (void)setCodePushVersion:(NSString *)codePushVersion {
+ [Instabug setCodePushVersion:codePushVersion];
+}
+
// Note: This function is used to bridge IBGNSLog with RCTLogFunction.
// This log function should not be used externally and is only an implementation detail.
void RNIBGLog(IBGLogLevel logLevel, NSString *format, ...) {
diff --git a/ios/native.rb b/ios/native.rb
index 0b6e557526..ae1809f4d1 100644
--- a/ios/native.rb
+++ b/ios/native.rb
@@ -1,4 +1,4 @@
-$instabug = { :version => '12.4.0' }
+$instabug = { :version => '12.5.0' }
def use_instabug! (spec = nil)
version = $instabug[:version]
diff --git a/package.json b/package.json
index 75fa384939..57d91b63cb 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "instabug-reactnative",
"description": "React Native plugin for integrating the Instabug SDK",
- "version": "12.4.0",
+ "version": "12.4.3",
"author": "Instabug (https://instabug.com)",
"repository": "github:Instabug/Instabug-React-Native",
"homepage": "https://www.instabug.com/platforms/react-native",
diff --git a/src/models/InstabugConfig.ts b/src/models/InstabugConfig.ts
index 36770c94a0..0eda7a3187 100644
--- a/src/models/InstabugConfig.ts
+++ b/src/models/InstabugConfig.ts
@@ -13,4 +13,9 @@ export interface InstabugConfig {
* An optional LogLevel to indicate the verbosity of SDK logs. Default is Error.
*/
debugLogsLevel?: LogLevel;
+
+ /**
+ * An optional code push version to be used for all reports.
+ */
+ codePushVersion?: string;
}
diff --git a/src/modules/Instabug.ts b/src/modules/Instabug.ts
index 0d1c4092a4..cf0debc9a9 100644
--- a/src/modules/Instabug.ts
+++ b/src/modules/Instabug.ts
@@ -34,6 +34,23 @@ export const setEnabled = (isEnabled: boolean) => {
NativeInstabug.setEnabled(isEnabled);
};
+/**
+ * Reports that the screen name been changed (Current View field on dashboard).
+ * only for android.
+ *
+ * Normally reportScreenChange handles taking a screenshot for reproduction
+ * steps and the Current View field on the dashboard. But we've faced issues
+ * in android where we needed to separate them, that's why we only call it
+ * for android.
+ *
+ * @param screenName string containing the screen name
+ */
+function reportCurrentViewForAndroid(screenName: string | null) {
+ if (Platform.OS === 'android' && screenName != null) {
+ NativeInstabug.reportCurrentViewChange(screenName);
+ }
+}
+
/**
* Initializes the SDK.
* This is the main SDK method that does all the magic. This is the only
@@ -50,11 +67,13 @@ export const init = (config: InstabugConfig) => {
config.token,
config.invocationEvents,
config.debugLogsLevel ?? LogLevel.error,
+ config.codePushVersion,
);
_isFirstScreen = true;
_currentScreen = firstScreen;
+ reportCurrentViewForAndroid(firstScreen);
setTimeout(() => {
if (_currentScreen === firstScreen) {
NativeInstabug.reportScreenChange(firstScreen);
@@ -458,6 +477,7 @@ export const onNavigationStateChange = (
const prevScreen = InstabugUtils.getActiveRouteName(prevState);
if (prevScreen !== currentScreen) {
+ reportCurrentViewForAndroid(currentScreen);
if (_currentScreen != null && _currentScreen !== firstScreen) {
NativeInstabug.reportScreenChange(_currentScreen);
_currentScreen = null;
@@ -478,6 +498,7 @@ export const onStateChange = (state?: NavigationStateV5) => {
}
const currentScreen = InstabugUtils.getFullRoute(state);
+ reportCurrentViewForAndroid(currentScreen);
if (_currentScreen !== null && _currentScreen !== firstScreen) {
NativeInstabug.reportScreenChange(_currentScreen);
_currentScreen = null;
diff --git a/src/native/NativeInstabug.ts b/src/native/NativeInstabug.ts
index 23d41e3426..b8b1d912f3 100644
--- a/src/native/NativeInstabug.ts
+++ b/src/native/NativeInstabug.ts
@@ -19,7 +19,12 @@ export interface InstabugNativeModule extends NativeModule {
// Essential APIs //
setEnabled(isEnabled: boolean): void;
- init(token: string, invocationEvents: InvocationEvent[], debugLogsLevel: LogLevel): void;
+ init(
+ token: string,
+ invocationEvents: InvocationEvent[],
+ debugLogsLevel: LogLevel,
+ codePushVersion?: string,
+ ): void;
show(): void;
// Misc APIs //
@@ -44,6 +49,7 @@ export interface InstabugNativeModule extends NativeModule {
): void;
setTrackUserSteps(isEnabled: boolean): void;
reportScreenChange(firstScreen: string): void;
+ reportCurrentViewChange(screenName: string): void;
addPrivateView(nativeTag: number | null): void;
removePrivateView(nativeTag: number | null): void;
diff --git a/test/mocks/mockInstabug.ts b/test/mocks/mockInstabug.ts
index f7d975eee1..6353cf64c7 100644
--- a/test/mocks/mockInstabug.ts
+++ b/test/mocks/mockInstabug.ts
@@ -47,6 +47,7 @@ const mockInstabug: InstabugNativeModule = {
show: jest.fn(),
setPreSendingHandler: jest.fn(),
reportScreenChange: jest.fn(),
+ reportCurrentViewChange: jest.fn(),
addExperiments: jest.fn(),
removeExperiments: jest.fn(),
clearAllExperiments: jest.fn(),
diff --git a/test/modules/Instabug.spec.ts b/test/modules/Instabug.spec.ts
index 2d928253a8..c8019c1ea8 100644
--- a/test/modules/Instabug.spec.ts
+++ b/test/modules/Instabug.spec.ts
@@ -109,6 +109,33 @@ describe('Instabug Module', () => {
});
});
+ // eslint-disable-next-line jest/no-disabled-tests
+ it.skip('onNavigationStateChange should call the native method reportCurrentViewChange on Android Platform', async () => {
+ Platform.OS = 'android';
+ InstabugUtils.getActiveRouteName = jest.fn().mockImplementation((screenName) => screenName);
+
+ // @ts-ignore
+ Instabug.onNavigationStateChange('home', 'settings');
+
+ await waitForExpect(() => {
+ expect(NativeInstabug.reportCurrentViewChange).toBeCalledTimes(1);
+ expect(NativeInstabug.reportCurrentViewChange).toBeCalledWith('settings');
+ });
+ });
+
+ // eslint-disable-next-line jest/no-disabled-tests
+ it.skip('onNavigationStateChange should not call the native method reportCurrentViewChange on iOS Platform', async () => {
+ Platform.OS = 'ios';
+ InstabugUtils.getActiveRouteName = jest.fn().mockImplementation((screenName) => screenName);
+
+ // @ts-ignore
+ Instabug.onNavigationStateChange('home', 'settings');
+
+ await waitForExpect(() => {
+ expect(NativeInstabug.reportCurrentViewChange).not.toBeCalled();
+ });
+ });
+
it('onNavigationStateChange should not call the native method reportScreenChange if screen is the same', (done) => {
InstabugUtils.getActiveRouteName = jest.fn().mockImplementation((screenName) => screenName);
@@ -122,7 +149,20 @@ describe('Instabug Module', () => {
}, 1500);
});
- it('onNavigationStateChange should call the native method reportScreenChange immediatly if _currentScreen is set', async () => {
+ it('onNavigationStateChange should not call the native method reportCurrentViewChange if screen is the same', (done) => {
+ InstabugUtils.getActiveRouteName = jest.fn().mockImplementation((screenName) => screenName);
+
+ // @ts-ignore
+ Instabug.onNavigationStateChange('home', 'home');
+
+ // Wait for 1.5s as reportScreenChange is delayed by 1s
+ setTimeout(() => {
+ expect(NativeInstabug.reportCurrentViewChange).not.toBeCalled();
+ done();
+ }, 1500);
+ });
+
+ it('onNavigationStateChange should call the native method reportScreenChange immediately if _currentScreen is set', async () => {
InstabugUtils.getActiveRouteName = jest.fn().mockImplementation((screenName) => screenName);
// sets _currentScreen and waits for 1s as _currentScreen is null
@@ -150,6 +190,31 @@ describe('Instabug Module', () => {
});
});
+ // eslint-disable-next-line jest/no-disabled-tests
+ it.skip('onStateChange should call the native method reportCurrentViewChange on Android Platform', async () => {
+ Platform.OS = 'android';
+ const state = { routes: [{ name: 'ScreenName' }], index: 0 };
+ // @ts-ignore
+ Instabug.onStateChange(state);
+
+ await waitForExpect(() => {
+ expect(NativeInstabug.reportCurrentViewChange).toBeCalledTimes(1);
+ expect(NativeInstabug.reportCurrentViewChange).toBeCalledWith('ScreenName');
+ });
+ });
+
+ // eslint-disable-next-line jest/no-disabled-tests
+ it.skip('onStateChange should not call the native method reportCurrentViewChange on iOS Platform', async () => {
+ Platform.OS = 'ios';
+ const state = { routes: [{ name: 'ScreenName' }], index: 0 };
+ // @ts-ignore
+ Instabug.onStateChange(state);
+
+ await waitForExpect(() => {
+ expect(NativeInstabug.reportCurrentViewChange).not.toBeCalled();
+ });
+ });
+
it('onStateChange should call the native method reportScreenChange immediately if _currentScreen is set', async () => {
// sets _currentScreen and waits for 1s as _currentScreen is null
const state = { routes: [{ name: 'ScreenName' }], index: 0 };
@@ -172,6 +237,7 @@ describe('Instabug Module', () => {
token: 'some-token',
invocationEvents: [InvocationEvent.floatingButton, InvocationEvent.shake],
debugLogsLevel: LogLevel.debug,
+ codePushVersion: '1.1.0',
};
Instabug.init(instabugConfig);
@@ -180,6 +246,7 @@ describe('Instabug Module', () => {
instabugConfig.token,
instabugConfig.invocationEvents,
instabugConfig.debugLogsLevel,
+ instabugConfig.codePushVersion,
);
});
@@ -195,6 +262,31 @@ describe('Instabug Module', () => {
});
});
+ it('init should call reportCurrentViewChange on Android Platform', async () => {
+ Platform.OS = 'android';
+ Instabug.init({
+ token: 'some-token',
+ invocationEvents: [InvocationEvent.none],
+ });
+
+ await waitForExpect(() => {
+ expect(NativeInstabug.reportCurrentViewChange).toBeCalledTimes(1);
+ expect(NativeInstabug.reportCurrentViewChange).toBeCalledWith('Initial Screen');
+ });
+ });
+
+ it('init should not call reportCurrentViewChange on ios Platform', async () => {
+ Platform.OS = 'ios';
+ Instabug.init({
+ token: 'some-token',
+ invocationEvents: [InvocationEvent.none],
+ });
+
+ await waitForExpect(() => {
+ expect(NativeInstabug.reportCurrentViewChange).not.toBeCalled();
+ });
+ });
+
it('should call the native method setUserData', () => {
const userData = 'userData';
Instabug.setUserData(userData);