@classytic/revenue 0.2.4 → 1.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/README.md +498 -501
- package/dist/actions-CwG-b7fR.d.ts +519 -0
- package/dist/core/index.d.ts +884 -0
- package/dist/core/index.js +2941 -0
- package/dist/core/index.js.map +1 -0
- package/dist/enums/index.d.ts +130 -0
- package/dist/enums/index.js +167 -0
- package/dist/enums/index.js.map +1 -0
- package/dist/index-BnJWVXuw.d.ts +378 -0
- package/dist/index-ChVD3P9k.d.ts +504 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.js +4353 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/index.d.ts +132 -0
- package/dist/providers/index.js +122 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/retry-80lBCmSe.d.ts +234 -0
- package/dist/schemas/index.d.ts +894 -0
- package/dist/schemas/index.js +524 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/validation.d.ts +309 -0
- package/dist/schemas/validation.js +249 -0
- package/dist/schemas/validation.js.map +1 -0
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.js +1632 -0
- package/dist/services/index.js.map +1 -0
- package/dist/split.enums-DHdM1YAV.d.ts +255 -0
- package/dist/split.schema-BPdFZMbU.d.ts +958 -0
- package/dist/utils/index.d.ts +24 -0
- package/dist/utils/index.js +1067 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +48 -32
- package/core/builder.js +0 -219
- package/core/container.js +0 -119
- package/core/errors.js +0 -262
- package/dist/types/core/builder.d.ts +0 -97
- package/dist/types/core/container.d.ts +0 -57
- package/dist/types/core/errors.d.ts +0 -122
- package/dist/types/enums/escrow.enums.d.ts +0 -24
- package/dist/types/enums/index.d.ts +0 -69
- package/dist/types/enums/monetization.enums.d.ts +0 -6
- package/dist/types/enums/payment.enums.d.ts +0 -16
- package/dist/types/enums/split.enums.d.ts +0 -25
- package/dist/types/enums/subscription.enums.d.ts +0 -15
- package/dist/types/enums/transaction.enums.d.ts +0 -24
- package/dist/types/index.d.ts +0 -22
- package/dist/types/providers/base.d.ts +0 -128
- package/dist/types/schemas/escrow/hold.schema.d.ts +0 -54
- package/dist/types/schemas/escrow/index.d.ts +0 -6
- package/dist/types/schemas/index.d.ts +0 -506
- package/dist/types/schemas/split/index.d.ts +0 -8
- package/dist/types/schemas/split/split.schema.d.ts +0 -142
- package/dist/types/schemas/subscription/index.d.ts +0 -152
- package/dist/types/schemas/subscription/info.schema.d.ts +0 -128
- package/dist/types/schemas/subscription/plan.schema.d.ts +0 -39
- package/dist/types/schemas/transaction/common.schema.d.ts +0 -12
- package/dist/types/schemas/transaction/gateway.schema.d.ts +0 -86
- package/dist/types/schemas/transaction/index.d.ts +0 -202
- package/dist/types/schemas/transaction/payment.schema.d.ts +0 -145
- package/dist/types/services/escrow.service.d.ts +0 -51
- package/dist/types/services/monetization.service.d.ts +0 -193
- package/dist/types/services/payment.service.d.ts +0 -117
- package/dist/types/services/transaction.service.d.ts +0 -40
- package/dist/types/utils/category-resolver.d.ts +0 -46
- package/dist/types/utils/commission-split.d.ts +0 -56
- package/dist/types/utils/commission.d.ts +0 -29
- package/dist/types/utils/hooks.d.ts +0 -17
- package/dist/types/utils/index.d.ts +0 -6
- package/dist/types/utils/logger.d.ts +0 -12
- package/dist/types/utils/subscription/actions.d.ts +0 -28
- package/dist/types/utils/subscription/index.d.ts +0 -2
- package/dist/types/utils/subscription/period.d.ts +0 -47
- package/dist/types/utils/transaction-type.d.ts +0 -102
- package/enums/escrow.enums.js +0 -36
- package/enums/index.d.ts +0 -116
- package/enums/index.js +0 -110
- package/enums/monetization.enums.js +0 -15
- package/enums/payment.enums.js +0 -64
- package/enums/split.enums.js +0 -37
- package/enums/subscription.enums.js +0 -33
- package/enums/transaction.enums.js +0 -69
- package/index.js +0 -76
- package/providers/base.js +0 -162
- package/schemas/escrow/hold.schema.js +0 -62
- package/schemas/escrow/index.js +0 -15
- package/schemas/index.d.ts +0 -33
- package/schemas/index.js +0 -27
- package/schemas/split/index.js +0 -16
- package/schemas/split/split.schema.js +0 -86
- package/schemas/subscription/index.js +0 -17
- package/schemas/subscription/info.schema.js +0 -115
- package/schemas/subscription/plan.schema.js +0 -48
- package/schemas/transaction/common.schema.js +0 -22
- package/schemas/transaction/gateway.schema.js +0 -69
- package/schemas/transaction/index.js +0 -20
- package/schemas/transaction/payment.schema.js +0 -110
- package/services/escrow.service.js +0 -353
- package/services/monetization.service.js +0 -675
- package/services/payment.service.js +0 -535
- package/services/transaction.service.js +0 -142
- package/utils/category-resolver.js +0 -74
- package/utils/commission-split.js +0 -180
- package/utils/commission.js +0 -83
- package/utils/hooks.js +0 -44
- package/utils/index.d.ts +0 -164
- package/utils/index.js +0 -16
- package/utils/logger.js +0 -36
- package/utils/subscription/actions.js +0 -68
- package/utils/subscription/index.js +0 -20
- package/utils/subscription/period.js +0 -123
- package/utils/transaction-type.js +0 -254
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
import { Schema } from 'mongoose';
|
|
2
|
+
|
|
3
|
+
// @classytic/revenue - Enterprise Revenue Management System
|
|
4
|
+
|
|
5
|
+
var baseMetadataSchema = new Schema(
|
|
6
|
+
{
|
|
7
|
+
// Flexible key-value metadata
|
|
8
|
+
},
|
|
9
|
+
{ _id: false, strict: false }
|
|
10
|
+
);
|
|
11
|
+
var referenceSchema = {
|
|
12
|
+
referenceId: {
|
|
13
|
+
type: Schema.Types.ObjectId,
|
|
14
|
+
refPath: "referenceModel",
|
|
15
|
+
index: true
|
|
16
|
+
},
|
|
17
|
+
referenceModel: {
|
|
18
|
+
type: String,
|
|
19
|
+
enum: ["Subscription", "Order", "Membership", "Booking", "Invoice"]
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var gatewaySchema = new Schema(
|
|
23
|
+
{
|
|
24
|
+
type: {
|
|
25
|
+
type: String,
|
|
26
|
+
required: true,
|
|
27
|
+
index: true
|
|
28
|
+
},
|
|
29
|
+
sessionId: {
|
|
30
|
+
type: String,
|
|
31
|
+
sparse: true,
|
|
32
|
+
index: true
|
|
33
|
+
},
|
|
34
|
+
paymentIntentId: {
|
|
35
|
+
type: String,
|
|
36
|
+
sparse: true,
|
|
37
|
+
index: true
|
|
38
|
+
},
|
|
39
|
+
provider: {
|
|
40
|
+
type: String
|
|
41
|
+
},
|
|
42
|
+
metadata: {
|
|
43
|
+
type: Schema.Types.Mixed,
|
|
44
|
+
default: {}
|
|
45
|
+
},
|
|
46
|
+
verificationData: {
|
|
47
|
+
type: Schema.Types.Mixed
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{ _id: false }
|
|
51
|
+
);
|
|
52
|
+
var gateway_schema_default = gatewaySchema;
|
|
53
|
+
|
|
54
|
+
// src/enums/payment.enums.ts
|
|
55
|
+
var PAYMENT_STATUS = {
|
|
56
|
+
PENDING: "pending",
|
|
57
|
+
VERIFIED: "verified",
|
|
58
|
+
FAILED: "failed",
|
|
59
|
+
REFUNDED: "refunded",
|
|
60
|
+
CANCELLED: "cancelled"
|
|
61
|
+
};
|
|
62
|
+
var PAYMENT_STATUS_VALUES = Object.values(PAYMENT_STATUS);
|
|
63
|
+
|
|
64
|
+
// src/enums/subscription.enums.ts
|
|
65
|
+
var SUBSCRIPTION_STATUS = {
|
|
66
|
+
ACTIVE: "active",
|
|
67
|
+
PAUSED: "paused",
|
|
68
|
+
CANCELLED: "cancelled",
|
|
69
|
+
EXPIRED: "expired",
|
|
70
|
+
PENDING: "pending",
|
|
71
|
+
INACTIVE: "inactive"
|
|
72
|
+
};
|
|
73
|
+
var SUBSCRIPTION_STATUS_VALUES = Object.values(SUBSCRIPTION_STATUS);
|
|
74
|
+
var PLAN_KEYS = {
|
|
75
|
+
MONTHLY: "monthly",
|
|
76
|
+
QUARTERLY: "quarterly",
|
|
77
|
+
YEARLY: "yearly"
|
|
78
|
+
};
|
|
79
|
+
var PLAN_KEY_VALUES = Object.values(PLAN_KEYS);
|
|
80
|
+
|
|
81
|
+
// src/enums/escrow.enums.ts
|
|
82
|
+
var HOLD_STATUS = {
|
|
83
|
+
PENDING: "pending",
|
|
84
|
+
HELD: "held",
|
|
85
|
+
RELEASED: "released",
|
|
86
|
+
CANCELLED: "cancelled",
|
|
87
|
+
EXPIRED: "expired",
|
|
88
|
+
PARTIALLY_RELEASED: "partially_released"
|
|
89
|
+
};
|
|
90
|
+
var HOLD_STATUS_VALUES = Object.values(HOLD_STATUS);
|
|
91
|
+
var HOLD_REASON = {
|
|
92
|
+
PAYMENT_VERIFICATION: "payment_verification",
|
|
93
|
+
FRAUD_CHECK: "fraud_check",
|
|
94
|
+
MANUAL_REVIEW: "manual_review",
|
|
95
|
+
DISPUTE: "dispute",
|
|
96
|
+
COMPLIANCE: "compliance"
|
|
97
|
+
};
|
|
98
|
+
var HOLD_REASON_VALUES = Object.values(HOLD_REASON);
|
|
99
|
+
|
|
100
|
+
// src/enums/split.enums.ts
|
|
101
|
+
var SPLIT_TYPE = {
|
|
102
|
+
PLATFORM_COMMISSION: "platform_commission",
|
|
103
|
+
AFFILIATE_COMMISSION: "affiliate_commission",
|
|
104
|
+
REFERRAL_COMMISSION: "referral_commission",
|
|
105
|
+
PARTNER_COMMISSION: "partner_commission",
|
|
106
|
+
CUSTOM: "custom"
|
|
107
|
+
};
|
|
108
|
+
var SPLIT_TYPE_VALUES = Object.values(SPLIT_TYPE);
|
|
109
|
+
var SPLIT_STATUS = {
|
|
110
|
+
PENDING: "pending",
|
|
111
|
+
DUE: "due",
|
|
112
|
+
PAID: "paid",
|
|
113
|
+
WAIVED: "waived",
|
|
114
|
+
CANCELLED: "cancelled"
|
|
115
|
+
};
|
|
116
|
+
var SPLIT_STATUS_VALUES = Object.values(SPLIT_STATUS);
|
|
117
|
+
var PAYOUT_METHOD = {
|
|
118
|
+
BANK_TRANSFER: "bank_transfer",
|
|
119
|
+
MOBILE_WALLET: "mobile_wallet",
|
|
120
|
+
PLATFORM_BALANCE: "platform_balance",
|
|
121
|
+
CRYPTO: "crypto",
|
|
122
|
+
CHECK: "check",
|
|
123
|
+
MANUAL: "manual"
|
|
124
|
+
};
|
|
125
|
+
var PAYOUT_METHOD_VALUES = Object.values(PAYOUT_METHOD);
|
|
126
|
+
|
|
127
|
+
// src/schemas/transaction/payment.schema.ts
|
|
128
|
+
var currentPaymentSchema = new Schema(
|
|
129
|
+
{
|
|
130
|
+
transactionId: {
|
|
131
|
+
type: Schema.Types.ObjectId,
|
|
132
|
+
ref: "Transaction",
|
|
133
|
+
index: true
|
|
134
|
+
},
|
|
135
|
+
amount: {
|
|
136
|
+
type: Number,
|
|
137
|
+
min: 0
|
|
138
|
+
},
|
|
139
|
+
status: {
|
|
140
|
+
type: String,
|
|
141
|
+
enum: PAYMENT_STATUS_VALUES,
|
|
142
|
+
default: "pending",
|
|
143
|
+
index: true
|
|
144
|
+
},
|
|
145
|
+
method: {
|
|
146
|
+
type: String
|
|
147
|
+
// Users define payment methods in their transaction model
|
|
148
|
+
},
|
|
149
|
+
reference: {
|
|
150
|
+
type: String,
|
|
151
|
+
trim: true
|
|
152
|
+
},
|
|
153
|
+
verifiedAt: {
|
|
154
|
+
type: Date
|
|
155
|
+
},
|
|
156
|
+
verifiedBy: {
|
|
157
|
+
type: Schema.Types.ObjectId,
|
|
158
|
+
ref: "User"
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
{ _id: false }
|
|
162
|
+
);
|
|
163
|
+
var paymentSummarySchema = new Schema(
|
|
164
|
+
{
|
|
165
|
+
totalPayments: {
|
|
166
|
+
type: Number,
|
|
167
|
+
default: 0,
|
|
168
|
+
min: 0
|
|
169
|
+
},
|
|
170
|
+
totalAmountPaid: {
|
|
171
|
+
type: Number,
|
|
172
|
+
default: 0,
|
|
173
|
+
min: 0
|
|
174
|
+
},
|
|
175
|
+
lastPaymentDate: {
|
|
176
|
+
type: Date
|
|
177
|
+
},
|
|
178
|
+
lastPaymentAmount: {
|
|
179
|
+
type: Number,
|
|
180
|
+
min: 0
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
{ _id: false }
|
|
184
|
+
);
|
|
185
|
+
var paymentDetailsSchema = new Schema(
|
|
186
|
+
{
|
|
187
|
+
provider: { type: String },
|
|
188
|
+
walletNumber: { type: String },
|
|
189
|
+
walletType: { type: String },
|
|
190
|
+
trxId: { type: String },
|
|
191
|
+
bankName: { type: String },
|
|
192
|
+
accountNumber: { type: String },
|
|
193
|
+
accountName: { type: String },
|
|
194
|
+
proofUrl: { type: String }
|
|
195
|
+
},
|
|
196
|
+
{ _id: false }
|
|
197
|
+
);
|
|
198
|
+
var tenantSnapshotSchema = new Schema(
|
|
199
|
+
{
|
|
200
|
+
paymentInstructions: { type: String },
|
|
201
|
+
bkashNumber: { type: String },
|
|
202
|
+
nagadNumber: { type: String },
|
|
203
|
+
bankAccount: { type: String }
|
|
204
|
+
},
|
|
205
|
+
{ _id: false }
|
|
206
|
+
);
|
|
207
|
+
var payment_schema_default = {
|
|
208
|
+
currentPaymentSchema,
|
|
209
|
+
paymentSummarySchema,
|
|
210
|
+
paymentDetailsSchema,
|
|
211
|
+
tenantSnapshotSchema
|
|
212
|
+
};
|
|
213
|
+
var commissionSchema = new Schema(
|
|
214
|
+
{
|
|
215
|
+
// Commission rate (e.g., 0.10 for 10%)
|
|
216
|
+
rate: {
|
|
217
|
+
type: Number,
|
|
218
|
+
min: 0,
|
|
219
|
+
max: 1
|
|
220
|
+
},
|
|
221
|
+
// Gross commission amount (before gateway fees)
|
|
222
|
+
grossAmount: {
|
|
223
|
+
type: Number,
|
|
224
|
+
min: 0
|
|
225
|
+
},
|
|
226
|
+
// Gateway fee rate (e.g., 0.029 for 2.9%)
|
|
227
|
+
gatewayFeeRate: {
|
|
228
|
+
type: Number,
|
|
229
|
+
min: 0,
|
|
230
|
+
max: 1
|
|
231
|
+
},
|
|
232
|
+
// Gateway fee amount deducted from commission
|
|
233
|
+
gatewayFeeAmount: {
|
|
234
|
+
type: Number,
|
|
235
|
+
min: 0
|
|
236
|
+
},
|
|
237
|
+
// Net commission (grossAmount - gatewayFeeAmount)
|
|
238
|
+
netAmount: {
|
|
239
|
+
type: Number,
|
|
240
|
+
min: 0
|
|
241
|
+
},
|
|
242
|
+
// Commission status
|
|
243
|
+
status: {
|
|
244
|
+
type: String,
|
|
245
|
+
enum: ["pending", "paid", "waived", "reversed"],
|
|
246
|
+
default: "pending"
|
|
247
|
+
},
|
|
248
|
+
// For affiliate tracking
|
|
249
|
+
affiliate: {
|
|
250
|
+
recipientId: String,
|
|
251
|
+
recipientType: {
|
|
252
|
+
type: String,
|
|
253
|
+
enum: ["user", "organization", "partner"]
|
|
254
|
+
},
|
|
255
|
+
rate: Number,
|
|
256
|
+
grossAmount: Number,
|
|
257
|
+
netAmount: Number
|
|
258
|
+
},
|
|
259
|
+
// For multi-party splits
|
|
260
|
+
splits: [
|
|
261
|
+
{
|
|
262
|
+
type: String,
|
|
263
|
+
recipientId: String,
|
|
264
|
+
rate: Number,
|
|
265
|
+
grossAmount: Number,
|
|
266
|
+
netAmount: Number
|
|
267
|
+
}
|
|
268
|
+
]
|
|
269
|
+
},
|
|
270
|
+
{ _id: false }
|
|
271
|
+
);
|
|
272
|
+
var commission_schema_default = commissionSchema;
|
|
273
|
+
|
|
274
|
+
// src/schemas/transaction/index.ts
|
|
275
|
+
var transaction_default = {
|
|
276
|
+
baseMetadataSchema,
|
|
277
|
+
referenceSchema,
|
|
278
|
+
gatewaySchema: gateway_schema_default,
|
|
279
|
+
commissionSchema: commission_schema_default,
|
|
280
|
+
...payment_schema_default
|
|
281
|
+
};
|
|
282
|
+
var planSchema = new Schema(
|
|
283
|
+
{
|
|
284
|
+
key: {
|
|
285
|
+
type: String,
|
|
286
|
+
enum: PLAN_KEY_VALUES,
|
|
287
|
+
required: true
|
|
288
|
+
},
|
|
289
|
+
name: {
|
|
290
|
+
type: String,
|
|
291
|
+
required: true
|
|
292
|
+
},
|
|
293
|
+
description: {
|
|
294
|
+
type: String
|
|
295
|
+
},
|
|
296
|
+
amount: {
|
|
297
|
+
type: Number,
|
|
298
|
+
required: true,
|
|
299
|
+
min: 0
|
|
300
|
+
},
|
|
301
|
+
currency: {
|
|
302
|
+
type: String,
|
|
303
|
+
default: "BDT"
|
|
304
|
+
},
|
|
305
|
+
interval: {
|
|
306
|
+
type: String,
|
|
307
|
+
enum: ["day", "week", "month", "year"],
|
|
308
|
+
default: "month"
|
|
309
|
+
},
|
|
310
|
+
intervalCount: {
|
|
311
|
+
type: Number,
|
|
312
|
+
default: 1,
|
|
313
|
+
min: 1
|
|
314
|
+
},
|
|
315
|
+
features: [
|
|
316
|
+
{
|
|
317
|
+
type: String
|
|
318
|
+
}
|
|
319
|
+
],
|
|
320
|
+
metadata: {
|
|
321
|
+
type: Schema.Types.Mixed,
|
|
322
|
+
default: {}
|
|
323
|
+
},
|
|
324
|
+
isActive: {
|
|
325
|
+
type: Boolean,
|
|
326
|
+
default: true
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
{ _id: false }
|
|
330
|
+
);
|
|
331
|
+
var plan_schema_default = planSchema;
|
|
332
|
+
var subscriptionInfoSchema = new Schema(
|
|
333
|
+
{
|
|
334
|
+
planKey: {
|
|
335
|
+
type: String,
|
|
336
|
+
enum: PLAN_KEY_VALUES,
|
|
337
|
+
required: true
|
|
338
|
+
},
|
|
339
|
+
status: {
|
|
340
|
+
type: String,
|
|
341
|
+
enum: SUBSCRIPTION_STATUS_VALUES,
|
|
342
|
+
default: "pending",
|
|
343
|
+
index: true
|
|
344
|
+
},
|
|
345
|
+
isActive: {
|
|
346
|
+
type: Boolean,
|
|
347
|
+
default: false,
|
|
348
|
+
index: true
|
|
349
|
+
},
|
|
350
|
+
startDate: {
|
|
351
|
+
type: Date
|
|
352
|
+
},
|
|
353
|
+
endDate: {
|
|
354
|
+
type: Date,
|
|
355
|
+
index: true
|
|
356
|
+
},
|
|
357
|
+
canceledAt: {
|
|
358
|
+
type: Date
|
|
359
|
+
},
|
|
360
|
+
cancelAt: {
|
|
361
|
+
type: Date
|
|
362
|
+
},
|
|
363
|
+
pausedAt: {
|
|
364
|
+
type: Date
|
|
365
|
+
},
|
|
366
|
+
lastPaymentDate: {
|
|
367
|
+
type: Date
|
|
368
|
+
},
|
|
369
|
+
lastPaymentAmount: {
|
|
370
|
+
type: Number
|
|
371
|
+
},
|
|
372
|
+
renewalCount: {
|
|
373
|
+
type: Number,
|
|
374
|
+
default: 0
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
{ _id: false }
|
|
378
|
+
);
|
|
379
|
+
var info_schema_default = subscriptionInfoSchema;
|
|
380
|
+
|
|
381
|
+
// src/schemas/subscription/index.ts
|
|
382
|
+
var subscription_default = {
|
|
383
|
+
planSchema: plan_schema_default,
|
|
384
|
+
subscriptionInfoSchema: info_schema_default
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
// src/schemas/escrow/hold.schema.ts
|
|
388
|
+
var holdSchema = {
|
|
389
|
+
status: {
|
|
390
|
+
type: String,
|
|
391
|
+
enum: HOLD_STATUS_VALUES,
|
|
392
|
+
default: HOLD_STATUS.PENDING,
|
|
393
|
+
index: true
|
|
394
|
+
},
|
|
395
|
+
heldAmount: {
|
|
396
|
+
type: Number,
|
|
397
|
+
required: false
|
|
398
|
+
},
|
|
399
|
+
releasedAmount: {
|
|
400
|
+
type: Number,
|
|
401
|
+
default: 0
|
|
402
|
+
},
|
|
403
|
+
reason: {
|
|
404
|
+
type: String,
|
|
405
|
+
enum: HOLD_REASON_VALUES,
|
|
406
|
+
required: false
|
|
407
|
+
},
|
|
408
|
+
holdUntil: {
|
|
409
|
+
type: Date,
|
|
410
|
+
required: false
|
|
411
|
+
},
|
|
412
|
+
heldAt: Date,
|
|
413
|
+
releasedAt: Date,
|
|
414
|
+
cancelledAt: Date,
|
|
415
|
+
releases: [
|
|
416
|
+
{
|
|
417
|
+
amount: Number,
|
|
418
|
+
recipientId: String,
|
|
419
|
+
recipientType: String,
|
|
420
|
+
releasedAt: Date,
|
|
421
|
+
releasedBy: String,
|
|
422
|
+
reason: String,
|
|
423
|
+
metadata: Object
|
|
424
|
+
}
|
|
425
|
+
],
|
|
426
|
+
metadata: {
|
|
427
|
+
type: Object,
|
|
428
|
+
default: {}
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
var hold_schema_default = holdSchema;
|
|
432
|
+
|
|
433
|
+
// src/schemas/escrow/index.ts
|
|
434
|
+
var escrow_default = {
|
|
435
|
+
holdSchema: hold_schema_default
|
|
436
|
+
};
|
|
437
|
+
var splitSchema = new Schema(
|
|
438
|
+
{
|
|
439
|
+
type: {
|
|
440
|
+
type: String,
|
|
441
|
+
enum: SPLIT_TYPE_VALUES,
|
|
442
|
+
required: true
|
|
443
|
+
},
|
|
444
|
+
recipientId: {
|
|
445
|
+
type: String,
|
|
446
|
+
required: true,
|
|
447
|
+
index: true
|
|
448
|
+
},
|
|
449
|
+
recipientType: {
|
|
450
|
+
type: String,
|
|
451
|
+
enum: ["platform", "organization", "user", "affiliate", "partner"],
|
|
452
|
+
required: true
|
|
453
|
+
},
|
|
454
|
+
rate: {
|
|
455
|
+
type: Number,
|
|
456
|
+
required: true,
|
|
457
|
+
min: 0,
|
|
458
|
+
max: 1
|
|
459
|
+
},
|
|
460
|
+
grossAmount: {
|
|
461
|
+
type: Number,
|
|
462
|
+
required: true,
|
|
463
|
+
min: 0
|
|
464
|
+
},
|
|
465
|
+
gatewayFeeRate: {
|
|
466
|
+
type: Number,
|
|
467
|
+
default: 0,
|
|
468
|
+
min: 0,
|
|
469
|
+
max: 1
|
|
470
|
+
},
|
|
471
|
+
gatewayFeeAmount: {
|
|
472
|
+
type: Number,
|
|
473
|
+
default: 0,
|
|
474
|
+
min: 0
|
|
475
|
+
},
|
|
476
|
+
netAmount: {
|
|
477
|
+
type: Number,
|
|
478
|
+
required: true,
|
|
479
|
+
min: 0
|
|
480
|
+
},
|
|
481
|
+
status: {
|
|
482
|
+
type: String,
|
|
483
|
+
enum: SPLIT_STATUS_VALUES,
|
|
484
|
+
default: SPLIT_STATUS.PENDING,
|
|
485
|
+
index: true
|
|
486
|
+
},
|
|
487
|
+
dueDate: {
|
|
488
|
+
type: Date
|
|
489
|
+
},
|
|
490
|
+
paidDate: {
|
|
491
|
+
type: Date
|
|
492
|
+
},
|
|
493
|
+
payoutMethod: {
|
|
494
|
+
type: String,
|
|
495
|
+
enum: PAYOUT_METHOD_VALUES
|
|
496
|
+
},
|
|
497
|
+
payoutTransactionId: {
|
|
498
|
+
type: String
|
|
499
|
+
},
|
|
500
|
+
metadata: {
|
|
501
|
+
type: Schema.Types.Mixed,
|
|
502
|
+
default: {}
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
{ _id: false }
|
|
506
|
+
);
|
|
507
|
+
var split_schema_default = splitSchema;
|
|
508
|
+
|
|
509
|
+
// src/schemas/split/index.ts
|
|
510
|
+
var split_default = {
|
|
511
|
+
splitSchema: split_schema_default
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
// src/schemas/index.ts
|
|
515
|
+
var schemas_default = {
|
|
516
|
+
...transaction_default,
|
|
517
|
+
...subscription_default,
|
|
518
|
+
...escrow_default,
|
|
519
|
+
...split_default
|
|
520
|
+
};
|
|
521
|
+
|
|
522
|
+
export { baseMetadataSchema, commissionSchema, currentPaymentSchema, schemas_default as default, gatewaySchema, holdSchema, paymentDetailsSchema, paymentSummarySchema, planSchema, referenceSchema, splitSchema, subscriptionInfoSchema, tenantSnapshotSchema };
|
|
523
|
+
//# sourceMappingURL=index.js.map
|
|
524
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/schemas/transaction/common.schema.ts","../../src/schemas/transaction/gateway.schema.ts","../../src/enums/payment.enums.ts","../../src/enums/subscription.enums.ts","../../src/enums/escrow.enums.ts","../../src/enums/split.enums.ts","../../src/schemas/transaction/payment.schema.ts","../../src/schemas/transaction/commission.schema.ts","../../src/schemas/transaction/index.ts","../../src/schemas/subscription/plan.schema.ts","../../src/schemas/subscription/info.schema.ts","../../src/schemas/subscription/index.ts","../../src/schemas/escrow/hold.schema.ts","../../src/schemas/escrow/index.ts","../../src/schemas/split/split.schema.ts","../../src/schemas/split/index.ts","../../src/schemas/index.ts"],"names":["Schema"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * Common Transaction Schemas\r\n * @classytic/revenue\r\n *\r\n * Base schemas shared across transaction types\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\n\r\n/**\r\n * Base metadata schema for transactions\r\n */\r\nexport const baseMetadataSchema = new Schema(\r\n {\r\n // Flexible key-value metadata\r\n },\r\n { _id: false, strict: false }\r\n);\r\n\r\n/**\r\n * Reference schema for polymorphic associations\r\n */\r\nexport const referenceSchema = {\r\n referenceId: {\r\n type: Schema.Types.ObjectId,\r\n refPath: 'referenceModel',\r\n index: true,\r\n },\r\n referenceModel: {\r\n type: String,\r\n enum: ['Subscription', 'Order', 'Membership', 'Booking', 'Invoice'],\r\n },\r\n};\r\n\r\nexport default {\r\n baseMetadataSchema,\r\n referenceSchema,\r\n};\r\n\r\n","/**\r\n * Gateway Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for payment gateway information\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\n\r\n/**\r\n * Gateway Schema - Embedded in Transaction\r\n * Tracks payment gateway details\r\n */\r\nexport const gatewaySchema = new Schema(\r\n {\r\n type: {\r\n type: String,\r\n required: true,\r\n index: true,\r\n },\r\n sessionId: {\r\n type: String,\r\n sparse: true,\r\n index: true,\r\n },\r\n paymentIntentId: {\r\n type: String,\r\n sparse: true,\r\n index: true,\r\n },\r\n provider: {\r\n type: String,\r\n },\r\n metadata: {\r\n type: Schema.Types.Mixed,\r\n default: {},\r\n },\r\n verificationData: {\r\n type: Schema.Types.Mixed,\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default gatewaySchema;\r\n\r\n","/**\r\n * Payment Enums\r\n * @classytic/revenue\r\n *\r\n * Library-managed payment enums only.\r\n * Users define their own payment methods in their schema.\r\n */\r\n\r\n// ============ PAYMENT STATUS ============\r\n/**\r\n * Payment Status - Library-managed states\r\n */\r\nexport const PAYMENT_STATUS = {\r\n PENDING: 'pending',\r\n VERIFIED: 'verified',\r\n FAILED: 'failed',\r\n REFUNDED: 'refunded',\r\n CANCELLED: 'cancelled',\r\n} as const;\r\n\r\nexport type PaymentStatus = typeof PAYMENT_STATUS;\r\nexport type PaymentStatusValue = PaymentStatus[keyof PaymentStatus];\r\nexport const PAYMENT_STATUS_VALUES = Object.values(PAYMENT_STATUS);\r\n\r\n// ============ PAYMENT GATEWAY TYPES ============\r\n/**\r\n * Common gateway type constants for convenience\r\n *\r\n * ⚠️ IMPORTANT: These are NOT restrictions - just common reference values\r\n *\r\n * You can register ANY custom gateway provider by passing it to createRevenue():\r\n *\r\n * @example\r\n * ```typescript\r\n * const revenue = createRevenue({\r\n * providers: {\r\n * manual: new ManualProvider(),\r\n * bkash: new BkashProvider(), // ✅ Custom gateway\r\n * nagad: new NagadProvider(), // ✅ Custom gateway\r\n * stripe: new StripeProvider(), // ✅ Custom gateway\r\n * paypal: new PaypalProvider(), // ✅ Any gateway you want\r\n * }\r\n * });\r\n *\r\n * // Use by name\r\n * await revenue.monetization.create({ gateway: 'bkash', ... });\r\n * ```\r\n *\r\n * Reference values:\r\n * - MANUAL: Built-in manual provider (@classytic/revenue-manual)\r\n * - STRIPE: Stripe provider (build with @classytic/revenue-stripe)\r\n * - SSLCOMMERZ: SSLCommerz provider (build with @classytic/revenue-sslcommerz)\r\n *\r\n * Add your own: bkash, nagad, rocket, paypal, razorpay, flutterwave, etc.\r\n */\r\nexport const PAYMENT_GATEWAY_TYPE = {\r\n MANUAL: 'manual',\r\n STRIPE: 'stripe',\r\n SSLCOMMERZ: 'sslcommerz',\r\n} as const;\r\n\r\nexport type PaymentGatewayType = typeof PAYMENT_GATEWAY_TYPE;\r\nexport type PaymentGatewayTypeValue = PaymentGatewayType[keyof PaymentGatewayType];\r\nexport const PAYMENT_GATEWAY_TYPE_VALUES = Object.values(PAYMENT_GATEWAY_TYPE);\r\n\r\n// Backward compatibility alias\r\nexport const GATEWAY_TYPES = PAYMENT_GATEWAY_TYPE;\r\nexport const GATEWAY_TYPE_VALUES = PAYMENT_GATEWAY_TYPE_VALUES;\r\n\r\n","/**\r\n * Subscription Enums\r\n * @classytic/revenue\r\n *\r\n * All subscription-related enums and constants\r\n */\r\n\r\n// ============ SUBSCRIPTION STATUS ============\r\n/**\r\n * Subscription Status\r\n */\r\nexport const SUBSCRIPTION_STATUS = {\r\n ACTIVE: 'active',\r\n PAUSED: 'paused',\r\n CANCELLED: 'cancelled',\r\n EXPIRED: 'expired',\r\n PENDING: 'pending',\r\n INACTIVE: 'inactive',\r\n} as const;\r\n\r\nexport type SubscriptionStatus = typeof SUBSCRIPTION_STATUS;\r\nexport type SubscriptionStatusValue = SubscriptionStatus[keyof SubscriptionStatus];\r\nexport const SUBSCRIPTION_STATUS_VALUES = Object.values(SUBSCRIPTION_STATUS);\r\n\r\n// ============ PLAN KEYS ============\r\n/**\r\n * Supported plan intervals\r\n */\r\nexport const PLAN_KEYS = {\r\n MONTHLY: 'monthly',\r\n QUARTERLY: 'quarterly',\r\n YEARLY: 'yearly',\r\n} as const;\r\n\r\nexport type PlanKeys = typeof PLAN_KEYS;\r\nexport type PlanKeyValue = PlanKeys[keyof PlanKeys];\r\nexport const PLAN_KEY_VALUES = Object.values(PLAN_KEYS);\r\n\r\n","/**\r\n * Escrow/Hold Enums\r\n * @classytic/revenue\r\n *\r\n * Enums for platform-as-intermediary payment flow\r\n */\r\n\r\nexport const HOLD_STATUS = {\r\n PENDING: 'pending',\r\n HELD: 'held',\r\n RELEASED: 'released',\r\n CANCELLED: 'cancelled',\r\n EXPIRED: 'expired',\r\n PARTIALLY_RELEASED: 'partially_released',\r\n} as const;\r\n\r\nexport type HoldStatus = typeof HOLD_STATUS;\r\nexport type HoldStatusValue = HoldStatus[keyof HoldStatus];\r\nexport const HOLD_STATUS_VALUES = Object.values(HOLD_STATUS);\r\n\r\nexport const RELEASE_REASON = {\r\n PAYMENT_VERIFIED: 'payment_verified',\r\n MANUAL_RELEASE: 'manual_release',\r\n AUTO_RELEASE: 'auto_release',\r\n DISPUTE_RESOLVED: 'dispute_resolved',\r\n} as const;\r\n\r\nexport type ReleaseReason = typeof RELEASE_REASON;\r\nexport type ReleaseReasonValue = ReleaseReason[keyof ReleaseReason];\r\nexport const RELEASE_REASON_VALUES = Object.values(RELEASE_REASON);\r\n\r\nexport const HOLD_REASON = {\r\n PAYMENT_VERIFICATION: 'payment_verification',\r\n FRAUD_CHECK: 'fraud_check',\r\n MANUAL_REVIEW: 'manual_review',\r\n DISPUTE: 'dispute',\r\n COMPLIANCE: 'compliance',\r\n} as const;\r\n\r\nexport type HoldReason = typeof HOLD_REASON;\r\nexport type HoldReasonValue = HoldReason[keyof HoldReason];\r\nexport const HOLD_REASON_VALUES = Object.values(HOLD_REASON);\r\n\r\n","/**\r\n * Split Payment Enums\r\n * @classytic/revenue\r\n *\r\n * Enums for multi-party commission splits\r\n */\r\n\r\nexport const SPLIT_TYPE = {\r\n PLATFORM_COMMISSION: 'platform_commission',\r\n AFFILIATE_COMMISSION: 'affiliate_commission',\r\n REFERRAL_COMMISSION: 'referral_commission',\r\n PARTNER_COMMISSION: 'partner_commission',\r\n CUSTOM: 'custom',\r\n} as const;\r\n\r\nexport type SplitType = typeof SPLIT_TYPE;\r\nexport type SplitTypeValue = SplitType[keyof SplitType];\r\nexport const SPLIT_TYPE_VALUES = Object.values(SPLIT_TYPE);\r\n\r\nexport const SPLIT_STATUS = {\r\n PENDING: 'pending',\r\n DUE: 'due',\r\n PAID: 'paid',\r\n WAIVED: 'waived',\r\n CANCELLED: 'cancelled',\r\n} as const;\r\n\r\nexport type SplitStatus = typeof SPLIT_STATUS;\r\nexport type SplitStatusValue = SplitStatus[keyof SplitStatus];\r\nexport const SPLIT_STATUS_VALUES = Object.values(SPLIT_STATUS);\r\n\r\nexport const PAYOUT_METHOD = {\r\n BANK_TRANSFER: 'bank_transfer',\r\n MOBILE_WALLET: 'mobile_wallet',\r\n PLATFORM_BALANCE: 'platform_balance',\r\n CRYPTO: 'crypto',\r\n CHECK: 'check',\r\n MANUAL: 'manual',\r\n} as const;\r\n\r\nexport type PayoutMethod = typeof PAYOUT_METHOD;\r\nexport type PayoutMethodValue = PayoutMethod[keyof PayoutMethod];\r\nexport const PAYOUT_METHOD_VALUES = Object.values(PAYOUT_METHOD);\r\n\r\n","/**\r\n * Payment Schemas for Transaction Model\r\n * @classytic/revenue\r\n *\r\n * Schemas for payment tracking in transactions\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\nimport {\r\n PAYMENT_STATUS_VALUES,\r\n} from '../../enums/index.js';\r\n\r\n/**\r\n * Current Payment Schema\r\n * Use this in your model: currentPayment: { type: currentPaymentSchema }\r\n *\r\n * Tracks the latest payment transaction for an entity\r\n */\r\nexport const currentPaymentSchema = new Schema(\r\n {\r\n transactionId: {\r\n type: Schema.Types.ObjectId,\r\n ref: 'Transaction',\r\n index: true,\r\n },\r\n amount: {\r\n type: Number,\r\n min: 0,\r\n },\r\n status: {\r\n type: String,\r\n enum: PAYMENT_STATUS_VALUES,\r\n default: 'pending',\r\n index: true,\r\n },\r\n method: {\r\n type: String,\r\n // Users define payment methods in their transaction model\r\n },\r\n reference: {\r\n type: String,\r\n trim: true,\r\n },\r\n verifiedAt: {\r\n type: Date,\r\n },\r\n verifiedBy: {\r\n type: Schema.Types.ObjectId,\r\n ref: 'User',\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\n/**\r\n * Payment Summary Schema\r\n * Use this in your model: paymentSummary: { type: paymentSummarySchema }\r\n *\r\n * Tracks payment history and totals\r\n */\r\nexport const paymentSummarySchema = new Schema(\r\n {\r\n totalPayments: {\r\n type: Number,\r\n default: 0,\r\n min: 0,\r\n },\r\n totalAmountPaid: {\r\n type: Number,\r\n default: 0,\r\n min: 0,\r\n },\r\n lastPaymentDate: {\r\n type: Date,\r\n },\r\n lastPaymentAmount: {\r\n type: Number,\r\n min: 0,\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\n/**\r\n * Payment Details Schema (for manual payments)\r\n * Embedded in Transaction model\r\n */\r\nexport const paymentDetailsSchema = new Schema(\r\n {\r\n provider: { type: String },\r\n walletNumber: { type: String },\r\n walletType: { type: String },\r\n trxId: { type: String },\r\n bankName: { type: String },\r\n accountNumber: { type: String },\r\n accountName: { type: String },\r\n proofUrl: { type: String },\r\n },\r\n { _id: false }\r\n);\r\n\r\n/**\r\n * Tenant Snapshot Schema\r\n * Captures organization payment details at transaction time (audit trail)\r\n */\r\nexport const tenantSnapshotSchema = new Schema(\r\n {\r\n paymentInstructions: { type: String },\r\n bkashNumber: { type: String },\r\n nagadNumber: { type: String },\r\n bankAccount: { type: String },\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default {\r\n currentPaymentSchema,\r\n paymentSummarySchema,\r\n paymentDetailsSchema,\r\n tenantSnapshotSchema,\r\n};\r\n\r\n","/**\r\n * Commission Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for platform commission tracking\r\n * Embedded in Transaction model\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\n\r\n/**\r\n * Commission Schema - Embedded in Transaction\r\n * Tracks platform commission with gateway fee deduction\r\n *\r\n * Usage: commission: commissionSchema\r\n */\r\nexport const commissionSchema = new Schema(\r\n {\r\n // Commission rate (e.g., 0.10 for 10%)\r\n rate: {\r\n type: Number,\r\n min: 0,\r\n max: 1,\r\n },\r\n // Gross commission amount (before gateway fees)\r\n grossAmount: {\r\n type: Number,\r\n min: 0,\r\n },\r\n // Gateway fee rate (e.g., 0.029 for 2.9%)\r\n gatewayFeeRate: {\r\n type: Number,\r\n min: 0,\r\n max: 1,\r\n },\r\n // Gateway fee amount deducted from commission\r\n gatewayFeeAmount: {\r\n type: Number,\r\n min: 0,\r\n },\r\n // Net commission (grossAmount - gatewayFeeAmount)\r\n netAmount: {\r\n type: Number,\r\n min: 0,\r\n },\r\n // Commission status\r\n status: {\r\n type: String,\r\n enum: ['pending', 'paid', 'waived', 'reversed'],\r\n default: 'pending',\r\n },\r\n // For affiliate tracking\r\n affiliate: {\r\n recipientId: String,\r\n recipientType: {\r\n type: String,\r\n enum: ['user', 'organization', 'partner'],\r\n },\r\n rate: Number,\r\n grossAmount: Number,\r\n netAmount: Number,\r\n },\r\n // For multi-party splits\r\n splits: [\r\n {\r\n type: String,\r\n recipientId: String,\r\n rate: Number,\r\n grossAmount: Number,\r\n netAmount: Number,\r\n },\r\n ],\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default commissionSchema;\r\n\r\n","/**\r\n * Transaction Schemas Index\r\n * @classytic/revenue\r\n */\r\n\r\nexport * from './common.schema.js';\r\nexport * from './gateway.schema.js';\r\nexport * from './payment.schema.js';\r\nexport * from './commission.schema.js';\r\n\r\nimport { baseMetadataSchema, referenceSchema } from './common.schema.js';\r\nimport gatewaySchema from './gateway.schema.js';\r\nimport paymentSchemas from './payment.schema.js';\r\nimport commissionSchema from './commission.schema.js';\r\n\r\nexport default {\r\n baseMetadataSchema,\r\n referenceSchema,\r\n gatewaySchema,\r\n commissionSchema,\r\n ...paymentSchemas,\r\n};\r\n\r\n","/**\r\n * Plan Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for subscription plans\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\nimport { PLAN_KEY_VALUES } from '../../enums/subscription.enums.js';\r\n\r\n/**\r\n * Plan Schema - for defining subscription plans\r\n */\r\nexport const planSchema = new Schema(\r\n {\r\n key: {\r\n type: String,\r\n enum: PLAN_KEY_VALUES,\r\n required: true,\r\n },\r\n name: {\r\n type: String,\r\n required: true,\r\n },\r\n description: {\r\n type: String,\r\n },\r\n amount: {\r\n type: Number,\r\n required: true,\r\n min: 0,\r\n },\r\n currency: {\r\n type: String,\r\n default: 'BDT',\r\n },\r\n interval: {\r\n type: String,\r\n enum: ['day', 'week', 'month', 'year'],\r\n default: 'month',\r\n },\r\n intervalCount: {\r\n type: Number,\r\n default: 1,\r\n min: 1,\r\n },\r\n features: [\r\n {\r\n type: String,\r\n },\r\n ],\r\n metadata: {\r\n type: Schema.Types.Mixed,\r\n default: {},\r\n },\r\n isActive: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default planSchema;\r\n\r\n","/**\r\n * Subscription Info Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for subscription information embedded in entities\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\nimport { SUBSCRIPTION_STATUS_VALUES, PLAN_KEY_VALUES } from '../../enums/subscription.enums.js';\r\n\r\n/**\r\n * Subscription Info Schema\r\n * Use this in your entity models that have subscriptions\r\n *\r\n * @example\r\n * const OrganizationSchema = new Schema({\r\n * name: String,\r\n * subscription: { type: subscriptionInfoSchema },\r\n * });\r\n */\r\nexport const subscriptionInfoSchema = new Schema(\r\n {\r\n planKey: {\r\n type: String,\r\n enum: PLAN_KEY_VALUES,\r\n required: true,\r\n },\r\n status: {\r\n type: String,\r\n enum: SUBSCRIPTION_STATUS_VALUES,\r\n default: 'pending',\r\n index: true,\r\n },\r\n isActive: {\r\n type: Boolean,\r\n default: false,\r\n index: true,\r\n },\r\n startDate: {\r\n type: Date,\r\n },\r\n endDate: {\r\n type: Date,\r\n index: true,\r\n },\r\n canceledAt: {\r\n type: Date,\r\n },\r\n cancelAt: {\r\n type: Date,\r\n },\r\n pausedAt: {\r\n type: Date,\r\n },\r\n lastPaymentDate: {\r\n type: Date,\r\n },\r\n lastPaymentAmount: {\r\n type: Number,\r\n },\r\n renewalCount: {\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default subscriptionInfoSchema;\r\n\r\n","/**\r\n * Subscription Schemas Index\r\n * @classytic/revenue\r\n */\r\n\r\nexport { planSchema } from './plan.schema.js';\r\nexport { subscriptionInfoSchema } from './info.schema.js';\r\n\r\nimport planSchema from './plan.schema.js';\r\nimport subscriptionInfoSchema from './info.schema.js';\r\n\r\nexport default {\r\n planSchema,\r\n subscriptionInfoSchema,\r\n};\r\n\r\n","/**\r\n * Hold/Escrow Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for platform-as-intermediary escrow flow\r\n * Spread into transaction schema when needed\r\n */\r\n\r\nimport { HOLD_STATUS, HOLD_STATUS_VALUES, HOLD_REASON_VALUES } from '../../enums/escrow.enums.js';\r\n\r\nexport const holdSchema = {\r\n status: {\r\n type: String,\r\n enum: HOLD_STATUS_VALUES,\r\n default: HOLD_STATUS.PENDING,\r\n index: true,\r\n },\r\n\r\n heldAmount: {\r\n type: Number,\r\n required: false,\r\n },\r\n\r\n releasedAmount: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n reason: {\r\n type: String,\r\n enum: HOLD_REASON_VALUES,\r\n required: false,\r\n },\r\n\r\n holdUntil: {\r\n type: Date,\r\n required: false,\r\n },\r\n\r\n heldAt: Date,\r\n releasedAt: Date,\r\n cancelledAt: Date,\r\n\r\n releases: [\r\n {\r\n amount: Number,\r\n recipientId: String,\r\n recipientType: String,\r\n releasedAt: Date,\r\n releasedBy: String,\r\n reason: String,\r\n metadata: Object,\r\n },\r\n ],\r\n\r\n metadata: {\r\n type: Object,\r\n default: {},\r\n },\r\n} as const;\r\n\r\nexport default holdSchema;\r\n\r\n","/**\r\n * Escrow Schemas Index\r\n * @classytic/revenue\r\n */\r\n\r\nexport { holdSchema } from './hold.schema.js';\r\n\r\nimport holdSchema from './hold.schema.js';\r\n\r\nexport default {\r\n holdSchema,\r\n};\r\n\r\n","/**\r\n * Split Schema\r\n * @classytic/revenue\r\n *\r\n * Schema for multi-party commission splits\r\n */\r\n\r\nimport { Schema } from 'mongoose';\r\nimport {\r\n SPLIT_TYPE_VALUES,\r\n SPLIT_STATUS,\r\n SPLIT_STATUS_VALUES,\r\n PAYOUT_METHOD_VALUES,\r\n} from '../../enums/split.enums.js';\r\n\r\n/**\r\n * Split Schema - Embedded in Transaction\r\n */\r\nexport const splitSchema = new Schema(\r\n {\r\n type: {\r\n type: String,\r\n enum: SPLIT_TYPE_VALUES,\r\n required: true,\r\n },\r\n recipientId: {\r\n type: String,\r\n required: true,\r\n index: true,\r\n },\r\n recipientType: {\r\n type: String,\r\n enum: ['platform', 'organization', 'user', 'affiliate', 'partner'],\r\n required: true,\r\n },\r\n rate: {\r\n type: Number,\r\n required: true,\r\n min: 0,\r\n max: 1,\r\n },\r\n grossAmount: {\r\n type: Number,\r\n required: true,\r\n min: 0,\r\n },\r\n gatewayFeeRate: {\r\n type: Number,\r\n default: 0,\r\n min: 0,\r\n max: 1,\r\n },\r\n gatewayFeeAmount: {\r\n type: Number,\r\n default: 0,\r\n min: 0,\r\n },\r\n netAmount: {\r\n type: Number,\r\n required: true,\r\n min: 0,\r\n },\r\n status: {\r\n type: String,\r\n enum: SPLIT_STATUS_VALUES,\r\n default: SPLIT_STATUS.PENDING,\r\n index: true,\r\n },\r\n dueDate: {\r\n type: Date,\r\n },\r\n paidDate: {\r\n type: Date,\r\n },\r\n payoutMethod: {\r\n type: String,\r\n enum: PAYOUT_METHOD_VALUES,\r\n },\r\n payoutTransactionId: {\r\n type: String,\r\n },\r\n metadata: {\r\n type: Schema.Types.Mixed,\r\n default: {},\r\n },\r\n },\r\n { _id: false }\r\n);\r\n\r\nexport default splitSchema;\r\n\r\n","/**\r\n * Split Schemas Index\r\n * @classytic/revenue\r\n */\r\n\r\nexport { splitSchema } from './split.schema.js';\r\n\r\nimport splitSchema from './split.schema.js';\r\n\r\nexport default {\r\n splitSchema,\r\n};\r\n\r\n","/**\r\n * Schema Index\r\n * @classytic/revenue\r\n *\r\n * Core schemas for injection into your models\r\n *\r\n * Note: Enums are separate. Import them from '@classytic/revenue/enums'\r\n */\r\n\r\n// Re-export core schemas only\r\nexport * from './transaction/index.js';\r\nexport * from './subscription/index.js';\r\nexport * from './escrow/index.js';\r\nexport * from './split/index.js';\r\n\r\n// Default export with core schemas\r\nimport transactionSchemas from './transaction/index.js';\r\nimport subscriptionSchemas from './subscription/index.js';\r\nimport escrowSchemas from './escrow/index.js';\r\nimport splitSchemas from './split/index.js';\r\n\r\nexport default {\r\n ...transactionSchemas,\r\n ...subscriptionSchemas,\r\n ...escrowSchemas,\r\n ...splitSchemas,\r\n};\r\n\r\n"]}
|