react-native 0.84.0-nightly-20251216-c16eb23a1 → 0.84.0-nightly-20251218-c7f433a41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/Libraries/Animated/nodes/AnimatedObject.js +9 -4
  2. package/Libraries/Core/ReactNativeVersion.js +1 -1
  3. package/Libraries/Settings/RCTSettingsManager.mm +1 -1
  4. package/Libraries/TypeSafety/RCTTypedModuleConstants.h +36 -1
  5. package/React/Base/RCTVersion.m +1 -1
  6. package/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm +1 -1
  7. package/React/CoreModules/RCTAppState.mm +1 -1
  8. package/React/CoreModules/RCTStatusBarManager.mm +1 -1
  9. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +52 -16
  10. package/ReactAndroid/gradle.properties +1 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +2 -2
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +0 -2
  13. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +11 -2
  14. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/ProgressRequestBody.kt +2 -17
  15. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  16. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +11 -4
  17. package/ReactAndroid/src/main/res/views/uimanager/values-ne/strings.xml +1 -0
  18. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  19. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +22 -0
  20. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +38 -0
  21. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +15 -0
  22. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +2 -2
  23. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +0 -4
  24. package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -0
  25. package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +24 -3
  26. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +76 -13
  27. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +74 -64
  28. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +17 -13
  29. package/ReactCommon/react/networking/NetworkReporter.cpp +7 -0
  30. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +113 -0
  31. package/ReactCommon/react/renderer/animationbackend/AnimatedProps.h +64 -1
  32. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h +29 -0
  33. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +35 -0
  34. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +2 -1
  35. package/package.json +8 -8
  36. package/scripts/cocoapods/new_architecture.rb +5 -1
  37. package/scripts/react_native_pods.rb +8 -0
  38. package/src/private/featureflags/ReactNativeFeatureFlags.js +2 -2
@@ -53,6 +53,7 @@ Pod::Spec.new do |s|
53
53
  s.dependency "React-Core"
54
54
  s.dependency "React-cxxreact"
55
55
  s.dependency "React-jsi"
56
+ s.dependency "RCTTypeSafety"
56
57
  add_dependency(s, "React-RCTFBReactNativeSpec")
57
58
  add_dependency(s, "ReactCommon", :subspec => "turbomodule/core", :additional_framework_paths => ["react/nativemodule/core"])
58
59
  add_dependency(s, "React-NativeModulesApple")
@@ -9,6 +9,7 @@
9
9
 
10
10
  package com.facebook.fbreact.specs;
11
11
 
12
+ import com.facebook.proguard.annotations.DoNotStrip;
12
13
  import com.facebook.react.bridge.Callback;
13
14
  import com.facebook.react.bridge.Promise;
14
15
  import com.facebook.react.bridge.ReactApplicationContext;
@@ -52,13 +53,14 @@ public abstract class NativeSampleTurboModuleSpec extends ReactContextBaseJavaMo
52
53
  mEventEmitterCallback.invoke("onChange", value);
53
54
  }
54
55
 
55
- protected void emitOnSubmit(ReadableArray value) {
56
+ protected final void emitOnSubmit(ReadableArray value) {
56
57
  mEventEmitterCallback.invoke("onSubmit", value);
57
58
  }
58
59
 
59
60
  protected abstract Map<String, Object> getTypedExportedConstants();
60
61
 
61
62
  @Override
63
+ @DoNotStrip
62
64
  public final @Nullable Map<String, Object> getConstants() {
63
65
  Map<String, Object> constants = getTypedExportedConstants();
64
66
  if (ReactBuildConfig.DEBUG || ReactBuildConfig.IS_INTERNAL_BUILD) {
@@ -70,78 +72,97 @@ public abstract class NativeSampleTurboModuleSpec extends ReactContextBaseJavaMo
70
72
  undeclaredConstants.removeAll(optionalFlowConstants);
71
73
  if (!undeclaredConstants.isEmpty()) {
72
74
  throw new IllegalStateException(
73
- "Native Module Flow doesn't declare constants: " + undeclaredConstants);
75
+ String.format("Native Module Flow doesn't declare constants: %s", undeclaredConstants));
74
76
  }
75
77
  undeclaredConstants = obligatoryFlowConstants;
76
78
  undeclaredConstants.removeAll(constants.keySet());
77
79
  if (!undeclaredConstants.isEmpty()) {
78
80
  throw new IllegalStateException(
79
- "Native Module doesn't fill in constants: " + undeclaredConstants);
81
+ String.format("Native Module doesn't fill in constants: %s", undeclaredConstants));
80
82
  }
81
83
  }
