@sudobility/subscription_lib 0.0.4 → 0.0.6
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 +7 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +6 -0
- package/dist/adapters/revenuecat-web.d.ts +31 -0
- package/dist/adapters/revenuecat-web.d.ts.map +1 -0
- package/dist/adapters/revenuecat-web.js +258 -0
- package/dist/core/service.d.ts.map +1 -1
- package/dist/core/service.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/types/adapter.d.ts +2 -0
- package/dist/types/adapter.d.ts.map +1 -1
- package/dist/types/subscription.d.ts +2 -0
- package/dist/types/subscription.d.ts.map +1 -1
- package/package.json +9 -2
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter Exports
|
|
3
|
+
*
|
|
4
|
+
* Platform-specific adapters for RevenueCat SDK integration.
|
|
5
|
+
*/
|
|
6
|
+
export { configureRevenueCatAdapter, createRevenueCatAdapter, setRevenueCatUser, clearRevenueCatUser, hasRevenueCatUser, } from './revenuecat-web';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
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
|
+
export declare function configureRevenueCatAdapter(revenueCatApiKey: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Set the current user for RevenueCat.
|
|
16
|
+
* Call this when user logs in.
|
|
17
|
+
*/
|
|
18
|
+
export declare function setRevenueCatUser(userId: string, email?: string): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Clear the current user (on logout).
|
|
21
|
+
*/
|
|
22
|
+
export declare function clearRevenueCatUser(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Check if RevenueCat has a user configured.
|
|
25
|
+
*/
|
|
26
|
+
export declare function hasRevenueCatUser(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Create the subscription adapter for subscription_lib.
|
|
29
|
+
*/
|
|
30
|
+
export declare function createRevenueCatAdapter(): SubscriptionAdapter;
|
|
31
|
+
//# sourceMappingURL=revenuecat-web.d.ts.map
|
|
@@ -0,0 +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;AAmCD;;;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,CA8L7D"}
|
|
@@ -0,0 +1,258 @@
|
|
|
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
|
+
let purchasesInstance = null;
|
|
9
|
+
let currentUserId = null;
|
|
10
|
+
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
|
+
*/
|
|
16
|
+
export function configureRevenueCatAdapter(revenueCatApiKey) {
|
|
17
|
+
apiKey = revenueCatApiKey;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get or create an anonymous user ID for RevenueCat.
|
|
21
|
+
* RevenueCat web SDK requires a user ID, so we generate one for anonymous users.
|
|
22
|
+
*/
|
|
23
|
+
function getAnonymousUserId() {
|
|
24
|
+
const STORAGE_KEY = 'rc_anonymous_user_id';
|
|
25
|
+
let anonId = localStorage.getItem(STORAGE_KEY);
|
|
26
|
+
if (!anonId) {
|
|
27
|
+
anonId = `anon_${globalThis.crypto.randomUUID()}`;
|
|
28
|
+
localStorage.setItem(STORAGE_KEY, anonId);
|
|
29
|
+
}
|
|
30
|
+
return anonId;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Lazily initialize RevenueCat SDK when first needed.
|
|
34
|
+
* Uses anonymous user ID if no user is logged in.
|
|
35
|
+
*/
|
|
36
|
+
async function ensureInitialized() {
|
|
37
|
+
if (!apiKey) {
|
|
38
|
+
throw new Error('RevenueCat not configured');
|
|
39
|
+
}
|
|
40
|
+
if (!purchasesInstance) {
|
|
41
|
+
const SDK = await import('@revenuecat/purchases-js');
|
|
42
|
+
// Use current user ID or anonymous ID - RevenueCat web SDK requires a user ID
|
|
43
|
+
const userId = currentUserId || getAnonymousUserId();
|
|
44
|
+
purchasesInstance = SDK.Purchases.configure({ apiKey, appUserId: userId });
|
|
45
|
+
}
|
|
46
|
+
return purchasesInstance;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Set the current user for RevenueCat.
|
|
50
|
+
* Call this when user logs in.
|
|
51
|
+
*/
|
|
52
|
+
export async function setRevenueCatUser(userId, email) {
|
|
53
|
+
if (!apiKey) {
|
|
54
|
+
console.warn('[subscription] RevenueCat not configured');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// Skip if same user
|
|
58
|
+
if (currentUserId === userId && purchasesInstance) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
currentUserId = userId;
|
|
62
|
+
const SDK = await import('@revenuecat/purchases-js');
|
|
63
|
+
// Close existing instance
|
|
64
|
+
if (purchasesInstance) {
|
|
65
|
+
purchasesInstance.close();
|
|
66
|
+
}
|
|
67
|
+
// Configure new instance with user
|
|
68
|
+
purchasesInstance = SDK.Purchases.configure({
|
|
69
|
+
apiKey,
|
|
70
|
+
appUserId: userId,
|
|
71
|
+
});
|
|
72
|
+
// Set email attribute
|
|
73
|
+
if (email) {
|
|
74
|
+
try {
|
|
75
|
+
await purchasesInstance.setAttributes({ email });
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Ignore attribute errors
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Clear the current user (on logout).
|
|
84
|
+
*/
|
|
85
|
+
export function clearRevenueCatUser() {
|
|
86
|
+
if (purchasesInstance) {
|
|
87
|
+
purchasesInstance.close();
|
|
88
|
+
purchasesInstance = null;
|
|
89
|
+
}
|
|
90
|
+
currentUserId = null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if RevenueCat has a user configured.
|
|
94
|
+
*/
|
|
95
|
+
export function hasRevenueCatUser() {
|
|
96
|
+
return currentUserId !== null && purchasesInstance !== null;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create the subscription adapter for subscription_lib.
|
|
100
|
+
*/
|
|
101
|
+
export function createRevenueCatAdapter() {
|
|
102
|
+
return {
|
|
103
|
+
async setUserId(userId, email) {
|
|
104
|
+
if (userId) {
|
|
105
|
+
await setRevenueCatUser(userId, email);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
clearRevenueCatUser();
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
async getOfferings() {
|
|
112
|
+
try {
|
|
113
|
+
const purchases = await ensureInitialized();
|
|
114
|
+
const offerings = await purchases.getOfferings();
|
|
115
|
+
console.log('[revenuecat-web] Raw offerings from RevenueCat:', {
|
|
116
|
+
allKeys: Object.keys(offerings.all),
|
|
117
|
+
currentIdentifier: offerings.current?.identifier,
|
|
118
|
+
currentPackageCount: offerings.current?.availablePackages.length,
|
|
119
|
+
});
|
|
120
|
+
const convertPackage = (pkg) => ({
|
|
121
|
+
identifier: pkg.identifier,
|
|
122
|
+
packageType: pkg.packageType,
|
|
123
|
+
product: {
|
|
124
|
+
identifier: pkg.rcBillingProduct.identifier,
|
|
125
|
+
title: pkg.rcBillingProduct.title,
|
|
126
|
+
description: pkg.rcBillingProduct.description || null,
|
|
127
|
+
price: pkg.rcBillingProduct.currentPrice?.amountMicros
|
|
128
|
+
? pkg.rcBillingProduct.currentPrice.amountMicros / 1000000
|
|
129
|
+
: 0,
|
|
130
|
+
priceString: pkg.rcBillingProduct.currentPrice?.formattedPrice || '$0',
|
|
131
|
+
currencyCode: pkg.rcBillingProduct.currentPrice?.currency || 'USD',
|
|
132
|
+
normalPeriodDuration: pkg.rcBillingProduct.normalPeriodDuration || null,
|
|
133
|
+
subscriptionOptions: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
134
|
+
? {
|
|
135
|
+
[pkg.rcBillingProduct.defaultSubscriptionOption.id]: {
|
|
136
|
+
id: pkg.rcBillingProduct.defaultSubscriptionOption.id,
|
|
137
|
+
trial: pkg.rcBillingProduct.defaultSubscriptionOption.trial
|
|
138
|
+
? {
|
|
139
|
+
periodDuration: pkg.rcBillingProduct.defaultSubscriptionOption.trial
|
|
140
|
+
.periodDuration || null,
|
|
141
|
+
price: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
142
|
+
.trial.price?.amountMicros
|
|
143
|
+
? pkg.rcBillingProduct.defaultSubscriptionOption
|
|
144
|
+
.trial.price.amountMicros / 1000000
|
|
145
|
+
: 0,
|
|
146
|
+
priceString: pkg.rcBillingProduct.defaultSubscriptionOption.trial
|
|
147
|
+
.price?.formattedPrice || '$0',
|
|
148
|
+
cycleCount: pkg.rcBillingProduct.defaultSubscriptionOption.trial
|
|
149
|
+
.cycleCount || 1,
|
|
150
|
+
}
|
|
151
|
+
: null,
|
|
152
|
+
introPrice: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
153
|
+
.introPrice
|
|
154
|
+
? {
|
|
155
|
+
periodDuration: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
156
|
+
.introPrice.periodDuration || null,
|
|
157
|
+
price: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
158
|
+
.introPrice.price?.amountMicros
|
|
159
|
+
? pkg.rcBillingProduct.defaultSubscriptionOption
|
|
160
|
+
.introPrice.price.amountMicros / 1000000
|
|
161
|
+
: 0,
|
|
162
|
+
priceString: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
163
|
+
.introPrice.price?.formattedPrice || '$0',
|
|
164
|
+
cycleCount: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
165
|
+
.introPrice.cycleCount || 1,
|
|
166
|
+
}
|
|
167
|
+
: null,
|
|
168
|
+
},
|
|
169
|
+
}
|
|
170
|
+
: undefined,
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
const all = {};
|
|
174
|
+
for (const [key, offering] of Object.entries(offerings.all)) {
|
|
175
|
+
all[key] = {
|
|
176
|
+
identifier: offering.identifier,
|
|
177
|
+
metadata: offering.metadata || null,
|
|
178
|
+
availablePackages: offering.availablePackages.map(convertPackage),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
all,
|
|
183
|
+
current: offerings.current
|
|
184
|
+
? {
|
|
185
|
+
identifier: offerings.current.identifier,
|
|
186
|
+
metadata: offerings.current.metadata || null,
|
|
187
|
+
availablePackages: offerings.current.availablePackages.map(convertPackage),
|
|
188
|
+
}
|
|
189
|
+
: null,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
console.error('[revenuecat-web] Failed to get offerings:', error);
|
|
194
|
+
return { all: {}, current: null };
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
async getCustomerInfo() {
|
|
198
|
+
try {
|
|
199
|
+
const purchases = await ensureInitialized();
|
|
200
|
+
const customerInfo = await purchases.getCustomerInfo();
|
|
201
|
+
const active = {};
|
|
202
|
+
for (const [id, entitlement] of Object.entries(customerInfo.entitlements.active)) {
|
|
203
|
+
active[id] = {
|
|
204
|
+
identifier: entitlement.identifier,
|
|
205
|
+
productIdentifier: entitlement.productIdentifier,
|
|
206
|
+
expirationDate: entitlement.expirationDate?.toISOString() || null,
|
|
207
|
+
willRenew: entitlement.willRenew,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// Get management URL from the customer info
|
|
211
|
+
// RevenueCat web SDK provides this for subscription management
|
|
212
|
+
const managementUrl = customerInfo.managementURL ?? undefined;
|
|
213
|
+
return {
|
|
214
|
+
activeSubscriptions: Array.from(customerInfo.activeSubscriptions),
|
|
215
|
+
entitlements: { active },
|
|
216
|
+
managementUrl,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
console.error('[revenuecat-web] Failed to get customer info:', error);
|
|
221
|
+
return { activeSubscriptions: [], entitlements: { active: {} } };
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
async purchase(params) {
|
|
225
|
+
const purchases = await ensureInitialized();
|
|
226
|
+
// Find the package across all offerings
|
|
227
|
+
const offerings = await purchases.getOfferings();
|
|
228
|
+
let packageToPurchase;
|
|
229
|
+
for (const offering of Object.values(offerings.all)) {
|
|
230
|
+
packageToPurchase = offering.availablePackages.find(pkg => pkg.identifier === params.packageId);
|
|
231
|
+
if (packageToPurchase)
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
if (!packageToPurchase) {
|
|
235
|
+
throw new Error(`Package not found: ${params.packageId}`);
|
|
236
|
+
}
|
|
237
|
+
const result = await purchases.purchase({
|
|
238
|
+
rcPackage: packageToPurchase,
|
|
239
|
+
});
|
|
240
|
+
// Convert customer info
|
|
241
|
+
const active = {};
|
|
242
|
+
for (const [id, entitlement] of Object.entries(result.customerInfo.entitlements.active)) {
|
|
243
|
+
active[id] = {
|
|
244
|
+
identifier: entitlement.identifier,
|
|
245
|
+
productIdentifier: entitlement.productIdentifier,
|
|
246
|
+
expirationDate: entitlement.expirationDate?.toISOString() || null,
|
|
247
|
+
willRenew: entitlement.willRenew,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
customerInfo: {
|
|
252
|
+
activeSubscriptions: Array.from(result.customerInfo.activeSubscriptions),
|
|
253
|
+
entitlements: { active },
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
}
|
|
@@ -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;
|
|
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"}
|
package/dist/core/service.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export { useSubscriptions, useUserSubscription, useSubscriptionPeriods, useSubsc
|
|
|
9
9
|
export type { SubscriptionAdapter, AdapterOfferings, AdapterOffering, AdapterPackage, AdapterProduct, AdapterSubscriptionOption, AdapterPricingPhase, AdapterCustomerInfo, AdapterEntitlementInfo, AdapterPurchaseParams, AdapterPurchaseResult, SubscriptionProduct, SubscriptionPackage, SubscriptionOffer, CurrentSubscription, FreeTierConfig, PackageWithLevel, SubscriptionPeriod, } from './types';
|
|
10
10
|
export { PERIOD_RANKS, ALL_PERIODS } from './types';
|
|
11
11
|
export { parseISO8601Period, getPeriodRank, comparePeriods, isPeriodGreaterOrEqual, calculatePackageLevels, addLevelsToPackages, getPackageLevel, findUpgradeablePackages, } from './utils';
|
|
12
|
+
export { configureRevenueCatAdapter, createRevenueCatAdapter, setRevenueCatUser, clearRevenueCatUser, hasRevenueCatUser, } from './adapters';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,SAAS,CAAC;AAGjB,YAAY,EAEV,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EAErB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAEhB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,SAAS,CAAC;AAGjB,YAAY,EAEV,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EAErB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAEhB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,3 +11,5 @@ export { useSubscriptions, useUserSubscription, useSubscriptionPeriods, useSubsc
|
|
|
11
11
|
export { PERIOD_RANKS, ALL_PERIODS } from './types';
|
|
12
12
|
// Utils
|
|
13
13
|
export { parseISO8601Period, getPeriodRank, comparePeriods, isPeriodGreaterOrEqual, calculatePackageLevels, addLevelsToPackages, getPackageLevel, findUpgradeablePackages, } from './utils';
|
|
14
|
+
// Adapters (platform-specific)
|
|
15
|
+
export { configureRevenueCatAdapter, createRevenueCatAdapter, setRevenueCatUser, clearRevenueCatUser, hasRevenueCatUser, } from './adapters';
|
package/dist/types/adapter.d.ts
CHANGED
|
@@ -104,6 +104,8 @@ export interface AdapterCustomerInfo {
|
|
|
104
104
|
/** Active entitlements map */
|
|
105
105
|
active: Record<string, AdapterEntitlementInfo>;
|
|
106
106
|
};
|
|
107
|
+
/** URL to manage subscription (upgrade/downgrade/cancel) */
|
|
108
|
+
managementUrl?: string;
|
|
107
109
|
}
|
|
108
110
|
/**
|
|
109
111
|
* Parameters for making a purchase
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,mDAAmD;IACnD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAClC,uDAAuD;IACvD,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iDAAiD;IACjD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,OAAO,EAAE,cAAc,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,0CAA0C;IAC1C,iBAAiB,EAAE,cAAc,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrC,+BAA+B;IAC/B,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,+BAA+B;IAC/B,YAAY,EAAE;QACZ,8BAA8B;QAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;KAChD,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/types/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,6 +75,8 @@ export interface CurrentSubscription {
|
|
|
75
75
|
expirationDate?: Date;
|
|
76
76
|
/** Whether subscription will auto-renew */
|
|
77
77
|
willRenew?: boolean;
|
|
78
|
+
/** URL to manage subscription (upgrade/downgrade/cancel) */
|
|
79
|
+
managementUrl?: string;
|
|
78
80
|
}
|
|
79
81
|
/**
|
|
80
82
|
* Configuration for the free tier
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/types/subscription.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,sDAAsD;IACtD,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,6BAA6B;IAC7B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kCAAkC;IAClC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,mCAAmC;IACnC,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/types/subscription.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,sDAAsD;IACtD,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,6BAA6B;IAC7B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kCAAkC;IAClC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,mCAAmC;IACnC,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;CACf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sudobility/subscription_lib",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "Cross-platform subscription management with RevenueCat adapter pattern",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,9 +29,16 @@
|
|
|
29
29
|
"prepublishOnly": "bun run build"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"react": "^19.0.0"
|
|
32
|
+
"react": "^19.0.0",
|
|
33
|
+
"@revenuecat/purchases-js": "^1.0.0"
|
|
34
|
+
},
|
|
35
|
+
"peerDependenciesMeta": {
|
|
36
|
+
"@revenuecat/purchases-js": {
|
|
37
|
+
"optional": true
|
|
38
|
+
}
|
|
33
39
|
},
|
|
34
40
|
"devDependencies": {
|
|
41
|
+
"@revenuecat/purchases-js": "^1.1.3",
|
|
35
42
|
"vitest": "^4.0.4",
|
|
36
43
|
"@eslint/js": "^9.0.0",
|
|
37
44
|
"@types/bun": "^1.2.8",
|