react-native-iap 14.3.7 → 14.3.9

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 (98) hide show
  1. package/README.md +1 -1
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +74 -14
  4. package/ios/HybridRnIap.swift +47 -12
  5. package/lib/module/hooks/useIAP.js +31 -21
  6. package/lib/module/hooks/useIAP.js.map +1 -1
  7. package/lib/module/index.js +580 -695
  8. package/lib/module/index.js.map +1 -1
  9. package/lib/module/types.js +12 -0
  10. package/lib/module/types.js.map +1 -1
  11. package/lib/module/utils/purchase.js +22 -0
  12. package/lib/module/utils/purchase.js.map +1 -0
  13. package/lib/module/utils.js +43 -0
  14. package/lib/module/utils.js.map +1 -0
  15. package/lib/typescript/plugin/src/withIAP.d.ts +1 -0
  16. package/lib/typescript/plugin/src/withIAP.d.ts.map +1 -1
  17. package/lib/typescript/src/hooks/useIAP.d.ts +4 -5
  18. package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
  19. package/lib/typescript/src/index.d.ts +57 -176
  20. package/lib/typescript/src/index.d.ts.map +1 -1
  21. package/lib/typescript/src/specs/RnIap.nitro.d.ts +113 -154
  22. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
  23. package/lib/typescript/src/types.d.ts +99 -76
  24. package/lib/typescript/src/types.d.ts.map +1 -1
  25. package/lib/typescript/src/utils/purchase.d.ts +4 -0
  26. package/lib/typescript/src/utils/purchase.d.ts.map +1 -0
  27. package/lib/typescript/src/utils.d.ts +8 -0
  28. package/lib/typescript/src/utils.d.ts.map +1 -0
  29. package/nitrogen/generated/android/NitroIap+autolinking.cmake +1 -1
  30. package/nitrogen/generated/android/c++/{JNitroSubscriptionOffer.hpp → JAndroidSubscriptionOfferInput.hpp} +15 -15
  31. package/nitrogen/generated/android/c++/JFunc_void_NitroProduct.hpp +2 -0
  32. package/nitrogen/generated/android/c++/JFunc_void_NitroPurchase.hpp +4 -0
  33. package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +16 -16
  34. package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +1 -1
  35. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidOptions.hpp +6 -5
  36. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidType.hpp +59 -0
  37. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesOptions.hpp +2 -1
  38. package/nitrogen/generated/android/c++/JNitroProduct.hpp +22 -20
  39. package/nitrogen/generated/android/c++/JNitroPurchase.hpp +12 -8
  40. package/nitrogen/generated/android/c++/JNitroPurchaseRequest.hpp +2 -2
  41. package/nitrogen/generated/android/c++/JNitroReceiptValidationAndroidOptions.hpp +10 -10
  42. package/nitrogen/generated/android/c++/JNitroReceiptValidationResultAndroid.hpp +6 -6
  43. package/nitrogen/generated/android/c++/JNitroReceiptValidationResultIOS.hpp +4 -0
  44. package/nitrogen/generated/android/c++/JNitroRequestPurchaseAndroid.hpp +7 -7
  45. package/nitrogen/generated/android/c++/JRequestPurchaseResult.cpp +39 -0
  46. package/nitrogen/generated/android/c++/JRequestPurchaseResult.hpp +68 -53
  47. package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.hpp +4 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{NitroSubscriptionOffer.kt → AndroidSubscriptionOfferInput.kt} +5 -5
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +1 -1
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidOptions.kt +1 -1
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidType.kt +21 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +11 -11
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +2 -2
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationAndroidOptions.kt +4 -4
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationResultAndroid.kt +2 -2
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseAndroid.kt +1 -1
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/RequestPurchaseResult.kt +31 -13
  58. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +4 -4
  59. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +99 -64
  60. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +6 -6
  61. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +10 -10
  62. package/nitrogen/generated/ios/swift/{NitroSubscriptionOffer.swift → AndroidSubscriptionOfferInput.swift} +13 -13
  63. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_PurchaseAndroid__PurchaseIOS__std__vector_std__variant_PurchaseAndroid__PurchaseIOS____.swift +81 -0
  64. package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +1 -1
  65. package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +35 -7
  66. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidOptions.swift +7 -14
  67. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidType.swift +40 -0
  68. package/nitrogen/generated/ios/swift/NitroProduct.swift +72 -72
  69. package/nitrogen/generated/ios/swift/NitroPurchase.swift +8 -8
  70. package/nitrogen/generated/ios/swift/NitroReceiptValidationAndroidOptions.swift +21 -21
  71. package/nitrogen/generated/ios/swift/NitroReceiptValidationResultAndroid.swift +37 -11
  72. package/nitrogen/generated/ios/swift/NitroRequestPurchaseAndroid.swift +11 -11
  73. package/nitrogen/generated/ios/swift/RequestPurchaseResult.swift +8 -137
  74. package/nitrogen/generated/shared/c++/{NitroSubscriptionOffer.hpp → AndroidSubscriptionOfferInput.hpp} +15 -15
  75. package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +9 -6
  76. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidOptions.hpp +8 -7
  77. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidType.hpp +76 -0
  78. package/nitrogen/generated/shared/c++/NitroProduct.hpp +24 -22
  79. package/nitrogen/generated/shared/c++/NitroPurchase.hpp +15 -10
  80. package/nitrogen/generated/shared/c++/NitroReceiptValidationAndroidOptions.hpp +10 -10
  81. package/nitrogen/generated/shared/c++/NitroReceiptValidationResultAndroid.hpp +9 -9
  82. package/nitrogen/generated/shared/c++/NitroRequestPurchaseAndroid.hpp +8 -8
  83. package/package.json +2 -2
  84. package/plugin/build/withIAP.d.ts +1 -0
  85. package/plugin/build/withIAP.js +8 -2
  86. package/plugin/src/withIAP.ts +13 -3
  87. package/src/hooks/useIAP.ts +63 -32
  88. package/src/index.ts +716 -790
  89. package/src/specs/RnIap.nitro.ts +131 -163
  90. package/src/types.ts +131 -85
  91. package/src/utils/purchase.ts +32 -0
  92. package/src/utils.ts +68 -0
  93. package/nitrogen/generated/android/c++/JVariant_PurchaseAndroid_PurchaseIOS.cpp +0 -26
  94. package/nitrogen/generated/android/c++/JVariant_PurchaseAndroid_PurchaseIOS.hpp +0 -80
  95. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_PurchaseAndroid_PurchaseIOS.kt +0 -42
  96. package/nitrogen/generated/ios/swift/Func_void_RequestPurchaseResult.swift +0 -47
  97. package/nitrogen/generated/ios/swift/Variant_PurchaseAndroid_PurchaseIOS.swift +0 -18
  98. package/nitrogen/generated/shared/c++/RequestPurchaseResult.hpp +0 -78