82
84
  return constants;
83
85
  }
84
86
 
85
87
  @ReactMethod
88
+ @DoNotStrip
86
89
  public abstract void voidFunc();
87
90
 
88
91
  @ReactMethod(isBlockingSynchronousMethod = true)
92
+ @DoNotStrip
89
93
  public abstract boolean getBool(boolean arg);
90
94
 
91
95
  @ReactMethod(isBlockingSynchronousMethod = true)
96
+ @DoNotStrip
92
97
  public double getEnum(double arg) {
93
98
  return 0;
94
99
  }
95
100
 
96
101
  @ReactMethod(isBlockingSynchronousMethod = true)
102
+ @DoNotStrip
97
103
  public abstract double getNumber(double arg);
98
104
 
99
105
  @ReactMethod(isBlockingSynchronousMethod = true)
106
+ @DoNotStrip
100
107
  public abstract String getString(String arg);
101
108
 
102
109
  @ReactMethod(isBlockingSynchronousMethod = true)
110
+ @DoNotStrip
103
111
  public abstract WritableArray getArray(ReadableArray arg);
104
112
 
105
113
  @ReactMethod(isBlockingSynchronousMethod = true)
114
+ @DoNotStrip
106
115
  public abstract WritableMap getObject(ReadableMap arg);
107
116
 
108
117
  @ReactMethod(isBlockingSynchronousMethod = true)
118
+ @DoNotStrip
109
119
  public abstract WritableMap getUnsafeObject(ReadableMap arg);
110
120
 
111
121
  @ReactMethod(isBlockingSynchronousMethod = true)
122
+ @DoNotStrip
112
123
  public abstract double getRootTag(double arg);
113
124
 
114
125
  @ReactMethod(isBlockingSynchronousMethod = true)
126
+ @DoNotStrip
115
127
  public abstract WritableMap getValue(double x, String y, ReadableMap z);
116
128
 
117
129
  @ReactMethod
130
+ @DoNotStrip
118
131
  public abstract void getValueWithCallback(Callback callback);
119
132
 
120
133
  @ReactMethod
134
+ @DoNotStrip
121
135
  public abstract void getValueWithPromise(boolean error, Promise promise);
122
136
 
123
137
  @ReactMethod
138
+ @DoNotStrip
124
139
  public void voidFuncThrows() {}
125
140
 
126
141
  @ReactMethod(isBlockingSynchronousMethod = true)
142
+ @DoNotStrip
127
143
  public WritableMap getObjectThrows(ReadableMap arg) {
128
144
  return null;
129
145
  }
130
146
 
131
147
  @ReactMethod
148
+ @DoNotStrip
132
149
  public void promiseThrows(Promise promise) {}
133
150
 
134
151
  @ReactMethod
152
+ @DoNotStrip
135
153
  public void voidFuncAssert() {}
136
154
 
137
155
  @ReactMethod(isBlockingSynchronousMethod = true)
156
+ @DoNotStrip
138
157
  public WritableMap getObjectAssert(ReadableMap arg) {
139
158
  return null;
140
159
  }
141
160
 
142
161
  @ReactMethod
162
+ @DoNotStrip
143
163
  public void promiseAssert(Promise promise) {}
144
164
 
145
165
  @ReactMethod
166
+ @DoNotStrip
146
167
  public void getImageUrl(Promise promise) {}
147
168
  }
@@ -9,17 +9,80 @@
9
9
 
10
10
  #import <vector>
11
11
 
12
- #import <Foundation/Foundation.h>
12
+ #ifndef __cplusplus
13
+ #error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
14
+ #endif
13
15
 
16
+ #import <Foundation/Foundation.h>
17
+ #import <RCTRequired/RCTRequired.h>
18
+ #import <RCTTypeSafety/RCTConvertHelpers.h>
19
+ #import <RCTTypeSafety/RCTTypedModuleConstants.h>
14
20
  #import <React/RCTBridgeModule.h>
15
-
16
21
  #import <ReactCommon/RCTTurboModule.h>
17
22
 
18
23
  NS_ASSUME_NONNULL_BEGIN
19
24
 
