react-native-tvos 0.72.4-0rc0 → 0.72.5-0

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 (91) hide show
  1. package/Libraries/Components/Pressable/Pressable.js +11 -5
  2. package/Libraries/Components/ScrollView/ScrollView.d.ts +7 -0
  3. package/Libraries/Components/ScrollView/ScrollView.js +8 -0
  4. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +1 -0
  5. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +1 -0
  6. package/Libraries/Components/ScrollView/ScrollViewViewConfig.js +1 -0
  7. package/Libraries/Core/ReactNativeVersion.js +2 -2
  8. package/README-core.md +147 -0
  9. package/README.md +32 -39
  10. package/React/Base/RCTBundleURLProvider.h +33 -2
  11. package/React/Base/RCTBundleURLProvider.mm +78 -15
  12. package/React/Base/RCTVersion.m +2 -2
  13. package/React/CoreModules/RCTTiming.mm +5 -0
  14. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +4 -0
  15. package/React/Fabric/RCTThirdPartyFabricComponentsProvider.h +29 -0
  16. package/React/Fabric/RCTThirdPartyFabricComponentsProvider.mm +29 -0
  17. package/React/Views/ScrollView/RCTScrollView.h +1 -0
  18. package/React/Views/ScrollView/RCTScrollView.m +12 -0
  19. package/React/Views/ScrollView/RCTScrollViewManager.m +1 -0
  20. package/ReactAndroid/gradle.properties +1 -1
  21. package/ReactAndroid/hermes-engine/build.gradle +1 -1
  22. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +2 -2
  23. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.java +4 -0
  24. package/ReactAndroid/src/main/jni/CMakeLists.txt +5 -0
  25. package/ReactCommon/React-Fabric.podspec +1 -1
  26. package/ReactCommon/ReactCommon.podspec +1 -1
  27. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  28. package/ReactCommon/jsc/JSCRuntime.cpp +10 -0
  29. package/ReactCommon/react/debug/React-debug.podspec +1 -1
  30. package/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec +1 -1
  31. package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -1
  32. package/ReactCommon/react/renderer/components/rncore/ComponentDescriptors.h +29 -0
  33. package/ReactCommon/react/renderer/components/rncore/EventEmitters.cpp +111 -0
  34. package/ReactCommon/react/renderer/components/rncore/EventEmitters.h +186 -0
  35. package/ReactCommon/react/renderer/components/rncore/Props.cpp +157 -0
  36. package/ReactCommon/react/renderer/components/rncore/Props.h +395 -0
  37. package/ReactCommon/react/renderer/components/rncore/RCTComponentViewHelpers.h +257 -0
  38. package/ReactCommon/react/renderer/components/rncore/ShadowNodes.cpp +26 -0
  39. package/ReactCommon/react/renderer/components/rncore/ShadowNodes.h +111 -0
  40. package/ReactCommon/react/renderer/components/rncore/States.cpp +18 -0
  41. package/ReactCommon/react/renderer/components/rncore/States.h +141 -0
  42. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.cpp +15 -1
  43. package/ReactCommon/react/renderer/components/scrollview/ScrollViewProps.h +1 -0
  44. package/ReactCommon/react/renderer/core/RawPropsKeyMap.cpp +2 -0
  45. package/ReactCommon/react/renderer/core/RawPropsParser.cpp +1 -0
  46. package/ReactCommon/react/renderer/core/RawPropsPrimitives.h +4 -4
  47. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -1
  48. package/ReactCommon/react/renderer/imagemanager/platform/ios/React-ImageManager.podspec +1 -1
  49. package/ReactCommon/react/renderer/runtimescheduler/React-runtimescheduler.podspec +1 -1
  50. package/ReactCommon/react/utils/React-utils.podspec +1 -1
  51. package/package.json +7 -6
  52. package/scripts/cocoapods/helpers.rb +16 -0
  53. package/scripts/cocoapods/utils.rb +98 -8
  54. package/scripts/react_native_pods.rb +6 -2
  55. package/sdks/.hermesversion +1 -1
  56. package/sdks/hermes-engine/utils/build-apple-framework.sh +8 -1
  57. package/sdks/hermes-engine/utils/build-hermes-xcode.sh +8 -0
  58. package/sdks/hermesc/osx-bin/hermesc +0 -0
  59. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  60. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +95 -13
  61. package/template/package.json +5 -4
  62. package/types/index.d.ts +1 -0
  63. package/types/public/ReactNativeTVTypes.d.ts +192 -0
  64. package/scripts/cocoapods/__tests__/codegen-test.rb +0 -242
  65. package/scripts/cocoapods/__tests__/codegen_utils-test.rb +0 -602
  66. package/scripts/cocoapods/__tests__/fabric-test.rb +0 -68
  67. package/scripts/cocoapods/__tests__/flipper-test.rb +0 -161
  68. package/scripts/cocoapods/__tests__/jsengine-test.rb +0 -130
  69. package/scripts/cocoapods/__tests__/local_podspec_patch-test.rb +0 -167
  70. package/scripts/cocoapods/__tests__/new_architecture-test.rb +0 -303
  71. package/scripts/cocoapods/__tests__/test_utils/CodegenScriptPhaseExtractorMock.rb +0 -21
  72. package/scripts/cocoapods/__tests__/test_utils/CodegenUtilsMock.rb +0 -108
  73. package/scripts/cocoapods/__tests__/test_utils/DirMock.rb +0 -72
  74. package/scripts/cocoapods/__tests__/test_utils/EnvironmentMock.rb +0 -21
  75. package/scripts/cocoapods/__tests__/test_utils/FileMock.rb +0 -113
  76. package/scripts/cocoapods/__tests__/test_utils/FileUtilsMock.rb +0 -40
  77. package/scripts/cocoapods/__tests__/test_utils/FinderMock.rb +0 -28
  78. package/scripts/cocoapods/__tests__/test_utils/InstallerMock.rb +0 -222
  79. package/scripts/cocoapods/__tests__/test_utils/LocalPodspecPatchMock.rb +0 -14
  80. package/scripts/cocoapods/__tests__/test_utils/Open3Mock.rb +0 -43
  81. package/scripts/cocoapods/__tests__/test_utils/PathnameMock.rb +0 -42
  82. package/scripts/cocoapods/__tests__/test_utils/PodMock.rb +0 -144
  83. package/scripts/cocoapods/__tests__/test_utils/SpecMock.rb +0 -30
  84. package/scripts/cocoapods/__tests__/test_utils/SysctlCheckerMock.rb +0 -21
  85. package/scripts/cocoapods/__tests__/test_utils/TargetDefinitionMock.rb +0 -12
  86. package/scripts/cocoapods/__tests__/test_utils/podSpy.rb +0 -39
  87. package/scripts/cocoapods/__tests__/test_utils/systemUtils.rb +0 -14
  88. package/scripts/cocoapods/__tests__/utils-test.rb +0 -766
  89. package/scripts/codegen/__test_fixtures__/fixtures.js +0 -132
  90. package/scripts/codegen/__tests__/generate-artifacts-executor-test.js +0 -500
  91. package/scripts/codegen/__tests__/generate-specs-cli-executor-test.js +0 -88
