react-native-iap 13.0.4 → 14.0.0-rc.2

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 (381) hide show
  1. package/NitroIap.podspec +33 -0
  2. package/README.md +163 -51
  3. package/android/CMakeLists.txt +32 -0
  4. package/android/build.gradle +107 -138
  5. package/android/fix-prefab.gradle +51 -0
  6. package/android/gradle.properties +5 -13
  7. package/android/src/main/AndroidManifest.xml +1 -4
  8. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  9. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +843 -0
  10. package/android/src/main/java/com/margelo/nitro/iap/NitroIapPackage.java +33 -0
  11. package/android/src/main/java/com/margelo/nitro/iap/Types.kt +173 -0
  12. package/ios/Bridge.h +8 -0
  13. package/ios/ErrorUtils.swift +153 -0
  14. package/ios/HybridRnIap.swift +1326 -0
  15. package/ios/ProductStore.swift +33 -0
  16. package/ios/reactnativeiap.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  17. package/ios/reactnativeiap.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  18. package/lib/module/helpers/subscription.js +56 -0
  19. package/lib/module/helpers/subscription.js.map +1 -0
  20. package/lib/module/hooks/useIAP.js +175 -123
  21. package/lib/module/hooks/useIAP.js.map +1 -1
  22. package/lib/module/index.js +1015 -9
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/module/package.json +1 -0
  25. package/lib/module/specs/RnIap.nitro.js +4 -0
  26. package/lib/{commonjs/modules/common.js.map → module/specs/RnIap.nitro.js.map} +1 -1
  27. package/lib/module/types.js +187 -0
  28. package/lib/module/types.js.map +1 -0
  29. package/lib/module/utils/error.js +80 -0
  30. package/lib/module/utils/error.js.map +1 -0
  31. package/lib/module/utils/type-bridge.js +202 -0
  32. package/lib/module/utils/type-bridge.js.map +1 -0
  33. package/lib/typescript/package.json +1 -0
  34. package/lib/typescript/plugin/src/withIAP.d.ts +2 -7
  35. package/lib/typescript/plugin/src/withIAP.d.ts.map +1 -1
  36. package/lib/typescript/scripts/check-nitro-versions.d.ts +3 -0
  37. package/lib/typescript/scripts/check-nitro-versions.d.ts.map +1 -0
  38. package/lib/typescript/src/helpers/subscription.d.ts +14 -0
  39. package/lib/typescript/src/helpers/subscription.d.ts.map +1 -0
  40. package/lib/typescript/src/hooks/useIAP.d.ts +42 -26
  41. package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
  42. package/lib/typescript/src/index.d.ts +356 -8
  43. package/lib/typescript/src/index.d.ts.map +1 -1
  44. package/lib/typescript/src/specs/RnIap.nitro.d.ts +404 -0
  45. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -0
  46. package/lib/typescript/src/types.d.ts +544 -0
  47. package/lib/typescript/src/types.d.ts.map +1 -0
  48. package/lib/typescript/src/utils/error.d.ts +30 -0
  49. package/lib/typescript/src/utils/error.d.ts.map +1 -0
  50. package/lib/typescript/src/utils/type-bridge.d.ts +40 -0
  51. package/lib/typescript/src/utils/type-bridge.d.ts.map +1 -0
  52. package/nitro.json +17 -0
  53. package/nitrogen/generated/android/NitroIap+autolinking.cmake +80 -0
  54. package/nitrogen/generated/android/NitroIap+autolinking.gradle +27 -0
  55. package/nitrogen/generated/android/NitroIapOnLoad.cpp +50 -0
  56. package/nitrogen/generated/android/NitroIapOnLoad.hpp +25 -0
  57. package/nitrogen/generated/android/c++/JFunc_void_NitroProduct.hpp +78 -0
  58. package/nitrogen/generated/android/c++/JFunc_void_NitroPurchase.hpp +78 -0
  59. package/nitrogen/generated/android/c++/JFunc_void_NitroPurchaseResult.hpp +78 -0
  60. package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +577 -0
  61. package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +93 -0
  62. package/nitrogen/generated/android/c++/JNitroAndroidReceiptValidationOptions.hpp +66 -0
  63. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidOptions.hpp +54 -0
  64. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesIosOptions.hpp +65 -0
  65. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesOptions.hpp +62 -0
  66. package/nitrogen/generated/android/c++/JNitroFinishTransactionAndroidParams.hpp +58 -0
  67. package/nitrogen/generated/android/c++/JNitroFinishTransactionIosParams.hpp +53 -0
  68. package/nitrogen/generated/android/c++/JNitroFinishTransactionParams.hpp +62 -0
  69. package/nitrogen/generated/android/c++/JNitroProduct.hpp +154 -0
  70. package/nitrogen/generated/android/c++/JNitroPurchase.hpp +122 -0
  71. package/nitrogen/generated/android/c++/JNitroPurchaseRequest.hpp +66 -0
  72. package/nitrogen/generated/android/c++/JNitroPurchaseResult.hpp +70 -0
  73. package/nitrogen/generated/android/c++/JNitroReceiptValidationParams.hpp +60 -0
  74. package/nitrogen/generated/android/c++/JNitroReceiptValidationResultAndroid.hpp +122 -0
  75. package/nitrogen/generated/android/c++/JNitroReceiptValidationResultIOS.hpp +68 -0
  76. package/nitrogen/generated/android/c++/JNitroRequestPurchaseAndroid.hpp +115 -0
  77. package/nitrogen/generated/android/c++/JNitroRequestPurchaseIos.hpp +84 -0
  78. package/nitrogen/generated/android/c++/JNitroSubscriptionOffer.hpp +57 -0
  79. package/nitrogen/generated/android/c++/JNitroSubscriptionRenewalInfo.hpp +74 -0
  80. package/nitrogen/generated/android/c++/JNitroSubscriptionStatus.hpp +64 -0
  81. package/nitrogen/generated/android/c++/JVariant_Boolean_NitroPurchaseResult.cpp +26 -0
  82. package/nitrogen/generated/android/c++/JVariant_Boolean_NitroPurchaseResult.hpp +71 -0
  83. package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.cpp +26 -0
  84. package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.hpp +75 -0
  85. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Func_void_NitroProduct.kt +81 -0
  86. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Func_void_NitroPurchase.kt +81 -0
  87. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Func_void_NitroPurchaseResult.kt +81 -0
  88. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +198 -0
  89. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAndroidReceiptValidationOptions.kt +38 -0
  90. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidOptions.kt +29 -0
  91. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesIosOptions.kt +38 -0
  92. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesOptions.kt +32 -0
  93. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroFinishTransactionAndroidParams.kt +32 -0
  94. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroFinishTransactionIosParams.kt +29 -0
  95. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroFinishTransactionParams.kt +32 -0
  96. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroIapOnLoad.kt +35 -0
  97. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +104 -0
  98. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +80 -0
  99. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchaseRequest.kt +32 -0
  100. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchaseResult.kt +41 -0
  101. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationParams.kt +32 -0
  102. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationResultAndroid.kt +80 -0
  103. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationResultIOS.kt +38 -0
  104. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseAndroid.kt +47 -0
  105. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseIos.kt +41 -0
  106. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroSubscriptionOffer.kt +32 -0
  107. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroSubscriptionRenewalInfo.kt +44 -0
  108. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroSubscriptionStatus.kt +35 -0
  109. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_Boolean_NitroPurchaseResult.kt +42 -0
  110. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.kt +42 -0
  111. package/nitrogen/generated/ios/NitroIap+autolinking.rb +60 -0
  112. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +152 -0
  113. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +1061 -0
  114. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +107 -0
  115. package/nitrogen/generated/ios/NitroIapAutolinking.mm +33 -0
  116. package/nitrogen/generated/ios/NitroIapAutolinking.swift +25 -0
  117. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.cpp +11 -0
  118. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +355 -0
  119. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  120. package/nitrogen/generated/ios/swift/Func_void_NitroProduct.swift +47 -0
  121. package/nitrogen/generated/ios/swift/Func_void_NitroPurchase.swift +47 -0
  122. package/nitrogen/generated/ios/swift/Func_void_NitroPurchaseResult.swift +47 -0
  123. package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
  124. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  125. package/nitrogen/generated/ios/swift/Func_void_std__optional_NitroProduct_.swift +54 -0
  126. package/nitrogen/generated/ios/swift/Func_void_std__optional_NitroPurchase_.swift +54 -0
  127. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__string_.swift +54 -0
  128. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__vector_NitroSubscriptionStatus__.swift +54 -0
  129. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  130. package/nitrogen/generated/ios/swift/Func_void_std__variant_NitroReceiptValidationResultIOS__NitroReceiptValidationResultAndroid_.swift +59 -0
  131. package/nitrogen/generated/ios/swift/Func_void_std__variant_bool__NitroPurchaseResult_.swift +59 -0
  132. package/nitrogen/generated/ios/swift/Func_void_std__vector_NitroProduct_.swift +47 -0
  133. package/nitrogen/generated/ios/swift/Func_void_std__vector_NitroPurchase_.swift +47 -0
  134. package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +78 -0
  135. package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +750 -0
  136. package/nitrogen/generated/ios/swift/NitroAndroidReceiptValidationOptions.swift +80 -0
  137. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidOptions.swift +54 -0
  138. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesIosOptions.swift +116 -0
  139. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesOptions.swift +84 -0
  140. package/nitrogen/generated/ios/swift/NitroFinishTransactionAndroidParams.swift +58 -0
  141. package/nitrogen/generated/ios/swift/NitroFinishTransactionIosParams.swift +35 -0
  142. package/nitrogen/generated/ios/swift/NitroFinishTransactionParams.swift +84 -0
  143. package/nitrogen/generated/ios/swift/NitroProduct.swift +653 -0
  144. package/nitrogen/generated/ios/swift/NitroPurchase.swift +453 -0
  145. package/nitrogen/generated/ios/swift/NitroPurchaseRequest.swift +84 -0
  146. package/nitrogen/generated/ios/swift/NitroPurchaseResult.swift +117 -0
  147. package/nitrogen/generated/ios/swift/NitroReceiptValidationParams.swift +65 -0
  148. package/nitrogen/generated/ios/swift/NitroReceiptValidationResultAndroid.swift +258 -0
  149. package/nitrogen/generated/ios/swift/NitroReceiptValidationResultIOS.swift +87 -0
  150. package/nitrogen/generated/ios/swift/NitroRequestPurchaseAndroid.swift +225 -0
  151. package/nitrogen/generated/ios/swift/NitroRequestPurchaseIos.swift +161 -0
  152. package/nitrogen/generated/ios/swift/NitroSubscriptionOffer.swift +46 -0
  153. package/nitrogen/generated/ios/swift/NitroSubscriptionRenewalInfo.swift +152 -0
  154. package/nitrogen/generated/ios/swift/NitroSubscriptionStatus.swift +76 -0
  155. package/nitrogen/generated/ios/swift/Variant_Bool_NitroPurchaseResult.swift +18 -0
  156. package/nitrogen/generated/ios/swift/Variant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.swift +18 -0
  157. package/nitrogen/generated/shared/c++/HybridRnIapSpec.cpp +50 -0
  158. package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +125 -0
  159. package/nitrogen/generated/shared/c++/NitroAndroidReceiptValidationOptions.hpp +80 -0
  160. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidOptions.hpp +68 -0
  161. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesIosOptions.hpp +79 -0
  162. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesOptions.hpp +76 -0
  163. package/nitrogen/generated/shared/c++/NitroFinishTransactionAndroidParams.hpp +72 -0
  164. package/nitrogen/generated/shared/c++/NitroFinishTransactionIosParams.hpp +67 -0
  165. package/nitrogen/generated/shared/c++/NitroFinishTransactionParams.hpp +76 -0
  166. package/nitrogen/generated/shared/c++/NitroProduct.hpp +168 -0
  167. package/nitrogen/generated/shared/c++/NitroPurchase.hpp +136 -0
  168. package/nitrogen/generated/shared/c++/NitroPurchaseRequest.hpp +76 -0
  169. package/nitrogen/generated/shared/c++/NitroPurchaseResult.hpp +84 -0
  170. package/nitrogen/generated/shared/c++/NitroReceiptValidationParams.hpp +74 -0
  171. package/nitrogen/generated/shared/c++/NitroReceiptValidationResultAndroid.hpp +136 -0
  172. package/nitrogen/generated/shared/c++/NitroReceiptValidationResultIOS.hpp +82 -0
  173. package/nitrogen/generated/shared/c++/NitroRequestPurchaseAndroid.hpp +95 -0
  174. package/nitrogen/generated/shared/c++/NitroRequestPurchaseIos.hpp +85 -0
  175. package/nitrogen/generated/shared/c++/NitroSubscriptionOffer.hpp +71 -0
  176. package/nitrogen/generated/shared/c++/NitroSubscriptionRenewalInfo.hpp +88 -0
  177. package/nitrogen/generated/shared/c++/NitroSubscriptionStatus.hpp +78 -0
  178. package/package.json +144 -104
  179. package/plugin/build/src/withIAP.d.ts +3 -0
  180. package/plugin/build/src/withIAP.js +81 -0
  181. package/plugin/build/tsconfig.tsbuildinfo +1 -0
  182. package/plugin/build/withIAP.d.ts +2 -7
  183. package/plugin/build/withIAP.js +62 -51
  184. package/plugin/src/withIAP.ts +119 -0
  185. package/plugin/tsconfig.json +18 -0
  186. package/plugin/tsconfig.tsbuildinfo +1 -0
  187. package/src/helpers/subscription.ts +65 -0
  188. package/src/hooks/useIAP.ts +361 -222
  189. package/src/index.ts +1194 -9
  190. package/src/specs/RnIap.nitro.ts +501 -0
  191. package/src/types.ts +680 -0
  192. package/src/utils/error.ts +97 -0
  193. package/src/utils/type-bridge.ts +209 -0
  194. package/LICENSE +0 -21
  195. package/RNIap.podspec +0 -36
  196. package/android/src/amazon/AndroidManifest.xml +0 -14
  197. package/android/src/amazon/java/com/dooboolab/rniap/EventSender.kt +0 -10
  198. package/android/src/amazon/java/com/dooboolab/rniap/PurchasingServiceProxy.kt +0 -29
  199. package/android/src/amazon/java/com/dooboolab/rniap/PurchasingServiceProxyAmazonImpl.kt +0 -31
  200. package/android/src/amazon/java/com/dooboolab/rniap/RNIapActivityListener.kt +0 -55
  201. package/android/src/amazon/java/com/dooboolab/rniap/RNIapAmazonListener.kt +0 -325
  202. package/android/src/amazon/java/com/dooboolab/rniap/RNIapAmazonModule.kt +0 -244
  203. package/android/src/amazon/java/com/dooboolab/rniap/RNIapPackage.kt +0 -17
  204. package/android/src/amazon/java/com/dooboolab/rniap/modifysubscription/RNIapAmazonModifySubscriptionListener.kt +0 -88
  205. package/android/src/amazon/java/com/dooboolab/rniap/utils/Extensions.kt +0 -22
  206. package/android/src/main/java/com/dooboolab/rniap/PromiseUtils.kt +0 -62
  207. package/android/src/main/java/com/dooboolab/rniap/PromiseUtlis.kt +0 -43
  208. package/android/src/play/java/com/dooboolab/rniap/PlayUtils.kt +0 -114
  209. package/android/src/play/java/com/dooboolab/rniap/RNIapActivityListener.kt +0 -15
  210. package/android/src/play/java/com/dooboolab/rniap/RNIapModule.kt +0 -911
  211. package/android/src/play/java/com/dooboolab/rniap/RNIapPackage.kt +0 -17
  212. package/android/src/testAmazon/java/com/dooboolab/rniap/RNIapAmazonModuleTest.kt +0 -170
  213. package/app.plugin.js +0 -1
  214. package/ios/IapSerializationUtils.swift +0 -290
  215. package/ios/IapTypes.swift +0 -56
  216. package/ios/IapUtils.swift +0 -40
  217. package/ios/LatestPromiseKeeper.swift +0 -52
  218. package/ios/RNIapIos-Bridging-Header.h +0 -2
  219. package/ios/RNIapIos.m +0 -69
  220. package/ios/RNIapIos.swift +0 -868
  221. package/ios/RNIapIos.xcodeproj/project.pbxproj +0 -289
  222. package/ios/RNIapIosSk2.m +0 -126
  223. package/ios/RNIapIosSk2.swift +0 -1413
  224. package/ios/ThreadSafe.swift +0 -18
  225. package/lib/commonjs/eventEmitter.js +0 -195
  226. package/lib/commonjs/eventEmitter.js.map +0 -1
  227. package/lib/commonjs/hooks/index.js +0 -17
  228. package/lib/commonjs/hooks/index.js.map +0 -1
  229. package/lib/commonjs/hooks/useIAP.js +0 -203
  230. package/lib/commonjs/hooks/useIAP.js.map +0 -1
  231. package/lib/commonjs/hooks/withIAPContext.js +0 -95
  232. package/lib/commonjs/hooks/withIAPContext.js.map +0 -1
  233. package/lib/commonjs/iap.js +0 -836
  234. package/lib/commonjs/iap.js.map +0 -1
  235. package/lib/commonjs/index.js +0 -105
  236. package/lib/commonjs/index.js.map +0 -1
  237. package/lib/commonjs/internal/enhancedFetch.js +0 -26
  238. package/lib/commonjs/internal/enhancedFetch.js.map +0 -1
  239. package/lib/commonjs/internal/fillProductsWithAdditionalData.js +0 -50
  240. package/lib/commonjs/internal/fillProductsWithAdditionalData.js.map +0 -1
  241. package/lib/commonjs/internal/index.js +0 -39
  242. package/lib/commonjs/internal/index.js.map +0 -1
  243. package/lib/commonjs/internal/platform.js +0 -119
  244. package/lib/commonjs/internal/platform.js.map +0 -1
  245. package/lib/commonjs/modules/amazon.js +0 -50
  246. package/lib/commonjs/modules/amazon.js.map +0 -1
  247. package/lib/commonjs/modules/android.js +0 -92
  248. package/lib/commonjs/modules/android.js.map +0 -1
  249. package/lib/commonjs/modules/common.js +0 -2
  250. package/lib/commonjs/modules/index.js +0 -50
  251. package/lib/commonjs/modules/index.js.map +0 -1
  252. package/lib/commonjs/modules/ios.js +0 -160
  253. package/lib/commonjs/modules/ios.js.map +0 -1
  254. package/lib/commonjs/modules/iosSk2.js +0 -113
  255. package/lib/commonjs/modules/iosSk2.js.map +0 -1
  256. package/lib/commonjs/purchaseError.js +0 -170
  257. package/lib/commonjs/purchaseError.js.map +0 -1
  258. package/lib/commonjs/types/amazon.js +0 -2
  259. package/lib/commonjs/types/amazon.js.map +0 -1
  260. package/lib/commonjs/types/android.js +0 -67
  261. package/lib/commonjs/types/android.js.map +0 -1
  262. package/lib/commonjs/types/apple.js +0 -24
  263. package/lib/commonjs/types/apple.js.map +0 -1
  264. package/lib/commonjs/types/appleSk2.js +0 -137
  265. package/lib/commonjs/types/appleSk2.js.map +0 -1
  266. package/lib/commonjs/types/index.js +0 -67
  267. package/lib/commonjs/types/index.js.map +0 -1
  268. package/lib/commonjs/utils/errorMapping.js +0 -83
  269. package/lib/commonjs/utils/errorMapping.js.map +0 -1
  270. package/lib/commonjs/utils/typeGuards.js +0 -74
  271. package/lib/commonjs/utils/typeGuards.js.map +0 -1
  272. package/lib/module/eventEmitter.js +0 -185
  273. package/lib/module/eventEmitter.js.map +0 -1
  274. package/lib/module/hooks/index.js +0 -2
  275. package/lib/module/hooks/index.js.map +0 -1
  276. package/lib/module/hooks/withIAPContext.js +0 -86
  277. package/lib/module/hooks/withIAPContext.js.map +0 -1
  278. package/lib/module/iap.js +0 -805
  279. package/lib/module/iap.js.map +0 -1
  280. package/lib/module/internal/enhancedFetch.js +0 -19
  281. package/lib/module/internal/enhancedFetch.js.map +0 -1
  282. package/lib/module/internal/fillProductsWithAdditionalData.js +0 -43
  283. package/lib/module/internal/fillProductsWithAdditionalData.js.map +0 -1
  284. package/lib/module/internal/index.js +0 -4
  285. package/lib/module/internal/index.js.map +0 -1
  286. package/lib/module/internal/platform.js +0 -102
  287. package/lib/module/internal/platform.js.map +0 -1
  288. package/lib/module/modules/amazon.js +0 -42
  289. package/lib/module/modules/amazon.js.map +0 -1
  290. package/lib/module/modules/android.js +0 -81
  291. package/lib/module/modules/android.js.map +0 -1
  292. package/lib/module/modules/common.js +0 -2
  293. package/lib/module/modules/common.js.map +0 -1
  294. package/lib/module/modules/index.js +0 -5
  295. package/lib/module/modules/index.js.map +0 -1
  296. package/lib/module/modules/ios.js +0 -145
  297. package/lib/module/modules/ios.js.map +0 -1
  298. package/lib/module/modules/iosSk2.js +0 -96
  299. package/lib/module/modules/iosSk2.js.map +0 -1
  300. package/lib/module/purchaseError.js +0 -164
  301. package/lib/module/purchaseError.js.map +0 -1
  302. package/lib/module/types/amazon.js +0 -2
  303. package/lib/module/types/amazon.js.map +0 -1
  304. package/lib/module/types/android.js +0 -63
  305. package/lib/module/types/android.js.map +0 -1
  306. package/lib/module/types/apple.js +0 -17
  307. package/lib/module/types/apple.js.map +0 -1
  308. package/lib/module/types/appleSk2.js +0 -129
  309. package/lib/module/types/appleSk2.js.map +0 -1
  310. package/lib/module/types/index.js +0 -75
  311. package/lib/module/types/index.js.map +0 -1
  312. package/lib/module/utils/errorMapping.js +0 -75
  313. package/lib/module/utils/errorMapping.js.map +0 -1
  314. package/lib/module/utils/typeGuards.js +0 -61
  315. package/lib/module/utils/typeGuards.js.map +0 -1
  316. package/lib/typescript/src/eventEmitter.d.ts +0 -151
  317. package/lib/typescript/src/eventEmitter.d.ts.map +0 -1
  318. package/lib/typescript/src/hooks/index.d.ts +0 -2
  319. package/lib/typescript/src/hooks/index.d.ts.map +0 -1
  320. package/lib/typescript/src/hooks/withIAPContext.d.ts +0 -27
  321. package/lib/typescript/src/hooks/withIAPContext.d.ts.map +0 -1
  322. package/lib/typescript/src/iap.d.ts +0 -503
  323. package/lib/typescript/src/iap.d.ts.map +0 -1
  324. package/lib/typescript/src/internal/enhancedFetch.d.ts +0 -6
  325. package/lib/typescript/src/internal/enhancedFetch.d.ts.map +0 -1
  326. package/lib/typescript/src/internal/fillProductsWithAdditionalData.d.ts +0 -7
  327. package/lib/typescript/src/internal/fillProductsWithAdditionalData.d.ts.map +0 -1
  328. package/lib/typescript/src/internal/index.d.ts +0 -4
  329. package/lib/typescript/src/internal/index.d.ts.map +0 -1
  330. package/lib/typescript/src/internal/platform.d.ts +0 -27
  331. package/lib/typescript/src/internal/platform.d.ts.map +0 -1
  332. package/lib/typescript/src/modules/amazon.d.ts +0 -55
  333. package/lib/typescript/src/modules/amazon.d.ts.map +0 -1
  334. package/lib/typescript/src/modules/android.d.ts +0 -74
  335. package/lib/typescript/src/modules/android.d.ts.map +0 -1
  336. package/lib/typescript/src/modules/common.d.ts +0 -14
  337. package/lib/typescript/src/modules/common.d.ts.map +0 -1
  338. package/lib/typescript/src/modules/index.d.ts +0 -5
  339. package/lib/typescript/src/modules/index.d.ts.map +0 -1
  340. package/lib/typescript/src/modules/ios.d.ts +0 -117
  341. package/lib/typescript/src/modules/ios.d.ts.map +0 -1
  342. package/lib/typescript/src/modules/iosSk2.d.ts +0 -140
  343. package/lib/typescript/src/modules/iosSk2.d.ts.map +0 -1
  344. package/lib/typescript/src/purchaseError.d.ts +0 -133
  345. package/lib/typescript/src/purchaseError.d.ts.map +0 -1
  346. package/lib/typescript/src/types/amazon.d.ts +0 -33
  347. package/lib/typescript/src/types/amazon.d.ts.map +0 -1
  348. package/lib/typescript/src/types/android.d.ts +0 -66
  349. package/lib/typescript/src/types/android.d.ts.map +0 -1
  350. package/lib/typescript/src/types/apple.d.ts +0 -27
  351. package/lib/typescript/src/types/apple.d.ts.map +0 -1
  352. package/lib/typescript/src/types/appleSk2.d.ts +0 -129
  353. package/lib/typescript/src/types/appleSk2.d.ts.map +0 -1
  354. package/lib/typescript/src/types/index.d.ts +0 -302
  355. package/lib/typescript/src/types/index.d.ts.map +0 -1
  356. package/lib/typescript/src/utils/errorMapping.d.ts +0 -29
  357. package/lib/typescript/src/utils/errorMapping.d.ts.map +0 -1
  358. package/lib/typescript/src/utils/typeGuards.d.ts +0 -53
  359. package/lib/typescript/src/utils/typeGuards.d.ts.map +0 -1
  360. package/src/eventEmitter.ts +0 -212
  361. package/src/hooks/index.ts +0 -1
  362. package/src/hooks/withIAPContext.tsx +0 -179
  363. package/src/iap.ts +0 -1046
  364. package/src/internal/enhancedFetch.ts +0 -25
  365. package/src/internal/fillProductsWithAdditionalData.ts +0 -47
  366. package/src/internal/index.ts +0 -3
  367. package/src/internal/platform.ts +0 -135
  368. package/src/modules/amazon.ts +0 -94
  369. package/src/modules/android.ts +0 -179
  370. package/src/modules/common.ts +0 -16
  371. package/src/modules/index.ts +0 -4
  372. package/src/modules/ios.ts +0 -229
  373. package/src/modules/iosSk2.ts +0 -194
  374. package/src/purchaseError.ts +0 -196
  375. package/src/types/amazon.ts +0 -40
  376. package/src/types/android.ts +0 -89
  377. package/src/types/apple.ts +0 -44
  378. package/src/types/appleSk2.ts +0 -275
  379. package/src/types/index.ts +0 -379
  380. package/src/utils/errorMapping.ts +0 -88
  381. package/src/utils/typeGuards.ts +0 -90
