expo-iap 4.2.7 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CLAUDE.md +8 -8
  2. package/CONTRIBUTING.md +2 -2
  3. package/README.md +13 -14
  4. package/android/build.gradle +36 -18
  5. package/android/openiap-android-sdk.gradle +30 -0
  6. package/android/src/main/java/expo/modules/iap/ExpoIapHelper.kt +7 -9
  7. package/android/src/main/java/expo/modules/iap/ExpoIapLog.kt +3 -1
  8. package/android/src/main/java/expo/modules/iap/ExpoIapModule.kt +12 -11
  9. package/android/src/main/java/expo/modules/iap/PromiseUtils.kt +2 -3
  10. package/build/ExpoIapModule.d.ts.map +1 -1
  11. package/build/ExpoIapModule.js +53 -14
  12. package/build/ExpoIapModule.js.map +1 -1
  13. package/build/index.d.ts +20 -20
  14. package/build/index.d.ts.map +1 -1
  15. package/build/index.js +210 -66
  16. package/build/index.js.map +1 -1
  17. package/build/modules/android.d.ts +8 -8
  18. package/build/modules/android.js +8 -8
  19. package/build/modules/android.js.map +1 -1
  20. package/build/modules/ios.d.ts +24 -24
  21. package/build/modules/ios.js +25 -25
  22. package/build/modules/ios.js.map +1 -1
  23. package/build/types.d.ts +63 -49
  24. package/build/types.d.ts.map +1 -1
  25. package/build/types.js.map +1 -1
  26. package/build/useIAP.d.ts +8 -2
  27. package/build/useIAP.d.ts.map +1 -1
  28. package/build/useIAP.js +13 -13
  29. package/build/useIAP.js.map +1 -1
  30. package/bun.lock +30 -529
  31. package/ios/ExpoIapHelper.swift +54 -9
  32. package/ios/ExpoIapModule.swift +30 -12
  33. package/ios/onside/OnsideIapModule.swift +128 -41
  34. package/openiap-versions.json +3 -3
  35. package/package.json +1 -1
  36. package/plugin/build/withLocalOpenIAP.js +45 -9
  37. package/plugin/src/withLocalOpenIAP.ts +94 -14
  38. package/plugin/tsconfig.tsbuildinfo +1 -1
  39. package/scripts/test-coverage.sh +5 -1
  40. package/src/ExpoIapModule.ts +60 -19
  41. package/src/index.ts +286 -80
  42. package/src/modules/android.ts +8 -8
  43. package/src/modules/ios.ts +25 -25
  44. package/src/types.ts +66 -49
  45. package/src/useIAP.ts +20 -11
package/build/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { DeveloperProvidedBillingDetailsAndroid, MutationField, Product, ProductQueryType, Purchase, QueryField, UserChoiceBillingDetails } from './types';
1
+ import type { DeveloperProvidedBillingDetailsAndroid, MutationField, Product, ProductQueryType, Purchase, PurchaseUpdatedListenerOptions, QueryField, UserChoiceBillingDetails } from './types';
2
2
  import { type PurchaseError } from './utils/errorMapping';
3
3
  export * from './types';
4
4
  export * from './modules/android';
@@ -41,10 +41,10 @@ type ExpoIapEmitter = {
41
41
  };
42
42
  export declare const emitter: ExpoIapEmitter;
43
43
  /**
44
- * TODO(v3.1.0): Remove legacy 'inapp' alias once downstream apps migrate to 'in-app'.
44
+ * TODO(next-major): Remove legacy 'inapp' alias once downstream apps migrate to 'in-app'.
45
45
  */
46
46
  export type ProductTypeInput = ProductQueryType | 'inapp';