@@ -0,0 +1,111 @@
1
+
2
+ /**
3
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
+ *
5
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
6
+ * once the code is regenerated.
7
+ *
8
+ * @generated by codegen project: GenerateShadowNodeH.js
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include <react/renderer/components/rncore/EventEmitters.h>
14
+ #include <react/renderer/components/rncore/Props.h>
15
+ #include <react/renderer/components/rncore/States.h>
16
+ #include <react/renderer/components/view/ConcreteViewShadowNode.h>
17
+ #include <jsi/jsi.h>
18
+
19
+ namespace facebook {
20
+ namespace react {
21
+
22
+ JSI_EXPORT extern const char AndroidHorizontalScrollContentViewComponentName[];
23
+
24
+ /*
25
+ * `ShadowNode` for <AndroidHorizontalScrollContentView> component.
26
+ */
27
+ using AndroidHorizontalScrollContentViewShadowNode = ConcreteViewShadowNode<
28
+ AndroidHorizontalScrollContentViewComponentName,
29
+ AndroidHorizontalScrollContentViewProps,
30
+ AndroidHorizontalScrollContentViewEventEmitter,
31
+ AndroidHorizontalScrollContentViewState>;
32
+
33
+ JSI_EXPORT extern const char AndroidSwipeRefreshLayoutComponentName[];
34
+
35
+ /*
36
+ * `ShadowNode` for <AndroidSwipeRefreshLayout> component.
37
+ */
38
+ using AndroidSwipeRefreshLayoutShadowNode = ConcreteViewShadowNode<
39
+ AndroidSwipeRefreshLayoutComponentName,
40
+ AndroidSwipeRefreshLayoutProps,
41
+ AndroidSwipeRefreshLayoutEventEmitter,
42
+ AndroidSwipeRefreshLayoutState>;
43
+
44
+ JSI_EXPORT extern const char PullToRefreshViewComponentName[];
45
+
46
+ /*
47
+ * `ShadowNode` for <PullToRefreshView> component.
48
+ */
49
+ using PullToRefreshViewShadowNode = ConcreteViewShadowNode<
50
+ PullToRefreshViewComponentName,
51
+ PullToRefreshViewProps,
52
+ PullToRefreshViewEventEmitter,
53
+ PullToRefreshViewState>;
54
+
55
+ JSI_EXPORT extern const char AndroidDrawerLayoutComponentName[];
56
+
57
+ /*
58
+ * `ShadowNode` for <AndroidDrawerLayout> component.
59
+ */
60
+ using AndroidDrawerLayoutShadowNode = ConcreteViewShadowNode<
61
+ AndroidDrawerLayoutComponentName,
62
+ AndroidDrawerLayoutProps,
63
+ AndroidDrawerLayoutEventEmitter,
64
+ AndroidDrawerLayoutState>;
65
+
66
+ JSI_EXPORT extern const char ActivityIndicatorViewComponentName[];
67
+
68
+ /*
69
+ * `ShadowNode` for <ActivityIndicatorView> component.
70
+ */
71
+ using ActivityIndicatorViewShadowNode = ConcreteViewShadowNode<
72
+ ActivityIndicatorViewComponentName,
73
+ ActivityIndicatorViewProps,
74
+ ActivityIndicatorViewEventEmitter,
75
+ ActivityIndicatorViewState>;
76
+
77
+ JSI_EXPORT extern const char UnimplementedNativeViewComponentName[];
78
+
79
+ /*
80
+ * `ShadowNode` for <UnimplementedNativeView> component.
81
+ */
82
+ using UnimplementedNativeViewShadowNode = ConcreteViewShadowNode<
83
+ UnimplementedNativeViewComponentName,
84
+ UnimplementedNativeViewProps,
85
+ UnimplementedNativeViewEventEmitter,
86
+ UnimplementedNativeViewState>;
87
+
88
+ JSI_EXPORT extern const char SwitchComponentName[];
89
+
90
+ /*
91
+ * `ShadowNode` for <Switch> component.
92
+ */
93
+ using SwitchShadowNode = ConcreteViewShadowNode<
94
+ SwitchComponentName,
95
+ SwitchProps,
96
+ SwitchEventEmitter,
97
+ SwitchState>;
98
+
99
+ JSI_EXPORT extern const char TraceUpdateOverlayComponentName[];
100
+
101
+ /*
102
+ * `ShadowNode` for <TraceUpdateOverlay> component.
103
+ */
104
+ using TraceUpdateOverlayShadowNode = ConcreteViewShadowNode<
105
+ TraceUpdateOverlayComponentName,
106
+ TraceUpdateOverlayProps,
107
+ TraceUpdateOverlayEventEmitter,
108
+ TraceUpdateOverlayState>;
109
+
110
+ } // namespace react
111
+ } // namespace facebook
@@ -0,0 +1,18 @@
1
+
2
+ /**
3
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
+ *
5
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
6
+ * once the code is regenerated.
7
+ *
8
+ * @generated by codegen project: GenerateStateCpp.js
9
+ */
10
+ #include <react/renderer/components/rncore/States.h>
11
+
12
+ namespace facebook {
13
+ namespace react {
14
+
15
+
16
+
17
+ } // namespace react
18
+ } // namespace facebook
@@ -0,0 +1,141 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GenerateStateH.js
8
+ */
9
+ #pragma once
10
+
11
+ #ifdef ANDROID
12
+ #include <folly/dynamic.h>
13
+ #include <react/renderer/mapbuffer/MapBuffer.h>
14
+ #include <react/renderer/mapbuffer/MapBufferBuilder.h>
15
+ #endif
16
+
17
+ namespace facebook {
18
+ namespace react {
19
+
20
+ class AndroidHorizontalScrollContentViewState {
21
+ public:
22
+ AndroidHorizontalScrollContentViewState() = default;
23
+
24
+ #ifdef ANDROID
25
+ AndroidHorizontalScrollContentViewState(AndroidHorizontalScrollContentViewState const &previousState, folly::dynamic data){};
26
+ folly::dynamic getDynamic() const {
27
+ return {};
28
+ };
29
+ MapBuffer getMapBuffer() const {
30
+ return MapBufferBuilder::EMPTY();
31
+ };
32
+ #endif
33
+ };
34
+
35
+ class AndroidSwipeRefreshLayoutState {
36
+ public:
37
+ AndroidSwipeRefreshLayoutState() = default;
38
+
39
+ #ifdef ANDROID
40
+ AndroidSwipeRefreshLayoutState(AndroidSwipeRefreshLayoutState const &previousState, folly::dynamic data){};
41
+ folly::dynamic getDynamic() const {
42
+ return {};
43
+ };
44
+ MapBuffer getMapBuffer() const {
45
+ return MapBufferBuilder::EMPTY();
46
+ };
47
+ #endif
48
+ };
49
+
50
+ class PullToRefreshViewState {
51
+ public:
52
+ PullToRefreshViewState() = default;
53
+
54
+ #ifdef ANDROID
55
+ PullToRefreshViewState(PullToRefreshViewState const &previousState, folly::dynamic data){};
56
+ folly::dynamic getDynamic() const {
57
+ return {};
58
+ };
59
+ MapBuffer getMapBuffer() const {
60
+ return MapBufferBuilder::EMPTY();
61
+ };
62
+ #endif
63
+ };
64
+
65
+ class AndroidDrawerLayoutState {
66
+ public:
67
+ AndroidDrawerLayoutState() = default;
68
+
69
+ #ifdef ANDROID
70
+ AndroidDrawerLayoutState(AndroidDrawerLayoutState const &previousState, folly::dynamic data){};
71
+ folly::dynamic getDynamic() const {
72
+ return {};
73
+ };
74
+ MapBuffer getMapBuffer() const {
75
+ return MapBufferBuilder::EMPTY();
76
+ };
77
+ #endif
78
+ };
79
+
80
+ class ActivityIndicatorViewState {
81
+ public:
82
+ ActivityIndicatorViewState() = default;
83
+
84
+ #ifdef ANDROID
85
+ ActivityIndicatorViewState(ActivityIndicatorViewState const &previousState, folly::dynamic data){};
86
+ folly::dynamic getDynamic() const {
87
+ return {};
88
+ };
89
+ MapBuffer getMapBuffer() const {
90
+ return MapBufferBuilder::EMPTY();
91
+ };
92
+ #endif
93
+ };
94
+
95
+ class UnimplementedNativeViewState {
96
+ public:
97
+ UnimplementedNativeViewState() = default;
98
+
99
+ #ifdef ANDROID
100
+ UnimplementedNativeViewState(UnimplementedNativeViewState const &previousState, folly::dynamic data){};
101
+ folly::dynamic getDynamic() const {
102
+ return {};
103
+ };
104
+ MapBuffer getMapBuffer() const {
105
+ return MapBufferBuilder::EMPTY();
106
+ };
107
+ #endif
108
+ };
109
+
110
+ class SwitchState {
111
+ public:
112
+ SwitchState() = default;
113
+
114
+ #ifdef ANDROID
115
+ SwitchState(SwitchState const &previousState, folly::dynamic data){};
116
+ folly::dynamic getDynamic() const {
117
+ return {};
118
+ };
119
+ MapBuffer getMapBuffer() const {
120
+ return MapBufferBuilder::EMPTY();
121
+ };
122
+ #endif
123
+ };
124
+
125
+ class TraceUpdateOverlayState {
126
+ public:
127
+ TraceUpdateOverlayState() = default;
128
+
129
+ #ifdef ANDROID
130
+ TraceUpdateOverlayState(TraceUpdateOverlayState const &previousState, folly::dynamic data){};
131
+ folly::dynamic getDynamic() const {
132
+ return {};
133
+ };
134
+ MapBuffer getMapBuffer() const {
135
+ return MapBufferBuilder::EMPTY();
136
+ };
137
+ #endif
138
+ };
139
+
140
+ } // namespace react
141
+ } // namespace facebook
@@ -328,6 +328,15 @@ ScrollViewProps::ScrollViewProps(
328
328
  rawProps,
329
329
  "isInvertedVirtualizedList",
330
330
  sourceProps.isInvertedVirtualizedList,
331
+ {})),
332
+ showsScrollIndex(
333
+ CoreFeatures::enablePropIteratorSetter
334
+ ? sourceProps.showsScrollIndex
335
+ : convertRawProp(
336
+ context,
337
+ rawProps,
338
+ "showsScrollIndex",
339
+ sourceProps.showsScrollIndex,
331
340
  {})) {}