20
- /**
21
- * The ObjC protocol based on the JS Flow type for SampleTurboModule.
22
- */
25
+ namespace JS::NativeSampleTurboModule {
26
+ struct Constants {
27
+ struct Builder {
28
+ using ResultT = Constants;
29
+
30
+ struct Input {
31
+ RCTRequired<bool> const1;
32
+ RCTRequired<double> const2;
33
+ RCTRequired<NSString *> const3;
34
+ };
35
+
36
+ /** Initialize with a set of values */
37
+ Builder(const Input i);
38
+ /** Initialize with an existing Constants */
39
+ Builder(Constants i);
40
+ /** Builds the object. Generally used only by the infrastructure. */
41
+ NSDictionary *buildUnsafeRawValue() const
42
+ {
43
+ return _factory();
44
+ };
45
+
46
+ private:
47
+ NSDictionary * (^_factory)(void);
48
+ };
49
+
50
+ static Constants fromUnsafeRawValue(NSDictionary *const v)
51
+ {
52
+ return {v};
53
+ }
54
+ NSDictionary *unsafeRawValue() const
55
+ {
56
+ return _v;
57
+ }
58
+
59
+ private:
60
+ Constants(NSDictionary *const v) : _v(v) {}
61
+ NSDictionary *_v;
62
+ };
63
+
64
+ } // namespace JS::NativeSampleTurboModule
65
+
66
+ inline JS::NativeSampleTurboModule::Constants::Builder::Builder(const Input i)
67
+ : _factory(^{
68
+ NSMutableDictionary *d = [NSMutableDictionary new];
69
+ auto const1 = i.const1.get();
70
+ d[@"const1"] = @(const1);
71
+ auto const2 = i.const2.get();
72
+ d[@"const2"] = @(const2);
73
+ auto const3 = i.const3.get();
74
+ d[@"const3"] = const3;
75
+ return d;
76
+ })
77
+ {
78
+ }
79
+ inline JS::NativeSampleTurboModule::Constants::Builder::Builder(Constants i)
80
+ : _factory(^{
81
+ return i.unsafeRawValue();
82
+ })
83
+ {
84
+ }
85
+
23
86
  @protocol NativeSampleTurboModuleSpec <RCTBridgeModule, RCTTurboModule>
24
87
 
25
88
  - (void)voidFunc;
@@ -40,8 +103,9 @@ NS_ASSUME_NONNULL_BEGIN
40
103
  - (void)voidFuncAssert;
41
104
  - (NSDictionary *)getObjectAssert:(NSDictionary *)arg;
42
105
  - (void)promiseAssert:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject;
43
- - (NSDictionary *)constantsToExport;
44
- - (NSDictionary *)getConstants;
106
+ - (void)getImageUrl:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject;
107
+ - (facebook::react::ModuleConstants<JS::NativeSampleTurboModule::Constants>)constantsToExport;
108
+ - (facebook::react::ModuleConstants<JS::NativeSampleTurboModule::Constants>)getConstants;
45
109
 
46
110
  @end
47
111
 
@@ -49,23 +113,22 @@ NS_ASSUME_NONNULL_BEGIN
49
113
  @protected
50
114
  facebook::react::EventEmitterCallback _eventEmitterCallback;
51
115
  }
52
- - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *_Nonnull)eventEmitterCallbackWrapper;
116
+ - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper;
117
+
53
118
  - (void)emitOnPress;
54
- - (void)emitOnClick:(NSString *)value;
119
+ - (void)emitOnClick:(NSString *_Nonnull)value;
55
120
  - (void)emitOnChange:(NSDictionary *)value;
56
- - (void)emitOnSubmit:(NSArray *)value;
121
+ - (void)emitOnSubmit:(NSArray<id<NSObject>> *)value;
57
122
  @end
58
123
 
59
124
  namespace facebook::react {
60
-
61
125
  /**
62
- * The iOS TurboModule impl specific to SampleTurboModule.
126
+ * ObjC++ class for module 'NativeSampleTurboModule'
63
127
  */
64
128
  class JSI_EXPORT NativeSampleTurboModuleSpecJSI : public ObjCTurboModule {
65
129
  public:
66
130
  NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams &params);
67
131
  };
68
-
69
132
  } // namespace facebook::react
70
133
 
71
134
  NS_ASSUME_NONNULL_END
@@ -7,6 +7,30 @@
7
7
 