package/README.md CHANGED
@@ -94,7 +94,7 @@ Add the OpenIAP Google library to your `android/app/build.gradle` dependencies:
94
94
 
95
95
  ```gradle
96
96
  dependencies {
97
- implementation "io.github.hyochan.openiap:openiap-google:1.1.11"
97
+ implementation "io.github.hyochan.openiap:openiap-google:1.1.12"
98
98
  }
99
99
  ```
100
100
 
@@ -155,7 +155,7 @@ dependencies {
155
155
 
156
156
  // Kotlin coroutines
157
157
  implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0'
158
- implementation 'io.github.hyochan.openiap:openiap-google:1.1.11'
158
+ implementation 'io.github.hyochan.openiap:openiap-google:1.1.12'
159
159
  }
160
160
 
161
161
  configurations.all {
@@ -8,12 +8,13 @@ import dev.hyo.openiap.OpenIapError as OpenIAPError
8
8
  import dev.hyo.openiap.OpenIapModule
9
9
  import dev.hyo.openiap.listener.OpenIapPurchaseErrorListener
10
10
  import dev.hyo.openiap.listener.OpenIapPurchaseUpdateListener
11
- import dev.hyo.openiap.models.DeepLinkOptions
11
+ import dev.hyo.openiap.models.DeepLinkOptions as OpenIapDeepLinkOptions
12
+ import dev.hyo.openiap.models.OpenIapRequestPurchaseProps
13
+ import dev.hyo.openiap.models.OpenIapSerialization
12
14
  import dev.hyo.openiap.models.OpenIapProduct
13
15
  import dev.hyo.openiap.models.OpenIapPurchase
14
16
  import dev.hyo.openiap.models.ProductRequest
15
- import dev.hyo.openiap.models.OpenIapRequestPurchaseProps
16
- import dev.hyo.openiap.models.OpenIapSerialization
17
+ import dev.hyo.openiap.models.RequestSubscriptionAndroidProps.SubscriptionOffer as OpenIapSubscriptionOffer
17
18
  import kotlinx.coroutines.Dispatchers
18
19
  import kotlinx.coroutines.withContext
19
20
  import kotlinx.coroutines.CompletableDeferred
@@ -140,8 +141,37 @@ class HybridRnIap : HybridRnIapSpec() {
140
141
  }
141
142
 
142
143
  initConnection().await()
143
- val reqType = ProductRequest.ProductRequestType.fromString(type)
144
- val products = openIap.fetchProducts(ProductRequest(skus.toList(), reqType))
144
+
145
+ val normalizedType = type.lowercase()
146
+ val skusList = skus.toList()
147
+
148
+ val products: List<OpenIapProduct> = when (normalizedType) {
149
+ "all" -> {
150
+ val collected = mutableMapOf<String, OpenIapProduct>()
151
+ listOf("in-app", "subs").forEach { kind ->
152
+ val requestType = ProductRequest.ProductRequestType.fromString(kind)
153
+ val fetched = openIap.fetchProducts(ProductRequest(skusList, requestType))
154
+ fetched.forEach { collected[it.id] = it }
155
+ }
156
+ collected.values.toList()
157
+ }
158
+ "inapp", "in-app" -> {
159
+ if (normalizedType == "inapp") {
160
+ Log.w(TAG, "fetchProducts received legacy type 'inapp'; forwarding as 'in-app'")
161
+ }
162
+ val requestType = ProductRequest.ProductRequestType.fromString("in-app")
163
+ openIap.fetchProducts(ProductRequest(skusList, requestType))
164
+ }
165
+ "subs" -> {
166
+ val requestType = ProductRequest.ProductRequestType.fromString("subs")
167
+ openIap.fetchProducts(ProductRequest(skusList, requestType))
168
+ }
169
+ else -> {
170
+ Log.w(TAG, "fetchProducts received unknown type '$type'; defaulting to ProductRequest.fromString")
171
+ val requestType = ProductRequest.ProductRequestType.fromString(type)
172
+ openIap.fetchProducts(ProductRequest(skusList, requestType))
173
+ }
174
+ }
145
175
 
146
176
  // populate type cache
147
177
  products.forEach { p -> productTypeBySku[p.id] = p.type.value }
@@ -152,9 +182,9 @@ class HybridRnIap : HybridRnIapSpec() {
152
182
 
153
183
  // Purchase methods
154
184
  // Purchase methods (Unified)
155
- override fun requestPurchase(request: NitroPurchaseRequest): Promise<RequestPurchaseResult> {
185
+ override fun requestPurchase(request: NitroPurchaseRequest): Promise<RequestPurchaseResult?> {
156
186
  return Promise.async {
157
- val defaultResult = RequestPurchaseResult(null, null)
187
+ val defaultResult = RequestPurchaseResult.create(emptyArray())
158
188
 
159
189
  val androidRequest = request.android ?: run {
160
190
  // Programming error: no Android params provided
@@ -179,12 +209,21 @@ class HybridRnIap : HybridRnIapSpec() {
179
209
  val typeStr = androidRequest.skus.firstOrNull()?.let { productTypeBySku[it] } ?: "inapp"
180
210
  val typeEnum = ProductRequest.ProductRequestType.fromString(typeStr)
181
211
 
212
+ val subscriptionOffers = androidRequest.subscriptionOffers
213
+ ?.map { offer ->
214
+ OpenIapSubscriptionOffer(
215
+ sku = offer.sku,
216
+ offerToken = offer.offerToken
217
+ )
218
+ }
219
+
182
220
  val result = openIap.requestPurchase(
183
221
  OpenIapRequestPurchaseProps(
184
222
  skus = androidRequest.skus.toList(),
185
223
  obfuscatedAccountIdAndroid = androidRequest.obfuscatedAccountIdAndroid,
186
224
  obfuscatedProfileIdAndroid = androidRequest.obfuscatedProfileIdAndroid,
187
- isOfferPersonalized = androidRequest.isOfferPersonalized
225
+ isOfferPersonalized = androidRequest.isOfferPersonalized,
226
+ subscriptionOffers = subscriptionOffers ?: emptyList()
188
227
  ),
189
228
  typeEnum
190
229
  )
@@ -214,8 +253,18 @@ class HybridRnIap : HybridRnIapSpec() {
214
253
  val androidOptions = options?.android
215
254
  initConnection().await()
216
255
 
217
- val result: List<OpenIapPurchase> = if (androidOptions?.type != null) {
218
- val typeEnum = ProductRequest.ProductRequestType.fromString(androidOptions.type ?: "inapp")
256
+ val typeName = androidOptions?.type?.name?.lowercase()
257
+ val normalizedType = when (typeName) {
258
+ "inapp" -> {
259
+ Log.w(TAG, "getAvailablePurchases received legacy type 'inapp'; forwarding as 'in-app'")
260
+ "in-app"
261
+ }
262
+ "in-app", "subs" -> typeName
263
+ else -> null
264
+ }
265
+
266
+ val result: List<OpenIapPurchase> = if (normalizedType != null) {
267
+ val typeEnum = ProductRequest.ProductRequestType.fromString(normalizedType)
219
268
  openIap.getAvailableItems(typeEnum)
220
269
  } else {
221
270
  openIap.getAvailablePurchases()
@@ -421,7 +470,7 @@ class HybridRnIap : HybridRnIapSpec() {
421
470
  displayPrice = product.displayPrice,
422
471
  currency = product.currency,
423
472
  price = product.price,
424
- platform = "android",
473
+ platform = IapPlatform.ANDROID,
425
474
  // iOS fields (null on Android)
426
475
  typeIOS = null,
427
476
  isFamilyShareableIOS = null,
@@ -459,10 +508,10 @@ class HybridRnIap : HybridRnIapSpec() {
459
508
  productId = purchase.productId,
460
509
  transactionDate = purchase.transactionDate.toDouble(),
461
510
  purchaseToken = purchase.purchaseToken,
462
- platform = "android",
511
+ platform = IapPlatform.ANDROID,
463
512
  // Common fields
464
513
  quantity = purchase.quantity.toDouble(),
465
- purchaseState = purchase.purchaseState.value,
514
+ purchaseState = mapPurchaseState(purchase.purchaseState),
466
515
  isAutoRenewing = purchase.isAutoRenewing,
467
516
  // iOS fields
468
517
  quantityIOS = null,
@@ -481,6 +530,17 @@ class HybridRnIap : HybridRnIapSpec() {
481
530
  obfuscatedProfileIdAndroid = purchase.obfuscatedProfileIdAndroid
482
531
  )
483
532
  }
533
+
534
+ private fun mapPurchaseState(state: OpenIapPurchase.PurchaseState): PurchaseState {
535
+ return when (state.name.uppercase()) {
536
+ "PURCHASED" -> PurchaseState.PURCHASED
537
+ "PENDING" -> PurchaseState.PENDING
538
+ "DEFERRED" -> PurchaseState.DEFERRED
539
+ "RESTORED" -> PurchaseState.RESTORED
540
+ "FAILED", "FAILURE", "CANCELED", "CANCELLED" -> PurchaseState.FAILED
541
+ else -> PurchaseState.UNKNOWN
542
+ }
543
+ }
484
544
 
485
545
  // Billing error messages handled by OpenIAP
486
546
 
@@ -516,7 +576,7 @@ class HybridRnIap : HybridRnIapSpec() {
516
576
  return Promise.async {
517
577
  try {
518
578
  initConnection().await()
519
- DeepLinkOptions(
579
+ OpenIapDeepLinkOptions(
520
580
  skuAndroid = options.skuAndroid,
521
581
  packageNameAndroid = options.packageNameAndroid
522
582
  ).let { openIap.deepLinkToSubscriptions(it) }
@@ -89,7 +89,7 @@ class HybridRnIap: HybridRnIapSpec {
89
89
  minimal.id = id
90
90
  minimal.title = id
91
91
  minimal.type = "inapp"
92
- minimal.platform = "ios"
92
+ minimal.platform = .ios
93
93
  for listener in self.promotedProductListeners { listener(minimal) }
94
94
  }
95
95
  }
@@ -147,7 +147,7 @@ class HybridRnIap: HybridRnIapSpec {
147
147
  minimal.id = id
148
148
  minimal.title = id
149
149
  minimal.type = "inapp"
150
- minimal.platform = "ios"
150
+ minimal.platform = .ios
151
151
  for listener in self.promotedProductListeners { listener(minimal) }
152
152
  }
153
153
  }
@@ -187,9 +187,38 @@ class HybridRnIap: HybridRnIapSpec {
187
187
  return Promise.async {
188
188
  do {
189
189
  try self.ensureConnection()
190
- // Prefer OpenIAP for fetching
191
- let req = OpenIapProductRequest(skus: skus, type: type)
192
- let products = try await OpenIapModule.shared.fetchProducts(req)
190
+
191
+ let normalizedType = type.lowercased()
192
+ let products: [OpenIapProduct]
193
+
194
+ if normalizedType == "all" {
195
+ var deduped: [String: OpenIapProduct] = [:]
196
+ for kind in ["in-app", "subs"] {
197
+ let request = OpenIapProductRequest(skus: skus, type: kind)
198
+ let fetched = try await OpenIapModule.shared.fetchProducts(request)
199
+ for item in fetched { deduped[item.id] = item }
200
+ }
201
+ products = Array(deduped.values)
202
+ } else {
203
+ var resolvedType = type
204
+ switch normalizedType {
205
+ case "inapp":
206
+ #if DEBUG
207
+ print("[HybridRnIap] fetchProducts received legacy type 'inapp'; forwarding as 'in-app'")
208
+ #endif
209
+ fallthrough
210
+ case "in-app":
211
+ resolvedType = "in-app"
212
+ case "subs":
213
+ resolvedType = "subs"
214
+ default:
215
+ break
216
+ }
217
+
218
+ let request = OpenIapProductRequest(skus: skus, type: resolvedType)
219
+ products = try await OpenIapModule.shared.fetchProducts(request)
220
+ }
221
+
193
222
  return products.map { self.convertOpenIapProductToNitroProduct($0) }
194
223
  } catch {
195
224
  // Propagate OpenIAP error
@@ -198,9 +227,9 @@ class HybridRnIap: HybridRnIapSpec {
198
227
  }
199
228
  }
200
229
 
201
- func requestPurchase(request: NitroPurchaseRequest) throws -> Promise<RequestPurchaseResult> {
230
+ func requestPurchase(request: NitroPurchaseRequest) throws -> Promise<RequestPurchaseResult?> {
202
231
  return Promise.async {
203
- let defaultResult = RequestPurchaseResult(purchase: nil, purchases: nil)
232
+ let defaultResult: RequestPurchaseResult? = .third([])
204
233
  guard let iosRequest = request.ios else {
205
234
  let error = self.createPurchaseErrorResult(
206
235
  code: OpenIapError.UserError,
@@ -358,7 +387,7 @@ class HybridRnIap: HybridRnIapSpec {
358
387
  n.title = p.localizedTitle
359
388
  n.description = p.localizedDescription
360
389
  n.type = "inapp"
361
- n.platform = "ios"
390
+ n.platform = .ios
362
391
  n.price = p.price
363
392
  n.currency = p.priceLocale.currencyCode
364
393
  return n
@@ -569,7 +598,7 @@ class HybridRnIap: HybridRnIapSpec {
569
598
  n.title = title
570
599
  n.description = desc
571
600
  n.type = "inapp"
572
- n.platform = "ios"
601
+ n.platform = .ios
573
602
  n.price = price
574
603
  n.currency = currency
575
604
  listener(n)
@@ -689,7 +718,9 @@ class HybridRnIap: HybridRnIapSpec {
689
718
  n.displayPrice = p.displayPrice
690
719
  n.currency = p.currency
691
720
  n.price = p.price
692
- n.platform = p.platform
721
+ if let platform = IapPlatform(fromString: p.platform) {
722
+ n.platform = platform
723
+ }
693
724
  // iOS specifics
694
725
  n.typeIOS = p.typeIOS.rawValue
695
726
  n.isFamilyShareableIOS = p.isFamilyShareableIOS
@@ -710,9 +741,13 @@ class HybridRnIap: HybridRnIapSpec {
710
741
  n.productId = p.productId
711
742
  n.transactionDate = p.transactionDate
712
743
  n.purchaseToken = p.purchaseToken
713
- n.platform = p.platform
744
+ if let platform = IapPlatform(fromString: p.platform) {
745
+ n.platform = platform
746
+ }
714
747
  n.quantity = Double(p.quantity)
715
- n.purchaseState = p.purchaseState.rawValue
748
+ if let state = PurchaseState(fromString: p.purchaseState.rawValue) {
749
+ n.purchaseState = state
750
+ }
716
751
  n.isAutoRenewing = p.isAutoRenewing
717
752
  // iOS specifics
718
753
  if let q = p.quantityIOS { n.quantityIOS = Double(q) }
@@ -57,7 +57,8 @@ export function useIAP(options) {
57
57
  skus,
58
58
  type: 'in-app'
59
59
  });
60
- setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, result, product => product.id));
60
+ const newProducts = (result ?? []).filter(item => item.type === 'in-app');
61
+ setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, newProducts, product => product.id));
61
62
  } catch (error) {
62
63
  console.error('Error fetching products:', error);
63
64
  }
@@ -68,7 +69,8 @@ export function useIAP(options) {
68
69
  skus,
69
70
  type: 'subs'
70
71
  });
71
- setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, result, subscription => subscription.id));
72
+ const newSubscriptions = (result ?? []).filter(item => item.type === 'subs');
73
+ setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, newSubscriptions, subscription => subscription.id));
72
74
  } catch (error) {
73
75
  console.error('Error fetching subscriptions:', error);
74
76
  }
@@ -79,12 +81,26 @@ export function useIAP(options) {
79
81
  return;
80
82
  }
81
83
  try {
82
- const result = await fetchProducts(params);
83
- if (params.type === 'subs') {
84
- setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, result, subscription => subscription.id));
85
- } else {
86
- setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, result, product => product.id));
84
+ const requestType = params.type ?? 'in-app';
85
+ const result = await fetchProducts({
86
+ skus: params.skus,
87
+ type: requestType
88
+ });
89
+ const items = result ?? [];
90
+ if (requestType === 'subs') {
91
+ const newSubscriptions = items.filter(item => item.type === 'subs');
92
+ setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, newSubscriptions, subscription => subscription.id));
93
+ return;
94
+ }
95
+ if (requestType === 'all') {
96
+ const newProducts = items.filter(item => item.type === 'in-app');
97
+ const newSubscriptions = items.filter(item => item.type === 'subs');
98
+ setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, newProducts, product => product.id));
99
+ setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, newSubscriptions, subscription => subscription.id));
100
+ return;
87
101
  }
102
+ const newProducts = items.filter(item => item.type === 'in-app');
103
+ setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, newProducts, product => product.id));
88
104
  } catch (error) {
89
105
  console.error('Error fetching products:', error);
90
106
  }
@@ -120,15 +136,9 @@ export function useIAP(options) {
120
136
  return false;
121
137
  }
122
138
  }, []);