332
341
 
333
342
  void ScrollViewProps::setProp(
@@ -378,6 +387,7 @@ void ScrollViewProps::setProp(
378
387
  RAW_SET_PROP_SWITCH_CASE_BASIC(contentInsetAdjustmentBehavior);
379
388
  RAW_SET_PROP_SWITCH_CASE_BASIC(scrollToOverflowEnabled);
380
389
  RAW_SET_PROP_SWITCH_CASE_BASIC(isInvertedVirtualizedList);
390
+ RAW_SET_PROP_SWITCH_CASE_BASIC(showsScrollIndex);
381
391
  }
382
392
  }
383
393
 
@@ -506,7 +516,11 @@ SharedDebugStringConvertibleList ScrollViewProps::getDebugProps() const {
506
516
  debugStringConvertibleItem(
507
517
  "isInvertedVirtualizedList",
508
518
  snapToEnd,
509
- defaultScrollViewProps.isInvertedVirtualizedList)};
519
+ defaultScrollViewProps.isInvertedVirtualizedList),
520
+ debugStringConvertibleItem(
521
+ "showsScrollIndex",
522
+ snapToEnd,
523
+ defaultScrollViewProps.showsScrollIndex)};
510
524
  }
511
525
  #endif
512
526
 
@@ -70,6 +70,7 @@ class ScrollViewProps final : public ViewProps {
70
70
  ContentInsetAdjustmentBehavior::Never};