@@ -0,0 +1,33 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "NitroIap"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.homepage = package["homepage"]
10
+ s.license = package["license"]
11
+ s.authors = package["author"]
12
+
13
+ s.platforms = { :ios => min_ios_version_supported, :visionos => 1.0 }
14
+ s.source = { :git => "https://github.com/hyochan/react-native-iap.git", :tag => "#{s.version}" }
15
+
16
+ s.source_files = [
17
+ "ios/**/*.{swift}",
18
+ "ios/**/*.{m,mm}",
19
+ ]
20
+
21
+ s.exclude_files = [
22
+ "ios/RnIap-Bridging-Header.h",
23
+ ]
24
+
25
+ load 'nitrogen/generated/ios/NitroIap+autolinking.rb'
26
+ add_nitrogen_files(s)
27
+
28
+ s.dependency 'React-Core'
29
+ s.dependency 'React-jsi'
30
+ s.dependency 'React-callinvoker'
31
+
32
+ install_modules_dependencies(s)
33
+ end
package/README.md CHANGED
@@ -1,91 +1,203 @@
1
- ![image](https://user-images.githubusercontent.com/27461460/75094417-20321b00-55ce-11ea-8de7-a1df42a4b7df.png)
2
-
3
- ---
1
+ # React Native IAP
4
2
 
3
+ <div align="center">
4
+ <img src="https://react-native-iap.hyo.dev/img/icon.png" alt="React Native IAP Logo" width="150" />
5
+
5
6
  [![Version](http://img.shields.io/npm/v/react-native-iap.svg?style=flat-square)](https://npmjs.org/package/react-native-iap)
6
7
  [![Next Version](https://img.shields.io/npm/v/react-native-iap/next)](https://npmjs.org/package/react-native-iap)
7
8
  [![Download](http://img.shields.io/npm/dm/react-native-iap.svg?style=flat-square)](https://npmjs.org/package/react-native-iap)
8
9
  [![Backers and Sponsors](https://img.shields.io/opencollective/all/react-native-iap.svg)](https://opencollective.com/react-native-iap)
9
10
  [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fhyochan%2Freact-native-iap.svg?type=shield&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fhyochan%2Freact-native-iap?ref=badge_shield&issueType=license)
11
+
12
+ **React Native IAP** is a high-performance in-app purchase library using Nitro Modules that **conforms to the [Open IAP specification](https://openiap.dev)**. It provides a unified API for handling in-app purchases across iOS and Android platforms with comprehensive error handling and modern TypeScript support.
13
+
14
+ <a href="https://openiap.dev"><img src="https://openiap.dev/logo.png" alt="Open IAP" height="40" /></a>
15
+ </div>
10
16
 
11
- ---
17
+ ## 📚 Documentation
18
+
19
+ **[📖 Visit our comprehensive documentation site →](https://react-native-iap.hyo.dev)**
20
+
21
+ ## ⚠️ Notice
22
+
23
+ **Starting from version 14.0.0**, this library uses [Nitro Modules](https://github.com/mrousavy/nitro) for high-performance native bridge implementation. You must install `react-native-nitro-modules` alongside `react-native-iap`.
24
+
25
+ ## ✨ Features
26
+
27
+ - 🔄 **Cross-platform Support**: Works seamlessly on both iOS and Android
28
+ - ⚡ **Nitro Modules**: High-performance native bridge with minimal overhead
29
+ - 🎯 **TypeScript First**: Full TypeScript support with comprehensive type definitions
30
+ - 🛡️ **Centralized Error Handling**: Unified error management with platform-specific error code mapping
31
+ - 🎣 **React Hooks**: Modern React hooks API with `useIAP`
32
+ - 📱 **Expo Compatible**: Works with Expo development builds
33
+ - 🔍 **Receipt Validation**: Built-in receipt validation for both platforms
34
+ - 💎 **Products & Subscriptions**: Support for both one-time purchases and subscriptions
35
+ - 🚀 **Performance Optimized**: Efficient caching and minimal re-renders
36
+
37
+ ## 🚀 Quick Start
38
+
39
+ ```bash
40
+ npm install react-native-iap react-native-nitro-modules
41
+ # or
42
+ yarn add react-native-iap react-native-nitro-modules
43
+ ```
44
+
45
+ **[📖 See the complete installation guide and quick start tutorial →](https://react-native-iap.hyo.dev/docs/installation)**
46
+
47
+ ## 🏗️ Architecture
48
+
49
+ React Native IAP is built with a modern architecture that emphasizes:
50
+
51
+ - **Nitro Modules**: High-performance native bridge with C++ core and platform-specific implementations
52
+ - **Type Safety**: Comprehensive TypeScript definitions for all APIs
53
+ - **Error Resilience**: Centralized error handling with meaningful error codes
54
+ - **Platform Abstraction**: Unified API that handles platform differences internally
55
+ - **Performance**: Optimized for minimal bundle size and runtime performance
56
+
57
+ ## 📱 Platform Support
12
58
 
13
- ## 🚨 Important Announcement: Migration to expo-iap
59
+ | Platform | Support | Notes |
60
+ | ----------------- | ------- | --------------------------------------- |
61
+ | iOS | ✅ | StoreKit 2 (requires iOS 15+) |
62
+ | Android | ✅ | Google Play Billing v8.0.0+ |
63
+ | Expo Go | ❌ | Not supported (requires native modules) |
64
+ | Expo Dev Client | ✅ | Full support |
65
+ | Bare React Native | ✅ | Full support |
14
66
 
15
- **react-native-iap will be replaced by [expo-iap](https://github.com/hyochan/expo-iap)** for improved maintenance and better compatibility with modern React Native development.
67
+ ## 📦 Installation & Configuration
16
68
 
17
- ### Why the change?
69
+ ### Prerequisites
18
70
 
19
- - Better maintenance and faster updates
20
- - Full StoreKit 2 support for iOS
21
- - Modern architecture using Expo Modules
22
- - Works with both Expo and bare React Native projects
71
+ Before installing React Native IAP, make sure you have:
23
72
 
24
- ### Learn more
73
+ - React Native 0.64 or later, or Expo SDK 45 or later
74
+ - Node.js 16 or later
75
+ - iOS 15+ for iOS apps (StoreKit 2 requirement)
76
+ - Android API level 21+ for Android apps
25
77
 
26
- - 📢 [Official announcement on X](https://x.com/hyodotdev/status/1939420943665049961)
27
- - 💬 [Discussion #2754](https://github.com/hyochan/react-native-iap/discussions/2754)
28
- - 🚀 [expo-iap repository](https://github.com/hyochan/expo-iap)
78
+ ### Post Installation
29
79
 
30
- The [expo-iap](https://github.com/hyochan/expo-iap) library is production-ready with full support for StoreKit 2 and Google Play Billing Library v6+.
80
+ #### Android Configuration
31
81
 
32
- ### About This Update (v13.0.0)
82
+ Add the following dependencies to your `android/app/build.gradle` file:
33
83
 
34
- **This update focuses on API compatibility with expo-iap and will be the final major release.**
84
+ ```gradle
85
+ dependencies {
86
+ // Google Play Billing Library
87
+ implementation "com.android.billingclient:billing-ktx:8.0.0"
35
88
 
36
- - 🔄 **API Synchronization**: Maximum compatibility with expo-iap API specifications
37
- - ⚠️ **Deprecation Notice**: react-native-iap will be deprecated in favor of expo-iap
38
- - 🚫 **No Further Updates**: No additional feature updates or major releases are planned
39
- - 🏗️ **Modern Features**: For TurboModules support and latest React Native features, please migrate to [expo-iap](https://github.com/hyochan/expo-iap)
89
+ // Google Play Services
90
+ implementation "com.google.android.gms:play-services-base:18.1.0"
91
+ }
92
+ ```
40
93
 
41
- **Migration is highly recommended** for:
94
+ **Kotlin Version Requirement:** This library requires Kotlin 2.0+. Configure your project's Kotlin version:
42
95
 
43
- - TurboModules support
44
- - Better performance and stability
45
- - Continued updates and support
46
- - Modern React Native architecture
96
+ In your root `android/build.gradle`:
47
97
 
48
- ## Documentation
98
+ ```gradle
99
+ buildscript {
100
+ ext {
101
+ kotlinVersion = "2.1.20"
102
+ }
103
+ dependencies {
104
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
105
+ }
106
+ }
107
+ ```
49
108
 
50
- Read the [documentation](https://react-native-iap.hyo.dev). See the [troubleshooting](https://react-native-iap.hyo.dev/docs/guides/troubleshooting#common-issues) for the common issues to avoid.
109
+ #### iOS Configuration
51
110
 
52
- ## Configuration of Play Store & App Store Connect
111
+ 1. **Install pods**:
53
112
 
54
- - Please refer to this [Blog post](https://medium.com/p/121622d26b67).
113
+ ```bash
114
+ cd ios && pod install
115
+ ```
55
116
 
56
- ## Example
117
+ 2. **Add StoreKit capability** to your iOS app in Xcode:
118
+ - Open your project in Xcode
119
+ - Select your app target
120
+ - Go to "Signing & Capabilities"
121
+ - Click "+ Capability" and add "In-App Purchase"
57
122
 
58
- Follow [this guide](./IapExample/README.md) to get the example running.
123
+ #### Expo Configuration
124
+
125
+ For Expo projects, add the plugin to your `app.json` or `expo.json`:
126
+
127
+ ```json
128
+ {
129
+ "expo": {
130
+ "plugins": [
131
+ "react-native-iap",
132
+ [
133
+ "expo-build-properties",
134
+ {
135
+ "android": {
136
+ "kotlinVersion": "2.1.20"
137
+ }
138
+ }
139
+ ]
140
+ ]
141
+ }
142
+ }
143
+ ```
144
+
145
+ **Note:** Expo projects require [development build (dev-client)](https://docs.expo.dev/develop/development-builds/introduction/) as this library contains native code.
146
+
147
+ ### Store Configuration
148
+
149
+ React Native IAP is **OpenIAP compliant**. For detailed store configuration:
150
+
151
+ - **[iOS Setup →](https://www.openiap.dev/docs/ios-setup)** - App Store Connect configuration
152
+ - **[Android Setup →](https://www.openiap.dev/docs/android-setup)** - Google Play Console configuration
153
+
154
+ ## 🎯 What's Next?
155
+
156
+ **[📖 Visit our comprehensive documentation site →](https://react-native-iap.hyo.dev)**
157
+
158
+ ### Key Resources
159
+
160
+ - **[Installation & Quick Start](https://react-native-iap.hyo.dev/docs/installation)** - Get started in minutes
161
+ - **[API Reference](https://react-native-iap.hyo.dev/docs/api)** - Complete useIAP hook documentation
162
+ - **[Examples](https://react-native-iap.hyo.dev/docs/examples/basic-store)** - Production-ready implementations
163
+ - **[Error Handling](https://react-native-iap.hyo.dev/docs/api/error-codes)** - OpenIAP compliant error codes
164
+ - **[Troubleshooting](https://react-native-iap.hyo.dev/docs/guides/troubleshooting)** - Common issues and solutions
59
165
 
60
166
  ## Sponsors
61
167
 
62
- ### <p style="color: gold;">Gold Tier</p>
168
+ 💼 **[View Our Sponsors](https://openiap.dev/sponsors)**
169
+
170
+ ### <p style="color: rgb(255, 182, 193);">Angel</p>
63
171
 
64
- <a href="https://www.courier.com/?utm_source=react-native-iap&utm_campaign=osssponsors">
65
- <img width="420" alt="courier_dot_com" src="https://github.com/user-attachments/assets/319d8966-6839-498d-8ead-ce8cc72c3bca" />
172
+ <a href="https://meta.com">
173
+ <img width="600" alt="courier_dot_com" src="https://static.xx.fbcdn.net/rsrc.php/y3/r/y6QsbGgc866.svg" />
66
174
  </a>
67
175
 
68
- ## Past Sponsors
176
+ ## Past Supporters
69
177
 
70
- <a href="https://namiml.com"><img src="https://github.com/hyochan/react-native-iap/assets/27461460/89d71f61-bb73-400a-83bd-fe0f96eb726e" width="280"/></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://www.revenuecat.com"><img src="https://github.com/hyochan/react-native-iap/assets/27461460/1e387a47-afe0-4b85-ad78-1064ca6623fa" width="100"/></a>
178
+ <div style="display: flex; align-items:center; gap: 10px;">
179
+ <a href="https://namiml.com" style="opacity: 50%">
180
+ <img src="https://github.com/hyochan/react-native-iap/assets/27461460/89d71f61-bb73-400a-83bd-fe0f96eb726e" alt="Nami ML" width="140"/>
181
+ </a>
182
+ <a href="https://www.courier.com/?utm_source=react-native-iap&utm_campaign=osssponsors" style="opacity: 50%;">
183
+ <img width="80" alt="courier_dot_com" src="https://github.com/user-attachments/assets/319d8966-6839-498d-8ead-ce8cc72c3bca" />
184
+ </a>
185
+ </div>
71
186
 
72
- Support this project by becoming a sponsor. Your logo will show up here with
73
- a link to your website. [Buy me a coffee](https://www.buymeacoffee.com/hyochan) or
74
- [Become a sponsor](https://opencollective.com/react-native-iap#sponsor).
75
- <a href="https://opencollective.com/react-native-iap#sponsors" target="_blank"><img src="https://opencollective.com/react-native-iap/sponsors.svg?width=890" /></a>
187
+ Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Buy me a coffee](https://www.buymeacoffee.com/hyochan).
76
188
 
77
- ### Backers
189
+ ---
78
190
 
79
- Please be our [Backers](https://opencollective.com/react-native-iap#backer).
80
- <a href="https://opencollective.com/react-native-iap#backers" target="_blank"><img src="https://opencollective.com/react-native-iap/backers.svg?width=890" /></a>
191
+ ### OpenCollective Sponsorship
81
192
 
82
- ### Contributing
193
+ We also manage sponsorships through OpenCollective, which operates separately from our main sponsor program.
83
194
 
84
- Please make sure to read the [Contributing Guide](https://github.com/hyochan/react-native-iap/blob/main/CONTRIBUTING.md) before making a pull request.
85
- Thank you to all the people who helped to maintain and upgrade this project!
195
+ **Sponsors:** <a href="https://opencollective.com/react-native-iap#sponsors" target="_blank"><img src="https://opencollective.com/react-native-iap/sponsors.svg?width=890" /></a>
86
196
 
87
- <a href="graphs/contributors"><img src="https://opencollective.com/react-native-iap/contributors.svg?width=890" /></a>
197
+ **Backers:** <a href="https://opencollective.com/react-native-iap#backers" target="_blank"><img src="https://opencollective.com/react-native-iap/backers.svg?width=890" /></a>
88
198
 
89
- ---
199
+ [Become a sponsor](https://opencollective.com/react-native-iap#sponsor) | [Become a backer](https://opencollective.com/react-native-iap#backer)
200
+
201
+ ## Contributing
90
202
 
91
- [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fhyochan%2Freact-native-iap.svg?type=large&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fhyochan%2Freact-native-iap?ref=badge_large&issueType=license)
203
+ See our [Contributing Guide](./CONTRIBUTING.md) for development setup and guidelines.
@@ -0,0 +1,32 @@
1
+ project(NitroIap)
2
+ cmake_minimum_required(VERSION 3.9.0)
3
+
4
+ set (PACKAGE_NAME NitroIap)
5
+ set (CMAKE_VERBOSE_MAKEFILE ON)
6
+ set (CMAKE_CXX_STANDARD 20)
7
+
8
+ # Enable Raw Props parsing in react-native (for Nitro Views)
9
+ add_compile_options(-DRN_SERIALIZABLE_STATE=1)
10
+
11
+ # Define C++ library and add all sources
12
+ add_library(${PACKAGE_NAME} SHARED
13
+ src/main/cpp/cpp-adapter.cpp
14
+ )
15
+
16
+ # Add Nitrogen specs :)
17
+ include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/NitroIap+autolinking.cmake)
18
+
19
+ # Set up local includes
20
+ include_directories(
21
+ "src/main/cpp"
22
+ "../cpp"
23
+ )
24
+
25
+ find_library(LOG_LIB log)
26
+
27
+ # Link all libraries together
28
+ target_link_libraries(
29
+ ${PACKAGE_NAME}
30
+ ${LOG_LIB}
31
+ android # <-- Android core
32
+ )
@@ -1,196 +1,165 @@
1
1
  buildscript {
2
- // Buildscript is evaluated before everything else so we can't use getExtOrDefault
3
- def kotlinVersion = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["RNIap_kotlinVersion"]
4
-
5
2
  repositories {
6
3
  google()
7
4
  mavenCentral()
8
5
  }
9
6
 
10
7
  dependencies {
11
- classpath "com.android.tools.build:gradle:7.4.2"
12
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
8
+ classpath "com.android.tools.build:gradle:8.12.1"
9
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.20"
13
10
  }
14
11
  }
15
12
 
13
+ def reactNativeArchitectures() {
14
+ def value = rootProject.getProperties().get("reactNativeArchitectures")
15
+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
16
+ }
17
+
16
18
  def isNewArchitectureEnabled() {
17
- return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
19
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
18
20
  }
19
21
 
20
22
  apply plugin: "com.android.library"
21
- apply plugin: "kotlin-android"
23
+ apply plugin: 'org.jetbrains.kotlin.android'
24
+
25
+ // Get kotlinVersion from root project or use default
26
+ def kotlinVersion = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : '2.0.21'
22
27
 
23
- if (isNewArchitectureEnabled()) {
24
- apply plugin: "com.facebook.react"
28
+ // Only apply Nitro autolinking if the file exists
29
+ def nitroAutolinkingFile = file('../nitrogen/generated/android/NitroIap+autolinking.gradle')
30
+ if (nitroAutolinkingFile.exists()) {
31
+ apply from: nitroAutolinkingFile
25
32
  }
26
33
 
34
+ apply from: "./fix-prefab.gradle"
35
+
36
+ // DO NOT apply Facebook React plugin for library modules
37
+ // This should only be applied to application modules
38
+ // if (isNewArchitectureEnabled()) {
39
+ // apply plugin: "com.facebook.react"
40
+ // }
41
+
27
42
  def getExtOrDefault(name) {
28
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["RNIap_" + name]
43
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["NitroIap_" + name]
29
44
  }
30
45
 
31
46
  def getExtOrIntegerDefault(name) {
32
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["RNIap_" + name]).toInteger()
47
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["NitroIap_" + name]).toInteger()
33
48
  }
34
49
 
35
50
  android {
51
+ namespace "com.margelo.nitro.iap"
52
+
53
+ ndkVersion getExtOrDefault("ndkVersion")
36
54
  compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
37
55
 
38
56
  defaultConfig {
39
57
  minSdkVersion getExtOrIntegerDefault("minSdkVersion")
40
58
  targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
41
59
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
42
- buildConfigField "boolean", "IS_AMAZON_DRM_ENABLED", getExtOrDefault("isAmazonDrmEnabled")
43
- }
44
60
 
45
- buildTypes {
46
- release {
47
- minifyEnabled false
61
+ externalNativeBuild {
62
+ cmake {
63
+ cppFlags "-frtti -fexceptions -Wall -Wextra -fstack-protector-all"
64
+ arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
65
+ abiFilters (*reactNativeArchitectures())
66
+
67
+ buildTypes {
68
+ debug {
69
+ cppFlags "-O1 -g"
70
+ }
71
+ release {
72
+ cppFlags "-O2"
73
+ }
74
+ }
75
+ }
48
76
  }
49
77
  }
50
78
 
51
- lintOptions {
52
- abortOnError false
53
- disable "GradleCompatible"
79
+ externalNativeBuild {
80
+ cmake {
81
+ path "CMakeLists.txt"
82
+ }
54
83
  }
55
84
 
56
- compileOptions {
57
- sourceCompatibility JavaVersion.VERSION_1_8
58
- targetCompatibility JavaVersion.VERSION_1_8
85
+ packagingOptions {
86
+ excludes = [
87
+ "META-INF",
88
+ "META-INF/**",
89
+ "**/libc++_shared.so",
90
+ "**/libfbjni.so",
91
+ "**/libjsi.so",
92
+ "**/libfolly_json.so",
93
+ "**/libfolly_runtime.so",
94
+ "**/libglog.so",
95
+ "**/libhermes.so",
96
+ "**/libhermes-executor-debug.so",
97
+ "**/libhermes_executor.so",
98
+ "**/libreactnative.so",
99
+ "**/libreactnativejni.so",
100
+ "**/libturbomodulejsijni.so",
101
+ "**/libreact_nativemodule_core.so",
102
+ "**/libjscexecutor.so"
103
+ ]
59
104
  }
60
105
 
61
- flavorDimensions "store"
62
-
63
- productFlavors {
64
- amazon {
65
- dimension "store"
66
- }
106
+ buildFeatures {
107
+ buildConfig true
108
+ prefab true
109
+ }
67
110
 
68
- play {
69
- dimension "store"
111
+ buildTypes {
112
+ release {
113
+ minifyEnabled false
70
114
  }
71
115
  }
116
+
117
+ compileOptions {
118
+ sourceCompatibility JavaVersion.VERSION_17
119
+ targetCompatibility JavaVersion.VERSION_17
120
+ }
121
+
122
+ // Configure Kotlin compiler to match Java compatibility
123
+ kotlinOptions {
124
+ jvmTarget = "17"
125
+ freeCompilerArgs += ["-Xskip-metadata-version-check"]
126
+ }
72
127
 
73
- testOptions {
74
- unitTests.all {
75
- jvmArgs '-noverify'
76
- }
77
- unitTests.returnDefaultValues = true
128
+ lintOptions {
129
+ disable "GradleCompatible"
78
130
  }
131
+
132
+ // Removed sourceSets configuration for codegen as it's not needed for library modules
79
133
  }
80
134
 
81
135
  repositories {
82
136
  mavenCentral()
83
137
  google()
84
-
85
- def found = false
86
- def defaultDir = null
87
- def androidSourcesName = "React Native sources"
88
-
89
- if (rootProject.ext.has("reactNativeAndroidRoot")) {
90
- defaultDir = rootProject.ext.get("reactNativeAndroidRoot")
91
- } else {
92
- defaultDir = new File(
93
- projectDir,
94
- "/../../../node_modules/react-native/android"
95
- )
96
- }
97
-
98
- if (defaultDir.exists()) {
99
- maven {
100
- url defaultDir.toString()
101
- name androidSourcesName
102
- }
103
-
104
- logger.info(":${project.name}:reactNativeAndroidRoot ${defaultDir.canonicalPath}")
105
- found = true
106
- } else {
107
- def parentDir = rootProject.projectDir
108
-
109
- 1.upto(5, {
110
- if (found) return true
111
- parentDir = parentDir.parentFile
112
-
113
- def androidSourcesDir = new File(
114
- parentDir,
115
- "node_modules/react-native"
116
- )
117
-
118
- def androidPrebuiltBinaryDir = new File(
119
- parentDir,
120
- "node_modules/react-native/android"
121
- )
122
-
123
- if (androidPrebuiltBinaryDir.exists()) {
124
- maven {
125
- url androidPrebuiltBinaryDir.toString()
126
- name androidSourcesName
127
- }
128
-
129
- logger.info(":${project.name}:reactNativeAndroidRoot ${androidPrebuiltBinaryDir.canonicalPath}")
130
- found = true
131
- } else if (androidSourcesDir.exists()) {
132
- maven {
133
- url androidSourcesDir.toString()
134
- name androidSourcesName
135
- }
136
-
137
- logger.info(":${project.name}:reactNativeAndroidRoot ${androidSourcesDir.canonicalPath}")
138
- found = true
139
- }
140
- })
141
- }
142
-
143
- if (!found) {
144
- throw new GradleException(
145
- "${project.name}: unable to locate React Native android sources. " +
146
- "Ensure you have you installed React Native as a dependency in your project and try again."
147
- )
148
- }
149
138
  }
150
139
 
151
- def kotlinVersion = getExtOrDefault("kotlinVersion")
152
- def playServicesVersion = getExtOrDefault("playServicesVersion")
153
- def supportLibVersion = getExtOrDefault("supportLibVersion")
154
- def androidXVersion = getExtOrDefault("androidXVersion")
155
- def androidXAnnotation = getExtOrDefault("androidXAnnotation")
156
- def androidXBrowser = getExtOrDefault("androidXBrowser")
157
- def amazonSdkVersion = getExtOrDefault("amazonSdkVersion")
158
- def playBillingSdkVersion = getExtOrDefault("playBillingSdkVersion")
159
140
 
160
141
  dependencies {
142
+ // For < 0.71, this will be from the local maven repo
143
+ // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
144
+ //noinspection GradleDynamicVersion
161
145
  implementation "com.facebook.react:react-native:+"
162
- implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
163
-
164
- testImplementation "junit:junit:4.13.2"
165
- testImplementation "io.mockk:mockk:1.13.5"
166
-
167
- playImplementation "com.android.billingclient:billing-ktx:$playBillingSdkVersion"
168
- playImplementation "com.google.android.gms:play-services-base:$playServicesVersion"
169
-
170
- amazonImplementation "com.amazon.device:amazon-appstore-sdk:$amazonSdkVersion"
171
146
 
172
- if (supportLibVersion && androidXVersion == null) {
173
- implementation "com.android.support:support-annotations:$supportLibVersion"
174
- implementation "com.android.support:customtabs:$supportLibVersion"
175
- } else {
176
- def defaultAndroidXVersion = "1.2.0"
177
-
178
- if (androidXVersion == null) {
179
- androidXVersion = defaultAndroidXVersion
180
- }
181
-
182
- def annotationVersion = androidXAnnotation ? androidXAnnotation : androidXVersion
183
- def browserVersion = androidXBrowser ? androidXBrowser : androidXVersion
184
-
185
- implementation "androidx.annotation:annotation:$annotationVersion"
186
- implementation "androidx.browser:browser:$browserVersion"
147
+ // Add a dependency on NitroModules (only if available)
148
+ if (findProject(':react-native-nitro-modules') != null) {
149
+ implementation project(":react-native-nitro-modules")
187
150
  }
151
+
152
+ // Google Play Billing Library
153
+ implementation 'com.android.billingclient:billing-ktx:8.0.0'
154
+
155
+ // Google Play Services
156
+ implementation 'com.google.android.gms:play-services-base:18.5.0'
157
+
158
+ // Kotlin coroutines
159
+ implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3'
188
160
  }
189
161
 
190
- if (isNewArchitectureEnabled()) {
191
- react {
192
- jsRootDir = file("../src/")
193
- libraryName = "RNIap"
194
- codegenJavaPackageName = "com.reactnativeiap"
195
- }
162
+ configurations.all {
163
+ exclude group: 'com.facebook.react', module: 'react-native-safe-area-context'
196
164
  }
165
+