{"version":3,"sources":["jsdelivr-header.js","/npm/@domore-hr/expo-iap@2.1.1/src/index.ts"],"names":[],"mappings":"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","file":"/npm/@domore-hr/expo-iap@2.1.1/build/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@domore-hr/expo-iap@2.1.1/build/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// Import the native module. On web, it will be resolved to ExpoIap.web.ts\n// and on native platforms to ExpoIap.ts\nimport {EventEmitter, Platform} from 'expo-modules-core';\n\nimport {\n  Product,\n  ProductPurchase,\n  ProductType,\n  Purchase,\n  PurchaseError,\n  PurchaseResult,\n  RequestSubscriptionProps,\n  SubscriptionProduct,\n  SubscriptionPurchase,\n} from './ExpoIap.types';\nimport ExpoIapModule from './ExpoIapModule';\nimport {\n  RequestPurchaseAndroidProps,\n  RequestSubscriptionAndroidProps,\n} from './types/ExpoIapAndroid.types';\nimport {\n  PaymentDiscount,\n  ProductIos,\n  RequestPurchaseIosProps,\n  RequestSubscriptionIosProps,\n  SubscriptionProductIos,\n  TransactionSk2,\n} from './types/ExpoIapIos.types';\nimport {isProductIos} from './modules/ios';\n\nexport * from './modules/android';\nexport * from './modules/ios';\n\n// Get the native constant value.\nexport const PI = ExpoIapModule.PI;\n\nexport enum IapEvent {\n  PurchaseUpdated = 'purchase-updated',\n  PurchaseError = 'purchase-error',\n  TransactionIapUpdated = 'iap-transaction-updated',\n}\n\nexport async function setValueAsync(value: string) {\n  return await ExpoIapModule.setValueAsync(value);\n}\n\nexport const emitter = new EventEmitter(ExpoIapModule);\n\nexport const purchaseUpdatedListener = (\n  listener: (event: Purchase) => void,\n) => {\n  const emitterSubscription = emitter.addListener(\n    IapEvent.PurchaseUpdated,\n    listener,\n  );\n  return emitterSubscription;\n};\n\nexport const purchaseErrorListener = (\n  listener: (error: PurchaseError) => void,\n) => {\n  return emitter.addListener<PurchaseError>(IapEvent.PurchaseError, listener);\n};\n\nexport function initConnection() {\n  return ExpoIapModule.initConnection();\n}\n\nexport const getProducts = async (skus: string[]): Promise<Product[]> => {\n  if (!skus?.length) {\n    return Promise.reject(new Error('\"skus\" is required'));\n  }\n\n  return Platform.select({\n    ios: async () => {\n      const items = (await ExpoIapModule.getItems(skus)) as ProductIos[];\n      return items.filter((item: ProductIos) => isProductIos(item));\n    },\n    android: async () => {\n      const products = await ExpoIapModule.getItemsByType(\n        ProductType.InAppPurchase,\n        skus,\n      );\n\n      return products;\n    },\n    default: () => Promise.reject(new Error('Unsupported Platform')),\n  })();\n};\n\nexport const getSubscriptions = async (\n  skus: string[],\n): Promise<SubscriptionProduct[]> => {\n  if (!skus?.length) {\n    return Promise.reject(new Error('\"skus\" is required'));\n  }\n\n  return Platform.select({\n    ios: async (): Promise<SubscriptionProductIos[]> => {\n      const items: SubscriptionProductIos[] = (\n        (await ExpoIapModule.getItems(skus)) as SubscriptionProductIos[]\n      ).filter((item: SubscriptionProductIos) => skus.includes(item.id));\n\n      return items;\n    },\n    android: async () => {\n      return ExpoIapModule.getItemsByType('subs', skus);\n    },\n    default: () => Promise.reject(new Error('Unsupported Platform')),\n  })();\n};\n\nexport async function endConnection(): Promise<boolean> {\n  return ExpoIapModule.endConnection();\n}\n\nexport const getPurchaseHistory = ({\n  alsoPublishToEventListener = false,\n  automaticallyFinishRestoredTransactions = true,\n  onlyIncludeActiveItems = false,\n}: {\n  alsoPublishToEventListener?: boolean;\n  automaticallyFinishRestoredTransactions?: boolean;\n  onlyIncludeActiveItems?: boolean;\n} = {}): Promise<ProductPurchase[]> =>\n  (\n    Platform.select({\n      ios: async () => {\n        return ExpoIapModule.getAvailableItems(\n          alsoPublishToEventListener,\n          onlyIncludeActiveItems,\n        );\n      },\n      android: async () => {\n        const products = await ExpoIapModule.getPurchaseHistoryByType(\n          ProductType.InAppPurchase,\n        );\n\n        const subscriptions = await ExpoIapModule.getPurchaseHistoryByType(\n          ProductType.Subscription,\n        );\n\n        return products.concat(subscriptions);\n      },\n    }) || (() => Promise.resolve([]))\n  )();\n\nexport const getAvailablePurchases = ({\n  alsoPublishToEventListener = false,\n  automaticallyFinishRestoredTransactions = false,\n  onlyIncludeActiveItems = true,\n}: {\n  alsoPublishToEventListener?: boolean;\n  automaticallyFinishRestoredTransactions?: boolean;\n  onlyIncludeActiveItems?: boolean;\n} = {}): Promise<ProductPurchase[]> =>\n  (\n    Platform.select({\n      ios: () =>\n        ExpoIapModule.getAvailableItems(\n          alsoPublishToEventListener,\n          onlyIncludeActiveItems,\n        ),\n      android: async () => {\n        const products = await ExpoIapModule.getAvailableItemsByType(\n          ProductType.InAppPurchase,\n        );\n\n        const subscriptions = await ExpoIapModule.getAvailableItemsByType(\n          ProductType.Subscription,\n        );\n\n        return products.concat(subscriptions);\n      },\n    }) || (() => Promise.resolve([]))\n  )();\n\nconst offerToRecordIos = (\n  offer: PaymentDiscount | undefined,\n): Record<keyof PaymentDiscount, string> | undefined => {\n  if (!offer) {\n    return undefined;\n  }\n  return {\n    identifier: offer.identifier,\n    keyIdentifier: offer.keyIdentifier,\n    nonce: offer.nonce,\n    signature: offer.signature,\n    timestamp: offer.timestamp.toString(),\n  };\n};\n\nconst iosTransactionToPurchaseMap = ({\n  id,\n  originalPurchaseDate,\n  productID,\n  purchaseDate,\n  purchasedQuantity,\n  originalID,\n  verificationResult,\n  appAccountToken,\n  jsonRepresentation,\n}: TransactionSk2): Purchase => {\n  let transactionReasonIOS;\n\n  try {\n    if (jsonRepresentation) {\n      const transactionData = JSON.parse(jsonRepresentation);\n      transactionReasonIOS = transactionData.transactionReason;\n    }\n  } catch (e) {\n    console.log('SK2 Error parsing jsonRepresentation', e);\n  }\n  const purchase: Purchase = {\n    productId: productID,\n    transactionId: String(id),\n    transactionDate: purchaseDate, //??\n    transactionReceipt: '', // Not available\n    purchaseToken: '', //Not available\n    quantityIOS: purchasedQuantity,\n    originalTransactionDateIOS: originalPurchaseDate,\n    originalTransactionIdentifierIOS: originalID,\n    verificationResultIOS: verificationResult ?? '',\n    appAccountToken: appAccountToken ?? '',\n    transactionReasonIOS: transactionReasonIOS ?? '',\n  };\n  return purchase;\n};\n\nexport const requestPurchase = (\n  request: RequestPurchaseIosProps | RequestPurchaseAndroidProps,\n): Promise<ProductPurchase | ProductPurchase[] | void> =>\n  (\n    Platform.select({\n      ios: async () => {\n        if (!('sku' in request)) {\n          throw new Error('sku is required for iOS purchase');\n        }\n\n        const {\n          sku,\n          andDangerouslyFinishTransactionAutomaticallyIOS = false,\n          appAccountToken,\n          quantity,\n          withOffer,\n        } = request;\n\n        if (andDangerouslyFinishTransactionAutomaticallyIOS) {\n          console.warn(\n            'You are dangerously allowing expo-iap to finish your transaction automatically. You should set andDangerouslyFinishTransactionAutomatically to false when calling requestPurchase and call finishTransaction manually when you have delivered the purchased goods to the user. It defaults to true to provide backwards compatibility. Will default to false in version 4.0.0.',\n          );\n        }\n\n        const offer = offerToRecordIos(withOffer);\n\n        const result = await ExpoIapModule.buyProduct(\n          sku,\n          andDangerouslyFinishTransactionAutomaticallyIOS,\n          appAccountToken,\n          quantity ?? -1,\n          offer,\n        );\n\n        const purchase = iosTransactionToPurchaseMap(result);\n        return Promise.resolve(purchase);\n      },\n      android: async () => {\n        if (!('skus' in request) || !request.skus.length) {\n          throw new Error('skus is required for Android purchase');\n        }\n\n        const {\n          skus,\n          obfuscatedAccountIdAndroid,\n          obfuscatedProfileIdAndroid,\n          isOfferPersonalized,\n        } = request;\n\n        return ExpoIapModule.buyItemByType({\n          type: ProductType.InAppPurchase,\n          skuArr: skus,\n          purchaseToken: undefined,\n          replacementMode: -1,\n          obfuscatedAccountId: obfuscatedAccountIdAndroid,\n          obfuscatedProfileId: obfuscatedProfileIdAndroid,\n          offerTokenArr: [],\n          isOfferPersonalized: isOfferPersonalized ?? false,\n        });\n      },\n    }) || Promise.resolve\n  )();\n\nexport const requestSubscription = (\n  request: RequestSubscriptionProps,\n): Promise<SubscriptionPurchase | SubscriptionPurchase[] | null | void> =>\n  (\n    Platform.select({\n      ios: async () => {\n        if (!('sku' in request)) {\n          throw new Error('sku is required for iOS subscriptions');\n        }\n\n        const {\n          sku,\n          andDangerouslyFinishTransactionAutomaticallyIOS = false,\n          appAccountToken,\n          quantity,\n          withOffer,\n        } = request as RequestSubscriptionIosProps;\n\n        if (andDangerouslyFinishTransactionAutomaticallyIOS) {\n          console.warn(\n            'You are dangerously allowing expo-iap to finish your transaction automatically. You should set andDangerouslyFinishTransactionAutomatically to false when calling requestPurchase and call finishTransaction manually when you have delivered the purchased goods to the user. It defaults to true to provide backwards compatibility. Will default to false in version 4.0.0.',\n          );\n        }\n\n        const offer = offerToRecordIos(withOffer);\n\n        const purchase = iosTransactionToPurchaseMap(\n          await ExpoIapModule.buyProduct(\n            sku,\n            andDangerouslyFinishTransactionAutomaticallyIOS,\n            appAccountToken,\n            quantity ?? -1,\n            offer,\n          ),\n        );\n        return Promise.resolve(purchase);\n      },\n      android: async () => {\n        console.log('requestSubscription', request);\n        const {\n          skus,\n          isOfferPersonalized,\n          obfuscatedAccountIdAndroid,\n          obfuscatedProfileIdAndroid,\n          subscriptionOffers,\n          replacementModeAndroid,\n          purchaseTokenAndroid,\n        } = request as RequestSubscriptionAndroidProps;\n\n        return ExpoIapModule.buyItemByType({\n          type: ProductType.Subscription,\n          skuArr: skus.map((so) => so),\n          purchaseToken: purchaseTokenAndroid,\n          replacementMode: replacementModeAndroid,\n          obfuscatedAccountId: obfuscatedAccountIdAndroid,\n          obfuscatedProfileId: obfuscatedProfileIdAndroid,\n          offerTokenArr: subscriptionOffers.map((so) => so.offerToken),\n          isOfferPersonalized: isOfferPersonalized ?? false,\n        });\n      },\n    }) || (() => Promise.resolve(null))\n  )();\n\nexport const finishTransaction = ({\n  purchase,\n  isConsumable,\n  developerPayloadAndroid,\n}: {\n  purchase: Purchase;\n  isConsumable?: boolean;\n  developerPayloadAndroid?: string;\n}): Promise<PurchaseResult | boolean> => {\n  return (\n    Platform.select({\n      ios: async () => {\n        const transactionId = purchase.transactionId;\n\n        if (!transactionId) {\n          return Promise.reject(\n            new Error('transactionId required to finish iOS transaction'),\n          );\n        }\n        await ExpoIapModule.finishTransaction(transactionId);\n        return Promise.resolve(true);\n      },\n      android: async () => {\n        if (purchase?.purchaseToken) {\n          if (!isConsumable) {\n            return Promise.reject(\n              new Error('purchase is not suitable to be purchased'),\n            );\n          }\n\n          return ExpoIapModule.consumeProduct(\n            purchase.purchaseToken,\n            developerPayloadAndroid,\n          );\n        }\n        return Promise.reject(\n          new Error('purchase is not suitable to be purchased'),\n        );\n      },\n    }) || (() => Promise.reject(new Error('Unsupported Platform')))\n  )();\n};\n\nexport * from './useIap';\n"]}