@react-native-firebase/messaging 25.1.0 → 26.0.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.
- package/CHANGELOG.md +29 -0
- package/RNFBMessaging.podspec +20 -6
- package/android/build.gradle +24 -0
- package/android/src/main/java/io/invertase/firebase/messaging/{ReactNativeFirebaseMessagingModule.java → NativeRNFBTurboMessaging.java} +143 -81
- package/android/src/main/java/io/invertase/firebase/messaging/ReactNativeFirebaseMessagingPackage.java +1 -1
- package/android/src/main/java/io/invertase/firebase/messaging/ReactNativeFirebaseMessagingReceiver.java +16 -0
- package/android/src/main/java/io/invertase/firebase/messaging/ReactNativeFirebaseMessagingStoreImpl.java +50 -11
- package/android/src/main/java/io/invertase/firebase/messaging/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboMessagingSpec.java +151 -0
- package/android/src/main/java/io/invertase/firebase/messaging/generated/jni/CMakeLists.txt +36 -0
- package/android/src/main/java/io/invertase/firebase/messaging/generated/jni/RNFBMessagingTurboModules-generated.cpp +152 -0
- package/android/src/main/java/io/invertase/firebase/messaging/generated/jni/RNFBMessagingTurboModules.h +31 -0
- package/android/src/main/java/io/invertase/firebase/messaging/generated/jni/react/renderer/components/RNFBMessagingTurboModules/RNFBMessagingTurboModulesJSI-generated.cpp +161 -0
- package/android/src/main/java/io/invertase/firebase/messaging/generated/jni/react/renderer/components/RNFBMessagingTurboModules/RNFBMessagingTurboModulesJSI.h +356 -0
- package/app.plugin.js +1 -1
- package/dist/module/index.js +622 -7
- package/dist/module/index.js.map +1 -1
- package/dist/module/statics.js +1 -1
- package/dist/module/types/internal.js +4 -0
- package/dist/module/types/internal.js.map +1 -0
- package/dist/module/types/messaging.js +0 -15
- package/dist/module/types/messaging.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/typescript/lib/index.d.ts +182 -5
- package/dist/typescript/lib/index.d.ts.map +1 -1
- package/dist/typescript/lib/types/internal.d.ts +41 -0
- package/dist/typescript/lib/types/internal.d.ts.map +1 -0
- package/dist/typescript/lib/types/messaging.d.ts +7 -55
- package/dist/typescript/lib/types/messaging.d.ts.map +1 -1
- package/dist/typescript/lib/version.d.ts +1 -1
- package/ios/RNFBMessaging/RNFBMessaging+AppDelegate.h +24 -2
- package/ios/RNFBMessaging/RNFBMessaging+AppDelegate.m +82 -12
- package/ios/RNFBMessaging/RNFBMessaging+NSNotificationCenter.m +14 -4
- package/ios/RNFBMessaging/RNFBMessaging+UNUserNotificationCenter.m +31 -28
- package/ios/RNFBMessaging/RNFBMessagingModule.h +3 -2
- package/ios/RNFBMessaging/RNFBMessagingModule.mm +500 -0
- package/ios/RNFBMessaging.xcodeproj/project.pbxproj +8 -8
- package/ios/generated/RCTAppDependencyProvider.h +25 -0
- package/ios/generated/RCTAppDependencyProvider.mm +55 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.mm +23 -0
- package/ios/generated/RNFBMessagingTurboModules/RNFBMessagingTurboModules-generated.mm +184 -0
- package/ios/generated/RNFBMessagingTurboModules/RNFBMessagingTurboModules.h +222 -0
- package/ios/generated/RNFBMessagingTurboModulesJSI-generated.cpp +161 -0
- package/ios/generated/RNFBMessagingTurboModulesJSI.h +356 -0
- package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
- package/lib/index.ts +821 -15
- package/lib/statics.ts +1 -1
- package/lib/types/internal.ts +59 -0
- package/lib/types/messaging.ts +7 -72
- package/lib/version.ts +1 -1
- package/package.json +30 -5
- package/plugin/build/app.plugin.d.ts +2 -0
- package/plugin/build/app.plugin.js +6 -0
- package/plugin/src/app.plugin.ts +3 -0
- package/plugin/tsconfig.tsbuildinfo +1 -1
- package/react-native.config.js +10 -0
- package/specs/NativeRNFBTurboMessaging.ts +46 -0
- package/typedoc.json +2 -19
- package/dist/module/modular.js +0 -396
- package/dist/module/modular.js.map +0 -1
- package/dist/module/namespaced.js +0 -415
- package/dist/module/namespaced.js.map +0 -1
- package/dist/typescript/lib/modular.d.ts +0 -255
- package/dist/typescript/lib/modular.d.ts.map +0 -1
- package/dist/typescript/lib/namespaced.d.ts +0 -12
- package/dist/typescript/lib/namespaced.d.ts.map +0 -1
- package/ios/RNFBMessaging/RNFBMessagingModule.m +0 -439
- package/lib/modular.ts +0 -455
- package/lib/namespaced.ts +0 -593
|
@@ -0,0 +1,161 @@
|
|
|
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: GenerateModuleCpp.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#include "RNFBMessagingTurboModulesJSI.h"
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
15
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->getConstants(
|
|
16
|
+
rt
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getInitialNotification(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
20
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->getInitialNotification(
|
|
21
|
+
rt
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getDidOpenSettingsForNotification(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
25
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->getDidOpenSettingsForNotification(
|
|
26
|
+
rt
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_setAutoInitEnabled(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
30
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->setAutoInitEnabled(
|
|
31
|
+
rt,
|
|
32
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asBool()
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_signalBackgroundMessageHandlerSet(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
36
|
+
static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->signalBackgroundMessageHandlerSet(
|
|
37
|
+
rt
|
|
38
|
+
);
|
|
39
|
+
return jsi::Value::undefined();
|
|
40
|
+
}
|
|
41
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_completeNotificationProcessing(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
42
|
+
static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->completeNotificationProcessing(
|
|
43
|
+
rt
|
|
44
|
+
);
|
|
45
|
+
return jsi::Value::undefined();
|
|
46
|
+
}
|
|
47
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getToken(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
48
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->getToken(
|
|
49
|
+
rt,
|
|
50
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
51
|
+
count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt)
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_deleteToken(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
55
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->deleteToken(
|
|
56
|
+
rt,
|
|
57
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
58
|
+
count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt)
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getAPNSToken(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
62
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->getAPNSToken(
|
|
63
|
+
rt
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_setAPNSToken(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
67
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->setAPNSToken(
|
|
68
|
+
rt,
|
|
69
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
70
|
+
count <= 1 || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asString(rt))
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getIsHeadless(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
74
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->getIsHeadless(
|
|
75
|
+
rt
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_requestPermission(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
79
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->requestPermission(
|
|
80
|
+
rt,
|
|
81
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asObject(rt)
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_registerForRemoteNotifications(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
85
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->registerForRemoteNotifications(
|
|
86
|
+
rt
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_unregisterForRemoteNotifications(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
90
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->unregisterForRemoteNotifications(
|
|
91
|
+
rt
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_hasPermission(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
95
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->hasPermission(
|
|
96
|
+
rt
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_sendMessage(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
100
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->sendMessage(
|
|
101
|
+
rt,
|
|
102
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asObject(rt)
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_subscribeToTopic(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
106
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->subscribeToTopic(
|
|
107
|
+
rt,
|
|
108
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_unsubscribeFromTopic(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
112
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->unsubscribeFromTopic(
|
|
113
|
+
rt,
|
|
114
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_setDeliveryMetricsExportToBigQuery(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
118
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->setDeliveryMetricsExportToBigQuery(
|
|
119
|
+
rt,
|
|
120
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asBool()
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_setNotificationDelegationEnabled(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
124
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->setNotificationDelegationEnabled(
|
|
125
|
+
rt,
|
|
126
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asBool()
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
static jsi::Value __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_isNotificationDelegationEnabled(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
130
|
+
return static_cast<NativeRNFBTurboMessagingCxxSpecJSI *>(&turboModule)->isNotificationDelegationEnabled(
|
|
131
|
+
rt
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
NativeRNFBTurboMessagingCxxSpecJSI::NativeRNFBTurboMessagingCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
|
|
136
|
+
: TurboModule("NativeRNFBTurboMessaging", jsInvoker) {
|
|
137
|
+
methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getConstants};
|
|
138
|
+
methodMap_["getInitialNotification"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getInitialNotification};
|
|
139
|
+
methodMap_["getDidOpenSettingsForNotification"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getDidOpenSettingsForNotification};
|
|
140
|
+
methodMap_["setAutoInitEnabled"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_setAutoInitEnabled};
|
|
141
|
+
methodMap_["signalBackgroundMessageHandlerSet"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_signalBackgroundMessageHandlerSet};
|
|
142
|
+
methodMap_["completeNotificationProcessing"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_completeNotificationProcessing};
|
|
143
|
+
methodMap_["getToken"] = MethodMetadata {2, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getToken};
|
|
144
|
+
methodMap_["deleteToken"] = MethodMetadata {2, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_deleteToken};
|
|
145
|
+
methodMap_["getAPNSToken"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getAPNSToken};
|
|
146
|
+
methodMap_["setAPNSToken"] = MethodMetadata {2, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_setAPNSToken};
|
|
147
|
+
methodMap_["getIsHeadless"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_getIsHeadless};
|
|
148
|
+
methodMap_["requestPermission"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_requestPermission};
|
|
149
|
+
methodMap_["registerForRemoteNotifications"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_registerForRemoteNotifications};
|
|
150
|
+
methodMap_["unregisterForRemoteNotifications"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_unregisterForRemoteNotifications};
|
|
151
|
+
methodMap_["hasPermission"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_hasPermission};
|
|
152
|
+
methodMap_["sendMessage"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_sendMessage};
|
|
153
|
+
methodMap_["subscribeToTopic"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_subscribeToTopic};
|
|
154
|
+
methodMap_["unsubscribeFromTopic"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_unsubscribeFromTopic};
|
|
155
|
+
methodMap_["setDeliveryMetricsExportToBigQuery"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_setDeliveryMetricsExportToBigQuery};
|
|
156
|
+
methodMap_["setNotificationDelegationEnabled"] = MethodMetadata {1, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_setNotificationDelegationEnabled};
|
|
157
|
+
methodMap_["isNotificationDelegationEnabled"] = MethodMetadata {0, __hostFunction_NativeRNFBTurboMessagingCxxSpecJSI_isNotificationDelegationEnabled};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,356 @@
|
|
|
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: GenerateModuleH.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#pragma once
|
|
11
|
+
|
|
12
|
+
#include <ReactCommon/TurboModule.h>
|
|
13
|
+
#include <react/bridging/Bridging.h>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#pragma mark - NativeRNFBTurboMessagingIOSPermissions
|
|
20
|
+
|
|
21
|
+
template <typename P0, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
|
|
22
|
+
struct NativeRNFBTurboMessagingIOSPermissions {
|
|
23
|
+
P0 alert;
|
|
24
|
+
P1 announcement;
|
|
25
|
+
P2 badge;
|
|
26
|
+
P3 carPlay;
|
|
27
|
+
P4 criticalAlert;
|
|
28
|
+
P5 provisional;
|
|
29
|
+
P6 sound;
|
|
30
|
+
P7 providesAppNotificationSettings;
|
|
31
|
+
bool operator==(const NativeRNFBTurboMessagingIOSPermissions &other) const {
|
|
32
|
+
return alert == other.alert && announcement == other.announcement && badge == other.badge && carPlay == other.carPlay && criticalAlert == other.criticalAlert && provisional == other.provisional && sound == other.sound && providesAppNotificationSettings == other.providesAppNotificationSettings;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
template <typename T>
|
|
37
|
+
struct NativeRNFBTurboMessagingIOSPermissionsBridging {
|
|
38
|
+
static T types;
|
|
39
|
+
|
|
40
|
+
static T fromJs(
|
|
41
|
+
jsi::Runtime &rt,
|
|
42
|
+
const jsi::Object &value,
|
|
43
|
+
const std::shared_ptr<CallInvoker> &jsInvoker) {
|
|
44
|
+
T result{
|
|
45
|
+
bridging::fromJs<decltype(types.alert)>(rt, value.getProperty(rt, "alert"), jsInvoker),
|
|
46
|
+
bridging::fromJs<decltype(types.announcement)>(rt, value.getProperty(rt, "announcement"), jsInvoker),
|
|
47
|
+
bridging::fromJs<decltype(types.badge)>(rt, value.getProperty(rt, "badge"), jsInvoker),
|
|
48
|
+
bridging::fromJs<decltype(types.carPlay)>(rt, value.getProperty(rt, "carPlay"), jsInvoker),
|
|
49
|
+
bridging::fromJs<decltype(types.criticalAlert)>(rt, value.getProperty(rt, "criticalAlert"), jsInvoker),
|
|
50
|
+
bridging::fromJs<decltype(types.provisional)>(rt, value.getProperty(rt, "provisional"), jsInvoker),
|
|
51
|
+
bridging::fromJs<decltype(types.sound)>(rt, value.getProperty(rt, "sound"), jsInvoker),
|
|
52
|
+
bridging::fromJs<decltype(types.providesAppNotificationSettings)>(rt, value.getProperty(rt, "providesAppNotificationSettings"), jsInvoker)};
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
#ifdef DEBUG
|
|
57
|
+
static bool alertToJs(jsi::Runtime &rt, decltype(types.alert) value) {
|
|
58
|
+
return bridging::toJs(rt, value);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static bool announcementToJs(jsi::Runtime &rt, decltype(types.announcement) value) {
|
|
62
|
+
return bridging::toJs(rt, value);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static bool badgeToJs(jsi::Runtime &rt, decltype(types.badge) value) {
|
|
66
|
+
return bridging::toJs(rt, value);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
static bool carPlayToJs(jsi::Runtime &rt, decltype(types.carPlay) value) {
|
|
70
|
+
return bridging::toJs(rt, value);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
static bool criticalAlertToJs(jsi::Runtime &rt, decltype(types.criticalAlert) value) {
|
|
74
|
+
return bridging::toJs(rt, value);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
static bool provisionalToJs(jsi::Runtime &rt, decltype(types.provisional) value) {
|
|
78
|
+
return bridging::toJs(rt, value);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
static bool soundToJs(jsi::Runtime &rt, decltype(types.sound) value) {
|
|
82
|
+
return bridging::toJs(rt, value);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
static bool providesAppNotificationSettingsToJs(jsi::Runtime &rt, decltype(types.providesAppNotificationSettings) value) {
|
|
86
|
+
return bridging::toJs(rt, value);
|
|
87
|
+
}
|
|
88
|
+
#endif
|
|
89
|
+
|
|
90
|
+
static jsi::Object toJs(
|
|
91
|
+
jsi::Runtime &rt,
|
|
92
|
+
const T &value,
|
|
93
|
+
const std::shared_ptr<CallInvoker> &jsInvoker) {
|
|
94
|
+
auto result = facebook::jsi::Object(rt);
|
|
95
|
+
if (value.alert) {
|
|
96
|
+
result.setProperty(rt, "alert", bridging::toJs(rt, value.alert.value(), jsInvoker));
|
|
97
|
+
}
|
|
98
|
+
if (value.announcement) {
|
|
99
|
+
result.setProperty(rt, "announcement", bridging::toJs(rt, value.announcement.value(), jsInvoker));
|
|
100
|
+
}
|
|
101
|
+
if (value.badge) {
|
|
102
|
+
result.setProperty(rt, "badge", bridging::toJs(rt, value.badge.value(), jsInvoker));
|
|
103
|
+
}
|
|
104
|
+
if (value.carPlay) {
|
|
105
|
+
result.setProperty(rt, "carPlay", bridging::toJs(rt, value.carPlay.value(), jsInvoker));
|
|
106
|
+
}
|
|
107
|
+
if (value.criticalAlert) {
|
|
108
|
+
result.setProperty(rt, "criticalAlert", bridging::toJs(rt, value.criticalAlert.value(), jsInvoker));
|
|
109
|
+
}
|
|
110
|
+
if (value.provisional) {
|
|
111
|
+
result.setProperty(rt, "provisional", bridging::toJs(rt, value.provisional.value(), jsInvoker));
|
|
112
|
+
}
|
|
113
|
+
if (value.sound) {
|
|
114
|
+
result.setProperty(rt, "sound", bridging::toJs(rt, value.sound.value(), jsInvoker));
|
|
115
|
+
}
|
|
116
|
+
if (value.providesAppNotificationSettings) {
|
|
117
|
+
result.setProperty(rt, "providesAppNotificationSettings", bridging::toJs(rt, value.providesAppNotificationSettings.value(), jsInvoker));
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
class JSI_EXPORT NativeRNFBTurboMessagingCxxSpecJSI : public TurboModule {
|
|
124
|
+
protected:
|
|
125
|
+
NativeRNFBTurboMessagingCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
|
|
126
|
+
|
|
127
|
+
public:
|
|
128
|
+
virtual jsi::Object getConstants(jsi::Runtime &rt) = 0;
|
|
129
|
+
virtual jsi::Value getInitialNotification(jsi::Runtime &rt) = 0;
|
|
130
|
+
virtual jsi::Value getDidOpenSettingsForNotification(jsi::Runtime &rt) = 0;
|
|
131
|
+
virtual jsi::Value setAutoInitEnabled(jsi::Runtime &rt, bool enabled) = 0;
|
|
132
|
+
virtual void signalBackgroundMessageHandlerSet(jsi::Runtime &rt) = 0;
|
|
133
|
+
virtual void completeNotificationProcessing(jsi::Runtime &rt) = 0;
|
|
134
|
+
virtual jsi::Value getToken(jsi::Runtime &rt, jsi::String appName, jsi::String senderId) = 0;
|
|
135
|
+
virtual jsi::Value deleteToken(jsi::Runtime &rt, jsi::String appName, jsi::String senderId) = 0;
|
|
136
|
+
virtual jsi::Value getAPNSToken(jsi::Runtime &rt) = 0;
|
|
137
|
+
virtual jsi::Value setAPNSToken(jsi::Runtime &rt, jsi::String token, std::optional<jsi::String> type) = 0;
|
|
138
|
+
virtual jsi::Value getIsHeadless(jsi::Runtime &rt) = 0;
|
|
139
|
+
virtual jsi::Value requestPermission(jsi::Runtime &rt, jsi::Object permissions) = 0;
|
|
140
|
+
virtual jsi::Value registerForRemoteNotifications(jsi::Runtime &rt) = 0;
|
|
141
|
+
virtual jsi::Value unregisterForRemoteNotifications(jsi::Runtime &rt) = 0;
|
|
142
|
+
virtual jsi::Value hasPermission(jsi::Runtime &rt) = 0;
|
|
143
|
+
virtual jsi::Value sendMessage(jsi::Runtime &rt, jsi::Object remoteMessageMap) = 0;
|
|
144
|
+
virtual jsi::Value subscribeToTopic(jsi::Runtime &rt, jsi::String topic) = 0;
|
|
145
|
+
virtual jsi::Value unsubscribeFromTopic(jsi::Runtime &rt, jsi::String topic) = 0;
|
|
146
|
+
virtual jsi::Value setDeliveryMetricsExportToBigQuery(jsi::Runtime &rt, bool enabled) = 0;
|
|
147
|
+
virtual jsi::Value setNotificationDelegationEnabled(jsi::Runtime &rt, bool enabled) = 0;
|
|
148
|
+
virtual jsi::Value isNotificationDelegationEnabled(jsi::Runtime &rt) = 0;
|
|
149
|
+
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
template <typename T>
|
|
153
|
+
class JSI_EXPORT NativeRNFBTurboMessagingCxxSpec : public TurboModule {
|
|
154
|
+
public:
|
|
155
|
+
jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
|
|
156
|
+
return delegate_.create(rt, propName);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& runtime) override {
|
|
160
|
+
return delegate_.getPropertyNames(runtime);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
static constexpr std::string_view kModuleName = "NativeRNFBTurboMessaging";
|
|
164
|
+
|
|
165
|
+
protected:
|
|
166
|
+
NativeRNFBTurboMessagingCxxSpec(std::shared_ptr<CallInvoker> jsInvoker)
|
|
167
|
+
: TurboModule(std::string{NativeRNFBTurboMessagingCxxSpec::kModuleName}, jsInvoker),
|
|
168
|
+
delegate_(reinterpret_cast<T*>(this), jsInvoker) {}
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
private:
|
|
172
|
+
class Delegate : public NativeRNFBTurboMessagingCxxSpecJSI {
|
|
173
|
+
public:
|
|
174
|
+
Delegate(T *instance, std::shared_ptr<CallInvoker> jsInvoker) :
|
|
175
|
+
NativeRNFBTurboMessagingCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
|
|
176
|
+
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
jsi::Object getConstants(jsi::Runtime &rt) override {
|
|
180
|
+
static_assert(
|
|
181
|
+
bridging::getParameterCount(&T::getConstants) == 1,
|
|
182
|
+
"Expected getConstants(...) to have 1 parameters");
|
|
183
|
+
|
|
184
|
+
return bridging::callFromJs<jsi::Object>(
|
|
185
|
+
rt, &T::getConstants, jsInvoker_, instance_);
|
|
186
|
+
}
|
|
187
|
+
jsi::Value getInitialNotification(jsi::Runtime &rt) override {
|
|
188
|
+
static_assert(
|
|
189
|
+
bridging::getParameterCount(&T::getInitialNotification) == 1,
|
|
190
|
+
"Expected getInitialNotification(...) to have 1 parameters");
|
|
191
|
+
|
|
192
|
+
return bridging::callFromJs<jsi::Value>(
|
|
193
|
+
rt, &T::getInitialNotification, jsInvoker_, instance_);
|
|
194
|
+
}
|
|
195
|
+
jsi::Value getDidOpenSettingsForNotification(jsi::Runtime &rt) override {
|
|
196
|
+
static_assert(
|
|
197
|
+
bridging::getParameterCount(&T::getDidOpenSettingsForNotification) == 1,
|
|
198
|
+
"Expected getDidOpenSettingsForNotification(...) to have 1 parameters");
|
|
199
|
+
|
|
200
|
+
return bridging::callFromJs<jsi::Value>(
|
|
201
|
+
rt, &T::getDidOpenSettingsForNotification, jsInvoker_, instance_);
|
|
202
|
+
}
|
|
203
|
+
jsi::Value setAutoInitEnabled(jsi::Runtime &rt, bool enabled) override {
|
|
204
|
+
static_assert(
|
|
205
|
+
bridging::getParameterCount(&T::setAutoInitEnabled) == 2,
|
|
206
|
+
"Expected setAutoInitEnabled(...) to have 2 parameters");
|
|
207
|
+
|
|
208
|
+
return bridging::callFromJs<jsi::Value>(
|
|
209
|
+
rt, &T::setAutoInitEnabled, jsInvoker_, instance_, std::move(enabled));
|
|
210
|
+
}
|
|
211
|
+
void signalBackgroundMessageHandlerSet(jsi::Runtime &rt) override {
|
|
212
|
+
static_assert(
|
|
213
|
+
bridging::getParameterCount(&T::signalBackgroundMessageHandlerSet) == 1,
|
|
214
|
+
"Expected signalBackgroundMessageHandlerSet(...) to have 1 parameters");
|
|
215
|
+
|
|
216
|
+
return bridging::callFromJs<void>(
|
|
217
|
+
rt, &T::signalBackgroundMessageHandlerSet, jsInvoker_, instance_);
|
|
218
|
+
}
|
|
219
|
+
void completeNotificationProcessing(jsi::Runtime &rt) override {
|
|
220
|
+
static_assert(
|
|
221
|
+
bridging::getParameterCount(&T::completeNotificationProcessing) == 1,
|
|
222
|
+
"Expected completeNotificationProcessing(...) to have 1 parameters");
|
|
223
|
+
|
|
224
|
+
return bridging::callFromJs<void>(
|
|
225
|
+
rt, &T::completeNotificationProcessing, jsInvoker_, instance_);
|
|
226
|
+
}
|
|
227
|
+
jsi::Value getToken(jsi::Runtime &rt, jsi::String appName, jsi::String senderId) override {
|
|
228
|
+
static_assert(
|
|
229
|
+
bridging::getParameterCount(&T::getToken) == 3,
|
|
230
|
+
"Expected getToken(...) to have 3 parameters");
|
|
231
|
+
|
|
232
|
+
return bridging::callFromJs<jsi::Value>(
|
|
233
|
+
rt, &T::getToken, jsInvoker_, instance_, std::move(appName), std::move(senderId));
|
|
234
|
+
}
|
|
235
|
+
jsi::Value deleteToken(jsi::Runtime &rt, jsi::String appName, jsi::String senderId) override {
|
|
236
|
+
static_assert(
|
|
237
|
+
bridging::getParameterCount(&T::deleteToken) == 3,
|
|
238
|
+
"Expected deleteToken(...) to have 3 parameters");
|
|
239
|
+
|
|
240
|
+
return bridging::callFromJs<jsi::Value>(
|
|
241
|
+
rt, &T::deleteToken, jsInvoker_, instance_, std::move(appName), std::move(senderId));
|
|
242
|
+
}
|
|
243
|
+
jsi::Value getAPNSToken(jsi::Runtime &rt) override {
|
|
244
|
+
static_assert(
|
|
245
|
+
bridging::getParameterCount(&T::getAPNSToken) == 1,
|
|
246
|
+
"Expected getAPNSToken(...) to have 1 parameters");
|
|
247
|
+
|
|
248
|
+
return bridging::callFromJs<jsi::Value>(
|
|
249
|
+
rt, &T::getAPNSToken, jsInvoker_, instance_);
|
|
250
|
+
}
|
|
251
|
+
jsi::Value setAPNSToken(jsi::Runtime &rt, jsi::String token, std::optional<jsi::String> type) override {
|
|
252
|
+
static_assert(
|
|
253
|
+
bridging::getParameterCount(&T::setAPNSToken) == 3,
|
|
254
|
+
"Expected setAPNSToken(...) to have 3 parameters");
|
|
255
|
+
|
|
256
|
+
return bridging::callFromJs<jsi::Value>(
|
|
257
|
+
rt, &T::setAPNSToken, jsInvoker_, instance_, std::move(token), std::move(type));
|
|
258
|
+
}
|
|
259
|
+
jsi::Value getIsHeadless(jsi::Runtime &rt) override {
|
|
260
|
+
static_assert(
|
|
261
|
+
bridging::getParameterCount(&T::getIsHeadless) == 1,
|
|
262
|
+
"Expected getIsHeadless(...) to have 1 parameters");
|
|
263
|
+
|
|
264
|
+
return bridging::callFromJs<jsi::Value>(
|
|
265
|
+
rt, &T::getIsHeadless, jsInvoker_, instance_);
|
|
266
|
+
}
|
|
267
|
+
jsi::Value requestPermission(jsi::Runtime &rt, jsi::Object permissions) override {
|
|
268
|
+
static_assert(
|
|
269
|
+
bridging::getParameterCount(&T::requestPermission) == 2,
|
|
270
|
+
"Expected requestPermission(...) to have 2 parameters");
|
|
271
|
+
|
|
272
|
+
return bridging::callFromJs<jsi::Value>(
|
|
273
|
+
rt, &T::requestPermission, jsInvoker_, instance_, std::move(permissions));
|
|
274
|
+
}
|
|
275
|
+
jsi::Value registerForRemoteNotifications(jsi::Runtime &rt) override {
|
|
276
|
+
static_assert(
|
|
277
|
+
bridging::getParameterCount(&T::registerForRemoteNotifications) == 1,
|
|
278
|
+
"Expected registerForRemoteNotifications(...) to have 1 parameters");
|
|
279
|
+
|
|
280
|
+
return bridging::callFromJs<jsi::Value>(
|
|
281
|
+
rt, &T::registerForRemoteNotifications, jsInvoker_, instance_);
|
|
282
|
+
}
|
|
283
|
+
jsi::Value unregisterForRemoteNotifications(jsi::Runtime &rt) override {
|
|
284
|
+
static_assert(
|
|
285
|
+
bridging::getParameterCount(&T::unregisterForRemoteNotifications) == 1,
|
|
286
|
+
"Expected unregisterForRemoteNotifications(...) to have 1 parameters");
|
|
287
|
+
|
|
288
|
+
return bridging::callFromJs<jsi::Value>(
|
|
289
|
+
rt, &T::unregisterForRemoteNotifications, jsInvoker_, instance_);
|
|
290
|
+
}
|
|
291
|
+
jsi::Value hasPermission(jsi::Runtime &rt) override {
|
|
292
|
+
static_assert(
|
|
293
|
+
bridging::getParameterCount(&T::hasPermission) == 1,
|
|
294
|
+
"Expected hasPermission(...) to have 1 parameters");
|
|
295
|
+
|
|
296
|
+
return bridging::callFromJs<jsi::Value>(
|
|
297
|
+
rt, &T::hasPermission, jsInvoker_, instance_);
|
|
298
|
+
}
|
|
299
|
+
jsi::Value sendMessage(jsi::Runtime &rt, jsi::Object remoteMessageMap) override {
|
|
300
|
+
static_assert(
|
|
301
|
+
bridging::getParameterCount(&T::sendMessage) == 2,
|
|
302
|
+
"Expected sendMessage(...) to have 2 parameters");
|
|
303
|
+
|
|
304
|
+
return bridging::callFromJs<jsi::Value>(
|
|
305
|
+
rt, &T::sendMessage, jsInvoker_, instance_, std::move(remoteMessageMap));
|
|
306
|
+
}
|
|
307
|
+
jsi::Value subscribeToTopic(jsi::Runtime &rt, jsi::String topic) override {
|
|
308
|
+
static_assert(
|
|
309
|
+
bridging::getParameterCount(&T::subscribeToTopic) == 2,
|
|
310
|
+
"Expected subscribeToTopic(...) to have 2 parameters");
|
|
311
|
+
|
|
312
|
+
return bridging::callFromJs<jsi::Value>(
|
|
313
|
+
rt, &T::subscribeToTopic, jsInvoker_, instance_, std::move(topic));
|
|
314
|
+
}
|
|
315
|
+
jsi::Value unsubscribeFromTopic(jsi::Runtime &rt, jsi::String topic) override {
|
|
316
|
+
static_assert(
|
|
317
|
+
bridging::getParameterCount(&T::unsubscribeFromTopic) == 2,
|
|
318
|
+
"Expected unsubscribeFromTopic(...) to have 2 parameters");
|
|
319
|
+
|
|
320
|
+
return bridging::callFromJs<jsi::Value>(
|
|
321
|
+
rt, &T::unsubscribeFromTopic, jsInvoker_, instance_, std::move(topic));
|
|
322
|
+
}
|
|
323
|
+
jsi::Value setDeliveryMetricsExportToBigQuery(jsi::Runtime &rt, bool enabled) override {
|
|
324
|
+
static_assert(
|
|
325
|
+
bridging::getParameterCount(&T::setDeliveryMetricsExportToBigQuery) == 2,
|
|
326
|
+
"Expected setDeliveryMetricsExportToBigQuery(...) to have 2 parameters");
|
|
327
|
+
|
|
328
|
+
return bridging::callFromJs<jsi::Value>(
|
|
329
|
+
rt, &T::setDeliveryMetricsExportToBigQuery, jsInvoker_, instance_, std::move(enabled));
|
|
330
|
+
}
|
|
331
|
+
jsi::Value setNotificationDelegationEnabled(jsi::Runtime &rt, bool enabled) override {
|
|
332
|
+
static_assert(
|
|
333
|
+
bridging::getParameterCount(&T::setNotificationDelegationEnabled) == 2,
|
|
334
|
+
"Expected setNotificationDelegationEnabled(...) to have 2 parameters");
|
|
335
|
+
|
|
336
|
+
return bridging::callFromJs<jsi::Value>(
|
|
337
|
+
rt, &T::setNotificationDelegationEnabled, jsInvoker_, instance_, std::move(enabled));
|
|
338
|
+
}
|
|
339
|
+
jsi::Value isNotificationDelegationEnabled(jsi::Runtime &rt) override {
|
|
340
|
+
static_assert(
|
|
341
|
+
bridging::getParameterCount(&T::isNotificationDelegationEnabled) == 1,
|
|
342
|
+
"Expected isNotificationDelegationEnabled(...) to have 1 parameters");
|
|
343
|
+
|
|
344
|
+
return bridging::callFromJs<jsi::Value>(
|
|
345
|
+
rt, &T::isNotificationDelegationEnabled, jsInvoker_, instance_);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
private:
|
|
349
|
+
friend class NativeRNFBTurboMessagingCxxSpec;
|
|
350
|
+
T *instance_;
|
|
351
|
+
};
|
|
352
|
+
|
|
353
|
+
Delegate delegate_;
|
|
354
|
+
};
|
|
355
|
+
|
|
356
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
#
|
|
3
|
+
# This source code is licensed under the MIT license found in the
|
|
4
|
+
# LICENSE file in the root directory of this source tree.
|
|
5
|
+
|
|
6
|
+
version = "0.78.3"
|
|
7
|
+
source = { :git => 'https://github.com/facebook/react-native.git' }
|
|
8
|
+
if version == '1000.0.0'
|
|
9
|
+
# This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
|
|
10
|
+
source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
|
|
11
|
+
else
|
|
12
|
+
source[:tag] = "v#{version}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
Pod::Spec.new do |s|
|
|
16
|
+
s.name = "ReactAppDependencyProvider"
|
|
17
|
+
s.version = version
|
|
18
|
+
s.summary = "The third party dependency provider for the app"
|
|
19
|
+
s.homepage = "https://reactnative.dev/"
|
|
20
|
+
s.documentation_url = "https://reactnative.dev/"
|
|
21
|
+
s.license = "MIT"
|
|
22
|
+
s.author = "Meta Platforms, Inc. and its affiliates"
|
|
23
|
+
s.platforms = min_supported_versions
|
|
24
|
+
s.source = source
|
|
25
|
+
s.source_files = "**/RCTAppDependencyProvider.{h,mm}"
|
|
26
|
+
|
|
27
|
+
# This guard prevent to install the dependencies when we run `pod install` in the old architecture.
|
|
28
|
+
s.pod_target_xcconfig = {
|
|
29
|
+
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
|
|
30
|
+
"DEFINES_MODULE" => "YES"
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
s.dependency "ReactCodegen"
|
|
34
|
+
end
|