123
- const finishTransaction = useCallback(async ({
124
- purchase,
125
- isConsumable
126
- }) => {
139
+ const finishTransaction = useCallback(async args => {
127
140
  try {
128
- return await finishTransactionInternal({
129
- purchase,
130
- isConsumable
131
- });
141
+ await finishTransactionInternal(args);
132
142
  } catch (err) {
133
143
  throw err;
134
144
  }
@@ -138,7 +148,10 @@ export function useIAP(options) {
138
148
  // No local restorePurchases; use the top-level helper via returned API
139
149
 
140
150
  const validateReceipt = useCallback(async (sku, androidOptions) => {
141
- return validateReceiptInternal(sku, androidOptions);
151
+ return validateReceiptInternal({
152
+ sku,
153
+ androidOptions
154
+ });
142
155
  }, []);
143
156
  const initIapWithSubscriptions = useCallback(async () => {
144
157
  // Register listeners BEFORE initConnection to avoid race condition
@@ -215,11 +228,8 @@ export function useIAP(options) {
215
228
  validateReceipt,
216
229
  restorePurchases: async () => {
217
230
  try {
218
- const purchases = await restorePurchasesTopLevel({
219
- alsoPublishToEventListenerIOS: false,
220
- onlyIncludeActiveItemsIOS: true
221
- });
222
- setAvailablePurchases(purchases);
231
+ await restorePurchasesTopLevel();
232
+ await getAvailablePurchasesInternal();
223
233
  } catch (e) {
224
234
  console.warn('Failed to restore purchases:', e);
225
235
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","validateReceipt","validateReceiptInternal","getActiveSubscriptions","hasActiveSubscriptions","restorePurchases","restorePurchasesTopLevel","getPromotedProductIOS","requestPurchaseOnPromotedProductIOS","ErrorCode","normalizeErrorCodeFromNative","useIAP","options","connected","setConnected","products","setProducts","promotedProductsIOS","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","promotedProductIOS","setPromotedProductIOS","promotedProductIdIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","connectedRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","subscriptionsRefState","getProductsInternal","skus","result","type","prevProducts","product","id","error","console","getSubscriptionsInternal","prevSubscriptions","subscription","fetchProductsInternal","params","warn","getAvailablePurchasesInternal","_skus","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","purchase","isConsumable","err","requestObj","sku","androidOptions","initIapWithSubscriptions","purchaseUpdate","e","onPurchaseSuccess","purchaseError","mappedError","code","message","productId","undefined","InitConnection","onPurchaseError","OS","onPromotedProductIOS","remove","currentSubscriptions","purchases","getProducts","getSubscriptions"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","validateReceipt","validateReceiptInternal","getActiveSubscriptions","hasActiveSubscriptions","restorePurchases","restorePurchasesTopLevel","getPromotedProductIOS","requestPurchaseOnPromotedProductIOS","ErrorCode","normalizeErrorCodeFromNative","useIAP","options","connected","setConnected","products","setProducts","promotedProductsIOS","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","promotedProductIOS","setPromotedProductIOS","promotedProductIdIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","connectedRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","subscriptionsRefState","getProductsInternal","skus","result","type","newProducts","filter","item","prevProducts","product","id","error","console","getSubscriptionsInternal","newSubscriptions","prevSubscriptions","subscription","fetchProductsInternal","params","warn","requestType","items","getAvailablePurchasesInternal","_skus","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","args","err","requestObj","sku","androidOptions","initIapWithSubscriptions","purchaseUpdate","purchase","e","onPurchaseSuccess","purchaseError","mappedError","code","message","productId","undefined","InitConnection","onPurchaseError","OS","onPromotedProductIOS","remove","currentSubscriptions","getProducts","getSubscriptions"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":";;AAAA;AACA,SAAQA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,QAAO,OAAO;AAC9D,SAAQC,QAAQ,QAAO,cAAc;;AAErC;AACA,SACEC,cAAc,EACdC,qBAAqB,EACrBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,qBAAqB,EACrBC,iBAAiB,IAAIC,yBAAyB,EAC9CC,eAAe,IAAIC,uBAAuB,EAC1CC,aAAa,EACbC,eAAe,IAAIC,uBAAuB,EAC1CC,sBAAsB,EACtBC,sBAAsB,EACtBC,gBAAgB,IAAIC,wBAAwB,EAC5CC,qBAAqB,EACrBC,mCAAmC,QAC9B,aAAK;;AAEZ;AACA,SAAQC,SAAS,QAAO,aAAU;AAclC,SAAQC,4BAA4B,QAAO,0BAAuB;;AAElE;;AA2DA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,OAAuB,EAAU;EACtD,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG1B,QAAQ,CAAU,KAAK,CAAC;EAC1D,MAAM,CAAC2B,QAAQ,EAAEC,WAAW,CAAC,GAAG5B,QAAQ,CAAY,EAAE,CAAC;EACvD,MAAM,CAAC6B,mBAAmB,CAAC,GAAG7B,QAAQ,CAAa,EAAE,CAAC;EACtD,MAAM,CAAC8B,aAAa,EAAEC,gBAAgB,CAAC,GAAG/B,QAAQ,CAAwB,EAAE,CAAC;EAC7E,MAAM,CAACgC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGjC,QAAQ,CAAa,EAAE,CAAC;EAC5E,MAAM,CAACkC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGnC,QAAQ,CAAU,CAAC;EACvE,MAAM,CAACoC,oBAAoB,CAAC,GAAGpC,QAAQ,CAAS,CAAC;EACjD,MAAM,CAACqC,mBAAmB,EAAEC,sBAAsB,CAAC,GAAGtC,QAAQ,CAE5D,EAAE,CAAC;EAEL,MAAMuC,UAAU,GAAGtC,MAAM,CAA4BuB,OAAO,CAAC;EAC7D,MAAMgB,YAAY,GAAGvC,MAAM,CAAU,KAAK,CAAC;;EAE3C;EACA,MAAMwC,uBAAuB,GAAG3C,WAAW,CACzC,CACE4C,aAAkB,EAClBC,QAAa,EACbC,MAA2B,KACnB;IACR,MAAMC,MAAM,GAAG,CAAC,GAAGH,aAAa,CAAC;IACjCC,QAAQ,CAACG,OAAO,CAAEC,OAAO,IAAK;MAC5B,MAAMC,WAAW,GAAGH,MAAM,CAACI,IAAI,CAC5BC,YAAY,IAAKN,MAAM,CAACM,YAAY,CAAC,KAAKN,MAAM,CAACG,OAAO,CAC3D,CAAC;MACD,IAAI,CAACC,WAAW,EAAE;QAChBH,MAAM,CAACM,IAAI,CAACJ,OAAO,CAAC;MACtB;IACF,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,EACD,EACF,CAAC;EAED9C,SAAS,CAAC,MAAM;IACdwC,UAAU,CAACa,OAAO,GAAG5B,OAAO;EAC9B,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEbzB,SAAS,CAAC,MAAM;IACdyC,YAAY,CAACY,OAAO,GAAG3B,SAAS;EAClC,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAM4B,gBAAgB,GAAGpD,MAAM,CAK5B,CAAC,CAAC,CAAC;EAEN,MAAMqD,qBAAqB,GAAGrD,MAAM,CAAwB,EAAE,CAAC;EAE/DF,SAAS,CAAC,MAAM;IACduD,qBAAqB,CAACF,OAAO,GAAGtB,aAAa;EAC/C,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAEnB,MAAMyB,mBAAmB,GAAGzD,WAAW,CACrC,MAAO0D,IAAc,IAAoB;IACvC,IAAI;MACF,MAAMC,MAAM,GAAG,MAAM7C,aAAa,CAAC;QACjC4C,IAAI;QACJE,IAAI,EAAE;MACR,CAAC,CAAC;MACF,MAAMC,WAAW,GAAG,CAACF,MAAM,IAAI,EAAE,EAAEG,MAAM,CACtCC,IAAI,IAAsBA,IAAI,CAACH,IAAI,KAAK,QAC3C,CAAC;MACD9B,WAAW,CAAEkC,YAAuB,IAClCrB,uBAAuB,CACrBqB,YAAY,EACZH,WAAW,EACVI,OAAgB,IAAKA,OAAO,CAACC,EAChC,CACF,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,0BAA0B,EAAEA,KAAK,CAAC;IAClD;EACF,CAAC,EACD,CAACxB,uBAAuB,CAC1B,CAAC;EAED,MAAM0B,wBAAwB,GAAGrE,WAAW,CAC1C,MAAO0D,IAAc,IAAoB;IACvC,IAAI;MACF,MAAMC,MAAM,GAAG,MAAM7C,aAAa,CAAC;QACjC4C,IAAI;QACJE,IAAI,EAAE;MACR,CAAC,CAAC;MACF,MAAMU,gBAAgB,GAAG,CAACX,MAAM,IAAI,EAAE,EAAEG,MAAM,CAC3CC,IAAI,IAAkCA,IAAI,CAACH,IAAI,KAAK,MACvD,CAAC;MACD3B,gBAAgB,CAAEsC,iBAAwC,IACxD5B,uBAAuB,CACrB4B,iBAAiB,EACjBD,gBAAgB,EACfE,YAAiC,IAAKA,YAAY,CAACN,EACtD,CACF,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,+BAA+B,EAAEA,KAAK,CAAC;IACvD;EACF,CAAC,EACD,CAACxB,uBAAuB,CAC1B,CAAC;EAED,MAAM8B,qBAAqB,GAAGzE,WAAW,CACvC,MAAO0E,MAGN,IAAoB;IACnB,IAAI,CAAChC,YAAY,CAACY,OAAO,EAAE;MACzBc,OAAO,CAACO,IAAI,CACV,2DACF,CAAC;MACD;IACF;IACA,IAAI;MACF,MAAMC,WAAW,GAAGF,MAAM,CAACd,IAAI,IAAI,QAAQ;MAC3C,MAAMD,MAAM,GAAG,MAAM7C,aAAa,CAAC;QACjC4C,IAAI,EAAEgB,MAAM,CAAChB,IAAI;QACjBE,IAAI,EAAEgB;MACR,CAAC,CAAC;MACF,MAAMC,KAAK,GAAIlB,MAAM,IAAI,EAAwC;MAEjE,IAAIiB,WAAW,KAAK,MAAM,EAAE;QAC1B,MAAMN,gBAAgB,GAAGO,KAAK,CAACf,MAAM,CAClCC,IAAI,IAAkCA,IAAI,CAACH,IAAI,KAAK,MACvD,CAAC;QACD3B,gBAAgB,CAAEsC,iBAAwC,IACxD5B,uBAAuB,CACrB4B,iBAAiB,EACjBD,gBAAgB,EACfE,YAAiC,IAAKA,YAAY,CAACN,EACtD,CACF,CAAC;QACD;MACF;MAEA,IAAIU,WAAW,KAAK,KAAK,EAAE;QACzB,MAAMf,WAAW,GAAGgB,KAAK,CAACf,MAAM,CAC7BC,IAAI,IAAsBA,IAAI,CAACH,IAAI,KAAK,QAC3C,CAAC;QACD,MAAMU,gBAAgB,GAAGO,KAAK,CAACf,MAAM,CAClCC,IAAI,IAAkCA,IAAI,CAACH,IAAI,KAAK,MACvD,CAAC;QAED9B,WAAW,CAAEkC,YAAuB,IAClCrB,uBAAuB,CACrBqB,YAAY,EACZH,WAAW,EACVI,OAAgB,IAAKA,OAAO,CAACC,EAChC,CACF,CAAC;QACDjC,gBAAgB,CAAEsC,iBAAwC,IACxD5B,uBAAuB,CACrB4B,iBAAiB,EACjBD,gBAAgB,EACfE,YAAiC,IAAKA,YAAY,CAACN,EACtD,CACF,CAAC;QACD;MACF;MAEA,MAAML,WAAW,GAAGgB,KAAK,CAACf,MAAM,CAC7BC,IAAI,IAAsBA,IAAI,CAACH,IAAI,KAAK,QAC3C,CAAC;MACD9B,WAAW,CAAEkC,YAAuB,IAClCrB,uBAAuB,CACrBqB,YAAY,EACZH,WAAW,EACVI,OAAgB,IAAKA,OAAO,CAACC,EAChC,CACF,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,0BAA0B,EAAEA,KAAK,CAAC;IAClD;EACF,CAAC,EACD,CAACxB,uBAAuB,CAC1B,CAAC;EAED,MAAMmC,6BAA6B,GAAG9E,WAAW,CAC/C,MAAO+E,KAAgB,IAAoB;IACzC,IAAI;MACF,MAAMpB,MAAM,GAAG,MAAMlD,qBAAqB,CAAC;QACzCuE,6BAA6B,EAAE,KAAK;QACpCC,yBAAyB,EAAE;MAC7B,CAAC,CAAC;MACF9C,qBAAqB,CAACwB,MAAM,CAAC;IAC/B,CAAC,CAAC,OAAOQ,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,qCAAqC,EAAEA,KAAK,CAAC;IAC7D;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAMe,8BAA8B,GAAGlF,WAAW,CAChD,MAAOmF,eAA0B,IAAoC;IACnE,IAAI;MACF,MAAMxB,MAAM,GAAG,MAAM1C,sBAAsB,CAACkE,eAAe,CAAC;MAC5D3C,sBAAsB,CAACmB,MAAM,CAAC;MAC9B,OAAOA,MAAM;IACf,CAAC,CAAC,OAAOQ,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,qCAAqC,EAAEA,KAAK,CAAC;MAC3D;MACA;MACA,OAAO,EAAE;IACX;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAMiB,8BAA8B,GAAGpF,WAAW,CAChD,MAAOmF,eAA0B,IAAuB;IACtD,IAAI;MACF,OAAO,MAAMjE,sBAAsB,CAACiE,eAAe,CAAC;IACtD,CAAC,CAAC,OAAOhB,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,sCAAsC,EAAEA,KAAK,CAAC;MAC5D,OAAO,KAAK;IACd;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAMzD,iBAAiB,GAAGV,WAAW,CACnC,MAAOqF,IAAmC,IAAoB;IAC5D,IAAI;MACF,MAAM1E,yBAAyB,CAAC0E,IAAI,CAAC;IACvC,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZ,MAAMA,GAAG;IACX;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAM1E,eAAe,GAAGZ,WAAW,CAChCuF,UAAgC,IAAK1E,uBAAuB,CAAC0E,UAAU,CAAC,EACzE,EACF,CAAC;;EAED;;EAEA,MAAMxE,eAAe,GAAGf,WAAW,CACjC,OACEwF,GAAW,EACXC,cAKC,KACE;IACH,OAAOzE,uBAAuB,CAAC;MAC7BwE,GAAG;MACHC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,EACF,CAAC;EAED,MAAMC,wBAAwB,GAAG1F,WAAW,CAAC,YAA2B;IACtE;IACAuD,gBAAgB,CAACD,OAAO,CAACqC,cAAc,GAAGpF,uBAAuB,CAC/D,MAAOqF,QAAkB,IAAK;MAC5B;MACA,IAAI;QACF,MAAMV,8BAA8B,CAAC,CAAC;QACtC,MAAMJ,6BAA6B,CAAC,CAAC;MACvC,CAAC,CAAC,OAAOe,CAAC,EAAE;QACVzB,OAAO,CAACO,IAAI,CAAC,wCAAwC,EAAEkB,CAAC,CAAC;MAC3D;MACA,IAAIpD,UAAU,CAACa,OAAO,EAAEwC,iBAAiB,EAAE;QACzCrD,UAAU,CAACa,OAAO,CAACwC,iBAAiB,CAACF,QAAQ,CAAC;MAChD;IACF,CACF,CAAC;IAEDrC,gBAAgB,CAACD,OAAO,CAACyC,aAAa,GAAGzF,qBAAqB,CAAE6D,KAAK,IAAK;MACxE,MAAM6B,WAA0B,GAAG;QACjCC,IAAI,EAAEzE,4BAA4B,CAAC2C,KAAK,CAAC8B,IAAI,CAAC;QAC9CC,OAAO,EAAE/B,KAAK,CAAC+B,OAAO;QACtBC,SAAS,EAAEC;MACb,CAAC;MACD;MACA,IACEJ,WAAW,CAACC,IAAI,KAAK1E,SAAS,CAAC8E,cAAc,IAC7C,CAAC3D,YAAY,CAACY,OAAO,EACrB;QACA;MACF;MACA,IAAIb,UAAU,CAACa,OAAO,EAAEgD,eAAe,EAAE;QACvC7D,UAAU,CAACa,OAAO,CAACgD,eAAe,CAACN,WAAW,CAAC;MACjD;IACF,CAAC,CAAC;IAEF,IAAI5F,QAAQ,CAACmG,EAAE,KAAK,KAAK,EAAE;MACzBhD,gBAAgB,CAACD,OAAO,CAACvB,mBAAmB,GAAGvB,0BAA0B,CACtEyD,OAAgB,IAAK;QACpB5B,qBAAqB,CAAC4B,OAAO,CAAC;QAC9B,IAAIxB,UAAU,CAACa,OAAO,EAAEkD,oBAAoB,EAAE;UAC5C/D,UAAU,CAACa,OAAO,CAACkD,oBAAoB,CAACvC,OAAO,CAAC;QAClD;MACF,CACF,CAAC;IACH;IAEA,MAAMN,MAAM,GAAG,MAAMtD,cAAc,CAAC,CAAC;IACrCuB,YAAY,CAAC+B,MAAM,CAAC;IACpB,IAAI,CAACA,MAAM,EAAE;MACX;MACAJ,gBAAgB,CAACD,OAAO,CAACqC,cAAc,EAAEc,MAAM,CAAC,CAAC;MACjDlD,gBAAgB,CAACD,OAAO,CAACvB,mBAAmB,EAAE0E,MAAM,CAAC,CAAC;MACtDlD,gBAAgB,CAACD,OAAO,CAACqC,cAAc,GAAGS,SAAS;MACnD7C,gBAAgB,CAACD,OAAO,CAACvB,mBAAmB,GAAGqE,SAAS;MACxD;IACF;EACF,CAAC,EAAE,CAAClB,8BAA8B,EAAEJ,6BAA6B,CAAC,CAAC;EAEnE7E,SAAS,CAAC,MAAM;IACdyF,wBAAwB,CAAC,CAAC;IAC1B,MAAMgB,oBAAoB,GAAGnD,gBAAgB,CAACD,OAAO;IAErD,OAAO,MAAM;MACXoD,oBAAoB,CAACf,cAAc,EAAEc,MAAM,CAAC,CAAC;MAC7CC,oBAAoB,CAACX,aAAa,EAAEU,MAAM,CAAC,CAAC;MAC5CC,oBAAoB,CAAC3E,mBAAmB,EAAE0E,MAAM,CAAC,CAAC;MAClDC,oBAAoB,CAACtE,kBAAkB,EAAEqE,MAAM,CAAC,CAAC;MACjD;MACA7E,YAAY,CAAC,KAAK,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAAC8D,wBAAwB,CAAC,CAAC;EAE9B,OAAO;IACL/D,SAAS;IACTE,QAAQ;IACRE,mBAAmB;IACnBO,oBAAoB;IACpBN,aAAa;IACbtB,iBAAiB;IACjBwB,kBAAkB;IAClBE,kBAAkB;IAClBG,mBAAmB;IACnB9B,qBAAqB,EAAEqE,6BAA6B;IACpDhE,aAAa,EAAE2D,qBAAqB;IACpC7D,eAAe;IACfG,eAAe;IACfI,gBAAgB,EAAE,MAAAA,CAAA,KAAY;MAC5B,IAAI;QACF,MAAMC,wBAAwB,CAAC,CAAC;QAChC,MAAM0D,6BAA6B,CAAC,CAAC;MACvC,CAAC,CAAC,OAAOe,CAAC,EAAE;QACVzB,OAAO,CAACO,IAAI,CAAC,8BAA8B,EAAEkB,CAAC,CAAC;MACjD;IACF,CAAC;IACDc,WAAW,EAAElD,mBAAmB;IAChCmD,gBAAgB,EAAEvC,wBAAwB;IAC1ChD,qBAAqB;IACrBC,mCAAmC;IACnCL,sBAAsB,EAAEiE,8BAA8B;IACtDhE,sBAAsB,EAAEkE;EAC1B,CAAC;AACH","ignoreList":[]}