@sudobility/subscription_lib 0.0.7 → 0.0.10

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 +23 -52
  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 +1 -51
  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 -34
  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":"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"}
@@ -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;AAW1B;;;;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,CAkCf;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,CAyM7D"}
@@ -1,25 +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
- /**
12
- * Configure the RevenueCat adapter with API key.
13
- * Call this before initializing subscription_lib.
14
- * RevenueCat SDK is lazily loaded when first needed.
15
- */
4
+ let pendingUserSetup = null;
16
5
  export function configureRevenueCatAdapter(revenueCatApiKey) {
17
6
  apiKey = revenueCatApiKey;
18
7
  }
19
- /**
20
- * Lazily initialize RevenueCat SDK when first needed.
21
- * Requires a user to be set first via setRevenueCatUser().
22
- */
23
8
  async function ensureInitialized() {
24
9
  if (!apiKey) {
25
10
  throw new Error('RevenueCat not configured');
@@ -36,43 +21,40 @@ async function ensureInitialized() {
36
21
  }
37
22
  return purchasesInstance;
38
23
  }
39
- /**
40
- * Set the current user for RevenueCat.
41
- * Call this when user logs in.
42
- */
43
24
  export async function setRevenueCatUser(userId, email) {
44
25
  if (!apiKey) {
45
26
  console.warn('[subscription] RevenueCat not configured');
46
27
  return;
47
28
  }
48
- // Skip if same user
49
29
  if (currentUserId === userId && purchasesInstance) {
50
30
  return;
51
31
  }
52
- currentUserId = userId;
53
- const SDK = await import('@revenuecat/purchases-js');
54
- // Close existing instance
55
- if (purchasesInstance) {
56
- purchasesInstance.close();
32
+ if (pendingUserSetup === userId) {
33
+ return;
57
34
  }
58
- // Configure new instance with user
59
- purchasesInstance = SDK.Purchases.configure({
60
- apiKey,
61
- appUserId: userId,
62
- });
63
- // Set email attribute
64
- if (email) {
65
- try {
66
- await purchasesInstance.setAttributes({ email });
35
+ pendingUserSetup = userId;
36
+ try {
37
+ const SDK = await import('@revenuecat/purchases-js');
38
+ if (purchasesInstance) {
39
+ purchasesInstance.close();
67
40
  }
68
- catch {
69
- // Ignore attribute errors
41
+ purchasesInstance = SDK.Purchases.configure({
42
+ apiKey,
43
+ appUserId: userId,
44
+ });
45
+ currentUserId = userId;
46
+ if (email) {
47
+ try {
48
+ await purchasesInstance.setAttributes({ email });
49
+ }
50
+ catch {
51
+ }
70
52
  }
71
53
  }
54
+ finally {
55
+ pendingUserSetup = null;
56
+ }
72
57
  }
73
- /**
74
- * Clear the current user (on logout).
75
- */
76
58
  export function clearRevenueCatUser() {
77
59
  if (purchasesInstance) {
78
60
  purchasesInstance.close();
@@ -80,15 +62,9 @@ export function clearRevenueCatUser() {
80
62
  }
81
63
  currentUserId = null;
82
64
  }
83
- /**
84
- * Check if RevenueCat has a user configured.
85
- */
86
65
  export function hasRevenueCatUser() {
87
66
  return currentUserId !== null && purchasesInstance !== null;
88
67
  }
89
- /**
90
- * Create the subscription adapter for subscription_lib.
91
- */
92
68
  export function createRevenueCatAdapter() {
93
69
  return {
94
70
  async setUserId(userId, email) {
@@ -100,7 +76,6 @@ export function createRevenueCatAdapter() {
100
76
  }
101
77
  },
102
78
  async getOfferings() {
103
- // Return empty offerings if no user is set
104
79
  if (!currentUserId) {
105
80
  console.log('[revenuecat-web] No user set, returning empty offerings');
106
81
  return { all: {}, current: null };
@@ -191,7 +166,6 @@ export function createRevenueCatAdapter() {
191
166
  }
192
167
  },
193
168
  async getCustomerInfo() {
194
- // Return empty customer info if no user is set
195
169
  if (!currentUserId) {
196
170
  return { activeSubscriptions: [], entitlements: { active: {} } };
197
171
  }
@@ -207,8 +181,6 @@ export function createRevenueCatAdapter() {
207
181
  willRenew: entitlement.willRenew,
208
182
  };
209
183
  }
210
- // Get management URL from the customer info
211
- // RevenueCat web SDK provides this for subscription management
212
184
  const managementUrl = customerInfo.managementURL ?? undefined;
213
185
  return {
214
186
  activeSubscriptions: Array.from(customerInfo.activeSubscriptions),
@@ -223,7 +195,6 @@ export function createRevenueCatAdapter() {
223
195
  },
224
196
  async purchase(params) {
225
197
  const purchases = await ensureInitialized();
226
- // Find the package across all offerings
227
198
  const offerings = await purchases.getOfferings();
228
199
  let packageToPurchase;
229
200
  for (const offering of Object.values(offerings.all)) {
@@ -237,7 +208,6 @@ export function createRevenueCatAdapter() {
237
208
  const result = await purchases.purchase({
238
209
  rcPackage: packageToPurchase,
239
210
  });
240
- // Convert customer info
241
211
  const active = {};
242
212
  for (const [id, entitlement] of Object.entries(result.customerInfo.entitlements.active)) {
243
213
  active[id] = {
@@ -256,3 +226,4 @@ export function createRevenueCatAdapter() {
256
226
  },
257
227
  };
258
228
  }
229
+ //# 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"}