8
8
  #import "RCTNativeSampleTurboModuleSpec.h"
9
9
 
10
+ @implementation NativeSampleTurboModuleSpecBase
11
+ - (void)emitOnPress
12
+ {
13
+ _eventEmitterCallback("onPress", nil);
14
+ }
15
+ - (void)emitOnClick:(NSString *_Nonnull)value
16
+ {
17
+ _eventEmitterCallback("onClick", value);
18
+ }
19
+ - (void)emitOnChange:(NSDictionary *)value
20
+ {
21
+ _eventEmitterCallback("onChange", value);
22
+ }
23
+ - (void)emitOnSubmit:(NSArray<id<NSObject>> *)value
24
+ {
25
+ _eventEmitterCallback("onSubmit", value);
26
+ }
27
+
28
+ - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper
29
+ {
30
+ _eventEmitterCallback = std::move(eventEmitterCallbackWrapper->_eventEmitterCallback);
31
+ }
32
+ @end
33
+
10
34
  namespace facebook::react {
11
35
 
12
36
  static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc(
@@ -190,6 +214,16 @@ static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_promis
190
214
  .invokeObjCMethod(rt, PromiseKind, "promiseAssert", @selector(promiseAssert:reject:), args, count);
191
215
  }
192
216
 
217
+ static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getImageUrl(
218
+ facebook::jsi::Runtime &rt,
219
+ TurboModule &turboModule,
220
+ const facebook::jsi::Value *args,
221
+ size_t count)
222
+ {
223
+ return static_cast<ObjCTurboModule &>(turboModule)
224
+ .invokeObjCMethod(rt, PromiseKind, "getImageUrl", @selector(getImageUrl:reject:), args, count);
225
+ }
226
+
193
227
  static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getConstants(
194
228
  facebook::jsi::Runtime &rt,
195
229
  TurboModule &turboModule,
@@ -203,44 +237,48 @@ static facebook::jsi::Value __hostFunction_NativeSampleTurboModuleSpecJSI_getCon
203
237
  NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboModule::InitParams &params)
204
238
  : ObjCTurboModule(params)
205
239
  {
206
- methodMap_["voidFunc"] =
207
- MethodMetadata{.argCount = 0, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc};
208
- methodMap_["getBool"] =
209
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getBool};
210
- methodMap_["getEnum"] =
211
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getEnum};
212
- methodMap_["getNumber"] =
213
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getNumber};
214
- methodMap_["getString"] =
215
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getString};
216
- methodMap_["getArray"] =
217
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getArray};
218
- methodMap_["getObject"] =
219
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getObject};
220
- methodMap_["getUnsafeObject"] =
221
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getUnsafeObject};
222
- methodMap_["getRootTag"] =
223
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getRootTag};
224
- methodMap_["getValue"] =
225
- MethodMetadata{.argCount = 3, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getValue};
240
+ methodMap_["voidFunc"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFunc};
241
+
242
+ methodMap_["getBool"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getBool};
243
+
244
+ methodMap_["getEnum"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getEnum};
245
+
246
+ methodMap_["getNumber"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getNumber};
247
+
248
+ methodMap_["getString"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getString};
249
+
250
+ methodMap_["getArray"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getArray};
251
+
252
+ methodMap_["getObject"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getObject};
253
+
254
+ methodMap_["getUnsafeObject"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getUnsafeObject};
255
+
256
+ methodMap_["getRootTag"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getRootTag};
257
+
258
+ methodMap_["getValue"] = MethodMetadata{3, __hostFunction_NativeSampleTurboModuleSpecJSI_getValue};
259
+
226
260
  methodMap_["getValueWithCallback"] =
227
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getValueWithCallback};
261
+ MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getValueWithCallback};
262
+
228
263
  methodMap_["getValueWithPromise"] =
