@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.
Files changed (82) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +638 -632
  3. package/dist/audit-B39B0Sdq.mjs +53 -0
  4. package/dist/audit-DZ0eTr9g.d.mts +89 -0
  5. package/dist/bridges/index.d.mts +2 -0
  6. package/dist/bridges/index.mjs +1 -0
  7. package/dist/context-DRqSeTPM.d.mts +35 -0
  8. package/dist/core/state-machines.d.mts +35 -0
  9. package/dist/core/state-machines.mjs +134 -0
  10. package/dist/engine-types-CcjIb4Fy.d.mts +611 -0
  11. package/dist/enums/index.d.mts +3 -157
  12. package/dist/enums/index.mjs +3 -55
  13. package/dist/errors-DHa8JVQ-.mjs +92 -0
  14. package/dist/escrow.schema-BBv9oVEW.mjs +322 -0
  15. package/dist/escrow.schema-CC8XuD46.d.mts +629 -0
  16. package/dist/event-constants-CEMitnIV.mjs +53 -0
  17. package/dist/events/index.d.mts +3 -0
  18. package/dist/events/index.mjs +4 -0
  19. package/dist/index.d.mts +77 -9
  20. package/dist/index.mjs +465 -29
  21. package/dist/monetization.enums-BtiU3t8o.mjs +39 -0
  22. package/dist/monetization.enums-D2xbxXJM.d.mts +34 -0
  23. package/dist/plugins/plugin.interface.d.mts +28 -0
  24. package/dist/plugins/plugin.interface.mjs +26 -0
  25. package/dist/providers/index.d.mts +2 -3
  26. package/dist/providers/index.mjs +2 -2
  27. package/dist/{base-DCoyIUj6.mjs → registry-DhFMsSn5.mjs} +34 -36
  28. package/dist/{base-CsTlVQJe.d.mts → registry-SvIGPAx_.d.mts} +73 -66
  29. package/dist/repositories/create-repositories.d.mts +21 -0
  30. package/dist/repositories/create-repositories.mjs +12 -0
  31. package/dist/revenue-bridges-sdlrR85c.d.mts +145 -0
  32. package/dist/revenue-event-catalog-BX3g7RUi.d.mts +823 -0
  33. package/dist/revenue-event-catalog-LqxPnsU_.mjs +388 -0
  34. package/dist/settlement.repository-Cy3mMWGH.mjs +771 -0
  35. package/dist/shared/index.d.mts +2 -0
  36. package/dist/shared/index.mjs +4 -0
  37. package/dist/split.enums-CQE3ekH1.mjs +172 -0
  38. package/dist/split.enums-Dw4zCrcZ.d.mts +154 -0
  39. package/dist/splits-BAfY-a9P.mjs +123 -0
  40. package/dist/validators/index.d.mts +2 -0
  41. package/dist/validators/index.mjs +3 -0
  42. package/package.json +33 -37
  43. package/dist/application/services/index.d.mts +0 -4
  44. package/dist/application/services/index.mjs +0 -3
  45. package/dist/category-resolver-DV83N8ok.mjs +0 -284
  46. package/dist/commission-split-BzB8cd39.mjs +0 -485
  47. package/dist/core/events.d.mts +0 -294
  48. package/dist/core/events.mjs +0 -100
  49. package/dist/core/index.d.mts +0 -9
  50. package/dist/core/index.mjs +0 -8
  51. package/dist/errors-rRdOqnWx.d.mts +0 -787
  52. package/dist/escrow.enums-CZGrrdg7.mjs +0 -101
  53. package/dist/escrow.enums-DwdLuuve.d.mts +0 -78
  54. package/dist/idempotency-DaYcUGY1.mjs +0 -172
  55. package/dist/index-Dsp7H5Wb.d.mts +0 -471
  56. package/dist/infrastructure/plugins/index.d.mts +0 -239
  57. package/dist/infrastructure/plugins/index.mjs +0 -345
  58. package/dist/money-CvrDOijQ.mjs +0 -271
  59. package/dist/money-DPG8AtJ8.d.mts +0 -112
  60. package/dist/payment.enums-HAuAS9Pp.d.mts +0 -70
  61. package/dist/payment.enums-tEFVa-Xp.mjs +0 -69
  62. package/dist/plugin-BbK0OVHy.d.mts +0 -327
  63. package/dist/plugin-Cd_V04Em.mjs +0 -210
  64. package/dist/reconciliation/index.d.mts +0 -193
  65. package/dist/reconciliation/index.mjs +0 -192
  66. package/dist/retry-HHCOXYdn.d.mts +0 -186
  67. package/dist/revenue-BhdS7nXh.mjs +0 -553
  68. package/dist/schemas/index.d.mts +0 -2665
  69. package/dist/schemas/index.mjs +0 -717
  70. package/dist/schemas/validation.d.mts +0 -375
  71. package/dist/schemas/validation.mjs +0 -325
  72. package/dist/settlement.enums-DFhkqZEY.d.mts +0 -132
  73. package/dist/settlement.schema-DnNSFpGd.d.mts +0 -344
  74. package/dist/settlement.service-DjzAjezU.d.mts +0 -594
  75. package/dist/settlement.service-DmdKv0Zu.mjs +0 -2511
  76. package/dist/split.enums-BrjabxIX.mjs +0 -86
  77. package/dist/split.enums-DmskfLOM.d.mts +0 -43
  78. package/dist/tax-BoCt5cEd.d.mts +0 -61
  79. package/dist/tax-EQ15DO81.mjs +0 -162
  80. package/dist/transaction.enums-pCyMFT4Z.mjs +0 -96
  81. package/dist/utils/index.d.mts +0 -428
  82. 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 };