@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.
- package/dist/adapters/index.d.ts +2 -6
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +3 -6
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/revenuecat-rn.d.ts +7 -0
- package/dist/adapters/revenuecat-rn.d.ts.map +1 -0
- package/dist/adapters/revenuecat-rn.js +230 -0
- package/dist/adapters/revenuecat-rn.js.map +1 -0
- package/dist/adapters/revenuecat-web.d.ts +0 -24
- package/dist/adapters/revenuecat-web.d.ts.map +1 -1
- package/dist/adapters/revenuecat-web.js +2 -48
- package/dist/adapters/revenuecat-web.js.map +1 -0
- package/dist/core/index.d.ts +0 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -3
- package/dist/core/index.js.map +1 -0
- package/dist/core/service.d.ts +0 -52
- package/dist/core/service.d.ts.map +1 -1
- package/dist/core/service.js +21 -103
- package/dist/core/service.js.map +1 -0
- package/dist/core/singleton.d.ts +0 -85
- package/dist/core/singleton.d.ts.map +1 -1
- package/dist/core/singleton.js +1 -85
- package/dist/core/singleton.js.map +1 -0
- package/dist/hooks/index.d.ts +0 -3
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -3
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useSubscribable.d.ts +0 -53
- package/dist/hooks/useSubscribable.d.ts.map +1 -1
- package/dist/hooks/useSubscribable.js +4 -71
- package/dist/hooks/useSubscribable.js.map +1 -0
- package/dist/hooks/useSubscriptionForPeriod.d.ts +0 -45
- package/dist/hooks/useSubscriptionForPeriod.d.ts.map +1 -1
- package/dist/hooks/useSubscriptionForPeriod.js +1 -42
- package/dist/hooks/useSubscriptionForPeriod.js.map +1 -0
- package/dist/hooks/useSubscriptionPeriods.d.ts +0 -36
- package/dist/hooks/useSubscriptionPeriods.d.ts.map +1 -1
- package/dist/hooks/useSubscriptionPeriods.js +1 -32
- package/dist/hooks/useSubscriptionPeriods.js.map +1 -0
- package/dist/hooks/useSubscriptions.d.ts +0 -44
- package/dist/hooks/useSubscriptions.d.ts.map +1 -1
- package/dist/hooks/useSubscriptions.js +1 -47
- package/dist/hooks/useSubscriptions.js.map +1 -0
- package/dist/hooks/useUserSubscription.d.ts +0 -44
- package/dist/hooks/useUserSubscription.d.ts.map +1 -1
- package/dist/hooks/useUserSubscription.js +1 -38
- package/dist/hooks/useUserSubscription.js.map +1 -0
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -10
- package/dist/index.js.map +1 -0
- package/dist/types/adapter.d.ts +0 -94
- package/dist/types/adapter.d.ts.map +1 -1
- package/dist/types/adapter.js +1 -6
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/index.d.ts +0 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -3
- package/dist/types/index.js.map +1 -0
- package/dist/types/period.d.ts +0 -14
- package/dist/types/period.d.ts.map +1 -1
- package/dist/types/period.js +1 -11
- package/dist/types/period.js.map +1 -0
- package/dist/types/subscription.d.ts +0 -53
- package/dist/types/subscription.d.ts.map +1 -1
- package/dist/types/subscription.js +1 -5
- package/dist/types/subscription.js.map +1 -0
- package/dist/utils/index.d.ts +0 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -3
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/level-calculator.d.ts +0 -58
- package/dist/utils/level-calculator.d.ts.map +1 -1
- package/dist/utils/level-calculator.js +1 -68
- package/dist/utils/level-calculator.js.map +1 -0
- package/dist/utils/period-parser.d.ts +0 -39
- package/dist/utils/period-parser.d.ts.map +1 -1
- package/dist/utils/period-parser.js +3 -47
- package/dist/utils/period-parser.js.map +1 -0
- package/package.json +8 -3
package/dist/adapters/index.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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":"
|
|
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"}
|
package/dist/adapters/index.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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":"
|
|
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;
|
|
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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"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -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
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/core/index.js
CHANGED
|
@@ -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"}
|
package/dist/core/service.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|