229
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getValueWithPromise};
230
- methodMap_["voidFuncThrows"] =
231
- MethodMetadata{.argCount = 0, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_voidFuncThrows};
232
- methodMap_["getObjectThrows"] =
233
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getObjectThrows};
234
- methodMap_["promiseThrows"] =
235
- MethodMetadata{.argCount = 0, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_promiseThrows};
236
- methodMap_["voidFuncAssert"] =
237
- MethodMetadata{.argCount = 0, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_voidFuncAssert};
238
- methodMap_["getObjectAssert"] =
239
- MethodMetadata{.argCount = 1, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getObjectAssert};
240
- methodMap_["promiseAssert"] =
241
- MethodMetadata{.argCount = 0, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_promiseAssert};
242
- methodMap_["getConstants"] =
243
- MethodMetadata{.argCount = 0, .invoker = __hostFunction_NativeSampleTurboModuleSpecJSI_getConstants};
264
+ MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getValueWithPromise};
265
+
266
+ methodMap_["voidFuncThrows"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFuncThrows};
267
+
268
+ methodMap_["getObjectThrows"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getObjectThrows};
269
+
270
+ methodMap_["promiseThrows"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_promiseThrows};
271
+
272
+ methodMap_["voidFuncAssert"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_voidFuncAssert};
273
+
274
+ methodMap_["getObjectAssert"] = MethodMetadata{1, __hostFunction_NativeSampleTurboModuleSpecJSI_getObjectAssert};
275
+
276
+ methodMap_["promiseAssert"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_promiseAssert};
277
+
278
+ methodMap_["getImageUrl"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_getImageUrl};
279
+
280
+ methodMap_["getConstants"] = MethodMetadata{0, __hostFunction_NativeSampleTurboModuleSpecJSI_getConstants};
281
+
244
282
  eventEmitterMap_["onPress"] = std::make_shared<AsyncEventEmitter<id>>();
245
283
  eventEmitterMap_["onClick"] = std::make_shared<AsyncEventEmitter<id>>();
246
284
  eventEmitterMap_["onChange"] = std::make_shared<AsyncEventEmitter<id>>();
@@ -249,32 +287,4 @@ NativeSampleTurboModuleSpecJSI::NativeSampleTurboModuleSpecJSI(const ObjCTurboMo
249
287
  static_cast<AsyncEventEmitter<id> &>(*eventEmitterMap_[name]).emit(value);
250
288
  });
251
289
  }
252
-
253
290
  } // namespace facebook::react
254
-
255
- @implementation NativeSampleTurboModuleSpecBase
256
- - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *_Nonnull)eventEmitterCallbackWrapper
257
- {
258
- _eventEmitterCallback = std::move(eventEmitterCallbackWrapper->_eventEmitterCallback);
259
- }
260
-
261
- - (void)emitOnPress
262
- {
263
- _eventEmitterCallback("onPress", nil);
264
- }
265
-
266
- - (void)emitOnClick:(NSString *)value
267
- {
268
- _eventEmitterCallback("onClick", value);
269
- }
270
-
271
- - (void)emitOnChange:(NSDictionary *)value
272
- {
273
- _eventEmitterCallback("onChange", value);
274
- }
275
-
276
- - (void)emitOnSubmit:(NSArray *)value
277
- {
278
- _eventEmitterCallback("onSubmit", value);
279
- }
280
- @end
@@ -20,7 +20,7 @@ using namespace facebook::react;
20
20
  @end
21
21
 
22
22
  @implementation RCTSampleTurboModule {
23
- NSDictionary *_constants;
23
+ facebook::react::ModuleConstants<JS::NativeSampleTurboModule::Constants> _constants;
24
24
  }
25
25
 
26
26
  // Backward-compatible export
@@ -37,11 +37,11 @@ RCT_EXPORT_MODULE()
37
37
  UIScreen *mainScreen = UIScreen.mainScreen;
38
38
  CGSize screenSize = mainScreen.bounds.size;
39
39
 
40
- _constants = @{
41
- @"const1" : @YES,
42
- @"const2" : @(screenSize.width),
43
- @"const3" : @"something",
44
- };
40
+ _constants = facebook::react::typedConstants<JS::NativeSampleTurboModule::Constants>({
41
+ .const1 = YES,
42
+ .const2 = screenSize.width,
43
+ .const3 = @"something",
44
+ });
45
45
  }
46
46
 
47
47
  - (dispatch_queue_t)methodQueue
@@ -62,15 +62,19 @@ RCT_EXPORT_MODULE()
62
62
  NSLog(@"Invalidating RCTSampleTurboModule...");
63
63
  }
64
64
 
65
- - (NSDictionary *)getConstants
65
+ - (facebook::react::ModuleConstants<JS::NativeSampleTurboModule::Constants>)constantsToExport
66
+ {
67
+ return _constants;
68
+ }
69
+
70
+ - (facebook::react::ModuleConstants<JS::NativeSampleTurboModule::Constants>)getConstants
66
71
  {
67
72
  return _constants;
68
73
  }
