@sudobility/subscription_lib 0.0.4 → 0.0.7
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;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"}
|
|
@@ -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
|
+
* Lazily initialize RevenueCat SDK when first needed.
|
|
21
|
+
* Requires a user to be set first via setRevenueCatUser().
|
|
22
|
+
*/
|
|
23
|
+
async function ensureInitialized() {
|
|
24
|
+
if (!apiKey) {
|
|
25
|
+
throw new Error('RevenueCat not configured');
|
|
26
|
+
}
|
|
27
|
+
if (!currentUserId) {
|
|
28
|
+
throw new Error('RevenueCat user not set. Call setRevenueCatUser() first.');
|
|
29
|
+
}
|
|
30
|
+
if (!purchasesInstance) {
|
|
31
|
+
const SDK = await import('@revenuecat/purchases-js');
|
|
32
|
+
purchasesInstance = SDK.Purchases.configure({
|
|
33
|
+
apiKey,
|
|
34
|
+
appUserId: currentUserId,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return purchasesInstance;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Set the current user for RevenueCat.
|
|
41
|
+
* Call this when user logs in.
|
|
42
|
+
*/
|
|
43
|
+
export async function setRevenueCatUser(userId, email) {
|
|
44
|
+
if (!apiKey) {
|
|
45
|
+
console.warn('[subscription] RevenueCat not configured');
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// Skip if same user
|
|
49
|
+
if (currentUserId === userId && purchasesInstance) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
currentUserId = userId;
|
|
53
|
+
const SDK = await import('@revenuecat/purchases-js');
|
|
54
|
+
// Close existing instance
|
|
55
|
+
if (purchasesInstance) {
|
|
56
|
+
purchasesInstance.close();
|
|
57
|
+
}
|
|
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 });
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Ignore attribute errors
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Clear the current user (on logout).
|
|
75
|
+
*/
|
|
76
|
+
export function clearRevenueCatUser() {
|
|
77
|
+
if (purchasesInstance) {
|
|
78
|
+
purchasesInstance.close();
|
|
79
|
+
purchasesInstance = null;
|
|
80
|
+
}
|
|
81
|
+
currentUserId = null;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if RevenueCat has a user configured.
|
|
85
|
+
*/
|
|
86
|
+
export function hasRevenueCatUser() {
|
|
87
|
+
return currentUserId !== null && purchasesInstance !== null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create the subscription adapter for subscription_lib.
|
|
91
|
+
*/
|
|
92
|
+
export function createRevenueCatAdapter() {
|
|
93
|
+
return {
|
|
94
|
+
async setUserId(userId, email) {
|
|
95
|
+
if (userId) {
|
|
96
|
+
await setRevenueCatUser(userId, email);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
clearRevenueCatUser();
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
async getOfferings() {
|
|
103
|
+
// Return empty offerings if no user is set
|
|
104
|
+
if (!currentUserId) {
|
|
105
|
+
console.log('[revenuecat-web] No user set, returning empty offerings');
|
|
106
|
+
return { all: {}, current: null };
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
const purchases = await ensureInitialized();
|
|
110
|
+
const offerings = await purchases.getOfferings();
|
|
111
|
+
console.log('[revenuecat-web] Raw offerings from RevenueCat:', {
|
|
112
|
+
allKeys: Object.keys(offerings.all),
|
|
113
|
+
currentIdentifier: offerings.current?.identifier,
|
|
114
|
+
currentPackageCount: offerings.current?.availablePackages.length,
|
|
115
|
+
});
|
|
116
|
+
const convertPackage = (pkg) => ({
|
|
117
|
+
identifier: pkg.identifier,
|
|
118
|
+
packageType: pkg.packageType,
|
|
119
|
+
product: {
|
|
120
|
+
identifier: pkg.rcBillingProduct.identifier,
|
|
121
|
+
title: pkg.rcBillingProduct.title,
|
|
122
|
+
description: pkg.rcBillingProduct.description || null,
|
|
123
|
+
price: pkg.rcBillingProduct.currentPrice?.amountMicros
|
|
124
|
+
? pkg.rcBillingProduct.currentPrice.amountMicros / 1000000
|
|
125
|
+
: 0,
|
|
126
|
+
priceString: pkg.rcBillingProduct.currentPrice?.formattedPrice || '$0',
|
|
127
|
+
currencyCode: pkg.rcBillingProduct.currentPrice?.currency || 'USD',
|
|
128
|
+
normalPeriodDuration: pkg.rcBillingProduct.normalPeriodDuration || null,
|
|
129
|
+
subscriptionOptions: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
130
|
+
? {
|
|
131
|
+
[pkg.rcBillingProduct.defaultSubscriptionOption.id]: {
|
|
132
|
+
id: pkg.rcBillingProduct.defaultSubscriptionOption.id,
|
|
133
|
+
trial: pkg.rcBillingProduct.defaultSubscriptionOption.trial
|
|
134
|
+
? {
|
|
135
|
+
periodDuration: pkg.rcBillingProduct.defaultSubscriptionOption.trial
|
|
136
|
+
.periodDuration || null,
|
|
137
|
+
price: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
138
|
+
.trial.price?.amountMicros
|
|
139
|
+
? pkg.rcBillingProduct.defaultSubscriptionOption
|
|
140
|
+
.trial.price.amountMicros / 1000000
|
|
141
|
+
: 0,
|
|
142
|
+
priceString: pkg.rcBillingProduct.defaultSubscriptionOption.trial
|
|
143
|
+
.price?.formattedPrice || '$0',
|
|
144
|
+
cycleCount: pkg.rcBillingProduct.defaultSubscriptionOption.trial
|
|
145
|
+
.cycleCount || 1,
|
|
146
|
+
}
|
|
147
|
+
: null,
|
|
148
|
+
introPrice: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
149
|
+
.introPrice
|
|
150
|
+
? {
|
|
151
|
+
periodDuration: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
152
|
+
.introPrice.periodDuration || null,
|
|
153
|
+
price: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
154
|
+
.introPrice.price?.amountMicros
|
|
155
|
+
? pkg.rcBillingProduct.defaultSubscriptionOption
|
|
156
|
+
.introPrice.price.amountMicros / 1000000
|
|
157
|
+
: 0,
|
|
158
|
+
priceString: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
159
|
+
.introPrice.price?.formattedPrice || '$0',
|
|
160
|
+
cycleCount: pkg.rcBillingProduct.defaultSubscriptionOption
|
|
161
|
+
.introPrice.cycleCount || 1,
|
|
162
|
+
}
|
|
163
|
+
: null,
|
|
164
|
+
},
|
|
165
|
+
}
|
|
166
|
+
: undefined,
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
const all = {};
|
|
170
|
+
for (const [key, offering] of Object.entries(offerings.all)) {
|
|
171
|
+
all[key] = {
|
|
172
|
+
identifier: offering.identifier,
|
|
173
|
+
metadata: offering.metadata || null,
|
|
174
|
+
availablePackages: offering.availablePackages.map(convertPackage),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
all,
|
|
179
|
+
current: offerings.current
|
|
180
|
+
? {
|
|
181
|
+
identifier: offerings.current.identifier,
|
|
182
|
+
metadata: offerings.current.metadata || null,
|
|
183
|
+
availablePackages: offerings.current.availablePackages.map(convertPackage),
|
|
184
|
+
}
|
|
185
|
+
: null,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
console.error('[revenuecat-web] Failed to get offerings:', error);
|
|
190
|
+
return { all: {}, current: null };
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
async getCustomerInfo() {
|
|
194
|
+
// Return empty customer info if no user is set
|
|
195
|
+
if (!currentUserId) {
|
|
196
|
+
return { activeSubscriptions: [], entitlements: { active: {} } };
|
|
197
|
+
}
|
|
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.7",
|
|
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",
|