@revenuecat/purchases-capacitor-ui 12.2.4 → 12.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.
package/Package.swift CHANGED
@@ -11,7 +11,7 @@ let package = Package(
11
11
  ],
12
12
  dependencies: [
13
13
  .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", from: "8.0.0"),
14
- .package(url: "https://github.com/RevenueCat/purchases-hybrid-common.git", exact: "17.47.0")
14
+ .package(url: "https://github.com/RevenueCat/purchases-hybrid-common.git", exact: "17.52.0")
15
15
  ],
16
16
  targets: [
17
17
  .target(
package/README.md CHANGED
@@ -61,21 +61,30 @@ await Purchases.configure({
61
61
  ### Presenting Paywalls
62
62
 
63
63
  ```typescript
64
+ import { Purchases } from '@revenuecat/purchases-capacitor';
64
65
  import { RevenueCatUI } from '@revenuecat/purchases-capacitor-ui';
65
66
 
67
+ const offering = (await Purchases.getOfferings()).current;
68
+
66
69
  // Present a paywall with the default offering
67
70
  const result = await RevenueCatUI.presentPaywall();
68
71
 
69
72
  // Present a paywall with a specific offering
70
73
  const result = await RevenueCatUI.presentPaywall({
71
- offeringIdentifier: 'premium',
74
+ offering,
72
75
  displayCloseButton: true,
73
76
  });
74
77
 
78
+ // Present a fullscreen paywall on all platforms
79
+ import { PaywallPresentationConfiguration } from '@revenuecat/purchases-capacitor-ui';
80
+ const result = await RevenueCatUI.presentPaywall({
81
+ presentationConfiguration: PaywallPresentationConfiguration.FULL_SCREEN,
82
+ });
83
+
75
84
  // Present a paywall only if the user doesn't have a specific entitlement
76
85
  const result = await RevenueCatUI.presentPaywallIfNeeded({
77
86
  requiredEntitlementIdentifier: 'pro_access',
78
- offeringIdentifier: 'premium',
87
+ offering,
79
88
  });
80
89
  ```
81
90
 
@@ -13,6 +13,6 @@ Pod::Spec.new do |s|
13
13
  s.source_files = 'ios/Sources/**/*.{swift,h,m,c,cc,mm,cpp}'
14
14
  s.ios.deployment_target = '15.0'
15
15
  s.dependency 'Capacitor'
16
- s.dependency 'PurchasesHybridCommonUI', '17.47.0'
16
+ s.dependency 'PurchasesHybridCommonUI', '17.52.0'
17
17
  s.swift_version = '5.1'
18
18
  end
@@ -51,6 +51,6 @@ repositories {
51
51
  dependencies {
52
52
  implementation project(':capacitor-android')
53
53
  implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
54
- implementation 'com.revenuecat.purchases:purchases-hybrid-common-ui:17.47.0'
54
+ implementation 'com.revenuecat.purchases:purchases-hybrid-common-ui:17.52.0'
55
55
  implementation "org.jetbrains.kotlin:kotlin-stdlib:2.2.20"
56
56
  }
@@ -192,6 +192,10 @@ class RevenueCatUIPlugin : Plugin(), PaywallResultListener {
192
192
  val listener = if (hasPaywallListener) createPaywallListenerWrapper() else null
193
193
  val purchaseLogic = if (hasPurchaseLogic) createPurchaseLogicBridge() else null
194
194
 
195
+ val customVariables = call.getObject("customVariables")?.let { jsObj ->
196
+ jsObj.keys().asSequence().associateWith { key -> jsObj.get(key) }
197
+ }
198
+
195
199
  val options = PresentPaywallOptions(
196
200
  paywallSource = paywallSource,
197
201
  requiredEntitlementIdentifier = requiredEntitlementIdentifier,
@@ -199,6 +203,7 @@ class RevenueCatUIPlugin : Plugin(), PaywallResultListener {
199
203
  paywallResultListener = this,
200
204
  paywallListener = listener,
201
205
  purchaseLogic = purchaseLogic,
206
+ customVariables = customVariables,
202
207
  )
203
208
 
204
209
  presentPaywallFromFragment(currentActivity, options)
@@ -139,12 +139,54 @@ export declare enum PURCHASE_LOGIC_RESULT {
139
139
  /** The purchase or restore failed with an error. */
140
140
  ERROR = "ERROR"
141
141
  }
142
+ /** Presentation styles available for paywalls on iOS. */
143
+ export type IOSPaywallPresentationStyle = (typeof IOS_PAYWALL_PRESENTATION_STYLE)[keyof typeof IOS_PAYWALL_PRESENTATION_STYLE];
144
+ /** @see {@link IOSPaywallPresentationStyle} */
145
+ export declare const IOS_PAYWALL_PRESENTATION_STYLE: {
146
+ /** Presents the paywall in full-screen mode. */
147
+ readonly FULL_SCREEN: "FULL_SCREEN";
148
+ /** Presents the paywall as a sheet. This is the default on iOS. */
149
+ readonly SHEET: "SHEET";
150
+ };
151
+ /** Presentation styles available for paywalls on Android. */
152
+ export type AndroidPaywallPresentationStyle = (typeof ANDROID_PAYWALL_PRESENTATION_STYLE)[keyof typeof ANDROID_PAYWALL_PRESENTATION_STYLE];
153
+ /** @see {@link AndroidPaywallPresentationStyle} */
154
+ export declare const ANDROID_PAYWALL_PRESENTATION_STYLE: {
155
+ /** Presents the paywall in full-screen mode. This is the default on Android. */
156
+ readonly FULL_SCREEN: "FULL_SCREEN";
157
+ };
158
+ /**
159
+ * Per-platform configuration for how a paywall is presented.
160
+ * Use the convenience presets {@link PaywallPresentationConfiguration.FULL_SCREEN}
161
+ * or {@link PaywallPresentationConfiguration.DEFAULT}, or provide a custom
162
+ * configuration with per-platform styles.
163
+ */
164
+ export interface PaywallPresentationConfiguration {
165
+ /** Presentation style on iOS. Defaults to sheet if not specified. */
166
+ ios?: IOSPaywallPresentationStyle;
167
+ /** Presentation style on Android. Defaults to full-screen if not specified. */
168
+ android?: AndroidPaywallPresentationStyle;
169
+ }
170
+ /** Convenience presets for {@link PaywallPresentationConfiguration}. */
171
+ export declare const PaywallPresentationConfiguration: {
172
+ /** Full-screen presentation on all platforms. */
173
+ readonly FULL_SCREEN: PaywallPresentationConfiguration;
174
+ /** Default presentation: sheet on iOS, full-screen on Android. */
175
+ readonly DEFAULT: PaywallPresentationConfiguration;
176
+ };
142
177
  export interface PresentPaywallOptions {
143
178
  /**
144
179
  * The offering to present.
145
180
  * If not provided, the current offering will be used.
146
181
  */
147
182
  offering?: PurchasesOffering;
183
+ /**
184
+ * Controls how the paywall is presented on each platform.
185
+ * Use `PaywallPresentationConfiguration.FULL_SCREEN` for full-screen on all platforms,
186
+ * or provide a custom configuration with per-platform styles.
187
+ * Defaults to sheet on iOS and full-screen on Android.
188
+ */
189
+ presentationConfiguration?: PaywallPresentationConfiguration;
148
190
  /**
149
191
  * Whether to display a close button on the paywall.
150
192
  * Only applicable for original template paywalls, ignored for V2 Paywalls.
@@ -160,6 +202,12 @@ export interface PresentPaywallOptions {
160
202
  * `purchasesAreCompletedBy` is set to `MY_APP`.
161
203
  */
162
204
  purchaseLogic?: PurchaseLogic;
205
+ /**
206
+ * Optional custom variables for paywall text substitution.
207
+ * Variables can be referenced in paywalls using the `{{ custom.variable_name }}` syntax.
208
+ * Keys must start with a letter and contain only alphanumeric characters and underscores.
209
+ */
210
+ customVariables?: Record<string, string | number | boolean>;
163
211
  }
164
212
  export interface PresentPaywallIfNeededOptions extends PresentPaywallOptions {
165
213
  /**
@@ -11,6 +11,31 @@ export var PURCHASE_LOGIC_RESULT;
11
11
  /** The purchase or restore failed with an error. */
12
12
  PURCHASE_LOGIC_RESULT["ERROR"] = "ERROR";
13
13
  })(PURCHASE_LOGIC_RESULT || (PURCHASE_LOGIC_RESULT = {}));
14
+ /** @see {@link IOSPaywallPresentationStyle} */
15
+ export const IOS_PAYWALL_PRESENTATION_STYLE = {
16
+ /** Presents the paywall in full-screen mode. */
17
+ FULL_SCREEN: 'FULL_SCREEN',
18
+ /** Presents the paywall as a sheet. This is the default on iOS. */
19
+ SHEET: 'SHEET',
20
+ };
21
+ /** @see {@link AndroidPaywallPresentationStyle} */
22
+ export const ANDROID_PAYWALL_PRESENTATION_STYLE = {
23
+ /** Presents the paywall in full-screen mode. This is the default on Android. */
24
+ FULL_SCREEN: 'FULL_SCREEN',
25
+ };
26
+ /** Convenience presets for {@link PaywallPresentationConfiguration}. */
27
+ export const PaywallPresentationConfiguration = {
28
+ /** Full-screen presentation on all platforms. */
29
+ FULL_SCREEN: {
30
+ ios: IOS_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,
31
+ android: ANDROID_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,
32
+ },
33
+ /** Default presentation: sheet on iOS, full-screen on Android. */
34
+ DEFAULT: {
35
+ ios: IOS_PAYWALL_PRESENTATION_STYLE.SHEET,
36
+ android: ANDROID_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,
37
+ },
38
+ };
14
39
  // Using the enum from purchases-typescript-internal-esm instead of defining our own
15
40
  export { PAYWALL_RESULT as PaywallResultEnum };
16
41
  //# sourceMappingURL=definitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAqH/E;;GAEG;AACH,MAAM,CAAN,IAAY,qBAOX;AAPD,WAAY,qBAAqB;IAC/B,sDAAsD;IACtD,4CAAmB,CAAA;IACnB,kDAAkD;IAClD,sDAA6B,CAAA;IAC7B,oDAAoD;IACpD,wCAAe,CAAA;AACjB,CAAC,EAPW,qBAAqB,KAArB,qBAAqB,QAOhC;AAoCD,oFAAoF;AACpF,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,CAAC","sourcesContent":["import type { PluginListenerHandle } from '@capacitor/core';\nimport type {\n CustomerInfo,\n PurchasesError,\n PurchasesOffering,\n PurchasesPackage,\n PurchasesStoreTransaction,\n} from '@revenuecat/purchases-typescript-internal-esm';\nimport { PAYWALL_RESULT } from '@revenuecat/purchases-typescript-internal-esm';\n\nexport interface RevenueCatUIPlugin {\n /**\n * Presents a paywall configured in the RevenueCat dashboard.\n * @param options The options for presenting the paywall.\n * @returns A PaywallResult indicating what happened during the paywall presentation.\n */\n presentPaywall(options?: PresentPaywallOptions): Promise<PaywallResult>;\n\n /**\n * Presents a paywall only if the user does not have the specified entitlement.\n * @param options The options for presenting the paywall if needed.\n * @returns A PaywallResult indicating what happened during the paywall presentation.\n */\n presentPaywallIfNeeded(options: PresentPaywallIfNeededOptions): Promise<PaywallResult>;\n\n /**\n * Presents the customer center where users can manage their subscriptions.\n */\n presentCustomerCenter(): Promise<void>;\n\n /**\n * Used for web only. Enables or disables returning mock results instead of rejecting promises with \"not supported\".\n * For testing purposes only.\n * @param options Options for mock web results\n */\n setMockWebResults?(options: { shouldMockWebResults: boolean }): Promise<void>;\n\n /**\n * Listen for when a paywall is displayed or dismissed.\n * @param eventName The event to listen for\n * @param listener The listener to call when the event is triggered\n */\n addListener(eventName: 'paywallDisplayed' | 'paywallDismissed', listener: () => void): Promise<PluginListenerHandle>;\n\n /**\n * Remove all listeners for this plugin.\n */\n removeAllListeners(): Promise<void>;\n}\n\n/**\n * Object passed to onPurchaseInitiated that allows the developer to\n * control when (and whether) the purchase flow continues.\n * The developer can store this and call resume() asynchronously\n * (e.g., after an auth flow on a different screen).\n */\nexport interface PurchaseResumable {\n /** Call to proceed with or cancel the purchase. Defaults to true (proceed). */\n resume(shouldProceed?: boolean): void;\n}\n\n/**\n * Callbacks for observing paywall lifecycle events such as purchases,\n * restores, and errors. All callbacks are optional.\n *\n * Pass as `listener` in {@link PresentPaywallOptions} to receive events\n * while the paywall is displayed.\n */\nexport interface PaywallListener {\n /** Called when a purchase begins for a package. */\n onPurchaseStarted?: (args: { packageBeingPurchased: PurchasesPackage }) => void;\n /** Called when a purchase completes successfully. */\n onPurchaseCompleted?: (args: { customerInfo: CustomerInfo; storeTransaction: PurchasesStoreTransaction }) => void;\n /** Called when a purchase fails with an error. */\n onPurchaseError?: (args: { error: PurchasesError }) => void;\n /** Called when the user cancels a purchase. */\n onPurchaseCancelled?: () => void;\n /** Called when a restore operation begins. */\n onRestoreStarted?: () => void;\n /** Called when a restore operation completes successfully. */\n onRestoreCompleted?: (args: { customerInfo: CustomerInfo }) => void;\n /** Called when a restore operation fails with an error. */\n onRestoreError?: (args: { error: PurchasesError }) => void;\n /**\n * Called before the payment sheet is displayed, allowing the app to gate\n * the purchase flow (e.g., require authentication first).\n *\n * The developer receives a {@link PurchaseResumable} that can be stored\n * and called asynchronously. Call `resumable.resume(true)` to proceed\n * with the purchase, or `resumable.resume(false)` to cancel it.\n *\n * If this callback is not provided, the purchase proceeds automatically.\n */\n onPurchaseInitiated?: (args: { packageBeingPurchased: PurchasesPackage; resumable: PurchaseResumable }) => void;\n}\n\n/**\n * Custom purchase and restore handlers for apps that manage their own\n * purchase flow (`purchasesAreCompletedBy: MY_APP`).\n *\n * When provided in {@link PresentPaywallOptions}, the paywall delegates\n * purchase and restore operations to these handlers instead of using\n * RevenueCat's built-in purchase flow.\n */\nexport interface PurchaseLogic {\n /**\n * Called when the user initiates a purchase from the paywall.\n * Perform the purchase using your own payment system and return the result.\n */\n performPurchase: (args: { packageToPurchase: PurchasesPackage }) => Promise<PurchaseLogicResult>;\n /**\n * Called when the user initiates a restore from the paywall.\n * Perform the restore using your own system and return the result.\n */\n performRestore: () => Promise<PurchaseLogicResult>;\n}\n\n/**\n * The result of a custom purchase or restore operation performed by {@link PurchaseLogic}.\n */\nexport type PurchaseLogicResult =\n | { result: PURCHASE_LOGIC_RESULT.SUCCESS }\n | { result: PURCHASE_LOGIC_RESULT.CANCELLATION }\n | { result: PURCHASE_LOGIC_RESULT.ERROR; error?: PurchasesError };\n\n/**\n * Possible outcomes from a custom {@link PurchaseLogic} operation.\n */\nexport enum PURCHASE_LOGIC_RESULT {\n /** The purchase or restore completed successfully. */\n SUCCESS = 'SUCCESS',\n /** The user cancelled the purchase or restore. */\n CANCELLATION = 'CANCELLATION',\n /** The purchase or restore failed with an error. */\n ERROR = 'ERROR',\n}\n\nexport interface PresentPaywallOptions {\n /**\n * The offering to present.\n * If not provided, the current offering will be used.\n */\n offering?: PurchasesOffering;\n\n /**\n * Whether to display a close button on the paywall.\n * Only applicable for original template paywalls, ignored for V2 Paywalls.\n */\n displayCloseButton?: boolean;\n\n /**\n * Optional listener for paywall lifecycle events such as purchase\n * completion, restoration, and errors.\n */\n listener?: PaywallListener;\n\n /**\n * Optional custom purchase/restore logic for when\n * `purchasesAreCompletedBy` is set to `MY_APP`.\n */\n purchaseLogic?: PurchaseLogic;\n}\n\nexport interface PresentPaywallIfNeededOptions extends PresentPaywallOptions {\n /**\n * The identifier of the entitlement that is required.\n * The paywall will only be presented if the user doesn't have this entitlement.\n */\n requiredEntitlementIdentifier: string;\n}\n\n// Using the enum from purchases-typescript-internal-esm instead of defining our own\nexport { PAYWALL_RESULT as PaywallResultEnum };\n\nexport interface PaywallResult {\n /**\n * The result of the paywall presentation.\n */\n result: PAYWALL_RESULT;\n}\n"]}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAqH/E;;GAEG;AACH,MAAM,CAAN,IAAY,qBAOX;AAPD,WAAY,qBAAqB;IAC/B,sDAAsD;IACtD,4CAAmB,CAAA;IACnB,kDAAkD;IAClD,sDAA6B,CAAA;IAC7B,oDAAoD;IACpD,wCAAe,CAAA;AACjB,CAAC,EAPW,qBAAqB,KAArB,qBAAqB,QAOhC;AAKD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,gDAAgD;IAChD,WAAW,EAAE,aAAa;IAC1B,mEAAmE;IACnE,KAAK,EAAE,OAAO;CACN,CAAC;AAKX,mDAAmD;AACnD,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,gFAAgF;IAChF,WAAW,EAAE,aAAa;CAClB,CAAC;AAeX,wEAAwE;AACxE,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,iDAAiD;IACjD,WAAW,EAAE;QACX,GAAG,EAAE,8BAA8B,CAAC,WAAW;QAC/C,OAAO,EAAE,kCAAkC,CAAC,WAAW;KACpB;IACrC,kEAAkE;IAClE,OAAO,EAAE;QACP,GAAG,EAAE,8BAA8B,CAAC,KAAK;QACzC,OAAO,EAAE,kCAAkC,CAAC,WAAW;KACpB;CAC7B,CAAC;AAmDX,oFAAoF;AACpF,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,CAAC","sourcesContent":["import type { PluginListenerHandle } from '@capacitor/core';\nimport type {\n CustomerInfo,\n PurchasesError,\n PurchasesOffering,\n PurchasesPackage,\n PurchasesStoreTransaction,\n} from '@revenuecat/purchases-typescript-internal-esm';\nimport { PAYWALL_RESULT } from '@revenuecat/purchases-typescript-internal-esm';\n\nexport interface RevenueCatUIPlugin {\n /**\n * Presents a paywall configured in the RevenueCat dashboard.\n * @param options The options for presenting the paywall.\n * @returns A PaywallResult indicating what happened during the paywall presentation.\n */\n presentPaywall(options?: PresentPaywallOptions): Promise<PaywallResult>;\n\n /**\n * Presents a paywall only if the user does not have the specified entitlement.\n * @param options The options for presenting the paywall if needed.\n * @returns A PaywallResult indicating what happened during the paywall presentation.\n */\n presentPaywallIfNeeded(options: PresentPaywallIfNeededOptions): Promise<PaywallResult>;\n\n /**\n * Presents the customer center where users can manage their subscriptions.\n */\n presentCustomerCenter(): Promise<void>;\n\n /**\n * Used for web only. Enables or disables returning mock results instead of rejecting promises with \"not supported\".\n * For testing purposes only.\n * @param options Options for mock web results\n */\n setMockWebResults?(options: { shouldMockWebResults: boolean }): Promise<void>;\n\n /**\n * Listen for when a paywall is displayed or dismissed.\n * @param eventName The event to listen for\n * @param listener The listener to call when the event is triggered\n */\n addListener(eventName: 'paywallDisplayed' | 'paywallDismissed', listener: () => void): Promise<PluginListenerHandle>;\n\n /**\n * Remove all listeners for this plugin.\n */\n removeAllListeners(): Promise<void>;\n}\n\n/**\n * Object passed to onPurchaseInitiated that allows the developer to\n * control when (and whether) the purchase flow continues.\n * The developer can store this and call resume() asynchronously\n * (e.g., after an auth flow on a different screen).\n */\nexport interface PurchaseResumable {\n /** Call to proceed with or cancel the purchase. Defaults to true (proceed). */\n resume(shouldProceed?: boolean): void;\n}\n\n/**\n * Callbacks for observing paywall lifecycle events such as purchases,\n * restores, and errors. All callbacks are optional.\n *\n * Pass as `listener` in {@link PresentPaywallOptions} to receive events\n * while the paywall is displayed.\n */\nexport interface PaywallListener {\n /** Called when a purchase begins for a package. */\n onPurchaseStarted?: (args: { packageBeingPurchased: PurchasesPackage }) => void;\n /** Called when a purchase completes successfully. */\n onPurchaseCompleted?: (args: { customerInfo: CustomerInfo; storeTransaction: PurchasesStoreTransaction }) => void;\n /** Called when a purchase fails with an error. */\n onPurchaseError?: (args: { error: PurchasesError }) => void;\n /** Called when the user cancels a purchase. */\n onPurchaseCancelled?: () => void;\n /** Called when a restore operation begins. */\n onRestoreStarted?: () => void;\n /** Called when a restore operation completes successfully. */\n onRestoreCompleted?: (args: { customerInfo: CustomerInfo }) => void;\n /** Called when a restore operation fails with an error. */\n onRestoreError?: (args: { error: PurchasesError }) => void;\n /**\n * Called before the payment sheet is displayed, allowing the app to gate\n * the purchase flow (e.g., require authentication first).\n *\n * The developer receives a {@link PurchaseResumable} that can be stored\n * and called asynchronously. Call `resumable.resume(true)` to proceed\n * with the purchase, or `resumable.resume(false)` to cancel it.\n *\n * If this callback is not provided, the purchase proceeds automatically.\n */\n onPurchaseInitiated?: (args: { packageBeingPurchased: PurchasesPackage; resumable: PurchaseResumable }) => void;\n}\n\n/**\n * Custom purchase and restore handlers for apps that manage their own\n * purchase flow (`purchasesAreCompletedBy: MY_APP`).\n *\n * When provided in {@link PresentPaywallOptions}, the paywall delegates\n * purchase and restore operations to these handlers instead of using\n * RevenueCat's built-in purchase flow.\n */\nexport interface PurchaseLogic {\n /**\n * Called when the user initiates a purchase from the paywall.\n * Perform the purchase using your own payment system and return the result.\n */\n performPurchase: (args: { packageToPurchase: PurchasesPackage }) => Promise<PurchaseLogicResult>;\n /**\n * Called when the user initiates a restore from the paywall.\n * Perform the restore using your own system and return the result.\n */\n performRestore: () => Promise<PurchaseLogicResult>;\n}\n\n/**\n * The result of a custom purchase or restore operation performed by {@link PurchaseLogic}.\n */\nexport type PurchaseLogicResult =\n | { result: PURCHASE_LOGIC_RESULT.SUCCESS }\n | { result: PURCHASE_LOGIC_RESULT.CANCELLATION }\n | { result: PURCHASE_LOGIC_RESULT.ERROR; error?: PurchasesError };\n\n/**\n * Possible outcomes from a custom {@link PurchaseLogic} operation.\n */\nexport enum PURCHASE_LOGIC_RESULT {\n /** The purchase or restore completed successfully. */\n SUCCESS = 'SUCCESS',\n /** The user cancelled the purchase or restore. */\n CANCELLATION = 'CANCELLATION',\n /** The purchase or restore failed with an error. */\n ERROR = 'ERROR',\n}\n\n/** Presentation styles available for paywalls on iOS. */\nexport type IOSPaywallPresentationStyle =\n (typeof IOS_PAYWALL_PRESENTATION_STYLE)[keyof typeof IOS_PAYWALL_PRESENTATION_STYLE];\n/** @see {@link IOSPaywallPresentationStyle} */\nexport const IOS_PAYWALL_PRESENTATION_STYLE = {\n /** Presents the paywall in full-screen mode. */\n FULL_SCREEN: 'FULL_SCREEN',\n /** Presents the paywall as a sheet. This is the default on iOS. */\n SHEET: 'SHEET',\n} as const;\n\n/** Presentation styles available for paywalls on Android. */\nexport type AndroidPaywallPresentationStyle =\n (typeof ANDROID_PAYWALL_PRESENTATION_STYLE)[keyof typeof ANDROID_PAYWALL_PRESENTATION_STYLE];\n/** @see {@link AndroidPaywallPresentationStyle} */\nexport const ANDROID_PAYWALL_PRESENTATION_STYLE = {\n /** Presents the paywall in full-screen mode. This is the default on Android. */\n FULL_SCREEN: 'FULL_SCREEN',\n} as const;\n\n/**\n * Per-platform configuration for how a paywall is presented.\n * Use the convenience presets {@link PaywallPresentationConfiguration.FULL_SCREEN}\n * or {@link PaywallPresentationConfiguration.DEFAULT}, or provide a custom\n * configuration with per-platform styles.\n */\nexport interface PaywallPresentationConfiguration {\n /** Presentation style on iOS. Defaults to sheet if not specified. */\n ios?: IOSPaywallPresentationStyle;\n /** Presentation style on Android. Defaults to full-screen if not specified. */\n android?: AndroidPaywallPresentationStyle;\n}\n\n/** Convenience presets for {@link PaywallPresentationConfiguration}. */\nexport const PaywallPresentationConfiguration = {\n /** Full-screen presentation on all platforms. */\n FULL_SCREEN: {\n ios: IOS_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,\n android: ANDROID_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,\n } as PaywallPresentationConfiguration,\n /** Default presentation: sheet on iOS, full-screen on Android. */\n DEFAULT: {\n ios: IOS_PAYWALL_PRESENTATION_STYLE.SHEET,\n android: ANDROID_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,\n } as PaywallPresentationConfiguration,\n} as const;\n\nexport interface PresentPaywallOptions {\n /**\n * The offering to present.\n * If not provided, the current offering will be used.\n */\n offering?: PurchasesOffering;\n\n /**\n * Controls how the paywall is presented on each platform.\n * Use `PaywallPresentationConfiguration.FULL_SCREEN` for full-screen on all platforms,\n * or provide a custom configuration with per-platform styles.\n * Defaults to sheet on iOS and full-screen on Android.\n */\n presentationConfiguration?: PaywallPresentationConfiguration;\n\n /**\n * Whether to display a close button on the paywall.\n * Only applicable for original template paywalls, ignored for V2 Paywalls.\n */\n displayCloseButton?: boolean;\n\n /**\n * Optional listener for paywall lifecycle events such as purchase\n * completion, restoration, and errors.\n */\n listener?: PaywallListener;\n\n /**\n * Optional custom purchase/restore logic for when\n * `purchasesAreCompletedBy` is set to `MY_APP`.\n */\n purchaseLogic?: PurchaseLogic;\n\n /**\n * Optional custom variables for paywall text substitution.\n * Variables can be referenced in paywalls using the `{{ custom.variable_name }}` syntax.\n * Keys must start with a letter and contain only alphanumeric characters and underscores.\n */\n customVariables?: Record<string, string | number | boolean>;\n}\n\nexport interface PresentPaywallIfNeededOptions extends PresentPaywallOptions {\n /**\n * The identifier of the entitlement that is required.\n * The paywall will only be presented if the user doesn't have this entitlement.\n */\n requiredEntitlementIdentifier: string;\n}\n\n// Using the enum from purchases-typescript-internal-esm instead of defining our own\nexport { PAYWALL_RESULT as PaywallResultEnum };\n\nexport interface PaywallResult {\n /**\n * The result of the paywall presentation.\n */\n result: PAYWALL_RESULT;\n}\n"]}
package/dist/esm/index.js CHANGED
@@ -1,8 +1,46 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
1
12
  import { registerPlugin } from '@capacitor/core';
2
- import { PURCHASE_LOGIC_RESULT } from './definitions';
13
+ import { IOS_PAYWALL_PRESENTATION_STYLE, ANDROID_PAYWALL_PRESENTATION_STYLE, PURCHASE_LOGIC_RESULT, } from './definitions';
3
14
  const nativePlugin = registerPlugin('RevenueCatUI', {
4
15
  web: () => import('./web').then((m) => new m.RevenueCatUIWeb()),
5
16
  });
17
+ function assertValidPresentationConfiguration(config) {
18
+ if (config === undefined) {
19
+ return;
20
+ }
21
+ if (typeof config !== 'object' || config === null) {
22
+ throw new Error(`Invalid presentationConfiguration: expected an object or undefined.`);
23
+ }
24
+ const { ios, android } = config;
25
+ const validIos = Object.values(IOS_PAYWALL_PRESENTATION_STYLE);
26
+ const validAndroid = Object.values(ANDROID_PAYWALL_PRESENTATION_STYLE);
27
+ if (ios !== undefined && !validIos.includes(ios)) {
28
+ throw new Error(`Invalid presentationConfiguration.ios "${String(ios)}". Expected one of: ${validIos.join(', ')}.`);
29
+ }
30
+ if (android !== undefined && !validAndroid.includes(android)) {
31
+ throw new Error(`Invalid presentationConfiguration.android "${String(android)}". Expected one of: ${validAndroid.join(', ')}.`);
32
+ }
33
+ }
34
+ function resolveNativePresentationOptions(config) {
35
+ if (!config) {
36
+ return {};
37
+ }
38
+ // iOS full-screen takes precedence as the flag that the native bridge understands
39
+ if (config.ios === IOS_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN) {
40
+ return { useFullScreenPresentation: true };
41
+ }
42
+ return {};
43
+ }
6
44
  function serializeResultForNative(result) {
7
45
  if (result.result === PURCHASE_LOGIC_RESULT.ERROR && 'error' in result && result.error) {
8
46
  return {
@@ -145,20 +183,22 @@ async function presentWithListenerSupport(nativeMethod, options, listener, purch
145
183
  }
146
184
  const RevenueCatUI = {
147
185
  async presentPaywall(options) {
148
- const listener = options === null || options === void 0 ? void 0 : options.listener;
149
- const purchaseLogic = options === null || options === void 0 ? void 0 : options.purchaseLogic;
186
+ assertValidPresentationConfiguration(options === null || options === void 0 ? void 0 : options.presentationConfiguration);
187
+ const _a = options !== null && options !== void 0 ? options : {}, { presentationConfiguration, listener, purchaseLogic } = _a, rest = __rest(_a, ["presentationConfiguration", "listener", "purchaseLogic"]);
188
+ const nativeOpts = Object.assign(Object.assign({}, rest), resolveNativePresentationOptions(presentationConfiguration));
150
189
  if (!listener && !purchaseLogic) {
151
- return nativePlugin.presentPaywall(options !== null && options !== void 0 ? options : {});
190
+ return nativePlugin.presentPaywall(nativeOpts);
152
191
  }
153
- return presentWithListenerSupport((opts) => nativePlugin.presentPaywall(opts), Object.assign({}, options), listener, purchaseLogic);
192
+ return presentWithListenerSupport((opts) => nativePlugin.presentPaywall(opts), nativeOpts, listener, purchaseLogic);
154
193
  },
155
194
  async presentPaywallIfNeeded(options) {
156
- const listener = options === null || options === void 0 ? void 0 : options.listener;
157
- const purchaseLogic = options === null || options === void 0 ? void 0 : options.purchaseLogic;
195
+ assertValidPresentationConfiguration(options === null || options === void 0 ? void 0 : options.presentationConfiguration);
196
+ const { presentationConfiguration, listener, purchaseLogic } = options, rest = __rest(options, ["presentationConfiguration", "listener", "purchaseLogic"]);
197
+ const nativeOpts = Object.assign(Object.assign({}, rest), resolveNativePresentationOptions(presentationConfiguration));
158
198
  if (!listener && !purchaseLogic) {
159
- return nativePlugin.presentPaywallIfNeeded(options);
199
+ return nativePlugin.presentPaywallIfNeeded(nativeOpts);
160
200
  }
161
- return presentWithListenerSupport((opts) => nativePlugin.presentPaywallIfNeeded(opts), Object.assign({}, options), listener, purchaseLogic);
201
+ return presentWithListenerSupport((opts) => nativePlugin.presentPaywallIfNeeded(opts), nativeOpts, listener, purchaseLogic);
162
202
  },
163
203
  async presentCustomerCenter() {
164
204
  return nativePlugin.presentCustomerCenter();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { registerPlugin } from '@capacitor/core';\nimport type { PluginListenerHandle } from '@capacitor/core';\n\nimport type {\n PaywallListener,\n PaywallResult,\n PresentPaywallIfNeededOptions,\n PresentPaywallOptions,\n PurchaseLogic,\n PurchaseLogicResult,\n RevenueCatUIPlugin,\n} from './definitions';\nimport { PURCHASE_LOGIC_RESULT } from './definitions';\n\n/**\n * Internal native plugin interface with native-only methods and events.\n * This is not exported to consumers.\n */\ninterface RevenueCatUINativePlugin {\n presentPaywall(options: {\n offering?: any;\n displayCloseButton?: boolean;\n hasPaywallListener?: boolean;\n hasPurchaseLogic?: boolean;\n }): Promise<PaywallResult>;\n presentPaywallIfNeeded(options: {\n offering?: any;\n displayCloseButton?: boolean;\n requiredEntitlementIdentifier: string;\n hasPaywallListener?: boolean;\n hasPurchaseLogic?: boolean;\n }): Promise<PaywallResult>;\n presentCustomerCenter(): Promise<void>;\n setMockWebResults?(options: { shouldMockWebResults: boolean }): Promise<void>;\n\n resumePurchaseInitiated(options: { requestId: string; shouldProceed: boolean }): Promise<void>;\n resumePurchaseLogicPurchase(options: {\n requestId: string;\n result: string;\n error?: { code?: string; message?: string };\n }): Promise<void>;\n resumePurchaseLogicRestore(options: {\n requestId: string;\n result: string;\n error?: { code?: string; message?: string };\n }): Promise<void>;\n\n addListener(eventName: string, listener: (data: any) => void): Promise<PluginListenerHandle>;\n removeAllListeners(): Promise<void>;\n}\n\nconst nativePlugin = registerPlugin<RevenueCatUINativePlugin>('RevenueCatUI', {\n web: () => import('./web').then((m) => new m.RevenueCatUIWeb()),\n});\n\nfunction serializeResultForNative(result: PurchaseLogicResult): {\n result: string;\n error?: { code?: string; message?: string };\n} {\n if (result.result === PURCHASE_LOGIC_RESULT.ERROR && 'error' in result && result.error) {\n return {\n result: result.result,\n error: {\n code: result.error.code,\n message: result.error.message,\n },\n };\n }\n return { result: result.result };\n}\n\nasync function presentWithListenerSupport(\n nativeMethod: (options: any) => Promise<PaywallResult>,\n options: any,\n listener?: PaywallListener,\n purchaseLogic?: PurchaseLogic,\n): Promise<PaywallResult> {\n const handles: PluginListenerHandle[] = [];\n\n try {\n // Register PaywallListener event handlers\n if (listener) {\n if (listener.onPurchaseStarted) {\n const cb = listener.onPurchaseStarted;\n handles.push(\n await nativePlugin.addListener('onPurchaseStarted', (data: any) => {\n cb({ packageBeingPurchased: data.packageBeingPurchased ?? data });\n }),\n );\n }\n if (listener.onPurchaseCompleted) {\n const cb = listener.onPurchaseCompleted;\n handles.push(\n await nativePlugin.addListener('onPurchaseCompleted', (data: any) => {\n cb({\n customerInfo: data.customerInfo,\n storeTransaction: data.storeTransaction,\n });\n }),\n );\n }\n if (listener.onPurchaseError) {\n const cb = listener.onPurchaseError;\n handles.push(\n await nativePlugin.addListener('onPurchaseError', (data: any) => {\n cb({ error: data.error ?? data });\n }),\n );\n }\n if (listener.onPurchaseCancelled) {\n const cb = listener.onPurchaseCancelled;\n handles.push(\n await nativePlugin.addListener('onPurchaseCancelled', () => {\n cb();\n }),\n );\n }\n if (listener.onRestoreStarted) {\n const cb = listener.onRestoreStarted;\n handles.push(\n await nativePlugin.addListener('onRestoreStarted', () => {\n cb();\n }),\n );\n }\n if (listener.onRestoreCompleted) {\n const cb = listener.onRestoreCompleted;\n handles.push(\n await nativePlugin.addListener('onRestoreCompleted', (data: any) => {\n cb({ customerInfo: data.customerInfo ?? data });\n }),\n );\n }\n if (listener.onRestoreError) {\n const cb = listener.onRestoreError;\n handles.push(\n await nativePlugin.addListener('onRestoreError', (data: any) => {\n cb({ error: data.error ?? data });\n }),\n );\n }\n }\n\n // Always register onPurchaseInitiated so we auto-resume when the user\n // doesn't provide an onPurchaseInitiated callback — otherwise the\n // purchase flow hangs waiting for a resume that never comes.\n // This must be outside the `if (listener)` block because the native\n // delegate adapter always fires this event (even with purchaseLogic only).\n const onPurchaseInitiatedCb = listener?.onPurchaseInitiated;\n handles.push(\n await nativePlugin.addListener('onPurchaseInitiated', (data: any) => {\n const requestId: string = data.requestId;\n const packageBeingPurchased = data.package ?? data.packageBeingPurchased;\n if (onPurchaseInitiatedCb) {\n onPurchaseInitiatedCb({\n packageBeingPurchased,\n resumable: {\n resume(shouldProceed = true) {\n nativePlugin.resumePurchaseInitiated({ requestId, shouldProceed });\n },\n },\n });\n } else {\n // No callback provided — auto-proceed with the purchase.\n nativePlugin.resumePurchaseInitiated({ requestId, shouldProceed: true });\n }\n }),\n );\n\n // Register PurchaseLogic event handlers\n if (purchaseLogic) {\n handles.push(\n await nativePlugin.addListener('onPerformPurchaseRequest', async (data: any) => {\n const requestId: string = data.requestId;\n const packageToPurchase = data.package ?? data.packageBeingPurchased ?? data.packageToPurchase;\n try {\n const result = await purchaseLogic.performPurchase({ packageToPurchase });\n await nativePlugin.resumePurchaseLogicPurchase({\n requestId,\n ...serializeResultForNative(result),\n });\n } catch (e: any) {\n await nativePlugin.resumePurchaseLogicPurchase({\n requestId,\n result: PURCHASE_LOGIC_RESULT.ERROR,\n error: { message: e?.message ?? 'Unknown error' },\n });\n }\n }),\n );\n handles.push(\n await nativePlugin.addListener('onPerformRestoreRequest', async (data: any) => {\n const requestId: string = data.requestId;\n try {\n const result = await purchaseLogic.performRestore();\n await nativePlugin.resumePurchaseLogicRestore({\n requestId,\n ...serializeResultForNative(result),\n });\n } catch (e: any) {\n await nativePlugin.resumePurchaseLogicRestore({\n requestId,\n result: PURCHASE_LOGIC_RESULT.ERROR,\n error: { message: e?.message ?? 'Unknown error' },\n });\n }\n }),\n );\n }\n\n // Call native with serializable-only options\n const nativeOptions = {\n ...options,\n hasPaywallListener: !!listener,\n hasPurchaseLogic: !!purchaseLogic,\n };\n // Remove non-serializable fields\n delete nativeOptions.listener;\n delete nativeOptions.purchaseLogic;\n\n return await nativeMethod(nativeOptions);\n } finally {\n // Clean up all registered listeners\n for (const handle of handles) {\n await handle.remove();\n }\n }\n}\n\nconst RevenueCatUI: RevenueCatUIPlugin = {\n async presentPaywall(options?: PresentPaywallOptions): Promise<PaywallResult> {\n const listener = options?.listener;\n const purchaseLogic = options?.purchaseLogic;\n\n if (!listener && !purchaseLogic) {\n return nativePlugin.presentPaywall(options ?? {});\n }\n\n return presentWithListenerSupport(\n (opts) => nativePlugin.presentPaywall(opts),\n { ...options },\n listener,\n purchaseLogic,\n );\n },\n\n async presentPaywallIfNeeded(options: PresentPaywallIfNeededOptions): Promise<PaywallResult> {\n const listener = options?.listener;\n const purchaseLogic = options?.purchaseLogic;\n\n if (!listener && !purchaseLogic) {\n return nativePlugin.presentPaywallIfNeeded(options);\n }\n\n return presentWithListenerSupport(\n (opts) => nativePlugin.presentPaywallIfNeeded(opts),\n { ...options },\n listener,\n purchaseLogic,\n );\n },\n\n async presentCustomerCenter(): Promise<void> {\n return nativePlugin.presentCustomerCenter();\n },\n\n setMockWebResults: nativePlugin.setMockWebResults\n ? async (options: { shouldMockWebResults: boolean }): Promise<void> => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return nativePlugin.setMockWebResults!(options);\n }\n : undefined,\n\n addListener(eventName: 'paywallDisplayed' | 'paywallDismissed', listener: () => void): Promise<PluginListenerHandle> {\n return nativePlugin.addListener(eventName, listener);\n },\n\n removeAllListeners(): Promise<void> {\n return nativePlugin.removeAllListeners();\n },\n};\n\nexport * from './definitions';\nexport { PAYWALL_RESULT } from '@revenuecat/purchases-typescript-internal-esm';\nexport { RevenueCatUI };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAajD,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EAClC,qBAAqB,GACtB,MAAM,eAAe,CAAC;AA2CvB,MAAM,YAAY,GAAG,cAAc,CAA2B,cAAc,EAAE;IAC5E,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;CAChE,CAAC,CAAC;AAEH,SAAS,oCAAoC,CAC3C,MAAe;IAEf,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAiC,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAa,CAAC;IAC3E,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,kCAAkC,CAAa,CAAC;IACnF,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAa,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtH,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAiB,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,8CAA8C,MAAM,CAAC,OAAO,CAAC,uBAAuB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC/G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,gCAAgC,CAAC,MAAyC;IAGjF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,kFAAkF;IAClF,IAAI,MAAM,CAAC,GAAG,KAAK,8BAA8B,CAAC,WAAW,EAAE,CAAC;QAC9D,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,wBAAwB,CAAC,MAA2B;IAI3D,IAAI,MAAM,CAAC,MAAM,KAAK,qBAAqB,CAAC,KAAK,IAAI,OAAO,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACvF,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;gBACvB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;aAC9B;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,YAAsD,EACtD,OAAY,EACZ,QAA0B,EAC1B,aAA6B;IAE7B,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,IAAI,CAAC;QACH,0CAA0C;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gBAC/B,MAAM,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC;gBACtC,OAAO,CAAC,IAAI,CACV,MAAM,YAAY,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,IAAS,EAAE,EAAE;;oBAChE,EAAE,CAAC,EAAE,qBAAqB,EAAE,MAAA,IAAI,CAAC,qBAAqB,mCAAI,IAAI,EAAE,CAAC,CAAC;gBACpE,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,mBAAmB,CAAC;gBACxC,OAAO,CAAC,IAAI,CACV,MAAM,YAAY,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,IAAS,EAAE,EAAE;oBAClE,EAAE,CAAC;wBACD,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;qBACxC,CAAC,CAAC;gBACL,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;gBACpC,OAAO,CAAC,IAAI,CACV,MAAM,YAAY,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,IAAS,EAAE,EAAE;;oBAC9D,EAAE,CAAC,EAAE,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,mBAAmB,CAAC;gBACxC,OAAO,CAAC,IAAI,CACV,MAAM,YAAY,CAAC,WAAW,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBACzD,EAAE,EAAE,CAAC;gBACP,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,gBAAgB,CAAC;gBACrC,OAAO,CAAC,IAAI,CACV,MAAM,YAAY,CAAC,WAAW,CAAC,kBAAkB,EAAE,GAAG,EAAE;oBACtD,EAAE,EAAE,CAAC;gBACP,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;gBAChC,MAAM,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC;gBACvC,OAAO,CAAC,IAAI,CACV,MAAM,YAAY,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC,IAAS,EAAE,EAAE;;oBACjE,EAAE,CAAC,EAAE,YAAY,EAAE,MAAA,IAAI,CAAC,YAAY,mCAAI,IAAI,EAAE,CAAC,CAAC;gBAClD,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC;gBACnC,OAAO,CAAC,IAAI,CACV,MAAM,YAAY,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,IAAS,EAAE,EAAE;;oBAC7D,EAAE,CAAC,EAAE,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,kEAAkE;QAClE,6DAA6D;QAC7D,oEAAoE;QACpE,2EAA2E;QAC3E,MAAM,qBAAqB,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,mBAAmB,CAAC;QAC5D,OAAO,CAAC,IAAI,CACV,MAAM,YAAY,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,IAAS,EAAE,EAAE;;YAClE,MAAM,SAAS,GAAW,IAAI,CAAC,SAAS,CAAC;YACzC,MAAM,qBAAqB,GAAG,MAAA,IAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,qBAAqB,CAAC;YACzE,IAAI,qBAAqB,EAAE,CAAC;gBAC1B,qBAAqB,CAAC;oBACpB,qBAAqB;oBACrB,SAAS,EAAE;wBACT,MAAM,CAAC,aAAa,GAAG,IAAI;4BACzB,YAAY,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;wBACrE,CAAC;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,yDAAyD;gBACzD,YAAY,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,wCAAwC;QACxC,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CACV,MAAM,YAAY,CAAC,WAAW,CAAC,0BAA0B,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;;gBAC7E,MAAM,SAAS,GAAW,IAAI,CAAC,SAAS,CAAC;gBACzC,MAAM,iBAAiB,GAAG,MAAA,MAAA,IAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,qBAAqB,mCAAI,IAAI,CAAC,iBAAiB,CAAC;gBAC/F,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;oBAC1E,MAAM,YAAY,CAAC,2BAA2B,iBAC5C,SAAS,IACN,wBAAwB,CAAC,MAAM,CAAC,EACnC,CAAC;gBACL,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,MAAM,YAAY,CAAC,2BAA2B,CAAC;wBAC7C,SAAS;wBACT,MAAM,EAAE,qBAAqB,CAAC,KAAK;wBACnC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,mCAAI,eAAe,EAAE;qBAClD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YACF,OAAO,CAAC,IAAI,CACV,MAAM,YAAY,CAAC,WAAW,CAAC,yBAAyB,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;;gBAC5E,MAAM,SAAS,GAAW,IAAI,CAAC,SAAS,CAAC;gBACzC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,CAAC;oBACpD,MAAM,YAAY,CAAC,0BAA0B,iBAC3C,SAAS,IACN,wBAAwB,CAAC,MAAM,CAAC,EACnC,CAAC;gBACL,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,MAAM,YAAY,CAAC,0BAA0B,CAAC;wBAC5C,SAAS;wBACT,MAAM,EAAE,qBAAqB,CAAC,KAAK;wBACnC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,mCAAI,eAAe,EAAE;qBAClD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,MAAM,aAAa,mCACd,OAAO,KACV,kBAAkB,EAAE,CAAC,CAAC,QAAQ,EAC9B,gBAAgB,EAAE,CAAC,CAAC,aAAa,GAClC,CAAC;QACF,iCAAiC;QACjC,OAAO,aAAa,CAAC,QAAQ,CAAC;QAC9B,OAAO,aAAa,CAAC,aAAa,CAAC;QAEnC,OAAO,MAAM,YAAY,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;YAAS,CAAC;QACT,oCAAoC;QACpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAuB;IACvC,KAAK,CAAC,cAAc,CAAC,OAA+B;QAClD,oCAAoC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,yBAAyB,CAAC,CAAC;QAEzE,MAAM,KAAkE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,EAA/E,EAAE,yBAAyB,EAAE,QAAQ,EAAE,aAAa,OAA2B,EAAtB,IAAI,cAA7D,0DAA+D,CAAgB,CAAC;QACtF,MAAM,UAAU,mCACX,IAAI,GACJ,gCAAgC,CAAC,yBAAyB,CAAC,CAC/D,CAAC;QAEF,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,OAAO,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,0BAA0B,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACtH,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,OAAsC;QACjE,oCAAoC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,yBAAyB,CAAC,CAAC;QAEzE,MAAM,EAAE,yBAAyB,EAAE,QAAQ,EAAE,aAAa,KAAc,OAAO,EAAhB,IAAI,UAAK,OAAO,EAAzE,0DAA+D,CAAU,CAAC;QAChF,MAAM,UAAU,mCACX,IAAI,GACJ,gCAAgC,CAAC,yBAAyB,CAAC,CAC/D,CAAC;QAEF,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,OAAO,YAAY,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,0BAA0B,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,EACnD,UAAU,EACV,QAAQ,EACR,aAAa,CACd,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,OAAO,YAAY,CAAC,qBAAqB,EAAE,CAAC;IAC9C,CAAC;IAED,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;QAC/C,CAAC,CAAC,KAAK,EAAE,OAA0C,EAAiB,EAAE;YAClE,oEAAoE;YACpE,OAAO,YAAY,CAAC,iBAAkB,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QACH,CAAC,CAAC,SAAS;IAEb,WAAW,CAAC,SAAkD,EAAE,QAAoB;QAClF,OAAO,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,kBAAkB;QAChB,OAAO,YAAY,CAAC,kBAAkB,EAAE,CAAC;IAC3C,CAAC;CACF,CAAC;AAEF,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import { registerPlugin } from '@capacitor/core';\nimport type { PluginListenerHandle } from '@capacitor/core';\n\nimport type {\n PaywallListener,\n PaywallPresentationConfiguration,\n PaywallResult,\n PresentPaywallIfNeededOptions,\n PresentPaywallOptions,\n PurchaseLogic,\n PurchaseLogicResult,\n RevenueCatUIPlugin,\n} from './definitions';\nimport {\n IOS_PAYWALL_PRESENTATION_STYLE,\n ANDROID_PAYWALL_PRESENTATION_STYLE,\n PURCHASE_LOGIC_RESULT,\n} from './definitions';\n\n/**\n * Internal native plugin interface with native-only methods and events.\n * This is not exported to consumers.\n */\ninterface RevenueCatUINativePlugin {\n presentPaywall(options: {\n offering?: any;\n useFullScreenPresentation?: boolean;\n displayCloseButton?: boolean;\n hasPaywallListener?: boolean;\n hasPurchaseLogic?: boolean;\n customVariables?: Record<string, string | number | boolean>;\n }): Promise<PaywallResult>;\n presentPaywallIfNeeded(options: {\n offering?: any;\n useFullScreenPresentation?: boolean;\n displayCloseButton?: boolean;\n requiredEntitlementIdentifier: string;\n hasPaywallListener?: boolean;\n hasPurchaseLogic?: boolean;\n customVariables?: Record<string, string | number | boolean>;\n }): Promise<PaywallResult>;\n presentCustomerCenter(): Promise<void>;\n setMockWebResults?(options: { shouldMockWebResults: boolean }): Promise<void>;\n\n resumePurchaseInitiated(options: { requestId: string; shouldProceed: boolean }): Promise<void>;\n resumePurchaseLogicPurchase(options: {\n requestId: string;\n result: string;\n error?: { code?: string; message?: string };\n }): Promise<void>;\n resumePurchaseLogicRestore(options: {\n requestId: string;\n result: string;\n error?: { code?: string; message?: string };\n }): Promise<void>;\n\n addListener(eventName: string, listener: (data: any) => void): Promise<PluginListenerHandle>;\n removeAllListeners(): Promise<void>;\n}\n\nconst nativePlugin = registerPlugin<RevenueCatUINativePlugin>('RevenueCatUI', {\n web: () => import('./web').then((m) => new m.RevenueCatUIWeb()),\n});\n\nfunction assertValidPresentationConfiguration(\n config: unknown,\n): asserts config is PaywallPresentationConfiguration | undefined {\n if (config === undefined) {\n return;\n }\n if (typeof config !== 'object' || config === null) {\n throw new Error(`Invalid presentationConfiguration: expected an object or undefined.`);\n }\n const { ios, android } = config as Record<string, unknown>;\n const validIos = Object.values(IOS_PAYWALL_PRESENTATION_STYLE) as string[];\n const validAndroid = Object.values(ANDROID_PAYWALL_PRESENTATION_STYLE) as string[];\n if (ios !== undefined && !validIos.includes(ios as string)) {\n throw new Error(`Invalid presentationConfiguration.ios \"${String(ios)}\". Expected one of: ${validIos.join(', ')}.`);\n }\n if (android !== undefined && !validAndroid.includes(android as string)) {\n throw new Error(\n `Invalid presentationConfiguration.android \"${String(android)}\". Expected one of: ${validAndroid.join(', ')}.`,\n );\n }\n}\n\nfunction resolveNativePresentationOptions(config?: PaywallPresentationConfiguration): {\n useFullScreenPresentation?: boolean;\n} {\n if (!config) {\n return {};\n }\n // iOS full-screen takes precedence as the flag that the native bridge understands\n if (config.ios === IOS_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN) {\n return { useFullScreenPresentation: true };\n }\n return {};\n}\n\nfunction serializeResultForNative(result: PurchaseLogicResult): {\n result: string;\n error?: { code?: string; message?: string };\n} {\n if (result.result === PURCHASE_LOGIC_RESULT.ERROR && 'error' in result && result.error) {\n return {\n result: result.result,\n error: {\n code: result.error.code,\n message: result.error.message,\n },\n };\n }\n return { result: result.result };\n}\n\nasync function presentWithListenerSupport(\n nativeMethod: (options: any) => Promise<PaywallResult>,\n options: any,\n listener?: PaywallListener,\n purchaseLogic?: PurchaseLogic,\n): Promise<PaywallResult> {\n const handles: PluginListenerHandle[] = [];\n\n try {\n // Register PaywallListener event handlers\n if (listener) {\n if (listener.onPurchaseStarted) {\n const cb = listener.onPurchaseStarted;\n handles.push(\n await nativePlugin.addListener('onPurchaseStarted', (data: any) => {\n cb({ packageBeingPurchased: data.packageBeingPurchased ?? data });\n }),\n );\n }\n if (listener.onPurchaseCompleted) {\n const cb = listener.onPurchaseCompleted;\n handles.push(\n await nativePlugin.addListener('onPurchaseCompleted', (data: any) => {\n cb({\n customerInfo: data.customerInfo,\n storeTransaction: data.storeTransaction,\n });\n }),\n );\n }\n if (listener.onPurchaseError) {\n const cb = listener.onPurchaseError;\n handles.push(\n await nativePlugin.addListener('onPurchaseError', (data: any) => {\n cb({ error: data.error ?? data });\n }),\n );\n }\n if (listener.onPurchaseCancelled) {\n const cb = listener.onPurchaseCancelled;\n handles.push(\n await nativePlugin.addListener('onPurchaseCancelled', () => {\n cb();\n }),\n );\n }\n if (listener.onRestoreStarted) {\n const cb = listener.onRestoreStarted;\n handles.push(\n await nativePlugin.addListener('onRestoreStarted', () => {\n cb();\n }),\n );\n }\n if (listener.onRestoreCompleted) {\n const cb = listener.onRestoreCompleted;\n handles.push(\n await nativePlugin.addListener('onRestoreCompleted', (data: any) => {\n cb({ customerInfo: data.customerInfo ?? data });\n }),\n );\n }\n if (listener.onRestoreError) {\n const cb = listener.onRestoreError;\n handles.push(\n await nativePlugin.addListener('onRestoreError', (data: any) => {\n cb({ error: data.error ?? data });\n }),\n );\n }\n }\n\n // Always register onPurchaseInitiated so we auto-resume when the user\n // doesn't provide an onPurchaseInitiated callback — otherwise the\n // purchase flow hangs waiting for a resume that never comes.\n // This must be outside the `if (listener)` block because the native\n // delegate adapter always fires this event (even with purchaseLogic only).\n const onPurchaseInitiatedCb = listener?.onPurchaseInitiated;\n handles.push(\n await nativePlugin.addListener('onPurchaseInitiated', (data: any) => {\n const requestId: string = data.requestId;\n const packageBeingPurchased = data.package ?? data.packageBeingPurchased;\n if (onPurchaseInitiatedCb) {\n onPurchaseInitiatedCb({\n packageBeingPurchased,\n resumable: {\n resume(shouldProceed = true) {\n nativePlugin.resumePurchaseInitiated({ requestId, shouldProceed });\n },\n },\n });\n } else {\n // No callback provided — auto-proceed with the purchase.\n nativePlugin.resumePurchaseInitiated({ requestId, shouldProceed: true });\n }\n }),\n );\n\n // Register PurchaseLogic event handlers\n if (purchaseLogic) {\n handles.push(\n await nativePlugin.addListener('onPerformPurchaseRequest', async (data: any) => {\n const requestId: string = data.requestId;\n const packageToPurchase = data.package ?? data.packageBeingPurchased ?? data.packageToPurchase;\n try {\n const result = await purchaseLogic.performPurchase({ packageToPurchase });\n await nativePlugin.resumePurchaseLogicPurchase({\n requestId,\n ...serializeResultForNative(result),\n });\n } catch (e: any) {\n await nativePlugin.resumePurchaseLogicPurchase({\n requestId,\n result: PURCHASE_LOGIC_RESULT.ERROR,\n error: { message: e?.message ?? 'Unknown error' },\n });\n }\n }),\n );\n handles.push(\n await nativePlugin.addListener('onPerformRestoreRequest', async (data: any) => {\n const requestId: string = data.requestId;\n try {\n const result = await purchaseLogic.performRestore();\n await nativePlugin.resumePurchaseLogicRestore({\n requestId,\n ...serializeResultForNative(result),\n });\n } catch (e: any) {\n await nativePlugin.resumePurchaseLogicRestore({\n requestId,\n result: PURCHASE_LOGIC_RESULT.ERROR,\n error: { message: e?.message ?? 'Unknown error' },\n });\n }\n }),\n );\n }\n\n // Call native with serializable-only options\n const nativeOptions = {\n ...options,\n hasPaywallListener: !!listener,\n hasPurchaseLogic: !!purchaseLogic,\n };\n // Remove non-serializable fields\n delete nativeOptions.listener;\n delete nativeOptions.purchaseLogic;\n\n return await nativeMethod(nativeOptions);\n } finally {\n // Clean up all registered listeners\n for (const handle of handles) {\n await handle.remove();\n }\n }\n}\n\nconst RevenueCatUI: RevenueCatUIPlugin = {\n async presentPaywall(options?: PresentPaywallOptions): Promise<PaywallResult> {\n assertValidPresentationConfiguration(options?.presentationConfiguration);\n\n const { presentationConfiguration, listener, purchaseLogic, ...rest } = options ?? {};\n const nativeOpts = {\n ...rest,\n ...resolveNativePresentationOptions(presentationConfiguration),\n };\n\n if (!listener && !purchaseLogic) {\n return nativePlugin.presentPaywall(nativeOpts);\n }\n\n return presentWithListenerSupport((opts) => nativePlugin.presentPaywall(opts), nativeOpts, listener, purchaseLogic);\n },\n\n async presentPaywallIfNeeded(options: PresentPaywallIfNeededOptions): Promise<PaywallResult> {\n assertValidPresentationConfiguration(options?.presentationConfiguration);\n\n const { presentationConfiguration, listener, purchaseLogic, ...rest } = options;\n const nativeOpts = {\n ...rest,\n ...resolveNativePresentationOptions(presentationConfiguration),\n };\n\n if (!listener && !purchaseLogic) {\n return nativePlugin.presentPaywallIfNeeded(nativeOpts);\n }\n\n return presentWithListenerSupport(\n (opts) => nativePlugin.presentPaywallIfNeeded(opts),\n nativeOpts,\n listener,\n purchaseLogic,\n );\n },\n\n async presentCustomerCenter(): Promise<void> {\n return nativePlugin.presentCustomerCenter();\n },\n\n setMockWebResults: nativePlugin.setMockWebResults\n ? async (options: { shouldMockWebResults: boolean }): Promise<void> => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return nativePlugin.setMockWebResults!(options);\n }\n : undefined,\n\n addListener(eventName: 'paywallDisplayed' | 'paywallDismissed', listener: () => void): Promise<PluginListenerHandle> {\n return nativePlugin.addListener(eventName, listener);\n },\n\n removeAllListeners(): Promise<void> {\n return nativePlugin.removeAllListeners();\n },\n};\n\nexport * from './definitions';\nexport { PAYWALL_RESULT } from '@revenuecat/purchases-typescript-internal-esm';\nexport { RevenueCatUI };\n"]}
package/dist/plugin.js CHANGED
@@ -563,10 +563,73 @@ var capacitorPlugin = (function (exports, core) {
563
563
  /** The purchase or restore failed with an error. */
564
564
  PURCHASE_LOGIC_RESULT["ERROR"] = "ERROR";
565
565
  })(exports.PURCHASE_LOGIC_RESULT || (exports.PURCHASE_LOGIC_RESULT = {}));
566
+ /** @see {@link IOSPaywallPresentationStyle} */
567
+ const IOS_PAYWALL_PRESENTATION_STYLE = {
568
+ /** Presents the paywall in full-screen mode. */
569
+ FULL_SCREEN: 'FULL_SCREEN',
570
+ /** Presents the paywall as a sheet. This is the default on iOS. */
571
+ SHEET: 'SHEET',
572
+ };
573
+ /** @see {@link AndroidPaywallPresentationStyle} */
574
+ const ANDROID_PAYWALL_PRESENTATION_STYLE = {
575
+ /** Presents the paywall in full-screen mode. This is the default on Android. */
576
+ FULL_SCREEN: 'FULL_SCREEN',
577
+ };
578
+ /** Convenience presets for {@link PaywallPresentationConfiguration}. */
579
+ const PaywallPresentationConfiguration = {
580
+ /** Full-screen presentation on all platforms. */
581
+ FULL_SCREEN: {
582
+ ios: IOS_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,
583
+ android: ANDROID_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,
584
+ },
585
+ /** Default presentation: sheet on iOS, full-screen on Android. */
586
+ DEFAULT: {
587
+ ios: IOS_PAYWALL_PRESENTATION_STYLE.SHEET,
588
+ android: ANDROID_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,
589
+ },
590
+ };
566
591
 
592
+ var __rest = (undefined && undefined.__rest) || function (s, e) {
593
+ var t = {};
594
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
595
+ t[p] = s[p];
596
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
597
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
598
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
599
+ t[p[i]] = s[p[i]];
600
+ }
601
+ return t;
602
+ };
567
603
  const nativePlugin = core.registerPlugin('RevenueCatUI', {
568
604
  web: () => Promise.resolve().then(function () { return web; }).then((m) => new m.RevenueCatUIWeb()),
569
605
  });
606
+ function assertValidPresentationConfiguration(config) {
607
+ if (config === undefined) {
608
+ return;
609
+ }
610
+ if (typeof config !== 'object' || config === null) {
611
+ throw new Error(`Invalid presentationConfiguration: expected an object or undefined.`);
612
+ }
613
+ const { ios, android } = config;
614
+ const validIos = Object.values(IOS_PAYWALL_PRESENTATION_STYLE);
615
+ const validAndroid = Object.values(ANDROID_PAYWALL_PRESENTATION_STYLE);
616
+ if (ios !== undefined && !validIos.includes(ios)) {
617
+ throw new Error(`Invalid presentationConfiguration.ios "${String(ios)}". Expected one of: ${validIos.join(', ')}.`);
618
+ }
619
+ if (android !== undefined && !validAndroid.includes(android)) {
620
+ throw new Error(`Invalid presentationConfiguration.android "${String(android)}". Expected one of: ${validAndroid.join(', ')}.`);
621
+ }
622
+ }
623
+ function resolveNativePresentationOptions(config) {
624
+ if (!config) {
625
+ return {};
626
+ }
627
+ // iOS full-screen takes precedence as the flag that the native bridge understands
628
+ if (config.ios === IOS_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN) {
629
+ return { useFullScreenPresentation: true };
630
+ }
631
+ return {};
632
+ }
570
633
  function serializeResultForNative(result) {
571
634
  if (result.result === exports.PURCHASE_LOGIC_RESULT.ERROR && 'error' in result && result.error) {
572
635
  return {
@@ -709,20 +772,22 @@ var capacitorPlugin = (function (exports, core) {
709
772
  }
710
773
  const RevenueCatUI = {
711
774
  async presentPaywall(options) {
712
- const listener = options === null || options === void 0 ? void 0 : options.listener;
713
- const purchaseLogic = options === null || options === void 0 ? void 0 : options.purchaseLogic;
775
+ assertValidPresentationConfiguration(options === null || options === void 0 ? void 0 : options.presentationConfiguration);
776
+ const _a = options !== null && options !== void 0 ? options : {}, { presentationConfiguration, listener, purchaseLogic } = _a, rest = __rest(_a, ["presentationConfiguration", "listener", "purchaseLogic"]);
777
+ const nativeOpts = Object.assign(Object.assign({}, rest), resolveNativePresentationOptions(presentationConfiguration));
714
778
  if (!listener && !purchaseLogic) {
715
- return nativePlugin.presentPaywall(options !== null && options !== void 0 ? options : {});
779
+ return nativePlugin.presentPaywall(nativeOpts);
716
780
  }
717
- return presentWithListenerSupport((opts) => nativePlugin.presentPaywall(opts), Object.assign({}, options), listener, purchaseLogic);
781
+ return presentWithListenerSupport((opts) => nativePlugin.presentPaywall(opts), nativeOpts, listener, purchaseLogic);
718
782
  },
719
783
  async presentPaywallIfNeeded(options) {
720
- const listener = options === null || options === void 0 ? void 0 : options.listener;
721
- const purchaseLogic = options === null || options === void 0 ? void 0 : options.purchaseLogic;
784
+ assertValidPresentationConfiguration(options === null || options === void 0 ? void 0 : options.presentationConfiguration);
785
+ const { presentationConfiguration, listener, purchaseLogic } = options, rest = __rest(options, ["presentationConfiguration", "listener", "purchaseLogic"]);
786
+ const nativeOpts = Object.assign(Object.assign({}, rest), resolveNativePresentationOptions(presentationConfiguration));
722
787
  if (!listener && !purchaseLogic) {
723
- return nativePlugin.presentPaywallIfNeeded(options);
788
+ return nativePlugin.presentPaywallIfNeeded(nativeOpts);
724
789
  }
725
- return presentWithListenerSupport((opts) => nativePlugin.presentPaywallIfNeeded(opts), Object.assign({}, options), listener, purchaseLogic);
790
+ return presentWithListenerSupport((opts) => nativePlugin.presentPaywallIfNeeded(opts), nativeOpts, listener, purchaseLogic);
726
791
  },
727
792
  async presentCustomerCenter() {
728
793
  return nativePlugin.presentCustomerCenter();
@@ -806,7 +871,10 @@ var capacitorPlugin = (function (exports, core) {
806
871
  RevenueCatUIWeb: RevenueCatUIWeb
807
872
  });
808
873
 
874
+ exports.ANDROID_PAYWALL_PRESENTATION_STYLE = ANDROID_PAYWALL_PRESENTATION_STYLE;
875
+ exports.IOS_PAYWALL_PRESENTATION_STYLE = IOS_PAYWALL_PRESENTATION_STYLE;
809
876
  exports.PAYWALL_RESULT = exports.PaywallResultEnum;
877
+ exports.PaywallPresentationConfiguration = PaywallPresentationConfiguration;
810
878
  exports.RevenueCatUI = RevenueCatUI;
811
879
 
812
880
  return exports;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../node_modules/@revenuecat/purchases-typescript-internal-esm/dist/errors.js","../node_modules/@revenuecat/purchases-typescript-internal-esm/dist/offerings.js","../node_modules/@revenuecat/purchases-typescript-internal-esm/dist/enums.js","../node_modules/@revenuecat/purchases-typescript-internal-esm/dist/webRedemption.js","esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* tslint:disable:max-classes-per-file */\n/**\n * Error codes indicating the reason for an error.\n * @public\n */\nexport var PURCHASES_ERROR_CODE;\n(function (PURCHASES_ERROR_CODE) {\n PURCHASES_ERROR_CODE[\"UNKNOWN_ERROR\"] = \"0\";\n PURCHASES_ERROR_CODE[\"PURCHASE_CANCELLED_ERROR\"] = \"1\";\n PURCHASES_ERROR_CODE[\"STORE_PROBLEM_ERROR\"] = \"2\";\n PURCHASES_ERROR_CODE[\"PURCHASE_NOT_ALLOWED_ERROR\"] = \"3\";\n PURCHASES_ERROR_CODE[\"PURCHASE_INVALID_ERROR\"] = \"4\";\n PURCHASES_ERROR_CODE[\"PRODUCT_NOT_AVAILABLE_FOR_PURCHASE_ERROR\"] = \"5\";\n PURCHASES_ERROR_CODE[\"PRODUCT_ALREADY_PURCHASED_ERROR\"] = \"6\";\n PURCHASES_ERROR_CODE[\"RECEIPT_ALREADY_IN_USE_ERROR\"] = \"7\";\n PURCHASES_ERROR_CODE[\"INVALID_RECEIPT_ERROR\"] = \"8\";\n PURCHASES_ERROR_CODE[\"MISSING_RECEIPT_FILE_ERROR\"] = \"9\";\n PURCHASES_ERROR_CODE[\"NETWORK_ERROR\"] = \"10\";\n PURCHASES_ERROR_CODE[\"INVALID_CREDENTIALS_ERROR\"] = \"11\";\n PURCHASES_ERROR_CODE[\"UNEXPECTED_BACKEND_RESPONSE_ERROR\"] = \"12\";\n PURCHASES_ERROR_CODE[\"RECEIPT_IN_USE_BY_OTHER_SUBSCRIBER_ERROR\"] = \"13\";\n PURCHASES_ERROR_CODE[\"INVALID_APP_USER_ID_ERROR\"] = \"14\";\n PURCHASES_ERROR_CODE[\"OPERATION_ALREADY_IN_PROGRESS_ERROR\"] = \"15\";\n PURCHASES_ERROR_CODE[\"UNKNOWN_BACKEND_ERROR\"] = \"16\";\n PURCHASES_ERROR_CODE[\"INVALID_APPLE_SUBSCRIPTION_KEY_ERROR\"] = \"17\";\n PURCHASES_ERROR_CODE[\"INELIGIBLE_ERROR\"] = \"18\";\n PURCHASES_ERROR_CODE[\"INSUFFICIENT_PERMISSIONS_ERROR\"] = \"19\";\n PURCHASES_ERROR_CODE[\"PAYMENT_PENDING_ERROR\"] = \"20\";\n PURCHASES_ERROR_CODE[\"INVALID_SUBSCRIBER_ATTRIBUTES_ERROR\"] = \"21\";\n PURCHASES_ERROR_CODE[\"LOG_OUT_ANONYMOUS_USER_ERROR\"] = \"22\";\n PURCHASES_ERROR_CODE[\"CONFIGURATION_ERROR\"] = \"23\";\n PURCHASES_ERROR_CODE[\"UNSUPPORTED_ERROR\"] = \"24\";\n PURCHASES_ERROR_CODE[\"EMPTY_SUBSCRIBER_ATTRIBUTES_ERROR\"] = \"25\";\n PURCHASES_ERROR_CODE[\"PRODUCT_DISCOUNT_MISSING_IDENTIFIER_ERROR\"] = \"26\";\n PURCHASES_ERROR_CODE[\"PRODUCT_DISCOUNT_MISSING_SUBSCRIPTION_GROUP_IDENTIFIER_ERROR\"] = \"28\";\n PURCHASES_ERROR_CODE[\"CUSTOMER_INFO_ERROR\"] = \"29\";\n PURCHASES_ERROR_CODE[\"SYSTEM_INFO_ERROR\"] = \"30\";\n PURCHASES_ERROR_CODE[\"BEGIN_REFUND_REQUEST_ERROR\"] = \"31\";\n PURCHASES_ERROR_CODE[\"PRODUCT_REQUEST_TIMED_OUT_ERROR\"] = \"32\";\n PURCHASES_ERROR_CODE[\"API_ENDPOINT_BLOCKED\"] = \"33\";\n PURCHASES_ERROR_CODE[\"INVALID_PROMOTIONAL_OFFER_ERROR\"] = \"34\";\n PURCHASES_ERROR_CODE[\"OFFLINE_CONNECTION_ERROR\"] = \"35\";\n PURCHASES_ERROR_CODE[\"TEST_STORE_SIMULATED_PURCHASE_ERROR\"] = \"42\";\n})(PURCHASES_ERROR_CODE || (PURCHASES_ERROR_CODE = {}));\n/**\n * @internal\n */\nvar UninitializedPurchasesError = /** @class */ (function (_super) {\n __extends(UninitializedPurchasesError, _super);\n function UninitializedPurchasesError() {\n var _this = _super.call(this, \"There is no singleton instance. \" +\n \"Make sure you configure Purchases before trying to get the default instance. \" +\n \"More info here: https://errors.rev.cat/configuring-sdk\") || this;\n // Set the prototype explicitly.\n Object.setPrototypeOf(_this, UninitializedPurchasesError.prototype);\n return _this;\n }\n return UninitializedPurchasesError;\n}(Error));\nexport { UninitializedPurchasesError };\n/**\n * @internal\n */\nvar UnsupportedPlatformError = /** @class */ (function (_super) {\n __extends(UnsupportedPlatformError, _super);\n function UnsupportedPlatformError() {\n var _this = _super.call(this, \"This method is not available in the current platform.\") || this;\n // Set the prototype explicitly.\n Object.setPrototypeOf(_this, UnsupportedPlatformError.prototype);\n return _this;\n }\n return UnsupportedPlatformError;\n}(Error));\nexport { UnsupportedPlatformError };\n","/**\n * Enum indicating possible package types.\n * @public\n */\nexport var PACKAGE_TYPE;\n(function (PACKAGE_TYPE) {\n /**\n * A package that was defined with a custom identifier.\n */\n PACKAGE_TYPE[\"UNKNOWN\"] = \"UNKNOWN\";\n /**\n * A package that was defined with a custom identifier.\n */\n PACKAGE_TYPE[\"CUSTOM\"] = \"CUSTOM\";\n /**\n * A package configured with the predefined lifetime identifier.\n */\n PACKAGE_TYPE[\"LIFETIME\"] = \"LIFETIME\";\n /**\n * A package configured with the predefined annual identifier.\n */\n PACKAGE_TYPE[\"ANNUAL\"] = \"ANNUAL\";\n /**\n * A package configured with the predefined six month identifier.\n */\n PACKAGE_TYPE[\"SIX_MONTH\"] = \"SIX_MONTH\";\n /**\n * A package configured with the predefined three month identifier.\n */\n PACKAGE_TYPE[\"THREE_MONTH\"] = \"THREE_MONTH\";\n /**\n * A package configured with the predefined two month identifier.\n */\n PACKAGE_TYPE[\"TWO_MONTH\"] = \"TWO_MONTH\";\n /**\n * A package configured with the predefined monthly identifier.\n */\n PACKAGE_TYPE[\"MONTHLY\"] = \"MONTHLY\";\n /**\n * A package configured with the predefined weekly identifier.\n */\n PACKAGE_TYPE[\"WEEKLY\"] = \"WEEKLY\";\n})(PACKAGE_TYPE || (PACKAGE_TYPE = {}));\n/**\n * Enum indicating possible eligibility status for introductory pricing.\n * @public\n */\nexport var INTRO_ELIGIBILITY_STATUS;\n(function (INTRO_ELIGIBILITY_STATUS) {\n /**\n * RevenueCat doesn't have enough information to determine eligibility.\n */\n INTRO_ELIGIBILITY_STATUS[INTRO_ELIGIBILITY_STATUS[\"INTRO_ELIGIBILITY_STATUS_UNKNOWN\"] = 0] = \"INTRO_ELIGIBILITY_STATUS_UNKNOWN\";\n /**\n * The user is not eligible for a free trial or intro pricing for this product.\n */\n INTRO_ELIGIBILITY_STATUS[INTRO_ELIGIBILITY_STATUS[\"INTRO_ELIGIBILITY_STATUS_INELIGIBLE\"] = 1] = \"INTRO_ELIGIBILITY_STATUS_INELIGIBLE\";\n /**\n * The user is eligible for a free trial or intro pricing for this product.\n */\n INTRO_ELIGIBILITY_STATUS[INTRO_ELIGIBILITY_STATUS[\"INTRO_ELIGIBILITY_STATUS_ELIGIBLE\"] = 2] = \"INTRO_ELIGIBILITY_STATUS_ELIGIBLE\";\n /**\n * There is no free trial or intro pricing for this product.\n */\n INTRO_ELIGIBILITY_STATUS[INTRO_ELIGIBILITY_STATUS[\"INTRO_ELIGIBILITY_STATUS_NO_INTRO_OFFER_EXISTS\"] = 3] = \"INTRO_ELIGIBILITY_STATUS_NO_INTRO_OFFER_EXISTS\";\n})(INTRO_ELIGIBILITY_STATUS || (INTRO_ELIGIBILITY_STATUS = {}));\n/**\n * Enum indicating possible product categories.\n * @public\n */\nexport var PRODUCT_CATEGORY;\n(function (PRODUCT_CATEGORY) {\n /**\n * A type of product for non-subscription.\n */\n PRODUCT_CATEGORY[\"NON_SUBSCRIPTION\"] = \"NON_SUBSCRIPTION\";\n /**\n * A type of product for subscriptions.\n */\n PRODUCT_CATEGORY[\"SUBSCRIPTION\"] = \"SUBSCRIPTION\";\n /**\n * A type of product for unknowns.\n */\n PRODUCT_CATEGORY[\"UNKNOWN\"] = \"UNKNOWN\";\n})(PRODUCT_CATEGORY || (PRODUCT_CATEGORY = {}));\n/**\n * Enum indicating possible product types.\n * @public\n */\nexport var PRODUCT_TYPE;\n(function (PRODUCT_TYPE) {\n /**\n * A consumable in-app purchase.\n */\n PRODUCT_TYPE[\"CONSUMABLE\"] = \"CONSUMABLE\";\n /**\n * A non-consumable in-app purchase. Only applies to Apple Store products.\n */\n PRODUCT_TYPE[\"NON_CONSUMABLE\"] = \"NON_CONSUMABLE\";\n /**\n * A non-renewing subscription. Only applies to Apple Store products.\n */\n PRODUCT_TYPE[\"NON_RENEWABLE_SUBSCRIPTION\"] = \"NON_RENEWABLE_SUBSCRIPTION\";\n /**\n * An auto-renewable subscription.\n */\n PRODUCT_TYPE[\"AUTO_RENEWABLE_SUBSCRIPTION\"] = \"AUTO_RENEWABLE_SUBSCRIPTION\";\n /**\n * A subscription that is pre-paid. Only applies to Google Play products.\n */\n PRODUCT_TYPE[\"PREPAID_SUBSCRIPTION\"] = \"PREPAID_SUBSCRIPTION\";\n /**\n * Unable to determine product type.\n */\n PRODUCT_TYPE[\"UNKNOWN\"] = \"UNKNOWN\";\n})(PRODUCT_TYPE || (PRODUCT_TYPE = {}));\n/**\n * Enum with possible proration modes in a subscription upgrade or downgrade in the Play Store. Used only for Google.\n * @public\n */\nexport var PRORATION_MODE;\n(function (PRORATION_MODE) {\n PRORATION_MODE[PRORATION_MODE[\"UNKNOWN_SUBSCRIPTION_UPGRADE_DOWNGRADE_POLICY\"] = 0] = \"UNKNOWN_SUBSCRIPTION_UPGRADE_DOWNGRADE_POLICY\";\n /**\n * Replacement takes effect immediately, and the remaining time will be\n * prorated and credited to the user. This is the current default behavior.\n */\n PRORATION_MODE[PRORATION_MODE[\"IMMEDIATE_WITH_TIME_PRORATION\"] = 1] = \"IMMEDIATE_WITH_TIME_PRORATION\";\n /**\n * Replacement takes effect immediately, and the billing cycle remains the\n * same. The price for the remaining period will be charged. This option is\n * only available for subscription upgrade.\n */\n PRORATION_MODE[PRORATION_MODE[\"IMMEDIATE_AND_CHARGE_PRORATED_PRICE\"] = 2] = \"IMMEDIATE_AND_CHARGE_PRORATED_PRICE\";\n /**\n * Replacement takes effect immediately, and the new price will be charged on\n * next recurrence time. The billing cycle stays the same.\n */\n PRORATION_MODE[PRORATION_MODE[\"IMMEDIATE_WITHOUT_PRORATION\"] = 3] = \"IMMEDIATE_WITHOUT_PRORATION\";\n /**\n * Replacement takes effect when the old plan expires, and the new price will\n * be charged at the same time.\n */\n PRORATION_MODE[PRORATION_MODE[\"DEFERRED\"] = 6] = \"DEFERRED\";\n /**\n * Replacement takes effect immediately, and the user is charged full price\n * of new plan and is given a full billing cycle of subscription,\n * plus remaining prorated time from the old plan.\n */\n PRORATION_MODE[PRORATION_MODE[\"IMMEDIATE_AND_CHARGE_FULL_PRICE\"] = 5] = \"IMMEDIATE_AND_CHARGE_FULL_PRICE\";\n})(PRORATION_MODE || (PRORATION_MODE = {}));\n/**\n * Recurrence mode for a pricing phase\n * @public\n */\nexport var RECURRENCE_MODE;\n(function (RECURRENCE_MODE) {\n /**\n * Pricing phase repeats infinitely until cancellation\n */\n RECURRENCE_MODE[RECURRENCE_MODE[\"INFINITE_RECURRING\"] = 1] = \"INFINITE_RECURRING\";\n /**\n * Pricing phase repeats for a fixed number of billing periods\n */\n RECURRENCE_MODE[RECURRENCE_MODE[\"FINITE_RECURRING\"] = 2] = \"FINITE_RECURRING\";\n /**\n * Pricing phase does not repeat\n */\n RECURRENCE_MODE[RECURRENCE_MODE[\"NON_RECURRING\"] = 3] = \"NON_RECURRING\";\n})(RECURRENCE_MODE || (RECURRENCE_MODE = {}));\n/**\n * Payment mode for offer pricing phases. Google Play only.\n * @public\n */\nexport var OFFER_PAYMENT_MODE;\n(function (OFFER_PAYMENT_MODE) {\n /**\n * Subscribers don't pay until the specified period ends\n */\n OFFER_PAYMENT_MODE[\"FREE_TRIAL\"] = \"FREE_TRIAL\";\n /**\n * Subscribers pay up front for a specified period\n */\n OFFER_PAYMENT_MODE[\"SINGLE_PAYMENT\"] = \"SINGLE_PAYMENT\";\n /**\n * Subscribers pay a discounted amount for a specified number of periods\n */\n OFFER_PAYMENT_MODE[\"DISCOUNTED_RECURRING_PAYMENT\"] = \"DISCOUNTED_RECURRING_PAYMENT\";\n})(OFFER_PAYMENT_MODE || (OFFER_PAYMENT_MODE = {}));\n/**\n * Time duration unit for Period.\n * @public\n */\nexport var PERIOD_UNIT;\n(function (PERIOD_UNIT) {\n PERIOD_UNIT[\"DAY\"] = \"DAY\";\n PERIOD_UNIT[\"WEEK\"] = \"WEEK\";\n PERIOD_UNIT[\"MONTH\"] = \"MONTH\";\n PERIOD_UNIT[\"YEAR\"] = \"YEAR\";\n PERIOD_UNIT[\"UNKNOWN\"] = \"UNKNOWN\";\n})(PERIOD_UNIT || (PERIOD_UNIT = {}));\n","/**\n * @deprecated Use PRODUCT_CATEGORY\n * @public\n */\nexport var PURCHASE_TYPE;\n(function (PURCHASE_TYPE) {\n /**\n * A type of SKU for in-app products.\n */\n PURCHASE_TYPE[\"INAPP\"] = \"inapp\";\n /**\n * A type of SKU for subscriptions.\n */\n PURCHASE_TYPE[\"SUBS\"] = \"subs\";\n})(PURCHASE_TYPE || (PURCHASE_TYPE = {}));\n/**\n * Enum for billing features.\n * Currently, these are only relevant for Google Play Android users:\n * https://developer.android.com/reference/com/android/billingclient/api/BillingClient.FeatureType\n * @public\n */\nexport var BILLING_FEATURE;\n(function (BILLING_FEATURE) {\n /**\n * Purchase/query for subscriptions.\n */\n BILLING_FEATURE[BILLING_FEATURE[\"SUBSCRIPTIONS\"] = 0] = \"SUBSCRIPTIONS\";\n /**\n * Subscriptions update/replace.\n */\n BILLING_FEATURE[BILLING_FEATURE[\"SUBSCRIPTIONS_UPDATE\"] = 1] = \"SUBSCRIPTIONS_UPDATE\";\n /**\n * Purchase/query for in-app items on VR.\n */\n BILLING_FEATURE[BILLING_FEATURE[\"IN_APP_ITEMS_ON_VR\"] = 2] = \"IN_APP_ITEMS_ON_VR\";\n /**\n * Purchase/query for subscriptions on VR.\n */\n BILLING_FEATURE[BILLING_FEATURE[\"SUBSCRIPTIONS_ON_VR\"] = 3] = \"SUBSCRIPTIONS_ON_VR\";\n /**\n * Launch a price change confirmation flow.\n */\n BILLING_FEATURE[BILLING_FEATURE[\"PRICE_CHANGE_CONFIRMATION\"] = 4] = \"PRICE_CHANGE_CONFIRMATION\";\n})(BILLING_FEATURE || (BILLING_FEATURE = {}));\n/**\n * Enum for possible refund request results.\n * @public\n */\nexport var REFUND_REQUEST_STATUS;\n(function (REFUND_REQUEST_STATUS) {\n /**\n * Apple has received the refund request.\n */\n REFUND_REQUEST_STATUS[REFUND_REQUEST_STATUS[\"SUCCESS\"] = 0] = \"SUCCESS\";\n /**\n * User canceled submission of the refund request.\n */\n REFUND_REQUEST_STATUS[REFUND_REQUEST_STATUS[\"USER_CANCELLED\"] = 1] = \"USER_CANCELLED\";\n /**\n * There was an error with the request. See message for more details.\n */\n REFUND_REQUEST_STATUS[REFUND_REQUEST_STATUS[\"ERROR\"] = 2] = \"ERROR\";\n})(REFUND_REQUEST_STATUS || (REFUND_REQUEST_STATUS = {}));\n/**\n * Enum for possible log levels to print.\n * @public\n */\nexport var LOG_LEVEL;\n(function (LOG_LEVEL) {\n LOG_LEVEL[\"VERBOSE\"] = \"VERBOSE\";\n LOG_LEVEL[\"DEBUG\"] = \"DEBUG\";\n LOG_LEVEL[\"INFO\"] = \"INFO\";\n LOG_LEVEL[\"WARN\"] = \"WARN\";\n LOG_LEVEL[\"ERROR\"] = \"ERROR\";\n})(LOG_LEVEL || (LOG_LEVEL = {}));\n/**\n * Enum for in-app message types.\n * This can be used if you disable automatic in-app message from showing automatically.\n * Then, you can pass what type of messages you want to show in the `showInAppMessages`\n * method in Purchases.\n * @public\n */\nexport var IN_APP_MESSAGE_TYPE;\n(function (IN_APP_MESSAGE_TYPE) {\n // Make sure the enum values are in sync with those defined in iOS/Android\n /**\n * In-app messages to indicate there has been a billing issue charging the user.\n */\n IN_APP_MESSAGE_TYPE[IN_APP_MESSAGE_TYPE[\"BILLING_ISSUE\"] = 0] = \"BILLING_ISSUE\";\n /**\n * iOS-only. This message will show if you increase the price of a subscription and\n * the user needs to opt-in to the increase.\n */\n IN_APP_MESSAGE_TYPE[IN_APP_MESSAGE_TYPE[\"PRICE_INCREASE_CONSENT\"] = 1] = \"PRICE_INCREASE_CONSENT\";\n /**\n * iOS-only. StoreKit generic messages.\n */\n IN_APP_MESSAGE_TYPE[IN_APP_MESSAGE_TYPE[\"GENERIC\"] = 2] = \"GENERIC\";\n /**\n * iOS-only. This message will show if the subscriber is eligible for an iOS win-back\n * offer and will allow the subscriber to redeem the offer.\n */\n IN_APP_MESSAGE_TYPE[IN_APP_MESSAGE_TYPE[\"WIN_BACK_OFFER\"] = 3] = \"WIN_BACK_OFFER\";\n})(IN_APP_MESSAGE_TYPE || (IN_APP_MESSAGE_TYPE = {}));\n/**\n * Enum of entitlement verification modes.\n * @public\n */\nexport var ENTITLEMENT_VERIFICATION_MODE;\n(function (ENTITLEMENT_VERIFICATION_MODE) {\n /**\n * The SDK will not perform any entitlement verification.\n */\n ENTITLEMENT_VERIFICATION_MODE[\"DISABLED\"] = \"DISABLED\";\n /**\n * Enable entitlement verification.\n *\n * If verification fails, this will be indicated with [VerificationResult.FAILED] in\n * the [EntitlementInfos.verification] and [EntitlementInfo.verification] properties but parsing will not fail\n * (i.e. Entitlements will still be granted).\n *\n * This can be useful if you want to handle verification failures to display an error/warning to the user\n * or to track this situation but still grant access.\n */\n ENTITLEMENT_VERIFICATION_MODE[\"INFORMATIONAL\"] = \"INFORMATIONAL\";\n // Add ENFORCED mode once we're ready to ship it.\n // ENFORCED = \"ENFORCED\"\n})(ENTITLEMENT_VERIFICATION_MODE || (ENTITLEMENT_VERIFICATION_MODE = {}));\n/**\n * The result of the verification process. For more details check: http://rev.cat/trusted-entitlements\n *\n * This is accomplished by preventing MiTM attacks between the SDK and the RevenueCat server.\n * With verification enabled, the SDK ensures that the response created by the server was not\n * modified by a third-party, and the response received is exactly what was sent.\n *\n * - Note: Verification is only performed if enabled using PurchasesConfiguration's\n * entitlementVerificationMode property. This is disabled by default.\n *\n * @public\n */\nexport var VERIFICATION_RESULT;\n(function (VERIFICATION_RESULT) {\n /**\n * No verification was done.\n *\n * This value is returned when verification is not enabled in PurchasesConfiguration\n */\n VERIFICATION_RESULT[\"NOT_REQUESTED\"] = \"NOT_REQUESTED\";\n /**\n * Verification with our server was performed successfully.\n */\n VERIFICATION_RESULT[\"VERIFIED\"] = \"VERIFIED\";\n /**\n * Verification failed, possibly due to a MiTM attack.\n */\n VERIFICATION_RESULT[\"FAILED\"] = \"FAILED\";\n /**\n * Verification was performed on device.\n */\n VERIFICATION_RESULT[\"VERIFIED_ON_DEVICE\"] = \"VERIFIED_ON_DEVICE\";\n})(VERIFICATION_RESULT || (VERIFICATION_RESULT = {}));\n/**\n * The result of presenting a paywall. This will be the last situation the user experienced before the\n * paywall closed.\n *\n * @public\n */\nexport var PAYWALL_RESULT;\n(function (PAYWALL_RESULT) {\n /**\n * If the paywall wasn't presented. Only returned when using \"presentPaywallIfNeeded\"\n */\n PAYWALL_RESULT[\"NOT_PRESENTED\"] = \"NOT_PRESENTED\";\n /**\n * If an error happened during purchase/restoration.\n */\n PAYWALL_RESULT[\"ERROR\"] = \"ERROR\";\n /**\n * If the paywall was closed without performing an operation\n */\n PAYWALL_RESULT[\"CANCELLED\"] = \"CANCELLED\";\n /**\n * If a successful purchase happened inside the paywall\n */\n PAYWALL_RESULT[\"PURCHASED\"] = \"PURCHASED\";\n /**\n * If a successful restore happened inside the paywall\n */\n PAYWALL_RESULT[\"RESTORED\"] = \"RESTORED\";\n})(PAYWALL_RESULT || (PAYWALL_RESULT = {}));\n/**\n * Defines which version of StoreKit may be used\n * @public\n */\nexport var STOREKIT_VERSION;\n(function (STOREKIT_VERSION) {\n /**\n * Always use StoreKit 1.\n */\n STOREKIT_VERSION[\"STOREKIT_1\"] = \"STOREKIT_1\";\n /**\n * Always use StoreKit 2 (StoreKit 1 will be used if StoreKit 2 is not available in the current device.)\n * - Warning: Make sure you have an In-App Purchase Key configured in your app.\n * Please see https://rev.cat/in-app-purchase-key-configuration for more info.\n */\n STOREKIT_VERSION[\"STOREKIT_2\"] = \"STOREKIT_2\";\n /**\n * Let RevenueCat use the most appropriate version of StoreKit\n */\n STOREKIT_VERSION[\"DEFAULT\"] = \"DEFAULT\";\n})(STOREKIT_VERSION || (STOREKIT_VERSION = {}));\n/**\n * Modes for completing the purchase process.\n * @public\n */\nexport var PURCHASES_ARE_COMPLETED_BY_TYPE;\n(function (PURCHASES_ARE_COMPLETED_BY_TYPE) {\n /**\n * RevenueCat will **not** automatically acknowledge any purchases. You will have to do so manually.\n *\n * **Note:** failing to acknowledge a purchase within 3 days will lead to Google Play automatically issuing a\n * refund to the user.\n *\n * For more info, see [revenuecat.com](https://docs.revenuecat.com/docs/observer-mode#option-2-client-side).\n */\n PURCHASES_ARE_COMPLETED_BY_TYPE[\"MY_APP\"] = \"MY_APP\";\n /**\n * RevenueCat will automatically acknowledge verified purchases. No action is required by you.\n */\n PURCHASES_ARE_COMPLETED_BY_TYPE[\"REVENUECAT\"] = \"REVENUECAT\";\n})(PURCHASES_ARE_COMPLETED_BY_TYPE || (PURCHASES_ARE_COMPLETED_BY_TYPE = {}));\n","/**\n * The result type of a Redemption Link redemption attempt.\n * @public\n */\nexport var WebPurchaseRedemptionResultType;\n(function (WebPurchaseRedemptionResultType) {\n /**\n * The redemption was successful.\n */\n WebPurchaseRedemptionResultType[\"SUCCESS\"] = \"SUCCESS\";\n /**\n * The redemption failed.\n */\n WebPurchaseRedemptionResultType[\"ERROR\"] = \"ERROR\";\n /**\n * The purchase associated to the link belongs to another user.\n */\n WebPurchaseRedemptionResultType[\"PURCHASE_BELONGS_TO_OTHER_USER\"] = \"PURCHASE_BELONGS_TO_OTHER_USER\";\n /**\n * The token is invalid.\n */\n WebPurchaseRedemptionResultType[\"INVALID_TOKEN\"] = \"INVALID_TOKEN\";\n /**\n * The token has expired. A new Redemption Link will be sent to the email used during purchase.\n */\n WebPurchaseRedemptionResultType[\"EXPIRED\"] = \"EXPIRED\";\n})(WebPurchaseRedemptionResultType || (WebPurchaseRedemptionResultType = {}));\n","import { PAYWALL_RESULT } from '@revenuecat/purchases-typescript-internal-esm';\n/**\n * Possible outcomes from a custom {@link PurchaseLogic} operation.\n */\nexport var PURCHASE_LOGIC_RESULT;\n(function (PURCHASE_LOGIC_RESULT) {\n /** The purchase or restore completed successfully. */\n PURCHASE_LOGIC_RESULT[\"SUCCESS\"] = \"SUCCESS\";\n /** The user cancelled the purchase or restore. */\n PURCHASE_LOGIC_RESULT[\"CANCELLATION\"] = \"CANCELLATION\";\n /** The purchase or restore failed with an error. */\n PURCHASE_LOGIC_RESULT[\"ERROR\"] = \"ERROR\";\n})(PURCHASE_LOGIC_RESULT || (PURCHASE_LOGIC_RESULT = {}));\n// Using the enum from purchases-typescript-internal-esm instead of defining our own\nexport { PAYWALL_RESULT as PaywallResultEnum };\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nimport { PURCHASE_LOGIC_RESULT } from './definitions';\nconst nativePlugin = registerPlugin('RevenueCatUI', {\n web: () => import('./web').then((m) => new m.RevenueCatUIWeb()),\n});\nfunction serializeResultForNative(result) {\n if (result.result === PURCHASE_LOGIC_RESULT.ERROR && 'error' in result && result.error) {\n return {\n result: result.result,\n error: {\n code: result.error.code,\n message: result.error.message,\n },\n };\n }\n return { result: result.result };\n}\nasync function presentWithListenerSupport(nativeMethod, options, listener, purchaseLogic) {\n const handles = [];\n try {\n // Register PaywallListener event handlers\n if (listener) {\n if (listener.onPurchaseStarted) {\n const cb = listener.onPurchaseStarted;\n handles.push(await nativePlugin.addListener('onPurchaseStarted', (data) => {\n var _a;\n cb({ packageBeingPurchased: (_a = data.packageBeingPurchased) !== null && _a !== void 0 ? _a : data });\n }));\n }\n if (listener.onPurchaseCompleted) {\n const cb = listener.onPurchaseCompleted;\n handles.push(await nativePlugin.addListener('onPurchaseCompleted', (data) => {\n cb({\n customerInfo: data.customerInfo,\n storeTransaction: data.storeTransaction,\n });\n }));\n }\n if (listener.onPurchaseError) {\n const cb = listener.onPurchaseError;\n handles.push(await nativePlugin.addListener('onPurchaseError', (data) => {\n var _a;\n cb({ error: (_a = data.error) !== null && _a !== void 0 ? _a : data });\n }));\n }\n if (listener.onPurchaseCancelled) {\n const cb = listener.onPurchaseCancelled;\n handles.push(await nativePlugin.addListener('onPurchaseCancelled', () => {\n cb();\n }));\n }\n if (listener.onRestoreStarted) {\n const cb = listener.onRestoreStarted;\n handles.push(await nativePlugin.addListener('onRestoreStarted', () => {\n cb();\n }));\n }\n if (listener.onRestoreCompleted) {\n const cb = listener.onRestoreCompleted;\n handles.push(await nativePlugin.addListener('onRestoreCompleted', (data) => {\n var _a;\n cb({ customerInfo: (_a = data.customerInfo) !== null && _a !== void 0 ? _a : data });\n }));\n }\n if (listener.onRestoreError) {\n const cb = listener.onRestoreError;\n handles.push(await nativePlugin.addListener('onRestoreError', (data) => {\n var _a;\n cb({ error: (_a = data.error) !== null && _a !== void 0 ? _a : data });\n }));\n }\n }\n // Always register onPurchaseInitiated so we auto-resume when the user\n // doesn't provide an onPurchaseInitiated callback — otherwise the\n // purchase flow hangs waiting for a resume that never comes.\n // This must be outside the `if (listener)` block because the native\n // delegate adapter always fires this event (even with purchaseLogic only).\n const onPurchaseInitiatedCb = listener === null || listener === void 0 ? void 0 : listener.onPurchaseInitiated;\n handles.push(await nativePlugin.addListener('onPurchaseInitiated', (data) => {\n var _a;\n const requestId = data.requestId;\n const packageBeingPurchased = (_a = data.package) !== null && _a !== void 0 ? _a : data.packageBeingPurchased;\n if (onPurchaseInitiatedCb) {\n onPurchaseInitiatedCb({\n packageBeingPurchased,\n resumable: {\n resume(shouldProceed = true) {\n nativePlugin.resumePurchaseInitiated({ requestId, shouldProceed });\n },\n },\n });\n }\n else {\n // No callback provided — auto-proceed with the purchase.\n nativePlugin.resumePurchaseInitiated({ requestId, shouldProceed: true });\n }\n }));\n // Register PurchaseLogic event handlers\n if (purchaseLogic) {\n handles.push(await nativePlugin.addListener('onPerformPurchaseRequest', async (data) => {\n var _a, _b, _c;\n const requestId = data.requestId;\n const packageToPurchase = (_b = (_a = data.package) !== null && _a !== void 0 ? _a : data.packageBeingPurchased) !== null && _b !== void 0 ? _b : data.packageToPurchase;\n try {\n const result = await purchaseLogic.performPurchase({ packageToPurchase });\n await nativePlugin.resumePurchaseLogicPurchase(Object.assign({ requestId }, serializeResultForNative(result)));\n }\n catch (e) {\n await nativePlugin.resumePurchaseLogicPurchase({\n requestId,\n result: PURCHASE_LOGIC_RESULT.ERROR,\n error: { message: (_c = e === null || e === void 0 ? void 0 : e.message) !== null && _c !== void 0 ? _c : 'Unknown error' },\n });\n }\n }));\n handles.push(await nativePlugin.addListener('onPerformRestoreRequest', async (data) => {\n var _a;\n const requestId = data.requestId;\n try {\n const result = await purchaseLogic.performRestore();\n await nativePlugin.resumePurchaseLogicRestore(Object.assign({ requestId }, serializeResultForNative(result)));\n }\n catch (e) {\n await nativePlugin.resumePurchaseLogicRestore({\n requestId,\n result: PURCHASE_LOGIC_RESULT.ERROR,\n error: { message: (_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : 'Unknown error' },\n });\n }\n }));\n }\n // Call native with serializable-only options\n const nativeOptions = Object.assign(Object.assign({}, options), { hasPaywallListener: !!listener, hasPurchaseLogic: !!purchaseLogic });\n // Remove non-serializable fields\n delete nativeOptions.listener;\n delete nativeOptions.purchaseLogic;\n return await nativeMethod(nativeOptions);\n }\n finally {\n // Clean up all registered listeners\n for (const handle of handles) {\n await handle.remove();\n }\n }\n}\nconst RevenueCatUI = {\n async presentPaywall(options) {\n const listener = options === null || options === void 0 ? void 0 : options.listener;\n const purchaseLogic = options === null || options === void 0 ? void 0 : options.purchaseLogic;\n if (!listener && !purchaseLogic) {\n return nativePlugin.presentPaywall(options !== null && options !== void 0 ? options : {});\n }\n return presentWithListenerSupport((opts) => nativePlugin.presentPaywall(opts), Object.assign({}, options), listener, purchaseLogic);\n },\n async presentPaywallIfNeeded(options) {\n const listener = options === null || options === void 0 ? void 0 : options.listener;\n const purchaseLogic = options === null || options === void 0 ? void 0 : options.purchaseLogic;\n if (!listener && !purchaseLogic) {\n return nativePlugin.presentPaywallIfNeeded(options);\n }\n return presentWithListenerSupport((opts) => nativePlugin.presentPaywallIfNeeded(opts), Object.assign({}, options), listener, purchaseLogic);\n },\n async presentCustomerCenter() {\n return nativePlugin.presentCustomerCenter();\n },\n setMockWebResults: nativePlugin.setMockWebResults\n ? async (options) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return nativePlugin.setMockWebResults(options);\n }\n : undefined,\n addListener(eventName, listener) {\n return nativePlugin.addListener(eventName, listener);\n },\n removeAllListeners() {\n return nativePlugin.removeAllListeners();\n },\n};\nexport * from './definitions';\nexport { PAYWALL_RESULT } from '@revenuecat/purchases-typescript-internal-esm';\nexport { RevenueCatUI };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { PAYWALL_RESULT } from '@revenuecat/purchases-typescript-internal-esm';\nexport class RevenueCatUIWeb extends WebPlugin {\n constructor() {\n super();\n this.shouldMockWebResults = false;\n this.webNotSupportedErrorMessage = 'RevenueCatUI is not supported on web platforms.';\n }\n async setMockWebResults(options) {\n this.shouldMockWebResults = options.shouldMockWebResults;\n return Promise.resolve();\n }\n async presentPaywall(options) {\n return this.mockReturningFunctionIfEnabled('presentPaywall', {\n result: PAYWALL_RESULT.NOT_PRESENTED,\n }, options);\n }\n async presentPaywallIfNeeded(options) {\n return this.mockReturningFunctionIfEnabled('presentPaywallIfNeeded', {\n result: PAYWALL_RESULT.NOT_PRESENTED,\n }, options);\n }\n async presentCustomerCenter() {\n return this.mockNonReturningFunctionIfEnabled('presentCustomerCenter');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async resumePurchaseInitiated(_options) {\n return this.mockNonReturningFunctionIfEnabled('resumePurchaseInitiated');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async resumePurchaseLogicPurchase(_options) {\n return this.mockNonReturningFunctionIfEnabled('resumePurchaseLogicPurchase');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async resumePurchaseLogicRestore(_options) {\n return this.mockNonReturningFunctionIfEnabled('resumePurchaseLogicRestore');\n }\n addListener(eventName, listener) {\n if (eventName !== 'paywallDisplayed' && eventName !== 'paywallDismissed') {\n console.warn(`Unsupported event: ${eventName}`);\n }\n return super.addListener(eventName, listener);\n }\n removeAllListeners() {\n return super.removeAllListeners();\n }\n mockNonReturningFunctionIfEnabled(functionName) {\n if (!this.shouldMockWebResults) {\n return Promise.reject(this.webNotSupportedErrorMessage);\n }\n console.log(`${functionName} called on web with mocking enabled. No-op`);\n return Promise.resolve();\n }\n mockReturningFunctionIfEnabled(functionName, returnValue, options) {\n if (!this.shouldMockWebResults) {\n return Promise.reject(this.webNotSupportedErrorMessage);\n }\n console.log(`${functionName} called on web with mocking enabled. Returning mocked value`, options);\n return Promise.resolve(returnValue);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["this","PAYWALL_RESULT","PURCHASE_LOGIC_RESULT","registerPlugin","WebPlugin"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"plugin.js","sources":["../node_modules/@revenuecat/purchases-typescript-internal-esm/dist/errors.js","../node_modules/@revenuecat/purchases-typescript-internal-esm/dist/offerings.js","../node_modules/@revenuecat/purchases-typescript-internal-esm/dist/enums.js","../node_modules/@revenuecat/purchases-typescript-internal-esm/dist/webRedemption.js","esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* tslint:disable:max-classes-per-file */\n/**\n * Error codes indicating the reason for an error.\n * @public\n */\nexport var PURCHASES_ERROR_CODE;\n(function (PURCHASES_ERROR_CODE) {\n PURCHASES_ERROR_CODE[\"UNKNOWN_ERROR\"] = \"0\";\n PURCHASES_ERROR_CODE[\"PURCHASE_CANCELLED_ERROR\"] = \"1\";\n PURCHASES_ERROR_CODE[\"STORE_PROBLEM_ERROR\"] = \"2\";\n PURCHASES_ERROR_CODE[\"PURCHASE_NOT_ALLOWED_ERROR\"] = \"3\";\n PURCHASES_ERROR_CODE[\"PURCHASE_INVALID_ERROR\"] = \"4\";\n PURCHASES_ERROR_CODE[\"PRODUCT_NOT_AVAILABLE_FOR_PURCHASE_ERROR\"] = \"5\";\n PURCHASES_ERROR_CODE[\"PRODUCT_ALREADY_PURCHASED_ERROR\"] = \"6\";\n PURCHASES_ERROR_CODE[\"RECEIPT_ALREADY_IN_USE_ERROR\"] = \"7\";\n PURCHASES_ERROR_CODE[\"INVALID_RECEIPT_ERROR\"] = \"8\";\n PURCHASES_ERROR_CODE[\"MISSING_RECEIPT_FILE_ERROR\"] = \"9\";\n PURCHASES_ERROR_CODE[\"NETWORK_ERROR\"] = \"10\";\n PURCHASES_ERROR_CODE[\"INVALID_CREDENTIALS_ERROR\"] = \"11\";\n PURCHASES_ERROR_CODE[\"UNEXPECTED_BACKEND_RESPONSE_ERROR\"] = \"12\";\n PURCHASES_ERROR_CODE[\"RECEIPT_IN_USE_BY_OTHER_SUBSCRIBER_ERROR\"] = \"13\";\n PURCHASES_ERROR_CODE[\"INVALID_APP_USER_ID_ERROR\"] = \"14\";\n PURCHASES_ERROR_CODE[\"OPERATION_ALREADY_IN_PROGRESS_ERROR\"] = \"15\";\n PURCHASES_ERROR_CODE[\"UNKNOWN_BACKEND_ERROR\"] = \"16\";\n PURCHASES_ERROR_CODE[\"INVALID_APPLE_SUBSCRIPTION_KEY_ERROR\"] = \"17\";\n PURCHASES_ERROR_CODE[\"INELIGIBLE_ERROR\"] = \"18\";\n PURCHASES_ERROR_CODE[\"INSUFFICIENT_PERMISSIONS_ERROR\"] = \"19\";\n PURCHASES_ERROR_CODE[\"PAYMENT_PENDING_ERROR\"] = \"20\";\n PURCHASES_ERROR_CODE[\"INVALID_SUBSCRIBER_ATTRIBUTES_ERROR\"] = \"21\";\n PURCHASES_ERROR_CODE[\"LOG_OUT_ANONYMOUS_USER_ERROR\"] = \"22\";\n PURCHASES_ERROR_CODE[\"CONFIGURATION_ERROR\"] = \"23\";\n PURCHASES_ERROR_CODE[\"UNSUPPORTED_ERROR\"] = \"24\";\n PURCHASES_ERROR_CODE[\"EMPTY_SUBSCRIBER_ATTRIBUTES_ERROR\"] = \"25\";\n PURCHASES_ERROR_CODE[\"PRODUCT_DISCOUNT_MISSING_IDENTIFIER_ERROR\"] = \"26\";\n PURCHASES_ERROR_CODE[\"PRODUCT_DISCOUNT_MISSING_SUBSCRIPTION_GROUP_IDENTIFIER_ERROR\"] = \"28\";\n PURCHASES_ERROR_CODE[\"CUSTOMER_INFO_ERROR\"] = \"29\";\n PURCHASES_ERROR_CODE[\"SYSTEM_INFO_ERROR\"] = \"30\";\n PURCHASES_ERROR_CODE[\"BEGIN_REFUND_REQUEST_ERROR\"] = \"31\";\n PURCHASES_ERROR_CODE[\"PRODUCT_REQUEST_TIMED_OUT_ERROR\"] = \"32\";\n PURCHASES_ERROR_CODE[\"API_ENDPOINT_BLOCKED\"] = \"33\";\n PURCHASES_ERROR_CODE[\"INVALID_PROMOTIONAL_OFFER_ERROR\"] = \"34\";\n PURCHASES_ERROR_CODE[\"OFFLINE_CONNECTION_ERROR\"] = \"35\";\n PURCHASES_ERROR_CODE[\"TEST_STORE_SIMULATED_PURCHASE_ERROR\"] = \"42\";\n})(PURCHASES_ERROR_CODE || (PURCHASES_ERROR_CODE = {}));\n/**\n * @internal\n */\nvar UninitializedPurchasesError = /** @class */ (function (_super) {\n __extends(UninitializedPurchasesError, _super);\n function UninitializedPurchasesError() {\n var _this = _super.call(this, \"There is no singleton instance. \" +\n \"Make sure you configure Purchases before trying to get the default instance. \" +\n \"More info here: https://errors.rev.cat/configuring-sdk\") || this;\n // Set the prototype explicitly.\n Object.setPrototypeOf(_this, UninitializedPurchasesError.prototype);\n return _this;\n }\n return UninitializedPurchasesError;\n}(Error));\nexport { UninitializedPurchasesError };\n/**\n * @internal\n */\nvar UnsupportedPlatformError = /** @class */ (function (_super) {\n __extends(UnsupportedPlatformError, _super);\n function UnsupportedPlatformError() {\n var _this = _super.call(this, \"This method is not available in the current platform.\") || this;\n // Set the prototype explicitly.\n Object.setPrototypeOf(_this, UnsupportedPlatformError.prototype);\n return _this;\n }\n return UnsupportedPlatformError;\n}(Error));\nexport { UnsupportedPlatformError };\n","/**\n * Enum indicating possible package types.\n * @public\n */\nexport var PACKAGE_TYPE;\n(function (PACKAGE_TYPE) {\n /**\n * A package that was defined with a custom identifier.\n */\n PACKAGE_TYPE[\"UNKNOWN\"] = \"UNKNOWN\";\n /**\n * A package that was defined with a custom identifier.\n */\n PACKAGE_TYPE[\"CUSTOM\"] = \"CUSTOM\";\n /**\n * A package configured with the predefined lifetime identifier.\n */\n PACKAGE_TYPE[\"LIFETIME\"] = \"LIFETIME\";\n /**\n * A package configured with the predefined annual identifier.\n */\n PACKAGE_TYPE[\"ANNUAL\"] = \"ANNUAL\";\n /**\n * A package configured with the predefined six month identifier.\n */\n PACKAGE_TYPE[\"SIX_MONTH\"] = \"SIX_MONTH\";\n /**\n * A package configured with the predefined three month identifier.\n */\n PACKAGE_TYPE[\"THREE_MONTH\"] = \"THREE_MONTH\";\n /**\n * A package configured with the predefined two month identifier.\n */\n PACKAGE_TYPE[\"TWO_MONTH\"] = \"TWO_MONTH\";\n /**\n * A package configured with the predefined monthly identifier.\n */\n PACKAGE_TYPE[\"MONTHLY\"] = \"MONTHLY\";\n /**\n * A package configured with the predefined weekly identifier.\n */\n PACKAGE_TYPE[\"WEEKLY\"] = \"WEEKLY\";\n})(PACKAGE_TYPE || (PACKAGE_TYPE = {}));\n/**\n * Enum indicating possible eligibility status for introductory pricing.\n * @public\n */\nexport var INTRO_ELIGIBILITY_STATUS;\n(function (INTRO_ELIGIBILITY_STATUS) {\n /**\n * RevenueCat doesn't have enough information to determine eligibility.\n */\n INTRO_ELIGIBILITY_STATUS[INTRO_ELIGIBILITY_STATUS[\"INTRO_ELIGIBILITY_STATUS_UNKNOWN\"] = 0] = \"INTRO_ELIGIBILITY_STATUS_UNKNOWN\";\n /**\n * The user is not eligible for a free trial or intro pricing for this product.\n */\n INTRO_ELIGIBILITY_STATUS[INTRO_ELIGIBILITY_STATUS[\"INTRO_ELIGIBILITY_STATUS_INELIGIBLE\"] = 1] = \"INTRO_ELIGIBILITY_STATUS_INELIGIBLE\";\n /**\n * The user is eligible for a free trial or intro pricing for this product.\n */\n INTRO_ELIGIBILITY_STATUS[INTRO_ELIGIBILITY_STATUS[\"INTRO_ELIGIBILITY_STATUS_ELIGIBLE\"] = 2] = \"INTRO_ELIGIBILITY_STATUS_ELIGIBLE\";\n /**\n * There is no free trial or intro pricing for this product.\n */\n INTRO_ELIGIBILITY_STATUS[INTRO_ELIGIBILITY_STATUS[\"INTRO_ELIGIBILITY_STATUS_NO_INTRO_OFFER_EXISTS\"] = 3] = \"INTRO_ELIGIBILITY_STATUS_NO_INTRO_OFFER_EXISTS\";\n})(INTRO_ELIGIBILITY_STATUS || (INTRO_ELIGIBILITY_STATUS = {}));\n/**\n * Enum indicating possible product categories.\n * @public\n */\nexport var PRODUCT_CATEGORY;\n(function (PRODUCT_CATEGORY) {\n /**\n * A type of product for non-subscription.\n */\n PRODUCT_CATEGORY[\"NON_SUBSCRIPTION\"] = \"NON_SUBSCRIPTION\";\n /**\n * A type of product for subscriptions.\n */\n PRODUCT_CATEGORY[\"SUBSCRIPTION\"] = \"SUBSCRIPTION\";\n /**\n * A type of product for unknowns.\n */\n PRODUCT_CATEGORY[\"UNKNOWN\"] = \"UNKNOWN\";\n})(PRODUCT_CATEGORY || (PRODUCT_CATEGORY = {}));\n/**\n * Enum indicating possible product types.\n * @public\n */\nexport var PRODUCT_TYPE;\n(function (PRODUCT_TYPE) {\n /**\n * A consumable in-app purchase.\n */\n PRODUCT_TYPE[\"CONSUMABLE\"] = \"CONSUMABLE\";\n /**\n * A non-consumable in-app purchase. Only applies to Apple Store products.\n */\n PRODUCT_TYPE[\"NON_CONSUMABLE\"] = \"NON_CONSUMABLE\";\n /**\n * A non-renewing subscription. Only applies to Apple Store products.\n */\n PRODUCT_TYPE[\"NON_RENEWABLE_SUBSCRIPTION\"] = \"NON_RENEWABLE_SUBSCRIPTION\";\n /**\n * An auto-renewable subscription.\n */\n PRODUCT_TYPE[\"AUTO_RENEWABLE_SUBSCRIPTION\"] = \"AUTO_RENEWABLE_SUBSCRIPTION\";\n /**\n * A subscription that is pre-paid. Only applies to Google Play products.\n */\n PRODUCT_TYPE[\"PREPAID_SUBSCRIPTION\"] = \"PREPAID_SUBSCRIPTION\";\n /**\n * Unable to determine product type.\n */\n PRODUCT_TYPE[\"UNKNOWN\"] = \"UNKNOWN\";\n})(PRODUCT_TYPE || (PRODUCT_TYPE = {}));\n/**\n * Enum with possible proration modes in a subscription upgrade or downgrade in the Play Store. Used only for Google.\n * @public\n */\nexport var PRORATION_MODE;\n(function (PRORATION_MODE) {\n PRORATION_MODE[PRORATION_MODE[\"UNKNOWN_SUBSCRIPTION_UPGRADE_DOWNGRADE_POLICY\"] = 0] = \"UNKNOWN_SUBSCRIPTION_UPGRADE_DOWNGRADE_POLICY\";\n /**\n * Replacement takes effect immediately, and the remaining time will be\n * prorated and credited to the user. This is the current default behavior.\n */\n PRORATION_MODE[PRORATION_MODE[\"IMMEDIATE_WITH_TIME_PRORATION\"] = 1] = \"IMMEDIATE_WITH_TIME_PRORATION\";\n /**\n * Replacement takes effect immediately, and the billing cycle remains the\n * same. The price for the remaining period will be charged. This option is\n * only available for subscription upgrade.\n */\n PRORATION_MODE[PRORATION_MODE[\"IMMEDIATE_AND_CHARGE_PRORATED_PRICE\"] = 2] = \"IMMEDIATE_AND_CHARGE_PRORATED_PRICE\";\n /**\n * Replacement takes effect immediately, and the new price will be charged on\n * next recurrence time. The billing cycle stays the same.\n */\n PRORATION_MODE[PRORATION_MODE[\"IMMEDIATE_WITHOUT_PRORATION\"] = 3] = \"IMMEDIATE_WITHOUT_PRORATION\";\n /**\n * Replacement takes effect when the old plan expires, and the new price will\n * be charged at the same time.\n */\n PRORATION_MODE[PRORATION_MODE[\"DEFERRED\"] = 6] = \"DEFERRED\";\n /**\n * Replacement takes effect immediately, and the user is charged full price\n * of new plan and is given a full billing cycle of subscription,\n * plus remaining prorated time from the old plan.\n */\n PRORATION_MODE[PRORATION_MODE[\"IMMEDIATE_AND_CHARGE_FULL_PRICE\"] = 5] = \"IMMEDIATE_AND_CHARGE_FULL_PRICE\";\n})(PRORATION_MODE || (PRORATION_MODE = {}));\n/**\n * Recurrence mode for a pricing phase\n * @public\n */\nexport var RECURRENCE_MODE;\n(function (RECURRENCE_MODE) {\n /**\n * Pricing phase repeats infinitely until cancellation\n */\n RECURRENCE_MODE[RECURRENCE_MODE[\"INFINITE_RECURRING\"] = 1] = \"INFINITE_RECURRING\";\n /**\n * Pricing phase repeats for a fixed number of billing periods\n */\n RECURRENCE_MODE[RECURRENCE_MODE[\"FINITE_RECURRING\"] = 2] = \"FINITE_RECURRING\";\n /**\n * Pricing phase does not repeat\n */\n RECURRENCE_MODE[RECURRENCE_MODE[\"NON_RECURRING\"] = 3] = \"NON_RECURRING\";\n})(RECURRENCE_MODE || (RECURRENCE_MODE = {}));\n/**\n * Payment mode for offer pricing phases. Google Play only.\n * @public\n */\nexport var OFFER_PAYMENT_MODE;\n(function (OFFER_PAYMENT_MODE) {\n /**\n * Subscribers don't pay until the specified period ends\n */\n OFFER_PAYMENT_MODE[\"FREE_TRIAL\"] = \"FREE_TRIAL\";\n /**\n * Subscribers pay up front for a specified period\n */\n OFFER_PAYMENT_MODE[\"SINGLE_PAYMENT\"] = \"SINGLE_PAYMENT\";\n /**\n * Subscribers pay a discounted amount for a specified number of periods\n */\n OFFER_PAYMENT_MODE[\"DISCOUNTED_RECURRING_PAYMENT\"] = \"DISCOUNTED_RECURRING_PAYMENT\";\n})(OFFER_PAYMENT_MODE || (OFFER_PAYMENT_MODE = {}));\n/**\n * Time duration unit for Period.\n * @public\n */\nexport var PERIOD_UNIT;\n(function (PERIOD_UNIT) {\n PERIOD_UNIT[\"DAY\"] = \"DAY\";\n PERIOD_UNIT[\"WEEK\"] = \"WEEK\";\n PERIOD_UNIT[\"MONTH\"] = \"MONTH\";\n PERIOD_UNIT[\"YEAR\"] = \"YEAR\";\n PERIOD_UNIT[\"UNKNOWN\"] = \"UNKNOWN\";\n})(PERIOD_UNIT || (PERIOD_UNIT = {}));\n","/**\n * @deprecated Use PRODUCT_CATEGORY\n * @public\n */\nexport var PURCHASE_TYPE;\n(function (PURCHASE_TYPE) {\n /**\n * A type of SKU for in-app products.\n */\n PURCHASE_TYPE[\"INAPP\"] = \"inapp\";\n /**\n * A type of SKU for subscriptions.\n */\n PURCHASE_TYPE[\"SUBS\"] = \"subs\";\n})(PURCHASE_TYPE || (PURCHASE_TYPE = {}));\n/**\n * Enum for billing features.\n * Currently, these are only relevant for Google Play Android users:\n * https://developer.android.com/reference/com/android/billingclient/api/BillingClient.FeatureType\n * @public\n */\nexport var BILLING_FEATURE;\n(function (BILLING_FEATURE) {\n /**\n * Purchase/query for subscriptions.\n */\n BILLING_FEATURE[BILLING_FEATURE[\"SUBSCRIPTIONS\"] = 0] = \"SUBSCRIPTIONS\";\n /**\n * Subscriptions update/replace.\n */\n BILLING_FEATURE[BILLING_FEATURE[\"SUBSCRIPTIONS_UPDATE\"] = 1] = \"SUBSCRIPTIONS_UPDATE\";\n /**\n * Purchase/query for in-app items on VR.\n */\n BILLING_FEATURE[BILLING_FEATURE[\"IN_APP_ITEMS_ON_VR\"] = 2] = \"IN_APP_ITEMS_ON_VR\";\n /**\n * Purchase/query for subscriptions on VR.\n */\n BILLING_FEATURE[BILLING_FEATURE[\"SUBSCRIPTIONS_ON_VR\"] = 3] = \"SUBSCRIPTIONS_ON_VR\";\n /**\n * Launch a price change confirmation flow.\n */\n BILLING_FEATURE[BILLING_FEATURE[\"PRICE_CHANGE_CONFIRMATION\"] = 4] = \"PRICE_CHANGE_CONFIRMATION\";\n})(BILLING_FEATURE || (BILLING_FEATURE = {}));\n/**\n * Enum for possible refund request results.\n * @public\n */\nexport var REFUND_REQUEST_STATUS;\n(function (REFUND_REQUEST_STATUS) {\n /**\n * Apple has received the refund request.\n */\n REFUND_REQUEST_STATUS[REFUND_REQUEST_STATUS[\"SUCCESS\"] = 0] = \"SUCCESS\";\n /**\n * User canceled submission of the refund request.\n */\n REFUND_REQUEST_STATUS[REFUND_REQUEST_STATUS[\"USER_CANCELLED\"] = 1] = \"USER_CANCELLED\";\n /**\n * There was an error with the request. See message for more details.\n */\n REFUND_REQUEST_STATUS[REFUND_REQUEST_STATUS[\"ERROR\"] = 2] = \"ERROR\";\n})(REFUND_REQUEST_STATUS || (REFUND_REQUEST_STATUS = {}));\n/**\n * Enum for possible log levels to print.\n * @public\n */\nexport var LOG_LEVEL;\n(function (LOG_LEVEL) {\n LOG_LEVEL[\"VERBOSE\"] = \"VERBOSE\";\n LOG_LEVEL[\"DEBUG\"] = \"DEBUG\";\n LOG_LEVEL[\"INFO\"] = \"INFO\";\n LOG_LEVEL[\"WARN\"] = \"WARN\";\n LOG_LEVEL[\"ERROR\"] = \"ERROR\";\n})(LOG_LEVEL || (LOG_LEVEL = {}));\n/**\n * Enum for in-app message types.\n * This can be used if you disable automatic in-app message from showing automatically.\n * Then, you can pass what type of messages you want to show in the `showInAppMessages`\n * method in Purchases.\n * @public\n */\nexport var IN_APP_MESSAGE_TYPE;\n(function (IN_APP_MESSAGE_TYPE) {\n // Make sure the enum values are in sync with those defined in iOS/Android\n /**\n * In-app messages to indicate there has been a billing issue charging the user.\n */\n IN_APP_MESSAGE_TYPE[IN_APP_MESSAGE_TYPE[\"BILLING_ISSUE\"] = 0] = \"BILLING_ISSUE\";\n /**\n * iOS-only. This message will show if you increase the price of a subscription and\n * the user needs to opt-in to the increase.\n */\n IN_APP_MESSAGE_TYPE[IN_APP_MESSAGE_TYPE[\"PRICE_INCREASE_CONSENT\"] = 1] = \"PRICE_INCREASE_CONSENT\";\n /**\n * iOS-only. StoreKit generic messages.\n */\n IN_APP_MESSAGE_TYPE[IN_APP_MESSAGE_TYPE[\"GENERIC\"] = 2] = \"GENERIC\";\n /**\n * iOS-only. This message will show if the subscriber is eligible for an iOS win-back\n * offer and will allow the subscriber to redeem the offer.\n */\n IN_APP_MESSAGE_TYPE[IN_APP_MESSAGE_TYPE[\"WIN_BACK_OFFER\"] = 3] = \"WIN_BACK_OFFER\";\n})(IN_APP_MESSAGE_TYPE || (IN_APP_MESSAGE_TYPE = {}));\n/**\n * Enum of entitlement verification modes.\n * @public\n */\nexport var ENTITLEMENT_VERIFICATION_MODE;\n(function (ENTITLEMENT_VERIFICATION_MODE) {\n /**\n * The SDK will not perform any entitlement verification.\n */\n ENTITLEMENT_VERIFICATION_MODE[\"DISABLED\"] = \"DISABLED\";\n /**\n * Enable entitlement verification.\n *\n * If verification fails, this will be indicated with [VerificationResult.FAILED] in\n * the [EntitlementInfos.verification] and [EntitlementInfo.verification] properties but parsing will not fail\n * (i.e. Entitlements will still be granted).\n *\n * This can be useful if you want to handle verification failures to display an error/warning to the user\n * or to track this situation but still grant access.\n */\n ENTITLEMENT_VERIFICATION_MODE[\"INFORMATIONAL\"] = \"INFORMATIONAL\";\n // Add ENFORCED mode once we're ready to ship it.\n // ENFORCED = \"ENFORCED\"\n})(ENTITLEMENT_VERIFICATION_MODE || (ENTITLEMENT_VERIFICATION_MODE = {}));\n/**\n * The result of the verification process. For more details check: http://rev.cat/trusted-entitlements\n *\n * This is accomplished by preventing MiTM attacks between the SDK and the RevenueCat server.\n * With verification enabled, the SDK ensures that the response created by the server was not\n * modified by a third-party, and the response received is exactly what was sent.\n *\n * - Note: Verification is only performed if enabled using PurchasesConfiguration's\n * entitlementVerificationMode property. This is disabled by default.\n *\n * @public\n */\nexport var VERIFICATION_RESULT;\n(function (VERIFICATION_RESULT) {\n /**\n * No verification was done.\n *\n * This value is returned when verification is not enabled in PurchasesConfiguration\n */\n VERIFICATION_RESULT[\"NOT_REQUESTED\"] = \"NOT_REQUESTED\";\n /**\n * Verification with our server was performed successfully.\n */\n VERIFICATION_RESULT[\"VERIFIED\"] = \"VERIFIED\";\n /**\n * Verification failed, possibly due to a MiTM attack.\n */\n VERIFICATION_RESULT[\"FAILED\"] = \"FAILED\";\n /**\n * Verification was performed on device.\n */\n VERIFICATION_RESULT[\"VERIFIED_ON_DEVICE\"] = \"VERIFIED_ON_DEVICE\";\n})(VERIFICATION_RESULT || (VERIFICATION_RESULT = {}));\n/**\n * The result of presenting a paywall. This will be the last situation the user experienced before the\n * paywall closed.\n *\n * @public\n */\nexport var PAYWALL_RESULT;\n(function (PAYWALL_RESULT) {\n /**\n * If the paywall wasn't presented. Only returned when using \"presentPaywallIfNeeded\"\n */\n PAYWALL_RESULT[\"NOT_PRESENTED\"] = \"NOT_PRESENTED\";\n /**\n * If an error happened during purchase/restoration.\n */\n PAYWALL_RESULT[\"ERROR\"] = \"ERROR\";\n /**\n * If the paywall was closed without performing an operation\n */\n PAYWALL_RESULT[\"CANCELLED\"] = \"CANCELLED\";\n /**\n * If a successful purchase happened inside the paywall\n */\n PAYWALL_RESULT[\"PURCHASED\"] = \"PURCHASED\";\n /**\n * If a successful restore happened inside the paywall\n */\n PAYWALL_RESULT[\"RESTORED\"] = \"RESTORED\";\n})(PAYWALL_RESULT || (PAYWALL_RESULT = {}));\n/**\n * Defines which version of StoreKit may be used\n * @public\n */\nexport var STOREKIT_VERSION;\n(function (STOREKIT_VERSION) {\n /**\n * Always use StoreKit 1.\n */\n STOREKIT_VERSION[\"STOREKIT_1\"] = \"STOREKIT_1\";\n /**\n * Always use StoreKit 2 (StoreKit 1 will be used if StoreKit 2 is not available in the current device.)\n * - Warning: Make sure you have an In-App Purchase Key configured in your app.\n * Please see https://rev.cat/in-app-purchase-key-configuration for more info.\n */\n STOREKIT_VERSION[\"STOREKIT_2\"] = \"STOREKIT_2\";\n /**\n * Let RevenueCat use the most appropriate version of StoreKit\n */\n STOREKIT_VERSION[\"DEFAULT\"] = \"DEFAULT\";\n})(STOREKIT_VERSION || (STOREKIT_VERSION = {}));\n/**\n * Modes for completing the purchase process.\n * @public\n */\nexport var PURCHASES_ARE_COMPLETED_BY_TYPE;\n(function (PURCHASES_ARE_COMPLETED_BY_TYPE) {\n /**\n * RevenueCat will **not** automatically acknowledge any purchases. You will have to do so manually.\n *\n * **Note:** failing to acknowledge a purchase within 3 days will lead to Google Play automatically issuing a\n * refund to the user.\n *\n * For more info, see [revenuecat.com](https://docs.revenuecat.com/docs/observer-mode#option-2-client-side).\n */\n PURCHASES_ARE_COMPLETED_BY_TYPE[\"MY_APP\"] = \"MY_APP\";\n /**\n * RevenueCat will automatically acknowledge verified purchases. No action is required by you.\n */\n PURCHASES_ARE_COMPLETED_BY_TYPE[\"REVENUECAT\"] = \"REVENUECAT\";\n})(PURCHASES_ARE_COMPLETED_BY_TYPE || (PURCHASES_ARE_COMPLETED_BY_TYPE = {}));\n","/**\n * The result type of a Redemption Link redemption attempt.\n * @public\n */\nexport var WebPurchaseRedemptionResultType;\n(function (WebPurchaseRedemptionResultType) {\n /**\n * The redemption was successful.\n */\n WebPurchaseRedemptionResultType[\"SUCCESS\"] = \"SUCCESS\";\n /**\n * The redemption failed.\n */\n WebPurchaseRedemptionResultType[\"ERROR\"] = \"ERROR\";\n /**\n * The purchase associated to the link belongs to another user.\n */\n WebPurchaseRedemptionResultType[\"PURCHASE_BELONGS_TO_OTHER_USER\"] = \"PURCHASE_BELONGS_TO_OTHER_USER\";\n /**\n * The token is invalid.\n */\n WebPurchaseRedemptionResultType[\"INVALID_TOKEN\"] = \"INVALID_TOKEN\";\n /**\n * The token has expired. A new Redemption Link will be sent to the email used during purchase.\n */\n WebPurchaseRedemptionResultType[\"EXPIRED\"] = \"EXPIRED\";\n})(WebPurchaseRedemptionResultType || (WebPurchaseRedemptionResultType = {}));\n","import { PAYWALL_RESULT } from '@revenuecat/purchases-typescript-internal-esm';\n/**\n * Possible outcomes from a custom {@link PurchaseLogic} operation.\n */\nexport var PURCHASE_LOGIC_RESULT;\n(function (PURCHASE_LOGIC_RESULT) {\n /** The purchase or restore completed successfully. */\n PURCHASE_LOGIC_RESULT[\"SUCCESS\"] = \"SUCCESS\";\n /** The user cancelled the purchase or restore. */\n PURCHASE_LOGIC_RESULT[\"CANCELLATION\"] = \"CANCELLATION\";\n /** The purchase or restore failed with an error. */\n PURCHASE_LOGIC_RESULT[\"ERROR\"] = \"ERROR\";\n})(PURCHASE_LOGIC_RESULT || (PURCHASE_LOGIC_RESULT = {}));\n/** @see {@link IOSPaywallPresentationStyle} */\nexport const IOS_PAYWALL_PRESENTATION_STYLE = {\n /** Presents the paywall in full-screen mode. */\n FULL_SCREEN: 'FULL_SCREEN',\n /** Presents the paywall as a sheet. This is the default on iOS. */\n SHEET: 'SHEET',\n};\n/** @see {@link AndroidPaywallPresentationStyle} */\nexport const ANDROID_PAYWALL_PRESENTATION_STYLE = {\n /** Presents the paywall in full-screen mode. This is the default on Android. */\n FULL_SCREEN: 'FULL_SCREEN',\n};\n/** Convenience presets for {@link PaywallPresentationConfiguration}. */\nexport const PaywallPresentationConfiguration = {\n /** Full-screen presentation on all platforms. */\n FULL_SCREEN: {\n ios: IOS_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,\n android: ANDROID_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,\n },\n /** Default presentation: sheet on iOS, full-screen on Android. */\n DEFAULT: {\n ios: IOS_PAYWALL_PRESENTATION_STYLE.SHEET,\n android: ANDROID_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN,\n },\n};\n// Using the enum from purchases-typescript-internal-esm instead of defining our own\nexport { PAYWALL_RESULT as PaywallResultEnum };\n//# sourceMappingURL=definitions.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { registerPlugin } from '@capacitor/core';\nimport { IOS_PAYWALL_PRESENTATION_STYLE, ANDROID_PAYWALL_PRESENTATION_STYLE, PURCHASE_LOGIC_RESULT, } from './definitions';\nconst nativePlugin = registerPlugin('RevenueCatUI', {\n web: () => import('./web').then((m) => new m.RevenueCatUIWeb()),\n});\nfunction assertValidPresentationConfiguration(config) {\n if (config === undefined) {\n return;\n }\n if (typeof config !== 'object' || config === null) {\n throw new Error(`Invalid presentationConfiguration: expected an object or undefined.`);\n }\n const { ios, android } = config;\n const validIos = Object.values(IOS_PAYWALL_PRESENTATION_STYLE);\n const validAndroid = Object.values(ANDROID_PAYWALL_PRESENTATION_STYLE);\n if (ios !== undefined && !validIos.includes(ios)) {\n throw new Error(`Invalid presentationConfiguration.ios \"${String(ios)}\". Expected one of: ${validIos.join(', ')}.`);\n }\n if (android !== undefined && !validAndroid.includes(android)) {\n throw new Error(`Invalid presentationConfiguration.android \"${String(android)}\". Expected one of: ${validAndroid.join(', ')}.`);\n }\n}\nfunction resolveNativePresentationOptions(config) {\n if (!config) {\n return {};\n }\n // iOS full-screen takes precedence as the flag that the native bridge understands\n if (config.ios === IOS_PAYWALL_PRESENTATION_STYLE.FULL_SCREEN) {\n return { useFullScreenPresentation: true };\n }\n return {};\n}\nfunction serializeResultForNative(result) {\n if (result.result === PURCHASE_LOGIC_RESULT.ERROR && 'error' in result && result.error) {\n return {\n result: result.result,\n error: {\n code: result.error.code,\n message: result.error.message,\n },\n };\n }\n return { result: result.result };\n}\nasync function presentWithListenerSupport(nativeMethod, options, listener, purchaseLogic) {\n const handles = [];\n try {\n // Register PaywallListener event handlers\n if (listener) {\n if (listener.onPurchaseStarted) {\n const cb = listener.onPurchaseStarted;\n handles.push(await nativePlugin.addListener('onPurchaseStarted', (data) => {\n var _a;\n cb({ packageBeingPurchased: (_a = data.packageBeingPurchased) !== null && _a !== void 0 ? _a : data });\n }));\n }\n if (listener.onPurchaseCompleted) {\n const cb = listener.onPurchaseCompleted;\n handles.push(await nativePlugin.addListener('onPurchaseCompleted', (data) => {\n cb({\n customerInfo: data.customerInfo,\n storeTransaction: data.storeTransaction,\n });\n }));\n }\n if (listener.onPurchaseError) {\n const cb = listener.onPurchaseError;\n handles.push(await nativePlugin.addListener('onPurchaseError', (data) => {\n var _a;\n cb({ error: (_a = data.error) !== null && _a !== void 0 ? _a : data });\n }));\n }\n if (listener.onPurchaseCancelled) {\n const cb = listener.onPurchaseCancelled;\n handles.push(await nativePlugin.addListener('onPurchaseCancelled', () => {\n cb();\n }));\n }\n if (listener.onRestoreStarted) {\n const cb = listener.onRestoreStarted;\n handles.push(await nativePlugin.addListener('onRestoreStarted', () => {\n cb();\n }));\n }\n if (listener.onRestoreCompleted) {\n const cb = listener.onRestoreCompleted;\n handles.push(await nativePlugin.addListener('onRestoreCompleted', (data) => {\n var _a;\n cb({ customerInfo: (_a = data.customerInfo) !== null && _a !== void 0 ? _a : data });\n }));\n }\n if (listener.onRestoreError) {\n const cb = listener.onRestoreError;\n handles.push(await nativePlugin.addListener('onRestoreError', (data) => {\n var _a;\n cb({ error: (_a = data.error) !== null && _a !== void 0 ? _a : data });\n }));\n }\n }\n // Always register onPurchaseInitiated so we auto-resume when the user\n // doesn't provide an onPurchaseInitiated callback — otherwise the\n // purchase flow hangs waiting for a resume that never comes.\n // This must be outside the `if (listener)` block because the native\n // delegate adapter always fires this event (even with purchaseLogic only).\n const onPurchaseInitiatedCb = listener === null || listener === void 0 ? void 0 : listener.onPurchaseInitiated;\n handles.push(await nativePlugin.addListener('onPurchaseInitiated', (data) => {\n var _a;\n const requestId = data.requestId;\n const packageBeingPurchased = (_a = data.package) !== null && _a !== void 0 ? _a : data.packageBeingPurchased;\n if (onPurchaseInitiatedCb) {\n onPurchaseInitiatedCb({\n packageBeingPurchased,\n resumable: {\n resume(shouldProceed = true) {\n nativePlugin.resumePurchaseInitiated({ requestId, shouldProceed });\n },\n },\n });\n }\n else {\n // No callback provided — auto-proceed with the purchase.\n nativePlugin.resumePurchaseInitiated({ requestId, shouldProceed: true });\n }\n }));\n // Register PurchaseLogic event handlers\n if (purchaseLogic) {\n handles.push(await nativePlugin.addListener('onPerformPurchaseRequest', async (data) => {\n var _a, _b, _c;\n const requestId = data.requestId;\n const packageToPurchase = (_b = (_a = data.package) !== null && _a !== void 0 ? _a : data.packageBeingPurchased) !== null && _b !== void 0 ? _b : data.packageToPurchase;\n try {\n const result = await purchaseLogic.performPurchase({ packageToPurchase });\n await nativePlugin.resumePurchaseLogicPurchase(Object.assign({ requestId }, serializeResultForNative(result)));\n }\n catch (e) {\n await nativePlugin.resumePurchaseLogicPurchase({\n requestId,\n result: PURCHASE_LOGIC_RESULT.ERROR,\n error: { message: (_c = e === null || e === void 0 ? void 0 : e.message) !== null && _c !== void 0 ? _c : 'Unknown error' },\n });\n }\n }));\n handles.push(await nativePlugin.addListener('onPerformRestoreRequest', async (data) => {\n var _a;\n const requestId = data.requestId;\n try {\n const result = await purchaseLogic.performRestore();\n await nativePlugin.resumePurchaseLogicRestore(Object.assign({ requestId }, serializeResultForNative(result)));\n }\n catch (e) {\n await nativePlugin.resumePurchaseLogicRestore({\n requestId,\n result: PURCHASE_LOGIC_RESULT.ERROR,\n error: { message: (_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : 'Unknown error' },\n });\n }\n }));\n }\n // Call native with serializable-only options\n const nativeOptions = Object.assign(Object.assign({}, options), { hasPaywallListener: !!listener, hasPurchaseLogic: !!purchaseLogic });\n // Remove non-serializable fields\n delete nativeOptions.listener;\n delete nativeOptions.purchaseLogic;\n return await nativeMethod(nativeOptions);\n }\n finally {\n // Clean up all registered listeners\n for (const handle of handles) {\n await handle.remove();\n }\n }\n}\nconst RevenueCatUI = {\n async presentPaywall(options) {\n assertValidPresentationConfiguration(options === null || options === void 0 ? void 0 : options.presentationConfiguration);\n const _a = options !== null && options !== void 0 ? options : {}, { presentationConfiguration, listener, purchaseLogic } = _a, rest = __rest(_a, [\"presentationConfiguration\", \"listener\", \"purchaseLogic\"]);\n const nativeOpts = Object.assign(Object.assign({}, rest), resolveNativePresentationOptions(presentationConfiguration));\n if (!listener && !purchaseLogic) {\n return nativePlugin.presentPaywall(nativeOpts);\n }\n return presentWithListenerSupport((opts) => nativePlugin.presentPaywall(opts), nativeOpts, listener, purchaseLogic);\n },\n async presentPaywallIfNeeded(options) {\n assertValidPresentationConfiguration(options === null || options === void 0 ? void 0 : options.presentationConfiguration);\n const { presentationConfiguration, listener, purchaseLogic } = options, rest = __rest(options, [\"presentationConfiguration\", \"listener\", \"purchaseLogic\"]);\n const nativeOpts = Object.assign(Object.assign({}, rest), resolveNativePresentationOptions(presentationConfiguration));\n if (!listener && !purchaseLogic) {\n return nativePlugin.presentPaywallIfNeeded(nativeOpts);\n }\n return presentWithListenerSupport((opts) => nativePlugin.presentPaywallIfNeeded(opts), nativeOpts, listener, purchaseLogic);\n },\n async presentCustomerCenter() {\n return nativePlugin.presentCustomerCenter();\n },\n setMockWebResults: nativePlugin.setMockWebResults\n ? async (options) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return nativePlugin.setMockWebResults(options);\n }\n : undefined,\n addListener(eventName, listener) {\n return nativePlugin.addListener(eventName, listener);\n },\n removeAllListeners() {\n return nativePlugin.removeAllListeners();\n },\n};\nexport * from './definitions';\nexport { PAYWALL_RESULT } from '@revenuecat/purchases-typescript-internal-esm';\nexport { RevenueCatUI };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { PAYWALL_RESULT } from '@revenuecat/purchases-typescript-internal-esm';\nexport class RevenueCatUIWeb extends WebPlugin {\n constructor() {\n super();\n this.shouldMockWebResults = false;\n this.webNotSupportedErrorMessage = 'RevenueCatUI is not supported on web platforms.';\n }\n async setMockWebResults(options) {\n this.shouldMockWebResults = options.shouldMockWebResults;\n return Promise.resolve();\n }\n async presentPaywall(options) {\n return this.mockReturningFunctionIfEnabled('presentPaywall', {\n result: PAYWALL_RESULT.NOT_PRESENTED,\n }, options);\n }\n async presentPaywallIfNeeded(options) {\n return this.mockReturningFunctionIfEnabled('presentPaywallIfNeeded', {\n result: PAYWALL_RESULT.NOT_PRESENTED,\n }, options);\n }\n async presentCustomerCenter() {\n return this.mockNonReturningFunctionIfEnabled('presentCustomerCenter');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async resumePurchaseInitiated(_options) {\n return this.mockNonReturningFunctionIfEnabled('resumePurchaseInitiated');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async resumePurchaseLogicPurchase(_options) {\n return this.mockNonReturningFunctionIfEnabled('resumePurchaseLogicPurchase');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async resumePurchaseLogicRestore(_options) {\n return this.mockNonReturningFunctionIfEnabled('resumePurchaseLogicRestore');\n }\n addListener(eventName, listener) {\n if (eventName !== 'paywallDisplayed' && eventName !== 'paywallDismissed') {\n console.warn(`Unsupported event: ${eventName}`);\n }\n return super.addListener(eventName, listener);\n }\n removeAllListeners() {\n return super.removeAllListeners();\n }\n mockNonReturningFunctionIfEnabled(functionName) {\n if (!this.shouldMockWebResults) {\n return Promise.reject(this.webNotSupportedErrorMessage);\n }\n console.log(`${functionName} called on web with mocking enabled. No-op`);\n return Promise.resolve();\n }\n mockReturningFunctionIfEnabled(functionName, returnValue, options) {\n if (!this.shouldMockWebResults) {\n return Promise.reject(this.webNotSupportedErrorMessage);\n }\n console.log(`${functionName} called on web with mocking enabled. Returning mocked value`, options);\n return Promise.resolve(returnValue);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["this","PAYWALL_RESULT","PURCHASE_LOGIC_RESULT","registerPlugin","WebPlugin"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -72,6 +72,9 @@ public class RevenueCatUIPlugin: CAPPlugin, CAPBridgedPlugin {
72
72
  "shouldBlockTouchEvents": true
73
73
  ]
74
74
 
75
+ self.applyPresentationMode(from: call, to: &options)
76
+ self.applyCustomVariables(from: call, to: &options)
77
+
75
78
  if let offeringOptions = offeringOptions {
76
79
  options.merge(offeringOptions) { _, offeringOption in
77
80
  offeringOption
@@ -122,6 +125,9 @@ public class RevenueCatUIPlugin: CAPPlugin, CAPBridgedPlugin {
122
125
  "requiredEntitlementIdentifier": requiredEntitlementIdentifier
123
126
  ]
124
127
 
128
+ self.applyPresentationMode(from: call, to: &options)
129
+ self.applyCustomVariables(from: call, to: &options)
130
+
125
131
  if let offeringOptions = offeringOptions {
126
132
  options.merge(offeringOptions) { _, offeringOption in
127
133
  offeringOption
@@ -196,6 +202,18 @@ public class RevenueCatUIPlugin: CAPPlugin, CAPBridgedPlugin {
196
202
  }
197
203
  }
198
204
  }
205
+
206
+ private func applyPresentationMode(from call: CAPPluginCall, to options: inout [String: Any]) {
207
+ if call.getBool("useFullScreenPresentation") == true {
208
+ options["useFullScreenPresentation"] = true
209
+ }
210
+ }
211
+
212
+ private func applyCustomVariables(from call: CAPPluginCall, to options: inout [String: Any]) {
213
+ if let customVariables = call.getObject("customVariables") {
214
+ options[PaywallProxy.PaywallOptionsKeys.customVariables] = customVariables
215
+ }
216
+ }
199
217
  }
200
218
 
201
219
  private extension CAPPluginCall {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revenuecat/purchases-capacitor-ui",
3
- "version": "12.2.4",
3
+ "version": "12.3.0",
4
4
  "description": "UI components for RevenueCat Capacitor SDK",
5
5
  "main": "dist/esm/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -58,12 +58,13 @@
58
58
  "build": "npm run clean && tsc && rollup -c ../rollup.config.js",
59
59
  "clean": "rimraf ./dist",
60
60
  "watch": "tsc --watch",
61
- "prepublishOnly": "npm run build"
61
+ "prepublishOnly": "npm run build",
62
+ "extract-api": "api-extractor run --local --verbose"
62
63
  },
63
64
  "dependencies": {
64
65
  "@capacitor/core": "^8.0.0",
65
66
  "@revenuecat/purchases-capacitor": "^10.2.4",
66
- "@revenuecat/purchases-typescript-internal-esm": "17.47.0"
67
+ "@revenuecat/purchases-typescript-internal-esm": "17.52.0"
67
68
  },
68
69
  "peerDependencies": {
69
70
  "@capacitor/core": ">=8.0.0"
@@ -79,6 +80,7 @@
79
80
  "prettier-plugin-java": "^2.7.7",
80
81
  "rimraf": "^6.1.0",
81
82
  "rollup": "^4.53.2",
83
+ "@microsoft/api-extractor": "^7.43.1",
82
84
  "typescript": "^5.9.3"
83
85
  }
84
86
  }