69
74
 
70
- // TODO: Remove once fully migrated to TurboModule.
71
- - (NSDictionary *)constantsToExport
75
+ - (void)getImageUrl:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
72
76
  {
73
- return [self getConstants];
77
+ reject(@"Exception", @"Not implemented", nil);
74
78
  }
75
79
 
76
80
  #pragma mark - RCTTurboModuleWithJSIBindings
@@ -168,7 +172,7 @@ RCT_EXPORT_METHOD(
168
172
 
169
173
  RCT_EXPORT_METHOD(voidFuncThrows)
170
174
  {
171
- NSException *myException = [NSException exceptionWithName:@"Excepption"
175
+ NSException *myException = [NSException exceptionWithName:@"Exception"
172
176
  reason:@"Intentional exception from ObjC voidFuncThrows"
173
177
  userInfo:nil];
174
178
  @throw myException;
@@ -176,7 +180,7 @@ RCT_EXPORT_METHOD(voidFuncThrows)
176
180
 
177
181
  RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSDictionary *, getObjectThrows : (NSDictionary *)arg)
178
182
  {
179
- NSException *myException = [NSException exceptionWithName:@"Excepption"
183
+ NSException *myException = [NSException exceptionWithName:@"Exception"
180
184
  reason:@"Intentional exception from ObjC getObjectThrows"
181
185
  userInfo:nil];
182
186
  @throw myException;
@@ -184,7 +188,7 @@ RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSDictionary *, getObjectThrows : (NSDiction
184
188
 
185
189
  RCT_EXPORT_METHOD(promiseThrows : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject)
186
190
  {
187
- NSException *myException = [NSException exceptionWithName:@"Excepption"
191
+ NSException *myException = [NSException exceptionWithName:@"Exception"
188
192
  reason:@"Intentional exception from ObjC promiseThrows"
189
193
  userInfo:nil];
190
194
  @throw myException;
@@ -168,9 +168,16 @@ void NetworkReporter::reportDataReceived(
168
168
  int dataLength,
169
169
  const std::optional<int>& encodedDataLength) {
170
170
  #ifdef REACT_NATIVE_DEBUGGER_ENABLED
171
+ auto now = HighResTimeStamp::now();
172
+
171
173
  // Debugger enabled: CDP event handling
172
174
  jsinspector_modern::NetworkHandler::getInstance().onDataReceived(
173
175
  requestId, dataLength, encodedDataLength.value_or(dataLength));
176
+
177
+ // Debugger enabled: Add trace event to Performance timeline
178
+ jsinspector_modern::tracing::PerformanceTracer::getInstance()
179
+ .reportResourceReceivedData(
180
+ requestId, now, encodedDataLength.value_or(dataLength));
174
181
  #endif
175
182
  }
176
183
 
@@ -110,6 +110,94 @@ void packShadowRadius(
110
110
  dyn.insert("shadowRadius", get<Float>(animatedProp));
111
111
  }
112
112
 
113
+ void packBorderColorEdge(
114
+ folly::dynamic& dyn,
115
+ const std::string& propName,
116
+ const std::optional<SharedColor>& colorValue) {
117
+ if (colorValue.has_value() && colorValue.value()) {
118
+ dyn.insert(propName, static_cast<int32_t>(*colorValue.value()));
119
+ }
120
+ }
121
+
122
+ void packBorderColor(
123
+ folly::dynamic& dyn,
124
+ const AnimatedPropBase& animatedProp) {
125
+ const auto& borderColors = get<CascadedBorderColors>(animatedProp);
126
+
127
+ packBorderColorEdge(dyn, "borderLeftColor", borderColors.left);
128
+ packBorderColorEdge(dyn, "borderTopColor", borderColors.top);
129
+ packBorderColorEdge(dyn, "borderRightColor", borderColors.right);
130
+ packBorderColorEdge(dyn, "borderBottomColor", borderColors.bottom);
131
+ packBorderColorEdge(dyn, "borderStartColor", borderColors.start);
132
+ packBorderColorEdge(dyn, "borderEndColor", borderColors.end);
133
+
134
+ if (borderColors.all.has_value() && borderColors.all.value()) {
135
+ dyn.insert("borderColor", static_cast<int32_t>(*borderColors.all.value()));
136
+ }
137
+ }
138
+
139
+ void packFilter(folly::dynamic& dyn, const AnimatedPropBase& animatedProp) {
140
+ const auto& filters = get<std::vector<FilterFunction>>(animatedProp);
141
+ auto filterArray = folly::dynamic::array();
142
+ for (const auto& f : filters) {
143
+ folly::dynamic filterObj = folly::dynamic::object();
144
+ std::string typeKey = toString(f.type);
145
+ if (std::holds_alternative<Float>(f.parameters)) {
146
+ filterObj[typeKey] = std::get<Float>(f.parameters);
147
+ } else if (std::holds_alternative<DropShadowParams>(f.parameters)) {
148
+ const auto& dropShadowParams = std::get<DropShadowParams>(f.parameters);
149
+ folly::dynamic shadowObj = folly::dynamic::object();
150
+ shadowObj["offsetX"] = dropShadowParams.offsetX;
151
+ shadowObj["offsetY"] = dropShadowParams.offsetY;
152
+ shadowObj["standardDeviation"] = dropShadowParams.standardDeviation;
153
+ shadowObj["color"] = static_cast<int32_t>(*dropShadowParams.color);
154
+ filterObj[typeKey] = shadowObj;
155
+ }
156
+ filterArray.push_back(filterObj);
157
+ }
158
+ dyn.insert("filter", filterArray);
159
+ }
160
+
161
+ void packOutlineColor(
162
+ folly::dynamic& dyn,
163
+ const AnimatedPropBase& animatedProp) {
164
+ const auto& outlineColor = get<SharedColor>(animatedProp);
165
+ dyn.insert("outlineColor", static_cast<int32_t>(*outlineColor));
166
+ }
167
+
168
+ void packOutlineOffset(
169
+ folly::dynamic& dyn,
170
+ const AnimatedPropBase& animatedProp) {
171
+ dyn.insert("outlineOffset", get<Float>(animatedProp));
172
+ }
173
+
174
+ void packOutlineStyle(
175
+ folly::dynamic& dyn,
176
+ const AnimatedPropBase& animatedProp) {
177
+ const auto& outlineStyle = get<OutlineStyle>(animatedProp);
178
+ std::string styleStr;
179
+ switch (outlineStyle) {
180
+ case OutlineStyle::Solid:
181
+ styleStr = "solid";
182
+ break;
183
+ case OutlineStyle::Dotted:
184
+ styleStr = "dotted";
185
+ break;
186
+ case OutlineStyle::Dashed:
187
+ styleStr = "dashed";
188
+ break;
189
+ default:
190
+ throw std::runtime_error("Unknown outline style");
191
+ }
192
+ dyn.insert("outlineStyle", styleStr);
193
+ }
194
+
195
+ void packOutlineWidth(
196
+ folly::dynamic& dyn,
197
+ const AnimatedPropBase& animatedProp) {
198
+ dyn.insert("outlineWidth", get<Float>(animatedProp));
199
+ }
200
+
113
201
  void packAnimatedProp(
114
202
  folly::dynamic& dyn,
115
203
  const std::unique_ptr<AnimatedPropBase>& animatedProp) {
@@ -146,12 +234,37 @@ void packAnimatedProp(
146
234
  packShadowRadius(dyn, *animatedProp);
147
235
  break;
148
236
 
237
+ case BORDER_COLOR:
238
+ packBorderColor(dyn, *animatedProp);
239
+ break;
240
+
241
+ case FILTER:
242
+ packFilter(dyn, *animatedProp);
243
+ break;
244
+
245
+ case OUTLINE_COLOR:
246
+ packOutlineColor(dyn, *animatedProp);
247
+ break;
248
+
249
+ case OUTLINE_OFFSET:
250
+ packOutlineOffset(dyn, *animatedProp);
251
+ break;
252
+
253
+ case OUTLINE_STYLE:
254
+ packOutlineStyle(dyn, *animatedProp);
255
+ break;
256
+
257
+ case OUTLINE_WIDTH:
258
+ packOutlineWidth(dyn, *animatedProp);
259
+ break;
260
+
149
261
  case WIDTH:
150
262
  case HEIGHT:
151
263
  case FLEX:
152
264
  case PADDING:
153
265
  case MARGIN:
154
266
  case POSITION:
267
+ case BORDER_WIDTH:
155
268
  throw std::runtime_error("Tried to synchronously update layout props");
156
269
  }
157
270
  }