47
- export declare const purchaseUpdatedListener: (listener: (event: Purchase) => void) => {
47
+ export declare const purchaseUpdatedListener: (listener: (event: Purchase) => void, options?: PurchaseUpdatedListenerOptions | null) => {
48
48
  remove: () => void;
49
49
  };
50
50
  export declare const purchaseErrorListener: (listener: (error: PurchaseError) => void) => {
@@ -85,7 +85,7 @@ export declare const promotedProductListenerIOS: (listener: (product: Product) =
85
85
  * ```typescript
86
86
  * const subscription = userChoiceBillingListenerAndroid((details) => {
87
87
  * console.log('User selected alternative billing');
88
- * console.log('Token:', details.externalTransactionToken);
88
+ * console.log('External transaction token received; send it to your backend without logging it.');
89
89
  * console.log('Products:', details.products);
90
90
  *
91
91
  * // Process payment in your system, then report token to Google
@@ -115,7 +115,7 @@ export declare const userChoiceBillingListenerAndroid: (listener: (details: User
115
115
  * ```typescript
116
116
  * const subscription = developerProvidedBillingListenerAndroid(async (details) => {
117
117
  * console.log('User selected developer billing');
118
- * console.log('Token:', details.externalTransactionToken);
118
+ * console.log('External transaction token received; send it to your backend without logging it.');
119
119
  *
120
120
  * // Process payment with your payment gateway
121
121
  * await processPaymentWithYourGateway(details.externalTransactionToken);
@@ -176,13 +176,13 @@ export declare const subscriptionBillingIssueListener: (listener: (purchase: Pur
176
176
  * @remarks When using `useIAP()`, connection is auto-managed on mount/unmount —
177
177
  * pass options to the hook instead of calling this directly.
178
178
  *
179
- * @see {@link https://www.openiap.dev/docs/apis/init-connection}
179
+ * @see {@link https://openiap.dev/docs/apis/init-connection}
180
180
  */
181
181
  export declare const initConnection: MutationField<'initConnection'>;
182
182
  /**
183
183
  * Close the store connection and release resources.
184
184
  *
185
- * @see {@link https://www.openiap.dev/docs/apis/end-connection}
185
+ * @see {@link https://openiap.dev/docs/apis/end-connection}
186
186
  */
187
187
  export declare const endConnection: MutationField<'endConnection'>;
188
188
  /**
@@ -206,7 +206,7 @@ export declare const endConnection: MutationField<'endConnection'>;
206
206
  * @remarks This is a regular promise-based call. Don't confuse with `request*` APIs
207
207
  * (`requestPurchase`), which are event-based.
208
208
  *
209
- * @see {@link https://www.openiap.dev/docs/apis/fetch-products}
209
+ * @see {@link https://openiap.dev/docs/apis/fetch-products}
210
210
  */
211
211
  export declare const fetchProducts: QueryField<'fetchProducts'>;
212
212
  /**
@@ -226,7 +226,7 @@ export declare const fetchProducts: QueryField<'fetchProducts'>;
226
226
  * }
227
227
  * ```
228
228
  *
229
- * @see {@link https://www.openiap.dev/docs/apis/get-available-purchases}
229
+ * @see {@link https://openiap.dev/docs/apis/get-available-purchases}
230
230
  */
231
231
  export declare const getAvailablePurchases: QueryField<'getAvailablePurchases'>;
232
232
  /**
@@ -257,7 +257,7 @@ export declare const getAvailablePurchases: QueryField<'getAvailablePurchases'>;
257
257
  * });
258
258
  * ```
259
259
  *
260
- * @see {@link https://www.openiap.dev/docs/apis/get-active-subscriptions}
260
+ * @see {@link https://openiap.dev/docs/apis/get-active-subscriptions}
261
261
  */
262
262
  export declare const getActiveSubscriptions: QueryField<'getActiveSubscriptions'>;
263
263
  /**
@@ -275,13 +275,13 @@ export declare const getActiveSubscriptions: QueryField<'getActiveSubscriptions'
275
275
  * const hasPremium = await hasActiveSubscriptions(['premium', 'premium_year']);
276
276
  * ```
277
277
  *
278
- * @see {@link https://www.openiap.dev/docs/apis/has-active-subscriptions}
278
+ * @see {@link https://openiap.dev/docs/apis/has-active-subscriptions}
279
279
  */
280
280
  export declare const hasActiveSubscriptions: QueryField<'hasActiveSubscriptions'>;
281
281
  /**
282
282
  * Return the user's storefront country code.
283
283
  *
284
- * @see {@link https://www.openiap.dev/docs/apis/get-storefront}
284
+ * @see {@link https://openiap.dev/docs/apis/get-storefront}
285
285
  */
286
286
  export declare const getStorefront: QueryField<'getStorefront'>;
287
287
  /**
@@ -308,7 +308,7 @@ export declare const getStorefront: QueryField<'getStorefront'>;
308
308
  * @remarks Event-based. Listen for the result via {@link purchaseUpdatedListener} /
309
309
  * {@link purchaseErrorListener}, or use `useIAP({ onPurchaseSuccess, onPurchaseError })`.
310
310
  *
311
- * @see {@link https://www.openiap.dev/docs/apis/request-purchase}
311
+ * @see {@link https://openiap.dev/docs/apis/request-purchase}
312
312
  */
313
313
  export declare const requestPurchase: MutationField<'requestPurchase'>;
314
314
  /**
@@ -332,20 +332,20 @@ export declare const requestPurchase: MutationField<'requestPurchase'>;
332
332
  * @remarks **Critical:** Android purchases must be finalized within 3 days or Google
333
333
  * auto-refunds. iOS unfinished transactions replay on every app launch.
334
334
  *
335
- * @see {@link https://www.openiap.dev/docs/apis/finish-transaction}
335
+ * @see {@link https://openiap.dev/docs/apis/finish-transaction}
336
336
  */
337
337
  export declare const finishTransaction: MutationField<'finishTransaction'>;
338
338
  /**
339
339
  * Restore completed transactions (cross-platform behavior)
340
340
  *
341
- * - iOS: perform a lightweight sync to refresh transactions and ignore sync errors,
341
+ * - iOS: perform a lightweight sync, or Onside restore when OnsideKit is active,
342
342
  * then fetch available purchases to surface restored items to the app.
343
343
  * - Android: simply fetch available purchases (restoration happens via query).
344
344
  *
345
345
  * This helper triggers the refresh flows but does not return the purchases; consumers should
346
346
  * call `getAvailablePurchases` or rely on hook state to inspect the latest items.
347
347
  *
348
- * @see {@link https://www.openiap.dev/docs/apis/restore-purchases}
348
+ * @see {@link https://openiap.dev/docs/apis/restore-purchases}
349
349
  */
350
350
  export declare const restorePurchases: MutationField<'restorePurchases'>;
351
351
  /**
@@ -366,7 +366,7 @@ export declare const restorePurchases: MutationField<'restorePurchases'>;
366
366
  * packageNameAndroid: 'com.example.app'
367
367
  * });
368
368
  *
369
- * @see {@link https://www.openiap.dev/docs/apis/deep-link-to-subscriptions}
369
+ * @see {@link https://openiap.dev/docs/apis/deep-link-to-subscriptions}
370
370
  */
371
371
  export declare const deepLinkToSubscriptions: MutationField<'deepLinkToSubscriptions'>;
372
372
  /**
@@ -379,7 +379,7 @@ export declare const deepLinkToSubscriptions: MutationField<'deepLinkToSubscript
379
379
  *
380
380
  * @deprecated Use verifyPurchase instead
381
381
  *
382
- * @see {@link https://www.openiap.dev/docs/apis/validate-receipt}
382
+ * @see {@link https://openiap.dev/docs/apis/validate-receipt}
383
383
  */
384
384
  export declare const validateReceipt: MutationField<'validateReceipt'>;
385
385
  /**
@@ -391,7 +391,7 @@ export declare const validateReceipt: MutationField<'validateReceipt'>;
391
391
  * @param options - Receipt validation options containing the SKU
392
392
  * @returns Promise resolving to receipt validation result
393
393
  *
394
- * @see {@link https://www.openiap.dev/docs/features/validation#verify-purchase}
394
+ * @see {@link https://openiap.dev/docs/features/validation#verify-purchase}
395
395
  */
396
396
  export declare const verifyPurchase: MutationField<'verifyPurchase'>;
397
397
  /**
@@ -419,7 +419,7 @@ export declare const verifyPurchase: MutationField<'verifyPurchase'>;
419
419
  * });
420
420
  * ```
421
421
  *
422
- * @see {@link https://www.openiap.dev/docs/features/validation#verify-purchase-with-provider}
422
+ * @see {@link https://openiap.dev/docs/features/validation#verify-purchase-with-provider}
423
423
  */
424
424
  export declare const verifyPurchaseWithProvider: MutationField<'verifyPurchaseWithProvider'>;
425
425
  export * from './useIAP';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}