@sudobility/subscription_lib 0.0.8 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/adapters/index.d.ts +2 -6
  2. package/dist/adapters/index.d.ts.map +1 -1
  3. package/dist/adapters/index.js +3 -6
  4. package/dist/adapters/index.js.map +1 -0
  5. package/dist/adapters/revenuecat-rn.d.ts +7 -0
  6. package/dist/adapters/revenuecat-rn.d.ts.map +1 -0
  7. package/dist/adapters/revenuecat-rn.js +230 -0
  8. package/dist/adapters/revenuecat-rn.js.map +1 -0
  9. package/dist/adapters/revenuecat-web.d.ts +0 -24
  10. package/dist/adapters/revenuecat-web.d.ts.map +1 -1
  11. package/dist/adapters/revenuecat-web.js +2 -48
  12. package/dist/adapters/revenuecat-web.js.map +1 -0
  13. package/dist/core/index.d.ts +0 -3
  14. package/dist/core/index.d.ts.map +1 -1
  15. package/dist/core/index.js +1 -3
  16. package/dist/core/index.js.map +1 -0
  17. package/dist/core/service.d.ts +0 -52
  18. package/dist/core/service.d.ts.map +1 -1
  19. package/dist/core/service.js +21 -103
  20. package/dist/core/service.js.map +1 -0
  21. package/dist/core/singleton.d.ts +0 -85
  22. package/dist/core/singleton.d.ts.map +1 -1
  23. package/dist/core/singleton.js +1 -85
  24. package/dist/core/singleton.js.map +1 -0
  25. package/dist/hooks/index.d.ts +0 -3
  26. package/dist/hooks/index.d.ts.map +1 -1
  27. package/dist/hooks/index.js +1 -3
  28. package/dist/hooks/index.js.map +1 -0
  29. package/dist/hooks/useSubscribable.d.ts +0 -53
  30. package/dist/hooks/useSubscribable.d.ts.map +1 -1
  31. package/dist/hooks/useSubscribable.js +4 -71
  32. package/dist/hooks/useSubscribable.js.map +1 -0
  33. package/dist/hooks/useSubscriptionForPeriod.d.ts +0 -45
  34. package/dist/hooks/useSubscriptionForPeriod.d.ts.map +1 -1
  35. package/dist/hooks/useSubscriptionForPeriod.js +1 -42
  36. package/dist/hooks/useSubscriptionForPeriod.js.map +1 -0
  37. package/dist/hooks/useSubscriptionPeriods.d.ts +0 -36
  38. package/dist/hooks/useSubscriptionPeriods.d.ts.map +1 -1
  39. package/dist/hooks/useSubscriptionPeriods.js +1 -32
  40. package/dist/hooks/useSubscriptionPeriods.js.map +1 -0
  41. package/dist/hooks/useSubscriptions.d.ts +0 -44
  42. package/dist/hooks/useSubscriptions.d.ts.map +1 -1
  43. package/dist/hooks/useSubscriptions.js +1 -47
  44. package/dist/hooks/useSubscriptions.js.map +1 -0
  45. package/dist/hooks/useUserSubscription.d.ts +0 -44
  46. package/dist/hooks/useUserSubscription.d.ts.map +1 -1
  47. package/dist/hooks/useUserSubscription.js +1 -38
  48. package/dist/hooks/useUserSubscription.js.map +1 -0
  49. package/dist/index.d.ts +1 -6
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -10
  52. package/dist/index.js.map +1 -0
  53. package/dist/types/adapter.d.ts +0 -94
  54. package/dist/types/adapter.d.ts.map +1 -1
  55. package/dist/types/adapter.js +1 -6
  56. package/dist/types/adapter.js.map +1 -0
  57. package/dist/types/index.d.ts +0 -3
  58. package/dist/types/index.d.ts.map +1 -1
  59. package/dist/types/index.js +1 -3
  60. package/dist/types/index.js.map +1 -0
  61. package/dist/types/period.d.ts +0 -14
  62. package/dist/types/period.d.ts.map +1 -1
  63. package/dist/types/period.js +1 -11
  64. package/dist/types/period.js.map +1 -0
  65. package/dist/types/subscription.d.ts +0 -53
  66. package/dist/types/subscription.d.ts.map +1 -1
  67. package/dist/types/subscription.js +1 -5
  68. package/dist/types/subscription.js.map +1 -0
  69. package/dist/utils/index.d.ts +0 -3
  70. package/dist/utils/index.d.ts.map +1 -1
  71. package/dist/utils/index.js +1 -3
  72. package/dist/utils/index.js.map +1 -0
  73. package/dist/utils/level-calculator.d.ts +0 -58
  74. package/dist/utils/level-calculator.d.ts.map +1 -1
  75. package/dist/utils/level-calculator.js +1 -68
  76. package/dist/utils/level-calculator.js.map +1 -0
  77. package/dist/utils/period-parser.d.ts +0 -39
  78. package/dist/utils/period-parser.d.ts.map +1 -1
  79. package/dist/utils/period-parser.js +3 -47
  80. package/dist/utils/period-parser.js.map +1 -0
  81. package/package.json +8 -3