71
71
  bool scrollToOverflowEnabled{false};
72
72
  bool isInvertedVirtualizedList{false};
73
+ bool showsScrollIndex{true};
73
74
 
74
75
  #pragma mark - DebugStringConvertible
75
76
 
@@ -38,6 +38,8 @@ void RawPropsKeyMap::insert(
38
38
  item.value = value;
39
39
  key.render(item.name, &item.length);
40
40
  items_.push_back(item);
41
+ react_native_assert(
42
+ items_.size() < std::numeric_limits<RawPropsPropNameLength>::max());
41
43
  }
42
44
 
43
45
  void RawPropsKeyMap::reindex() noexcept {
@@ -42,6 +42,7 @@ RawValue const *RawPropsParser::at(
42
42
  // This is not thread-safe part; this happens only during initialization of
43
43
  // a `ComponentDescriptor` where it is actually safe.
44
44
  keys_.push_back(key);
45
+ react_native_assert(size < std::numeric_limits<RawPropsValueIndex>::max());
45
46
  nameToIndex_.insert(key, static_cast<RawPropsValueIndex>(size));
46
47
  return nullptr;
47
48
  }
@@ -16,11 +16,11 @@ namespace react {
16
16
  /*
17
17
  * Type used to represent an index of some stored values in small arrays.
18
18
  */
19
- using RawPropsValueIndex = uint8_t;
19
+ using RawPropsValueIndex = uint16_t;
20
20
  static_assert(
21
- sizeof(RawPropsValueIndex) == 1,
22
- "RawPropsValueIndex must be one byte size.");
23
- using RawPropsPropNameLength = uint8_t;
21
+ sizeof(RawPropsValueIndex) == 2,
22
+ "RawPropsValueIndex must be two byte size.");
23
+ using RawPropsPropNameLength = uint16_t;
24
24
  using RawPropsPropNameHash = uint32_t;
25
25
 
26
26
  /*
@@ -45,7 +45,7 @@ Pod::Spec.new do |s|
45
45
 
46
46
  if ENV['USE_FRAMEWORKS']
47
47
  s.module_name = "React_graphics"
48
- s.header_mappings_dir = File.absolute_path("../../..")
48
+ s.header_mappings_dir = "../../.."
49
49
  header_search_paths = header_search_paths + ["\"$(PODS_TARGET_SRCROOT)/platform/ios\""]
50
50
  end
51
51
 
@@ -42,7 +42,7 @@ Pod::Spec.new do |s|
42
42
 
43
43
  if ENV['USE_FRAMEWORKS']
44
44
  s.module_name = "React_ImageManager"
45
- s.header_mappings_dir = File.absolute_path("./")
45
+ s.header_mappings_dir = "./"
46
46
  header_search_paths = header_search_paths + [
47
47
  "\"${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers\"",
48
48
  "\"$(PODS_ROOT)/DoubleConversion\"",
@@ -47,7 +47,7 @@ Pod::Spec.new do |s|
47
47
 
48
48
  if ENV['USE_FRAMEWORKS']
49
49
  s.module_name = "React_runtimescheduler"
50
- s.header_mappings_dir = File.absolute_path("../../..")
50
+ s.header_mappings_dir = "../../.."
51
51
  end
52
52
 
53
53
  s.dependency "React-jsi"
@@ -48,7 +48,7 @@ Pod::Spec.new do |s|
48
48
 
49
49
  if ENV['USE_FRAMEWORKS']
50
50
  s.module_name = "React_utils"
51
- s.header_mappings_dir = File.absolute_path("../..")
51
+ s.header_mappings_dir = "../.."
52
52
  end
53
53
 
54
54
  s.dependency "RCT-Folly", folly_version
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-tvos",
3
- "version": "0.72.4-0rc0",
3
+ "version": "0.72.5-0",
4
4
  "bin": "./cli.js",
5
5
  "description": "A framework for building native apps using React",
6
6
  "license": "MIT",
@@ -34,6 +34,7 @@
34
34
  "ReactAndroid",
35
35
  "ReactCommon",
36
36
  "README.md",
37
+ "README-core.md",
37
38
  "rn-get-polyfills.js",
38
39
  "scripts/compose-source-maps.js",
39
40
  "scripts/find-node-for-xcode.sh",
@@ -72,18 +73,18 @@
72
73
  "types"
73
74
  ],
74
75
  "scripts": {
75
- "prepack": "cp ../../README-tv.md ./README.md"
76
+ "prepack": "cp ../../README.md ./README.md; cp ../../README-core.md ./README-core.md"
76
77
  },
77
78
  "peerDependencies": {
78
79
  "react": "18.2.0"
79
80
  },
80
81
  "dependencies": {
81
82
  "@jest/create-cache-key-function": "^29.2.1",
82
- "@react-native-community/cli": "11.3.6",
83
- "@react-native-community/cli-platform-android": "11.3.6",
84
- "@react-native-community/cli-platform-ios": "11.3.6",
83
+ "@react-native-community/cli": "11.3.7",
84
+ "@react-native-community/cli-platform-android": "11.3.7",
85
+ "@react-native-community/cli-platform-ios": "11.3.7",
85
86
  "@react-native/assets-registry": "^0.72.0",
86
- "@react-native/codegen": "^0.72.6",
87
+ "@react-native/codegen": "^0.72.7",
87
88
  "@react-native/gradle-plugin": "^0.72.11",
88
89
  "@react-native/js-polyfills": "^0.72.1",
89
90
  "@react-native/normalize-colors": "^0.72.0",
@@ -11,6 +11,14 @@ class SysctlChecker
11
11
  end
12
12
  end
13
13
 
14
+ # Helper class that is used to easily send commands to Xcodebuild
15
+ # And that can be subclassed for testing purposes.
16
+ class Xcodebuild
17
+ def self.version
18
+ `xcodebuild -version`
19
+ end
20
+ end
21
+
14
22
  # Helper object to wrap system properties like RUBY_PLATFORM
15
23
  # This makes it easier to mock the behaviour in tests
16
24
  class Environment
@@ -26,3 +34,11 @@ class Finder
26
34
  return `find #{path} -type f \\( #{js_files} -or #{ts_files} \\)`.split("\n").sort()
27
35
  end
28
36
  end
37
+
38
+ module Helpers
39
+ class Constants
40
+ def self.min_ios_version_supported
41
+ return '12.4'
42
+ end
43
+ end
44
+ end
@@ -122,16 +122,31 @@ class ReactNativePodsUtils
122
122
  end
123
123
  end
124
124
 
125
- def self.apply_xcode_15_patch(installer)
126
- installer.target_installation_results.pod_target_installation_results
127
- .each do |pod_name, target_installation_result|
128
- target_installation_result.native_target.build_configurations.each do |config|
129
- # unary_function and binary_function are no longer provided in C++17 and newer standard modes as part of Xcode 15. They can be re-enabled with setting _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION
130
- # Ref: https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Deprecations
131
- config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= '$(inherited) '
132
- config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << '"_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION" '
125
+ def self.apply_xcode_15_patch(installer, xcodebuild_manager: Xcodebuild)
126
+ projects = self.extract_projects(installer)
127
+
128
+ gcc_preprocessor_definition_key = 'GCC_PREPROCESSOR_DEFINITIONS'
129
+ other_ld_flags_key = 'OTHER_LDFLAGS'
130
+ libcpp_cxx17_fix = '_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION'
131
+ xcode15_compatibility_flags = '-Wl -ld_classic '
132
+
133
+ projects.each do |project|
134
+ project.build_configurations.each do |config|
135
+ # fix for unary_function and binary_function
136
+ self.safe_init(config, gcc_preprocessor_definition_key)
137
+ self.add_value_to_setting_if_missing(config, gcc_preprocessor_definition_key, libcpp_cxx17_fix)
138
+
139
+ # fix for weak linking
140
+ self.safe_init(config, other_ld_flags_key)
141
+ if self.is_using_xcode15_or_greter(:xcodebuild_manager => xcodebuild_manager)
142
+ self.add_value_to_setting_if_missing(config, other_ld_flags_key, xcode15_compatibility_flags)
143
+ else
144
+ self.remove_value_to_setting_if_present(config, other_ld_flags_key, xcode15_compatibility_flags)
145
+ end
133
146
  end
147
+ project.save()
134
148
  end
149
+
135
150
  end
136
151
 
137
152
  def self.apply_flags_for_fabric(installer, fabric_enabled: false)
@@ -233,6 +248,38 @@ class ReactNativePodsUtils
233
248
  end
234
249
  end
235
250
 
251
+ def self.updateIphoneOSDeploymentTarget(installer)
252
+ pod_to_update = Set.new([
253
+ "boost",
254
+ "CocoaAsyncSocket",
255
+ "Flipper",
256
+ "Flipper-DoubleConversion",
257
+ "Flipper-Fmt",
258
+ "Flipper-Boost-iOSX",
259
+ "Flipper-Folly",
260
+ "Flipper-Glog",
261
+ "Flipper-PeerTalk",
262
+ "FlipperKit",
263
+ "fmt",
264
+ "libevent",
265
+ "OpenSSL-Universal",
266
+ "RCT-Folly",
267
+ "SocketRocket",
268
+ "YogaKit"
269
+ ])
270
+
271
+ installer.target_installation_results.pod_target_installation_results
272
+ .each do |pod_name, target_installation_result|
273
+ unless pod_to_update.include?(pod_name)
274
+ next
275
+ end
276
+ target_installation_result.native_target.build_configurations.each do |config|
277
+ config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = Helpers::Constants.min_ios_version_supported
278
+ config.build_settings["TVOS_DEPLOYMENT_TARGET"] = Helpers::Constants.min_ios_version_supported
279
+ end
280
+ end
281
+ end
282
+
236
283
  # ========= #
237
284
  # Utilities #
238
285
  # ========= #
@@ -244,6 +291,49 @@ class ReactNativePodsUtils
244
291
  .push(installer.pods_project)
245
292
  end
246
293
 
294
+ def self.safe_init(config, setting_name)
295
+ old_config = config.build_settings[setting_name]
296
+ if old_config == nil
297
+ config.build_settings[setting_name] ||= '$(inherited) '
298
+ end
299
+ end
300
+
301
+ def self.add_value_to_setting_if_missing(config, setting_name, value)
302
+ old_config = config.build_settings[setting_name]
303
+ if !old_config.include?(value)
304
+ config.build_settings[setting_name] << value
305
+ end
306
+ end
307
+
308
+ def self.remove_value_to_setting_if_present(config, setting_name, value)
309
+ old_config = config.build_settings[setting_name]
310
+ if old_config.include?(value)
311
+ # Old config can be either an Array or a String
312
+ if old_config.is_a?(Array)
313
+ old_config = old_config.join(" ")
314
+ end
315
+ new_config = old_config.gsub(value, "")
316
+ config.build_settings[setting_name] = new_config
317
+ end
318
+ end
319
+
320
+ def self.is_using_xcode15_or_greter(xcodebuild_manager: Xcodebuild)
321
+ xcodebuild_version = xcodebuild_manager.version
322
+
323
+ # The output of xcodebuild -version is something like
324
+ # Xcode 15.0
325
+ # or
326
+ # Xcode 14.3.1
327
+ # We want to capture the version digits
328
+ regex = /(\d+)\.(\d+)(?:\.(\d+))?/
329
+ if match_data = xcodebuild_version.match(regex)
330
+ major = match_data[1].to_i
331
+ return major >= 15
332
+ end
333
+
334
+ return false
335
+ end
336
+
247
337
  def self.add_compiler_flag_to_project(installer, flag, configuration: nil)
248
338
  projects = self.extract_projects(installer)
249
339
 
@@ -16,6 +16,7 @@ require_relative './cocoapods/codegen_utils.rb'
16
16
  require_relative './cocoapods/utils.rb'
17
17
  require_relative './cocoapods/new_architecture.rb'
18
18
  require_relative './cocoapods/local_podspec_patch.rb'
19
+ require_relative './cocoapods/helpers.rb'
19
20
 
20
21
  $CODEGEN_OUTPUT_DIR = 'build/generated/ios'
21
22
  $CODEGEN_COMPONENT_DIR = 'react/renderer/components'
@@ -35,11 +36,12 @@ require Pod::Executable.execute_command('node', ['-p',
35
36
  {paths: [process.argv[1]]},
36
37
  )', __dir__]).strip
37
38
 
38
- # This function returns the min iOS version supported by React Native
39
+
40
+ # This function returns the min supported OS versions supported by React Native
39
41
  # By using this function, you won't have to manually change your Podfile
40
42
  # when we change the minimum version supported by the framework.
41
43
  def min_ios_version_supported
42
- return '12.4'
44
+ return Helpers::Constants.min_ios_version_supported
43
45
  end
44
46
 
45
47
  # This function prepares the project for React Native, before processing
@@ -250,11 +252,13 @@ def react_native_post_install(
250
252
  ReactNativePodsUtils.set_node_modules_user_settings(installer, react_native_path)
251
253
  ReactNativePodsUtils.apply_flags_for_fabric(installer, fabric_enabled: fabric_enabled)
252
254
  ReactNativePodsUtils.apply_xcode_15_patch(installer)
255
+ ReactNativePodsUtils.updateIphoneOSDeploymentTarget(installer)
253
256
 
254
257
  NewArchitectureHelper.set_clang_cxx_language_standard_if_needed(installer)
255
258
  is_new_arch_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == "1"
256
259
  NewArchitectureHelper.modify_flags_for_new_architecture(installer, is_new_arch_enabled)
257
260
 
261
+
258
262
  Pod::UI.puts "Pod install took #{Time.now.to_i - $START_TIME} [s] to run".green
259
263
  end
260
264
 
@@ -1 +1 @@
1
- hermes-2023-08-20-RNv0.72.4-b3854e24660610a8ab0ec9c8fd0a1e3ebe8d7d56
1
+ hermes-2023-08-25-RNv0.72.4-e4a5a201e51cc583b148e8d264a2b061e9408988
@@ -56,7 +56,7 @@ function build_host_hermesc {
56
56
 
57
57
  # Utility function to configure an Apple framework
58
58
  function configure_apple_framework {
59
- local build_cli_tools enable_bitcode enable_debugger cmake_build_type
59
+ local build_cli_tools enable_bitcode enable_debugger cmake_build_type xcode_15_flags xcode_major_version
60
60
 
61
61
  # if [[ $1 == appletvos || $1 == iphoneos || $1 == catalyst ]]; then
62
62
  # enable_bitcode="true"
@@ -84,8 +84,15 @@ function configure_apple_framework {
84
84
  cmake_build_type="MinSizeRel"
85
85
  fi
86
86
 
87
+ xcode_15_flags=""
88
+ xcode_major_version=$(xcodebuild -version | grep -oE '[0-9]*' | head -n 1)
89
+ if [[ $xcode_major_version -ge 15 ]]; then
90
+ xcode_15_flags="LINKER:-ld_classic"
91
+ fi
92
+
87
93
  pushd "$HERMES_PATH" > /dev/null || exit 1
88
94
  cmake -S . -B "build_$1" \
95
+ -DHERMES_EXTRA_LINKER_FLAGS="$xcode_15_flags" \
89
96
  -DHERMES_APPLE_TARGET_PLATFORM:STRING="$1" \
90
97
  -DCMAKE_OSX_ARCHITECTURES:STRING="$2" \
91
98
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="$3" \
@@ -33,6 +33,13 @@ if [ -z "$deployment_target" ]; then
33
33
  deployment_target=${MACOSX_DEPLOYMENT_TARGET}
34
34
  fi
35
35
 
36
+ xcode_15_flags=""
37
+ xcode_major_version=$(xcodebuild -version | grep -oE '[0-9]*' | head -n 1)
38
+ if [[ $xcode_major_version -ge 15 ]]; then
39
+ echo "########### Using LINKER:-ld_classic ###########"
40
+ xcode_15_flags="LINKER:-ld_classic"
41
+ fi
42
+
36
43
  architectures=$( echo "$ARCHS" | tr " " ";" )
37
44
 
38
45
  echo "Configure Apple framework"
@@ -40,6 +47,7 @@ echo "Configure Apple framework"
40
47
  "$CMAKE_BINARY" \
41
48
  -S "${PODS_ROOT}/hermes-engine" \
42
49
  -B "${PODS_ROOT}/hermes-engine/build/${PLATFORM_NAME}" \
50
+ -DHERMES_EXTRA_LINKER_FLAGS="$xcode_15_flags" \
43
51
  -DHERMES_APPLE_TARGET_PLATFORM:STRING="$PLATFORM_NAME" \
44
52
  -DCMAKE_OSX_ARCHITECTURES:STRING="$architectures" \
45
53
  -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="$deployment_target" \
Binary file