@classytic/revenue 1.1.4 → 2.0.0
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/CHANGELOG.md +90 -0
- package/README.md +638 -632
- package/dist/audit-B39B0Sdq.mjs +53 -0
- package/dist/audit-DZ0eTr9g.d.mts +89 -0
- package/dist/bridges/index.d.mts +2 -0
- package/dist/bridges/index.mjs +1 -0
- package/dist/context-DRqSeTPM.d.mts +35 -0
- package/dist/core/state-machines.d.mts +35 -0
- package/dist/core/state-machines.mjs +134 -0
- package/dist/engine-types-CcjIb4Fy.d.mts +611 -0
- package/dist/enums/index.d.mts +3 -157
- package/dist/enums/index.mjs +3 -55
- package/dist/errors-DHa8JVQ-.mjs +92 -0
- package/dist/escrow.schema-BBv9oVEW.mjs +322 -0
- package/dist/escrow.schema-CC8XuD46.d.mts +629 -0
- package/dist/event-constants-CEMitnIV.mjs +53 -0
- package/dist/events/index.d.mts +3 -0
- package/dist/events/index.mjs +4 -0
- package/dist/index.d.mts +77 -9
- package/dist/index.mjs +465 -29
- package/dist/monetization.enums-BtiU3t8o.mjs +39 -0
- package/dist/monetization.enums-D2xbxXJM.d.mts +34 -0
- package/dist/plugins/plugin.interface.d.mts +28 -0
- package/dist/plugins/plugin.interface.mjs +26 -0
- package/dist/providers/index.d.mts +2 -3
- package/dist/providers/index.mjs +2 -2
- package/dist/{base-DCoyIUj6.mjs → registry-DhFMsSn5.mjs} +34 -36
- package/dist/{base-CsTlVQJe.d.mts → registry-SvIGPAx_.d.mts} +73 -66
- package/dist/repositories/create-repositories.d.mts +21 -0
- package/dist/repositories/create-repositories.mjs +12 -0
- package/dist/revenue-bridges-sdlrR85c.d.mts +145 -0
- package/dist/revenue-event-catalog-BX3g7RUi.d.mts +823 -0
- package/dist/revenue-event-catalog-LqxPnsU_.mjs +388 -0
- package/dist/settlement.repository-Cy3mMWGH.mjs +771 -0
- package/dist/shared/index.d.mts +2 -0
- package/dist/shared/index.mjs +4 -0
- package/dist/split.enums-CQE3ekH1.mjs +172 -0
- package/dist/split.enums-Dw4zCrcZ.d.mts +154 -0
- package/dist/splits-BAfY-a9P.mjs +123 -0
- package/dist/validators/index.d.mts +2 -0
- package/dist/validators/index.mjs +3 -0
- package/package.json +33 -37
- package/dist/application/services/index.d.mts +0 -4
- package/dist/application/services/index.mjs +0 -3
- package/dist/category-resolver-DV83N8ok.mjs +0 -284
- package/dist/commission-split-BzB8cd39.mjs +0 -485
- package/dist/core/events.d.mts +0 -294
- package/dist/core/events.mjs +0 -100
- package/dist/core/index.d.mts +0 -9
- package/dist/core/index.mjs +0 -8
- package/dist/errors-rRdOqnWx.d.mts +0 -787
- package/dist/escrow.enums-CZGrrdg7.mjs +0 -101
- package/dist/escrow.enums-DwdLuuve.d.mts +0 -78
- package/dist/idempotency-DaYcUGY1.mjs +0 -172
- package/dist/index-Dsp7H5Wb.d.mts +0 -471
- package/dist/infrastructure/plugins/index.d.mts +0 -239
- package/dist/infrastructure/plugins/index.mjs +0 -345
- package/dist/money-CvrDOijQ.mjs +0 -271
- package/dist/money-DPG8AtJ8.d.mts +0 -112
- package/dist/payment.enums-HAuAS9Pp.d.mts +0 -70
- package/dist/payment.enums-tEFVa-Xp.mjs +0 -69
- package/dist/plugin-BbK0OVHy.d.mts +0 -327
- package/dist/plugin-Cd_V04Em.mjs +0 -210
- package/dist/reconciliation/index.d.mts +0 -193
- package/dist/reconciliation/index.mjs +0 -192
- package/dist/retry-HHCOXYdn.d.mts +0 -186
- package/dist/revenue-BhdS7nXh.mjs +0 -553
- package/dist/schemas/index.d.mts +0 -2665
- package/dist/schemas/index.mjs +0 -717
- package/dist/schemas/validation.d.mts +0 -375
- package/dist/schemas/validation.mjs +0 -325
- package/dist/settlement.enums-DFhkqZEY.d.mts +0 -132
- package/dist/settlement.schema-DnNSFpGd.d.mts +0 -344
- package/dist/settlement.service-DjzAjezU.d.mts +0 -594
- package/dist/settlement.service-DmdKv0Zu.mjs +0 -2511
- package/dist/split.enums-BrjabxIX.mjs +0 -86
- package/dist/split.enums-DmskfLOM.d.mts +0 -43
- package/dist/tax-BoCt5cEd.d.mts +0 -61
- package/dist/tax-EQ15DO81.mjs +0 -162
- package/dist/transaction.enums-pCyMFT4Z.mjs +0 -96
- package/dist/utils/index.d.mts +0 -428
- package/dist/utils/index.mjs +0 -346
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
import { t as LIBRARY_CATEGORIES } from "./transaction.enums-pCyMFT4Z.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/core/errors.ts
|
|
4
|
-
/**
|
|
5
|
-
* Base Revenue Error
|
|
6
|
-
*/
|
|
7
|
-
var RevenueError = class extends Error {
|
|
8
|
-
code;
|
|
9
|
-
retryable;
|
|
10
|
-
metadata;
|
|
11
|
-
constructor(message, code, options = {}) {
|
|
12
|
-
super(message);
|
|
13
|
-
this.name = this.constructor.name;
|
|
14
|
-
this.code = code;
|
|
15
|
-
this.retryable = options.retryable ?? false;
|
|
16
|
-
this.metadata = options.metadata ?? {};
|
|
17
|
-
Error.captureStackTrace(this, this.constructor);
|
|
18
|
-
}
|
|
19
|
-
toJSON() {
|
|
20
|
-
return {
|
|
21
|
-
name: this.name,
|
|
22
|
-
message: this.message,
|
|
23
|
-
code: this.code,
|
|
24
|
-
retryable: this.retryable,
|
|
25
|
-
metadata: this.metadata
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Configuration Errors
|
|
31
|
-
*/
|
|
32
|
-
var ConfigurationError = class extends RevenueError {
|
|
33
|
-
constructor(message, metadata = {}) {
|
|
34
|
-
super(message, "CONFIGURATION_ERROR", {
|
|
35
|
-
retryable: false,
|
|
36
|
-
metadata
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
var ModelNotRegisteredError = class extends ConfigurationError {
|
|
41
|
-
constructor(modelName) {
|
|
42
|
-
super(`Model "${modelName}" is not registered. Register it via createRevenue({ models: { ${modelName}: ... } })`, { modelName });
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Provider Errors
|
|
47
|
-
*/
|
|
48
|
-
var ProviderError = class extends RevenueError {
|
|
49
|
-
constructor(message, code, options = {}) {
|
|
50
|
-
super(message, code, options);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
var ProviderNotFoundError = class extends ProviderError {
|
|
54
|
-
constructor(providerName, availableProviders = []) {
|
|
55
|
-
super(`Payment provider "${providerName}" not found. Available: ${availableProviders.join(", ")}`, "PROVIDER_NOT_FOUND", {
|
|
56
|
-
retryable: false,
|
|
57
|
-
metadata: {
|
|
58
|
-
providerName,
|
|
59
|
-
availableProviders
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
var ProviderCapabilityError = class extends ProviderError {
|
|
65
|
-
constructor(providerName, capability) {
|
|
66
|
-
super(`Provider "${providerName}" does not support ${capability}`, "PROVIDER_CAPABILITY_NOT_SUPPORTED", {
|
|
67
|
-
retryable: false,
|
|
68
|
-
metadata: {
|
|
69
|
-
providerName,
|
|
70
|
-
capability
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
var PaymentIntentCreationError = class extends ProviderError {
|
|
76
|
-
constructor(providerName, originalError) {
|
|
77
|
-
super(`Failed to create payment intent with provider "${providerName}": ${originalError.message}`, "PAYMENT_INTENT_CREATION_FAILED", {
|
|
78
|
-
retryable: true,
|
|
79
|
-
metadata: {
|
|
80
|
-
providerName,
|
|
81
|
-
originalError: originalError.message
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
var PaymentVerificationError = class extends ProviderError {
|
|
87
|
-
constructor(paymentIntentId, reason) {
|
|
88
|
-
super(`Payment verification failed for intent "${paymentIntentId}": ${reason}`, "PAYMENT_VERIFICATION_FAILED", {
|
|
89
|
-
retryable: true,
|
|
90
|
-
metadata: {
|
|
91
|
-
paymentIntentId,
|
|
92
|
-
reason
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
/**
|
|
98
|
-
* Resource Not Found Errors
|
|
99
|
-
*/
|
|
100
|
-
var NotFoundError = class extends RevenueError {
|
|
101
|
-
constructor(message, code, metadata = {}) {
|
|
102
|
-
super(message, code, {
|
|
103
|
-
retryable: false,
|
|
104
|
-
metadata
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
var SubscriptionNotFoundError = class extends NotFoundError {
|
|
109
|
-
constructor(subscriptionId) {
|
|
110
|
-
super(`Subscription not found: ${subscriptionId}`, "SUBSCRIPTION_NOT_FOUND", { subscriptionId });
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
var TransactionNotFoundError = class extends NotFoundError {
|
|
114
|
-
constructor(transactionId) {
|
|
115
|
-
super(`Transaction not found: ${transactionId}`, "TRANSACTION_NOT_FOUND", { transactionId });
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
/**
|
|
119
|
-
* Validation Errors
|
|
120
|
-
*/
|
|
121
|
-
var ValidationError = class extends RevenueError {
|
|
122
|
-
constructor(message, metadata = {}) {
|
|
123
|
-
super(message, "VALIDATION_ERROR", {
|
|
124
|
-
retryable: false,
|
|
125
|
-
metadata
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
var InvalidAmountError = class extends ValidationError {
|
|
130
|
-
constructor(amount, message) {
|
|
131
|
-
super(message ?? `Invalid amount: ${amount}. Amount must be non-negative`, { amount });
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
var MissingRequiredFieldError = class extends ValidationError {
|
|
135
|
-
constructor(fieldName) {
|
|
136
|
-
super(`Missing required field: ${fieldName}`, { fieldName });
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
/**
|
|
140
|
-
* State Errors
|
|
141
|
-
*/
|
|
142
|
-
var StateError = class extends RevenueError {
|
|
143
|
-
constructor(message, code, metadata = {}) {
|
|
144
|
-
super(message, code, {
|
|
145
|
-
retryable: false,
|
|
146
|
-
metadata
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
var AlreadyVerifiedError = class extends StateError {
|
|
151
|
-
constructor(transactionId) {
|
|
152
|
-
super(`Transaction ${transactionId} is already verified`, "ALREADY_VERIFIED", { transactionId });
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
var InvalidStateTransitionError = class extends StateError {
|
|
156
|
-
constructor(resourceType, resourceId, fromState, toState) {
|
|
157
|
-
super(`Invalid state transition for ${resourceType} ${resourceId}: ${fromState} → ${toState}`, "INVALID_STATE_TRANSITION", {
|
|
158
|
-
resourceType,
|
|
159
|
-
resourceId,
|
|
160
|
-
fromState,
|
|
161
|
-
toState
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
var SubscriptionNotActiveError = class extends StateError {
|
|
166
|
-
constructor(subscriptionId, message) {
|
|
167
|
-
super(message ?? `Subscription ${subscriptionId} is not active`, "SUBSCRIPTION_NOT_ACTIVE", { subscriptionId });
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
/**
|
|
171
|
-
* Operation Errors
|
|
172
|
-
*/
|
|
173
|
-
var OperationError = class extends RevenueError {
|
|
174
|
-
constructor(message, code, options = {}) {
|
|
175
|
-
super(message, code, options);
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
var RefundNotSupportedError = class extends OperationError {
|
|
179
|
-
constructor(providerName) {
|
|
180
|
-
super(`Refunds are not supported by provider "${providerName}"`, "REFUND_NOT_SUPPORTED", {
|
|
181
|
-
retryable: false,
|
|
182
|
-
metadata: { providerName }
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
var RefundError = class extends OperationError {
|
|
187
|
-
constructor(transactionId, reason) {
|
|
188
|
-
super(`Refund failed for transaction ${transactionId}: ${reason}`, "REFUND_FAILED", {
|
|
189
|
-
retryable: true,
|
|
190
|
-
metadata: {
|
|
191
|
-
transactionId,
|
|
192
|
-
reason
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
/**
|
|
198
|
-
* Error Code Constants
|
|
199
|
-
*/
|
|
200
|
-
const ERROR_CODES = {
|
|
201
|
-
CONFIGURATION_ERROR: "CONFIGURATION_ERROR",
|
|
202
|
-
MODEL_NOT_REGISTERED: "MODEL_NOT_REGISTERED",
|
|
203
|
-
PROVIDER_NOT_FOUND: "PROVIDER_NOT_FOUND",
|
|
204
|
-
PROVIDER_CAPABILITY_NOT_SUPPORTED: "PROVIDER_CAPABILITY_NOT_SUPPORTED",
|
|
205
|
-
PAYMENT_INTENT_CREATION_FAILED: "PAYMENT_INTENT_CREATION_FAILED",
|
|
206
|
-
PAYMENT_VERIFICATION_FAILED: "PAYMENT_VERIFICATION_FAILED",
|
|
207
|
-
SUBSCRIPTION_NOT_FOUND: "SUBSCRIPTION_NOT_FOUND",
|
|
208
|
-
TRANSACTION_NOT_FOUND: "TRANSACTION_NOT_FOUND",
|
|
209
|
-
VALIDATION_ERROR: "VALIDATION_ERROR",
|
|
210
|
-
INVALID_AMOUNT: "INVALID_AMOUNT",
|
|
211
|
-
MISSING_REQUIRED_FIELD: "MISSING_REQUIRED_FIELD",
|
|
212
|
-
ALREADY_VERIFIED: "ALREADY_VERIFIED",
|
|
213
|
-
INVALID_STATE_TRANSITION: "INVALID_STATE_TRANSITION",
|
|
214
|
-
SUBSCRIPTION_NOT_ACTIVE: "SUBSCRIPTION_NOT_ACTIVE",
|
|
215
|
-
REFUND_NOT_SUPPORTED: "REFUND_NOT_SUPPORTED",
|
|
216
|
-
REFUND_FAILED: "REFUND_FAILED"
|
|
217
|
-
};
|
|
218
|
-
/**
|
|
219
|
-
* Check if error is retryable
|
|
220
|
-
*/
|
|
221
|
-
function isRetryable(error) {
|
|
222
|
-
return error instanceof RevenueError && error.retryable;
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Check if error is from revenue package
|
|
226
|
-
*/
|
|
227
|
-
function isRevenueError(error) {
|
|
228
|
-
return error instanceof RevenueError;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
//#endregion
|
|
232
|
-
//#region src/shared/utils/validators/category-resolver.ts
|
|
233
|
-
/**
|
|
234
|
-
* Category Resolver Utility
|
|
235
|
-
* @classytic/revenue
|
|
236
|
-
*
|
|
237
|
-
* Resolves transaction category based on categoryMappings
|
|
238
|
-
*/
|
|
239
|
-
/**
|
|
240
|
-
* Resolve category for a transaction based on entity and monetizationType
|
|
241
|
-
*
|
|
242
|
-
* Resolution Logic:
|
|
243
|
-
* 1. If categoryMappings[entity] exists → use it
|
|
244
|
-
* 2. Otherwise → fall back to default library category
|
|
245
|
-
*
|
|
246
|
-
* @param entity - The logical entity/identifier (e.g., 'Order', 'PlatformSubscription', 'Membership')
|
|
247
|
-
* NOTE: This is NOT a database model name - it's just a logical identifier
|
|
248
|
-
* @param monetizationType - The monetization type ('subscription', 'purchase', 'free')
|
|
249
|
-
* @param categoryMappings - User-defined category mappings from config
|
|
250
|
-
* @returns Category name for the transaction
|
|
251
|
-
*
|
|
252
|
-
* @example
|
|
253
|
-
* // With mapping defined
|
|
254
|
-
* resolveCategory('Order', 'subscription', { Order: 'order_subscription' })
|
|
255
|
-
* // Returns: 'order_subscription'
|
|
256
|
-
*
|
|
257
|
-
* @example
|
|
258
|
-
* // Without mapping, falls back to library default
|
|
259
|
-
* resolveCategory('Order', 'subscription', {})
|
|
260
|
-
* // Returns: 'subscription'
|
|
261
|
-
*
|
|
262
|
-
* @example
|
|
263
|
-
* // Different entities with different mappings
|
|
264
|
-
* const mappings = {
|
|
265
|
-
* Order: 'order_subscription',
|
|
266
|
-
* PlatformSubscription: 'platform_subscription',
|
|
267
|
-
* TenantUpgrade: 'tenant_upgrade',
|
|
268
|
-
* Membership: 'gym_membership',
|
|
269
|
-
* Enrollment: 'course_enrollment',
|
|
270
|
-
* };
|
|
271
|
-
* resolveCategory('PlatformSubscription', 'subscription', mappings)
|
|
272
|
-
* // Returns: 'platform_subscription'
|
|
273
|
-
*/
|
|
274
|
-
function resolveCategory(entity, monetizationType, categoryMappings = {}) {
|
|
275
|
-
if (entity && categoryMappings[entity]) return categoryMappings[entity];
|
|
276
|
-
switch (monetizationType) {
|
|
277
|
-
case "subscription": return LIBRARY_CATEGORIES.SUBSCRIPTION;
|
|
278
|
-
case "purchase": return LIBRARY_CATEGORIES.PURCHASE;
|
|
279
|
-
default: return LIBRARY_CATEGORIES.SUBSCRIPTION;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
//#endregion
|
|
284
|
-
export { ValidationError as C, TransactionNotFoundError as S, isRevenueError as T, RefundNotSupportedError as _, InvalidAmountError as a, SubscriptionNotActiveError as b, ModelNotRegisteredError as c, PaymentIntentCreationError as d, PaymentVerificationError as f, RefundError as g, ProviderNotFoundError as h, ERROR_CODES as i, NotFoundError as l, ProviderError as m, AlreadyVerifiedError as n, InvalidStateTransitionError as o, ProviderCapabilityError as p, ConfigurationError as r, MissingRequiredFieldError as s, resolveCategory as t, OperationError as u, RevenueError as v, isRetryable as w, SubscriptionNotFoundError as x, StateError as y };
|