@@ -1,7 +1,3 @@
1
- /**
2
- * Adapter Exports
3
- *
4
- * Platform-specific adapters for RevenueCat SDK integration.
5
- */
6
- export { configureRevenueCatAdapter, createRevenueCatAdapter, setRevenueCatUser, clearRevenueCatUser, hasRevenueCatUser, } from './revenuecat-web';
1
+ export { configureRevenueCatAdapter, createRevenueCatAdapter, setRevenueCatUser, clearRevenueCatUser, hasRevenueCatUser, } from './revenuecat-web.js';
2
+ export { configureRevenueCatRNAdapter, createRevenueCatRNAdapter, setRevenueCatRNUser, clearRevenueCatRNUser, hasRevenueCatRNUser, } from './revenuecat-rn.js';
7
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
@@ -1,6 +1,3 @@
1
- /**
2
- * Adapter Exports
3
- *
4
- * Platform-specific adapters for RevenueCat SDK integration.
5
- */
6
- export { configureRevenueCatAdapter, createRevenueCatAdapter, setRevenueCatUser, clearRevenueCatUser, hasRevenueCatUser, } from './revenuecat-web';
1
+ export { configureRevenueCatAdapter, createRevenueCatAdapter, setRevenueCatUser, clearRevenueCatUser, hasRevenueCatUser, } from './revenuecat-web.js';
2
+ export { configureRevenueCatRNAdapter, createRevenueCatRNAdapter, setRevenueCatRNUser, clearRevenueCatRNUser, hasRevenueCatRNUser, } from './revenuecat-rn.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { SubscriptionAdapter } from '../types/adapter.js';
2
+ export declare function configureRevenueCatRNAdapter(revenueCatApiKey: string): void;
3
+ export declare function setRevenueCatRNUser(userId: string, email?: string): Promise<void>;
4
+ export declare function clearRevenueCatRNUser(): Promise<void>;
5
+ export declare function hasRevenueCatRNUser(): boolean;
6
+ export declare function createRevenueCatRNAdapter(): SubscriptionAdapter;
7
+ //# sourceMappingURL=revenuecat-rn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revenuecat-rn.d.ts","sourceRoot":"","sources":["../../src/adapters/revenuecat-rn.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAQV,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAkC7B,wBAAgB,4BAA4B,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAE3E;AAiCD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAqCf;AAKD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAU3D;AAKD,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAsFD,wBAAgB,yBAAyB,IAAI,mBAAmB,CAoH/D"}
@@ -0,0 +1,230 @@
1
+ let Purchases = null;
2
+ let currentUserId = null;
3
+ let apiKey = null;
4
+ let configured = false;
5
+ function getPurchases() {
6
+ if (!Purchases) {
7
+ try {
8
+ Purchases = require('react-native-purchases').default;
9
+ }
10
+ catch (e) {
11
+ console.warn('[subscription] react-native-purchases not available:', e);
12
+ }
13
+ }
14
+ return Purchases;
15
+ }
16
+ export function configureRevenueCatRNAdapter(revenueCatApiKey) {
17
+ apiKey = revenueCatApiKey;
18
+ }
19
+ async function ensureInitialized() {
20
+ const sdk = getPurchases();
21
+ if (!sdk) {
22
+ throw new Error('react-native-purchases not available');
23
+ }
24
+ if (!apiKey) {
25
+ throw new Error('RevenueCat not configured');
26
+ }
27
+ if (!currentUserId) {
28
+ throw new Error('RevenueCat user not set. Call setRevenueCatRNUser() first.');
29
+ }
30
+ if (!configured) {
31
+ await sdk.configure({ apiKey, appUserID: currentUserId });
32
+ configured = true;
33
+ }
34
+ return sdk;
35
+ }
36
+ export async function setRevenueCatRNUser(userId, email) {
37
+ const sdk = getPurchases();
38
+ if (!sdk || !apiKey) {
39
+ console.warn('[subscription] RevenueCat RN not configured');
40
+ return;
41
+ }
42
+ if (currentUserId === userId && configured) {
43
+ return;
44
+ }
45
+ try {
46
+ if (!configured) {
47
+ await sdk.configure({ apiKey, appUserID: userId });
48
+ configured = true;
49
+ }
50
+ else if (currentUserId !== userId) {
51
+ await sdk.logOut();
52
+ await sdk.logIn(userId);
53
+ }
54
+ currentUserId = userId;
55
+ if (email) {
56
+ try {
57
+ await sdk.setEmail(email);
58
+ }
59
+ catch {
60
+ }
61
+ }
62
+ }
63
+ catch (error) {
64
+ console.error('[subscription] Failed to set RevenueCat user:', error);
65
+ throw error;
66
+ }
67
+ }
68
+ export async function clearRevenueCatRNUser() {
69
+ const sdk = getPurchases();
70
+ if (sdk && configured) {
71
+ try {
72
+ await sdk.logOut();
73
+ }
74
+ catch {
75
+ }
76
+ }
77
+ currentUserId = null;
78
+ }
79
+ export function hasRevenueCatRNUser() {
80
+ return currentUserId !== null && configured;
81
+ }
82
+ function convertPackage(pkg) {
83
+ const product = pkg.product;
84
+ return {
85
+ identifier: pkg.identifier,
86
+ packageType: pkg.packageType,
87
+ product: {
88
+ identifier: product.identifier,
89
+ title: product.title,
90
+ description: product.description || null,
91
+ price: product.price,
92
+ priceString: product.priceString,
93
+ currencyCode: product.currencyCode,
94
+ normalPeriodDuration: product.subscriptionPeriod || null,
95
+ subscriptionOptions: product.defaultOption
96
+ ? {
97
+ [product.defaultOption.id]: {
98
+ id: product.defaultOption.id,
99
+ trial: product.defaultOption.freePhase
100
+ ? {
101
+ periodDuration: product.defaultOption.freePhase.billingPeriod?.iso8601 ||
102
+ null,
103
+ price: 0,
104
+ priceString: '$0',
105
+ cycleCount: product.defaultOption.freePhase.billingCycleCount || 1,
106
+ }
107
+ : null,
108
+ introPrice: product.defaultOption.introPhase
109
+ ? {
110
+ periodDuration: product.defaultOption.introPhase.billingPeriod?.iso8601 ||
111
+ null,
112
+ price: product.defaultOption.introPhase.price?.amountMicros
113
+ ? product.defaultOption.introPhase.price.amountMicros /
114
+ 1000000
115
+ : 0,
116
+ priceString: product.defaultOption.introPhase.price?.formatted || '$0',
117
+ cycleCount: product.defaultOption.introPhase.billingCycleCount || 1,
118
+ }
119
+ : null,
120
+ },
121
+ }
122
+ : undefined,
123
+ },
124
+ };
125
+ }
126
+ function convertOffering(offering) {
127
+ return {
128
+ identifier: offering.identifier,
129
+ metadata: offering.metadata || null,
130
+ availablePackages: offering.availablePackages.map((pkg) => convertPackage(pkg)),
131
+ };
132
+ }
133
+ function convertEntitlement(entitlement) {
134
+ return {
135
+ identifier: entitlement.identifier,
136
+ productIdentifier: entitlement.productIdentifier,
137
+ expirationDate: entitlement.expirationDate || null,
138
+ willRenew: entitlement.willRenew,
139
+ };
140
+ }
141
+ export function createRevenueCatRNAdapter() {
142
+ return {
143
+ async setUserId(userId, email) {
144
+ if (userId) {
145
+ await setRevenueCatRNUser(userId, email);
146
+ }
147
+ else {
148
+ await clearRevenueCatRNUser();
149
+ }
150
+ },
151
+ async getOfferings() {
152
+ if (!currentUserId) {
153
+ console.log('[revenuecat-rn] No user set, returning empty offerings');
154
+ return { all: {}, current: null };
155
+ }
156
+ try {
157
+ const sdk = await ensureInitialized();
158
+ const offerings = await sdk.getOfferings();
159
+ console.log('[revenuecat-rn] Raw offerings from RevenueCat:', {
160
+ allKeys: Object.keys(offerings.all),
161
+ currentIdentifier: offerings.current?.identifier,
162
+ currentPackageCount: offerings.current?.availablePackages.length,
163
+ });
164
+ const all = {};
165
+ for (const [key, offering] of Object.entries(offerings.all)) {
166
+ all[key] = convertOffering(offering);
167
+ }
168
+ return {
169
+ all,
170
+ current: offerings.current
171
+ ? convertOffering(offerings.current)
172
+ : null,
173
+ };
174
+ }
175
+ catch (error) {
176
+ console.error('[revenuecat-rn] Failed to get offerings:', error);
177
+ return { all: {}, current: null };
178
+ }
179
+ },
180
+ async getCustomerInfo() {
181
+ if (!currentUserId) {
182
+ return { activeSubscriptions: [], entitlements: { active: {} } };
183
+ }
184
+ try {
185
+ const sdk = await ensureInitialized();
186
+ const customerInfo = await sdk.getCustomerInfo();
187
+ const active = {};
188
+ for (const [id, entitlement] of Object.entries(customerInfo.entitlements.active)) {
189
+ active[id] = convertEntitlement(entitlement);
190
+ }
191
+ const managementUrl = customerInfo.managementURL ?? undefined;
192
+ return {
193
+ activeSubscriptions: customerInfo.activeSubscriptions,
194
+ entitlements: { active },
195
+ managementUrl,
196
+ };
197
+ }
198
+ catch (error) {
199
+ console.error('[revenuecat-rn] Failed to get customer info:', error);
200
+ return { activeSubscriptions: [], entitlements: { active: {} } };
201
+ }
202
+ },
203
+ async purchase(params) {
204
+ const sdk = await ensureInitialized();
205
+ const offerings = await sdk.getOfferings();
206
+ let packageToPurchase;
207
+ for (const offering of Object.values(offerings.all)) {
208
+ packageToPurchase = offering.availablePackages.find((pkg) => pkg.identifier === params.packageId);
209
+ if (packageToPurchase)
210
+ break;
211
+ }
212
+ if (!packageToPurchase) {
213
+ throw new Error(`Package not found: ${params.packageId}`);
214
+ }
215
+ const result = await sdk.purchasePackage(packageToPurchase);
216
+ const customerInfo = result.customerInfo;
217
+ const active = {};
218
+ for (const [id, entitlement] of Object.entries(customerInfo.entitlements.active)) {
219
+ active[id] = convertEntitlement(entitlement);
220
+ }
221
+ return {
222
+ customerInfo: {
223
+ activeSubscriptions: customerInfo.activeSubscriptions,
224
+ entitlements: { active },
225
+ },
226
+ };
227
+ },
228
+ };
229
+ }
230
+ //# sourceMappingURL=revenuecat-rn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revenuecat-rn.js","sourceRoot":"","sources":["../../src/adapters/revenuecat-rn.ts"],"names":[],"mappings":"AA0BA,IAAI,SAAS,GAAwB,IAAI,CAAC;AAC1C,IAAI,aAAa,GAAkB,IAAI,CAAC;AACxC,IAAI,MAAM,GAAkB,IAAI,CAAC;AACjC,IAAI,UAAU,GAAG,KAAK,CAAC;AAKvB,SAAS,YAAY;IACnB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,CAAC;YAEH,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC;QACxD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,sDAAsD,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,MAAM,UAAU,4BAA4B,CAAC,gBAAwB;IACnE,MAAM,GAAG,gBAAgB,CAAC;AAC5B,CAAC;AAKD,KAAK,UAAU,iBAAiB;IAC9B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;QAC1D,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAc,EACd,KAAc;IAEd,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAGD,IAAI,aAAa,KAAK,MAAM,IAAI,UAAU,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;YAEhB,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YACnD,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAEpC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,aAAa,GAAG,MAAM,CAAC;QAGvB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;QACtE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAKD,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IACD,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAKD,MAAM,UAAU,mBAAmB;IACjC,OAAO,aAAa,KAAK,IAAI,IAAI,UAAU,CAAC;AAC9C,CAAC;AAKD,SAAS,cAAc,CAAC,GAAc;IACpC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE5B,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,OAAO,EAAE;YACP,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;YACxC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,oBAAoB,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI;YACxD,mBAAmB,EAAE,OAAO,CAAC,aAAa;gBACxC,CAAC,CAAC;oBACE,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;wBAC1B,EAAE,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE;wBAC5B,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,SAAS;4BACpC,CAAC,CAAC;gCACE,cAAc,EACZ,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO;oCACtD,IAAI;gCACN,KAAK,EAAE,CAAC;gCACR,WAAW,EAAE,IAAI;gCACjB,UAAU,EACR,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,IAAI,CAAC;6BACzD;4BACH,CAAC,CAAC,IAAI;wBACR,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU;4BAC1C,CAAC,CAAC;gCACE,cAAc,EACZ,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO;oCACvD,IAAI;gCACN,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY;oCACzD,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY;wCACnD,OAAS;oCACX,CAAC,CAAC,CAAC;gCACL,WAAW,EACT,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI;gCAC3D,UAAU,EACR,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,iBAAiB,IAAI,CAAC;6BAC1D;4BACH,CAAC,CAAC,IAAI;qBACT;iBACF;gBACH,CAAC,CAAC,SAAS;SACd;KACF,CAAC;AACJ,CAAC;AAKD,SAAS,eAAe,CAAC,QAAoB;IAC3C,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;QACnC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAc,EAAE,EAAE,CACnE,cAAc,CAAC,GAAG,CAAC,CACpB;KACF,CAAC;AACJ,CAAC;AAKD,SAAS,kBAAkB,CACzB,WAA8B;IAE9B,OAAO;QACL,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;QAChD,cAAc,EAAE,WAAW,CAAC,cAAc,IAAI,IAAI;QAClD,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC;AACJ,CAAC;AAKD,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,MAA0B,EAAE,KAAc;YACxD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,MAAM,qBAAqB,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,YAAY;YAEhB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;gBACtE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACpC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBACtC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;gBAE3C,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE;oBAC5D,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;oBACnC,iBAAiB,EAAE,SAAS,CAAC,OAAO,EAAE,UAAU;oBAChD,mBAAmB,EAAE,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM;iBACjE,CAAC,CAAC;gBAEH,MAAM,GAAG,GAA4B,EAAE,CAAC;gBAExC,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5D,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,QAAsB,CAAC,CAAC;gBACrD,CAAC;gBAED,OAAO;oBACL,GAAG;oBACH,OAAO,EAAE,SAAS,CAAC,OAAO;wBACxB,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC;wBACpC,CAAC,CAAC,IAAI;iBACT,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;gBACjE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,eAAe;YAEnB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACnE,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBACtC,MAAM,YAAY,GAAmB,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;gBAEjE,MAAM,MAAM,GAAkD,EAAE,CAAC;gBAEjE,KAAK,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAC5C,YAAY,CAAC,YAAY,CAAC,MAAM,CACjC,EAAE,CAAC;oBACF,MAAM,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,WAAgC,CAAC,CAAC;gBACpE,CAAC;gBAGD,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,IAAI,SAAS,CAAC;gBAE9D,OAAO;oBACL,mBAAmB,EAAE,YAAY,CAAC,mBAAmB;oBACrD,YAAY,EAAE,EAAE,MAAM,EAAE;oBACxB,aAAa;iBACd,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;gBACrE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACnE,CAAC;QACH,CAAC;QAED,KAAK,CAAC,QAAQ,CACZ,MAA6B;YAE7B,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAGtC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;YAC3C,IAAI,iBAAwC,CAAC;YAE7C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAiB,EAAE,CAAC;gBACpE,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CACjD,CAAC,GAAc,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,SAAS,CACxD,CAAC;gBACF,IAAI,iBAAiB;oBAAE,MAAM;YAC/B,CAAC;YAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;YAC5D,MAAM,YAAY,GAAmB,MAAM,CAAC,YAAY,CAAC;YAGzD,MAAM,MAAM,GAAkD,EAAE,CAAC;YACjE,KAAK,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAC5C,YAAY,CAAC,YAAY,CAAC,MAAM,CACjC,EAAE,CAAC;gBACF,MAAM,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,WAAgC,CAAC,CAAC;YACpE,CAAC;YAED,OAAO;gBACL,YAAY,EAAE;oBACZ,mBAAmB,EAAE,YAAY,CAAC,mBAAmB;oBACrD,YAAY,EAAE,EAAE,MAAM,EAAE;iBACzB;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,31 +1,7 @@
1
- /**
2
- * RevenueCat Web Adapter
3
- *
4
- * Adapter for RevenueCat web SDK (@revenuecat/purchases-js).
5
- * Provides lazy loading of the SDK to minimize initial bundle size.
6
- */
7
1
  import type { SubscriptionAdapter } from '../types/adapter';
8
- /**
9
- * Configure the RevenueCat adapter with API key.
10
- * Call this before initializing subscription_lib.
11
- * RevenueCat SDK is lazily loaded when first needed.
12
- */
13
2
  export declare function configureRevenueCatAdapter(revenueCatApiKey: string): void;
14
- /**
15
- * Set the current user for RevenueCat.
16
- * Call this when user logs in.
17
- */
18
3
  export declare function setRevenueCatUser(userId: string, email?: string): Promise<void>;
19
- /**
20
- * Clear the current user (on logout).
21
- */
22
4
  export declare function clearRevenueCatUser(): void;
23
- /**
24
- * Check if RevenueCat has a user configured.
25
- */
26
5
  export declare function hasRevenueCatUser(): boolean;
27
- /**
28
- * Create the subscription adapter for subscription_lib.
29
- */
30
6
  export declare function createRevenueCatAdapter(): SubscriptionAdapter;
31
7
  //# sourceMappingURL=revenuecat-web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"revenuecat-web.d.ts","sourceRoot":"","sources":["../../src/adapters/revenuecat-web.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAY1B;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAEzE;AA0BD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,mBAAmB,CAyM7D"}
1
+ {"version":3,"file":"revenuecat-web.d.ts","sourceRoot":"","sources":["../../src/adapters/revenuecat-web.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAiB1B,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAEzE;AA8BD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAKD,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C;AAKD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAKD,wBAAgB,uBAAuB,IAAI,mBAAmB,CAkM7D"}
@@ -1,26 +1,10 @@
1
- /**
2
- * RevenueCat Web Adapter
3
- *
4
- * Adapter for RevenueCat web SDK (@revenuecat/purchases-js).
5
- * Provides lazy loading of the SDK to minimize initial bundle size.
6
- */
7
- // Module state
8
1
  let purchasesInstance = null;
9
2
  let currentUserId = null;
10
3
  let apiKey = null;
11
- let pendingUserSetup = null; // Track in-flight user setup
12
- /**
13
- * Configure the RevenueCat adapter with API key.
14
- * Call this before initializing subscription_lib.
15
- * RevenueCat SDK is lazily loaded when first needed.
16
- */
4
+ let pendingUserSetup = null;
17
5
  export function configureRevenueCatAdapter(revenueCatApiKey) {
18
6
  apiKey = revenueCatApiKey;
19
7
  }
20
- /**
21
- * Lazily initialize RevenueCat SDK when first needed.
22
- * Requires a user to be set first via setRevenueCatUser().
23
- */
24
8
  async function ensureInitialized() {
25
9
  if (!apiKey) {
26
10
  throw new Error('RevenueCat not configured');
@@ -37,43 +21,33 @@ async function ensureInitialized() {
37
21
  }
38
22
  return purchasesInstance;
39
23
  }
40
- /**
41
- * Set the current user for RevenueCat.
42
- * Call this when user logs in.
43
- */
44
24
  export async function setRevenueCatUser(userId, email) {
45
25
  if (!apiKey) {
46
26
  console.warn('[subscription] RevenueCat not configured');
47
27
  return;
48
28
  }
49
- // Skip if same user already set up
50
29
  if (currentUserId === userId && purchasesInstance) {
51
30
  return;
52
31
  }
53
- // Skip if already setting up this user (prevent concurrent calls)
54
32
  if (pendingUserSetup === userId) {
55
33
  return;
56
34
  }
57
35
  pendingUserSetup = userId;
58
36
  try {
59
37
  const SDK = await import('@revenuecat/purchases-js');
60
- // Close existing instance
61
38
  if (purchasesInstance) {
62
39
  purchasesInstance.close();
63
40
  }
64
- // Configure new instance with user
65
41
  purchasesInstance = SDK.Purchases.configure({
66
42
  apiKey,
67
43
  appUserId: userId,
68
44
  });
69
45
  currentUserId = userId;
70
- // Set email attribute
71
46
  if (email) {
72
47
  try {
73
48
  await purchasesInstance.setAttributes({ email });
74
49
  }
75
50
  catch {
76
- // Ignore attribute errors
77
51
  }
78
52
  }
79
53
  }
@@ -81,9 +55,6 @@ export async function setRevenueCatUser(userId, email) {
81
55
  pendingUserSetup = null;
82
56
  }
83
57
  }
84
- /**
85
- * Clear the current user (on logout).
86
- */
87
58
  export function clearRevenueCatUser() {
88
59
  if (purchasesInstance) {
89
60
  purchasesInstance.close();
@@ -91,15 +62,9 @@ export function clearRevenueCatUser() {
91
62
  }
92
63
  currentUserId = null;
93
64
  }
94
- /**
95
- * Check if RevenueCat has a user configured.
96
- */
97
65
  export function hasRevenueCatUser() {
98
66
  return currentUserId !== null && purchasesInstance !== null;
99
67
  }
100
- /**
101
- * Create the subscription adapter for subscription_lib.
102
- */
103
68
  export function createRevenueCatAdapter() {
104
69
  return {
105
70
  async setUserId(userId, email) {
@@ -111,19 +76,12 @@ export function createRevenueCatAdapter() {
111
76
  }
112
77
  },
113
78
  async getOfferings() {
114
- // Return empty offerings if no user is set
115
79
  if (!currentUserId) {
116
- console.log('[revenuecat-web] No user set, returning empty offerings');
117
80
  return { all: {}, current: null };
118
81
  }
119
82
  try {
120
83
  const purchases = await ensureInitialized();
121
84
  const offerings = await purchases.getOfferings();
122
- console.log('[revenuecat-web] Raw offerings from RevenueCat:', {
123
- allKeys: Object.keys(offerings.all),
124
- currentIdentifier: offerings.current?.identifier,
125
- currentPackageCount: offerings.current?.availablePackages.length,
126
- });
127
85
  const convertPackage = (pkg) => ({
128
86
  identifier: pkg.identifier,
129
87
  packageType: pkg.packageType,
@@ -202,7 +160,6 @@ export function createRevenueCatAdapter() {
202
160
  }
203
161
  },
204
162
  async getCustomerInfo() {
205
- // Return empty customer info if no user is set
206
163
  if (!currentUserId) {
207
164
  return { activeSubscriptions: [], entitlements: { active: {} } };
208
165
  }
@@ -218,8 +175,6 @@ export function createRevenueCatAdapter() {
218
175
  willRenew: entitlement.willRenew,
219
176
  };
220
177
  }
221
- // Get management URL from the customer info
222
- // RevenueCat web SDK provides this for subscription management
223
178
  const managementUrl = customerInfo.managementURL ?? undefined;
224
179
  return {
225
180
  activeSubscriptions: Array.from(customerInfo.activeSubscriptions),
@@ -234,7 +189,6 @@ export function createRevenueCatAdapter() {
234
189
  },
235
190
  async purchase(params) {
236
191
  const purchases = await ensureInitialized();
237
- // Find the package across all offerings
238
192
  const offerings = await purchases.getOfferings();
239
193
  let packageToPurchase;
240
194
  for (const offering of Object.values(offerings.all)) {
@@ -248,7 +202,6 @@ export function createRevenueCatAdapter() {
248
202
  const result = await purchases.purchase({
249
203
  rcPackage: packageToPurchase,
250
204
  });
251
- // Convert customer info
252
205
  const active = {};
253
206
  for (const [id, entitlement] of Object.entries(result.customerInfo.entitlements.active)) {
254
207
  active[id] = {
@@ -267,3 +220,4 @@ export function createRevenueCatAdapter() {
267
220
  },
268
221
  };
269
222
  }
223
+ //# sourceMappingURL=revenuecat-web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revenuecat-web.js","sourceRoot":"","sources":["../../src/adapters/revenuecat-web.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,3 @@
1
- /**
2
- * Core Exports
3
- */
4
1
  export { SubscriptionService, type SubscriptionServiceConfig } from './service';
5
2
  export { initializeSubscription, getSubscriptionInstance, isSubscriptionInitialized, resetSubscription, refreshSubscription, setSubscriptionUserId, getSubscriptionUserId, onSubscriptionUserIdChange, onSubscriptionRefresh, type SubscriptionConfig, } from './singleton';
6
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC"}
@@ -1,5 +1,3 @@
1
- /**
2
- * Core Exports
3
- */
4
1
  export { SubscriptionService } from './service';
5
2
  export { initializeSubscription, getSubscriptionInstance, isSubscriptionInitialized, resetSubscription, refreshSubscription, setSubscriptionUserId, getSubscriptionUserId, onSubscriptionUserIdChange, onSubscriptionRefresh, } from './singleton';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAkC,MAAM,WAAW,CAAC;AAEhF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,GAEtB,MAAM,aAAa,CAAC"}
@@ -1,22 +1,9 @@
1
- /**
2
- * Subscription Service
3
- *
4
- * Core service for managing subscription data with clean abstractions.
5
- */
6
1
  import type { AdapterPurchaseParams, AdapterPurchaseResult, SubscriptionAdapter } from '../types/adapter';
7
2
  import type { CurrentSubscription, FreeTierConfig, SubscriptionOffer, SubscriptionPackage } from '../types/subscription';
8
- /**
9
- * Configuration for SubscriptionService
10
- */
11
3
  export interface SubscriptionServiceConfig {
12
- /** RevenueCat adapter implementation */
13
4
  adapter: SubscriptionAdapter;
14
- /** Free tier configuration */
15
5
  freeTier: FreeTierConfig;
16
6
  }
17
- /**
18
- * Service for managing subscription data with clean abstractions.
19
- */
20
7
  export declare class SubscriptionService {
21
8
  private adapter;
22
9
  private freeTier;
@@ -25,58 +12,19 @@ export declare class SubscriptionService {
25
12
  private loadOfferingsPromise;
26
13
  private isLoadingCustomerInfo;
27
14
  constructor(config: SubscriptionServiceConfig);
28
- /**
29
- * Load offerings from RevenueCat.
30
- * Multiple concurrent calls will share the same promise.
31
- * If already loaded, returns immediately.
32
- */
33
15
  loadOfferings(params?: {
34
16
  currency?: string;
35
17
  }): Promise<void>;
36
- /**
37
- * Internal method to actually load offerings
38
- */
39
18
  private doLoadOfferings;
40
- /**
41
- * Load customer info from RevenueCat
42
- */
43
19
  loadCustomerInfo(): Promise<void>;
44
- /**
45
- * Get offer by ID with complete hierarchy
46
- */
47
20
  getOffer(offerId: string): SubscriptionOffer | null;
48
- /**
49
- * Get all offer IDs
50
- */
51
21
  getOfferIds(): string[];
52
- /**
53
- * Get current subscription info
54
- */
55
22
  getCurrentSubscription(): CurrentSubscription | null;
56
- /**
57
- * Get free tier as a SubscriptionPackage
58
- */
59
23
  getFreeTierPackage(): SubscriptionPackage;
60
- /**
61
- * Get free tier config
62
- */
63
24
  getFreeTierConfig(): FreeTierConfig;
64
- /**
65
- * Make a purchase
66
- */
67
25
  purchase(params: AdapterPurchaseParams): Promise<AdapterPurchaseResult>;
68
- /**
69
- * Check if offerings are loaded
70
- */
71
26
  hasLoadedOfferings(): boolean;
72
- /**
73
- * Check if customer info is loaded
74
- */
75
27
  hasLoadedCustomerInfo(): boolean;
76
- /**
77
- * Clear customer info cache (e.g., when user changes).
78
- * Offerings cache is preserved since products don't change with user.
79
- */
80
28
  clearCustomerInfo(): void;
81
29
  private parseOffering;
82
30
  private parsePackage;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/core/service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAGV,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EAEpB,MAAM,uBAAuB,CAAC;AAG/B;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,wCAAwC;IACxC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,8BAA8B;IAC9B,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAA6C;IAChE,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,oBAAoB,CAA8B;IAC1D,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,MAAM,EAAE,yBAAyB;IAS7C;;;;OAIG;IACG,aAAa,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBlE;;OAEG;YACW,eAAe;IAe7B;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8DvC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAInD;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACH,sBAAsB,IAAI,mBAAmB,GAAG,IAAI;IAIpD;;OAEG;IACH,kBAAkB,IAAI,mBAAmB;IASzC;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACG,QAAQ,CACZ,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IASjC;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,qBAAqB,IAAI,OAAO;IAIhC;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAQzB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,+BAA+B;CA6BxC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/core/service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGV,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EAEpB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,WAAW,yBAAyB;IAExC,OAAO,EAAE,mBAAmB,CAAC;IAE7B,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAKD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAA6C;IAChE,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,oBAAoB,CAA8B;IAC1D,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,MAAM,EAAE,yBAAyB;IAcvC,aAAa,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAwBpD,eAAe;IAkBvB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgFvC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAOnD,WAAW,IAAI,MAAM,EAAE;IAOvB,sBAAsB,IAAI,mBAAmB,GAAG,IAAI;IAOpD,kBAAkB,IAAI,mBAAmB;IAYzC,iBAAiB,IAAI,cAAc;IAO7B,QAAQ,CACZ,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAYjC,kBAAkB,IAAI,OAAO;IAO7B,qBAAqB,IAAI,OAAO;IAQhC,iBAAiB,IAAI,IAAI;IAQzB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,+BAA+B;CA6BxC"}