feeef 0.1.2 → 0.1.4
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/build/index.js +112 -52
- package/build/index.js.map +1 -1
- package/build/src/core/entities/store.d.ts +1 -0
- package/build/src/feeef/validators/auth.d.ts +44 -1
- package/build/src/feeef/validators/helpers.d.ts +18 -1
- package/build/src/feeef/validators/order.d.ts +177 -38
- package/build/src/feeef/validators/product.d.ts +132 -14
- package/build/src/feeef/validators/shipping_method.d.ts +9 -9
- package/build/src/feeef/validators/stores.d.ts +289 -16
- package/build/src/feeef/validators/user_stores.d.ts +296 -16
- package/build/src/feeef/validators/users.d.ts +2 -2
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -27,6 +27,10 @@ var StoreDecorationSchema = vine.object({
|
|
|
27
27
|
showStoreNameInHeader: vine.boolean().optional(),
|
|
28
28
|
metadata: vine.any().optional()
|
|
29
29
|
});
|
|
30
|
+
var CustomOrderTagSchema = vine.object({
|
|
31
|
+
name: vine.string().minLength(1).maxLength(20),
|
|
32
|
+
color: vine.number().min(0).max(4294967295)
|
|
33
|
+
});
|
|
30
34
|
var EmbaddedCategorySchema = vine.object({
|
|
31
35
|
name: vine.string().minLength(2).maxLength(32),
|
|
32
36
|
description: vine.string().minLength(2).maxLength(255).optional(),
|
|
@@ -47,9 +51,10 @@ var EmbaddedAddressSchema = vine.object({
|
|
|
47
51
|
var EmbaddedContactSchema = vine.object({
|
|
48
52
|
type: vine.string().minLength(2).maxLength(32),
|
|
49
53
|
value: vine.string().minLength(2).maxLength(255),
|
|
54
|
+
name: vine.string().minLength(2).maxLength(32).optional(),
|
|
50
55
|
metadata: vine.object({}).optional()
|
|
51
56
|
});
|
|
52
|
-
var
|
|
57
|
+
var StoreBannerSchema = vine.object({
|
|
53
58
|
url: vine.string().url().optional(),
|
|
54
59
|
title: vine.string(),
|
|
55
60
|
enabled: vine.boolean().optional(),
|
|
@@ -59,58 +64,48 @@ var StoreBunner = vine.object({
|
|
|
59
64
|
// src/feeef/validators/auth.ts
|
|
60
65
|
var PhoneShema = vine2.string().regex(/^0(5|6|7)\d{8}$|^0(2)\d{7}$/);
|
|
61
66
|
var SignupSchema = vine2.object({
|
|
67
|
+
// referral is user id, nust be exists
|
|
68
|
+
referral: vine2.string().optional().nullable(),
|
|
69
|
+
// .exists(async (db, value, field) => {
|
|
70
|
+
// const user = await db.from('users').where('id', value).first()
|
|
71
|
+
// return !!user
|
|
72
|
+
// })
|
|
62
73
|
name: vine2.string().minLength(2).maxLength(32),
|
|
63
74
|
email: vine2.string(),
|
|
64
|
-
// .unique(async (db, value, field) => {
|
|
65
|
-
// const user = await db.from('users').where('email', value).first()
|
|
66
|
-
// return !user
|
|
67
|
-
// })
|
|
68
75
|
phone: PhoneShema.optional(),
|
|
69
76
|
photoFile: ImageFileSchema.optional(),
|
|
70
77
|
photoUrl: vine2.string().optional(),
|
|
71
|
-
password: vine2.string().minLength(8).maxLength(32)
|
|
78
|
+
password: vine2.string().minLength(8).maxLength(32),
|
|
79
|
+
fcmToken: vine2.string().optional().nullable()
|
|
72
80
|
});
|
|
73
81
|
var SigninSchema = vine2.object({
|
|
74
82
|
email: vine2.string().email(),
|
|
75
|
-
password: vine2.string().minLength(8).maxLength(32)
|
|
83
|
+
password: vine2.string().minLength(8).maxLength(32),
|
|
84
|
+
fcmToken: vine2.string().optional().nullable()
|
|
85
|
+
});
|
|
86
|
+
var ResetPasswordSchema = vine2.object({
|
|
87
|
+
email: vine2.string().email()
|
|
88
|
+
});
|
|
89
|
+
var ResetPasswordWithTokenSchema = vine2.object({
|
|
90
|
+
uid: vine2.string(),
|
|
91
|
+
token: vine2.string()
|
|
92
|
+
});
|
|
93
|
+
var SigninWithTokenSchema = vine2.object({
|
|
94
|
+
token: vine2.string()
|
|
76
95
|
});
|
|
77
96
|
var AuthUpdateUserSchema = vine2.object({
|
|
78
97
|
name: vine2.string().minLength(2).maxLength(32).optional(),
|
|
79
98
|
email: vine2.string().optional(),
|
|
80
99
|
phone: PhoneShema.optional(),
|
|
81
100
|
// for upload file
|
|
82
|
-
photoFile: vine2.any(),
|
|
101
|
+
photoFile: vine2.any().optional(),
|
|
83
102
|
photoUrl: vine2.string().optional(),
|
|
84
103
|
oldPassword: vine2.string().minLength(8).maxLength(32).optional(),
|
|
85
104
|
newPassword: vine2.string().minLength(8).maxLength(32).notSameAs("oldPassword").optional()
|
|
86
105
|
});
|
|
87
106
|
|
|
88
|
-
// src/core/entities/order.ts
|
|
89
|
-
var OrderStatus = /* @__PURE__ */ ((OrderStatus2) => {
|
|
90
|
-
OrderStatus2["draft"] = "draft";
|
|
91
|
-
OrderStatus2["pending"] = "pending";
|
|
92
|
-
OrderStatus2["review"] = "review";
|
|
93
|
-
OrderStatus2["accepted"] = "accepted";
|
|
94
|
-
OrderStatus2["processing"] = "processing";
|
|
95
|
-
OrderStatus2["completed"] = "completed";
|
|
96
|
-
OrderStatus2["cancelled"] = "cancelled";
|
|
97
|
-
return OrderStatus2;
|
|
98
|
-
})(OrderStatus || {});
|
|
99
|
-
var PaymentStatus = /* @__PURE__ */ ((PaymentStatus2) => {
|
|
100
|
-
PaymentStatus2["unpaid"] = "unpaid";
|
|
101
|
-
PaymentStatus2["paid"] = "paid";
|
|
102
|
-
PaymentStatus2["received"] = "received";
|
|
103
|
-
return PaymentStatus2;
|
|
104
|
-
})(PaymentStatus || {});
|
|
105
|
-
var DeliveryStatus = /* @__PURE__ */ ((DeliveryStatus2) => {
|
|
106
|
-
DeliveryStatus2["pending"] = "pending";
|
|
107
|
-
DeliveryStatus2["delivering"] = "delivering";
|
|
108
|
-
DeliveryStatus2["delivered"] = "delivered";
|
|
109
|
-
DeliveryStatus2["returned"] = "returned";
|
|
110
|
-
return DeliveryStatus2;
|
|
111
|
-
})(DeliveryStatus || {});
|
|
112
|
-
|
|
113
107
|
// src/feeef/validators/order.ts
|
|
108
|
+
import { OrderStatus } from "feeef";
|
|
114
109
|
var OrderItemSchema = vine3.object({
|
|
115
110
|
productId: vine3.string(),
|
|
116
111
|
// productId: vine.string().exists(async (db, value, field) => {
|
|
@@ -118,7 +113,8 @@ var OrderItemSchema = vine3.object({
|
|
|
118
113
|
// return !!product
|
|
119
114
|
// }),
|
|
120
115
|
productName: vine3.string().optional(),
|
|
121
|
-
|
|
116
|
+
productPhotoUrl: vine3.string().optional(),
|
|
117
|
+
variantPath: vine3.any().optional(),
|
|
122
118
|
quantity: vine3.number(),
|
|
123
119
|
price: vine3.number().optional()
|
|
124
120
|
});
|
|
@@ -130,11 +126,13 @@ var GuestOrderItemSchema = vine3.object({
|
|
|
130
126
|
var SendOrderSchema = vine3.object({
|
|
131
127
|
id: vine3.string().optional(),
|
|
132
128
|
customerName: vine3.string().optional(),
|
|
129
|
+
customerNote: vine3.string().optional(),
|
|
133
130
|
customerPhone: vine3.string(),
|
|
134
131
|
// customerIp: vine.string().optional(),
|
|
135
132
|
shippingAddress: vine3.string().optional(),
|
|
136
133
|
shippingCity: vine3.string().optional(),
|
|
137
134
|
shippingState: vine3.string().optional(),
|
|
135
|
+
shippingType: vine3.enum(["home", "pickup", "store"]),
|
|
138
136
|
shippingMethodId: vine3.string().optional(),
|
|
139
137
|
paymentMethodId: vine3.string().optional(),
|
|
140
138
|
items: vine3.array(GuestOrderItemSchema).minLength(1),
|
|
@@ -151,37 +149,53 @@ var SendOrderSchema = vine3.object({
|
|
|
151
149
|
var CreateOrderSchema = vine3.object({
|
|
152
150
|
id: vine3.string().optional(),
|
|
153
151
|
customerName: vine3.string().optional(),
|
|
152
|
+
customerNote: vine3.string().optional(),
|
|
154
153
|
customerPhone: PhoneShema,
|
|
155
154
|
customerIp: vine3.string().optional(),
|
|
156
155
|
shippingAddress: vine3.string().optional(),
|
|
157
156
|
shippingCity: vine3.string().optional(),
|
|
158
157
|
shippingState: vine3.string().optional(),
|
|
158
|
+
shippingType: vine3.enum(["home", "pickup", "store"]),
|
|
159
159
|
shippingMethodId: vine3.string().optional(),
|
|
160
160
|
paymentMethodId: vine3.string().optional(),
|
|
161
161
|
items: vine3.array(OrderItemSchema).minLength(1),
|
|
162
162
|
subtotal: vine3.number().optional(),
|
|
163
163
|
shippingPrice: vine3.number().optional(),
|
|
164
|
-
total:
|
|
164
|
+
// total: vine.number().optional(),
|
|
165
|
+
manualTotal: vine3.number().optional().nullable(),
|
|
166
|
+
calculatedTotal: vine3.number().optional(),
|
|
165
167
|
discount: vine3.number().optional(),
|
|
166
168
|
coupon: vine3.string().optional(),
|
|
167
|
-
status: vine3.enum(Object.values(OrderStatus))
|
|
169
|
+
status: vine3.enum(Object.values(OrderStatus)),
|
|
168
170
|
storeId: vine3.string(),
|
|
169
|
-
metadata: vine3.
|
|
171
|
+
metadata: vine3.object({
|
|
172
|
+
customOrderTagHistories: vine3.array(
|
|
173
|
+
vine3.object({
|
|
174
|
+
tag: CustomOrderTagSchema,
|
|
175
|
+
note: vine3.string().optional(),
|
|
176
|
+
createdAt: vine3.date()
|
|
177
|
+
})
|
|
178
|
+
).optional()
|
|
179
|
+
}).optional()
|
|
170
180
|
});
|
|
171
181
|
var UpdateOrderSchema = vine3.object({
|
|
172
182
|
id: vine3.string().optional(),
|
|
173
183
|
customerName: vine3.string().optional(),
|
|
184
|
+
customerNote: vine3.string().nullable().optional(),
|
|
174
185
|
customerPhone: PhoneShema.optional(),
|
|
175
186
|
customerIp: vine3.string().optional(),
|
|
176
187
|
shippingAddress: vine3.string().optional(),
|
|
177
188
|
shippingCity: vine3.string().optional(),
|
|
178
189
|
shippingState: vine3.string().optional(),
|
|
190
|
+
shippingType: vine3.enum(["home", "pickup", "store"]).optional(),
|
|
179
191
|
shippingMethodId: vine3.string().optional(),
|
|
180
192
|
paymentMethodId: vine3.string().optional(),
|
|
181
193
|
items: vine3.array(OrderItemSchema).minLength(1).optional(),
|
|
182
194
|
subtotal: vine3.number().optional(),
|
|
183
195
|
shippingPrice: vine3.number().optional(),
|
|
184
|
-
total:
|
|
196
|
+
// total: vine.number().optional(),
|
|
197
|
+
manualTotal: vine3.number().optional().nullable(),
|
|
198
|
+
// calculatedTotal: vine.number().optional(),
|
|
185
199
|
discount: vine3.number().optional(),
|
|
186
200
|
coupon: vine3.string().optional(),
|
|
187
201
|
status: vine3.enum(Object.values(OrderStatus)).optional(),
|
|
@@ -335,18 +349,42 @@ import vine5 from "@vinejs/vine";
|
|
|
335
349
|
var DefaultShippingRatesSchema = vine5.array(
|
|
336
350
|
vine5.array(vine5.number().min(0).max(1e5).nullable()).nullable()
|
|
337
351
|
);
|
|
352
|
+
var StoreIntegrationsSchema = vine5.object({
|
|
353
|
+
metadata: vine5.object({}).optional().nullable(),
|
|
354
|
+
metaPixel: vine5.any().optional().nullable(),
|
|
355
|
+
googleAnalytics: vine5.any().optional().nullable(),
|
|
356
|
+
googleSheet: vine5.any().optional().nullable(),
|
|
357
|
+
sms: vine5.any().optional().nullable(),
|
|
358
|
+
telegram: vine5.any().optional().nullable(),
|
|
359
|
+
yalidine: vine5.any().optional().nullable(),
|
|
360
|
+
maystroDelivery: vine5.any().optional().nullable(),
|
|
361
|
+
ecotrack: vine5.any().optional().nullable(),
|
|
362
|
+
echotrak: vine5.any().optional().nullable(),
|
|
363
|
+
// deprecated
|
|
364
|
+
procolis: vine5.any().optional().nullable()
|
|
365
|
+
// [key: string]: any
|
|
366
|
+
// metadata?: Record<string, any>
|
|
367
|
+
// metaPixel?: any
|
|
368
|
+
// googleAnalytics?: any
|
|
369
|
+
// googleSheet?: any
|
|
370
|
+
// sms?: any
|
|
371
|
+
// telegram?: any
|
|
372
|
+
// yalidine?: any
|
|
373
|
+
// maystroDelivery?: any
|
|
374
|
+
// ecotrack?: any
|
|
375
|
+
});
|
|
338
376
|
var CreateUserStoreSchema = vine5.object({
|
|
339
377
|
name: vine5.string().minLength(2).maxLength(32),
|
|
340
378
|
slug: vine5.string().regex(/^[a-z0-9-]+$/).minLength(2).maxLength(32),
|
|
341
379
|
// .unique(async (db, value, field) => {
|
|
342
380
|
// const store = await db.from('stores').where('slug', value).first()
|
|
343
381
|
// return !store
|
|
344
|
-
// })
|
|
382
|
+
// }),
|
|
345
383
|
domain: vine5.object({
|
|
346
384
|
name: vine5.string().minLength(2).maxLength(32)
|
|
347
385
|
}).optional(),
|
|
348
386
|
decoration: StoreDecorationSchema.optional(),
|
|
349
|
-
banner:
|
|
387
|
+
banner: StoreBannerSchema.optional(),
|
|
350
388
|
logoUrl: vine5.string().optional(),
|
|
351
389
|
ondarkLogoUrl: vine5.string().optional(),
|
|
352
390
|
logoFile: AvatarFileSchema.optional(),
|
|
@@ -364,14 +402,14 @@ var CreateUserStoreSchema = vine5.object({
|
|
|
364
402
|
})
|
|
365
403
|
).optional(),
|
|
366
404
|
defaultShippingRates: DefaultShippingRatesSchema.optional(),
|
|
367
|
-
integrations:
|
|
405
|
+
integrations: StoreIntegrationsSchema.optional()
|
|
368
406
|
});
|
|
369
407
|
var UpdateUserStoreSchema = vine5.object({
|
|
370
408
|
name: vine5.string().minLength(2).maxLength(32).optional(),
|
|
371
409
|
slug: vine5.string().regex(/^[a-z0-9-]+$/).minLength(2).maxLength(32).optional(),
|
|
372
410
|
domain: DomainSchema.optional(),
|
|
373
411
|
decoration: StoreDecorationSchema.optional(),
|
|
374
|
-
banner:
|
|
412
|
+
banner: StoreBannerSchema.optional(),
|
|
375
413
|
logoUrl: vine5.string().nullable().optional(),
|
|
376
414
|
ondarkLogoUrl: vine5.string().nullable().optional(),
|
|
377
415
|
logoFile: AvatarFileSchema.optional(),
|
|
@@ -380,10 +418,12 @@ var UpdateUserStoreSchema = vine5.object({
|
|
|
380
418
|
title: vine5.string().minLength(2).maxLength(255).optional(),
|
|
381
419
|
description: vine5.string().minLength(2).maxLength(255).optional(),
|
|
382
420
|
addresses: vine5.array(EmbaddedAddressSchema).optional(),
|
|
383
|
-
metadata: vine5.object({
|
|
421
|
+
metadata: vine5.object({
|
|
422
|
+
customOrderTags: vine5.array(CustomOrderTagSchema).optional()
|
|
423
|
+
}).optional(),
|
|
384
424
|
contacts: vine5.array(EmbaddedContactSchema).optional(),
|
|
385
425
|
defaultShippingRates: DefaultShippingRatesSchema.optional(),
|
|
386
|
-
integrations:
|
|
426
|
+
integrations: StoreIntegrationsSchema.optional()
|
|
387
427
|
});
|
|
388
428
|
|
|
389
429
|
// src/feeef/repositories/stores.ts
|
|
@@ -422,12 +462,7 @@ var CreateUserSchema = vine7.object({
|
|
|
422
462
|
phone: vine7.string().regex(/^0(5|6|7)\d{8}$|^0(2)\d{7}$/).optional(),
|
|
423
463
|
password: vine7.string().minLength(8).maxLength(32),
|
|
424
464
|
// for upload file
|
|
425
|
-
photoFile: vine7.any(),
|
|
426
|
-
// .file({
|
|
427
|
-
// size: '1mb',
|
|
428
|
-
// extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],
|
|
429
|
-
// })
|
|
430
|
-
// .optional(),
|
|
465
|
+
photoFile: vine7.any().optional(),
|
|
431
466
|
photoUrl: vine7.string().optional(),
|
|
432
467
|
// metadata (any object)
|
|
433
468
|
metadata: vine7.object({}).optional(),
|
|
@@ -443,7 +478,7 @@ var UpdateUserSchema = vine7.object({
|
|
|
443
478
|
phone: vine7.string().regex(/^0(5|6|7)\d{8}$|^0(2)\d{7}$/).optional(),
|
|
444
479
|
password: vine7.string().minLength(8).maxLength(32).confirmed().optional(),
|
|
445
480
|
// for upload file
|
|
446
|
-
photoFile: vine7.any(),
|
|
481
|
+
photoFile: vine7.any().optional(),
|
|
447
482
|
photoUrl: vine7.string().optional(),
|
|
448
483
|
// metadata (any object)
|
|
449
484
|
metadata: vine7.object({}).optional(),
|
|
@@ -557,6 +592,31 @@ var FeeeF = class {
|
|
|
557
592
|
}
|
|
558
593
|
};
|
|
559
594
|
|
|
595
|
+
// src/core/entities/order.ts
|
|
596
|
+
var OrderStatus2 = /* @__PURE__ */ ((OrderStatus3) => {
|
|
597
|
+
OrderStatus3["draft"] = "draft";
|
|
598
|
+
OrderStatus3["pending"] = "pending";
|
|
599
|
+
OrderStatus3["review"] = "review";
|
|
600
|
+
OrderStatus3["accepted"] = "accepted";
|
|
601
|
+
OrderStatus3["processing"] = "processing";
|
|
602
|
+
OrderStatus3["completed"] = "completed";
|
|
603
|
+
OrderStatus3["cancelled"] = "cancelled";
|
|
604
|
+
return OrderStatus3;
|
|
605
|
+
})(OrderStatus2 || {});
|
|
606
|
+
var PaymentStatus = /* @__PURE__ */ ((PaymentStatus2) => {
|
|
607
|
+
PaymentStatus2["unpaid"] = "unpaid";
|
|
608
|
+
PaymentStatus2["paid"] = "paid";
|
|
609
|
+
PaymentStatus2["received"] = "received";
|
|
610
|
+
return PaymentStatus2;
|
|
611
|
+
})(PaymentStatus || {});
|
|
612
|
+
var DeliveryStatus = /* @__PURE__ */ ((DeliveryStatus2) => {
|
|
613
|
+
DeliveryStatus2["pending"] = "pending";
|
|
614
|
+
DeliveryStatus2["delivering"] = "delivering";
|
|
615
|
+
DeliveryStatus2["delivered"] = "delivered";
|
|
616
|
+
DeliveryStatus2["returned"] = "returned";
|
|
617
|
+
return DeliveryStatus2;
|
|
618
|
+
})(DeliveryStatus || {});
|
|
619
|
+
|
|
560
620
|
// src/core/entities/store.ts
|
|
561
621
|
var StoreActionType = /* @__PURE__ */ ((StoreActionType2) => {
|
|
562
622
|
StoreActionType2["link"] = "link";
|
|
@@ -633,7 +693,7 @@ export {
|
|
|
633
693
|
DeliveryStatus,
|
|
634
694
|
EmbaddedContactType,
|
|
635
695
|
FeeeF,
|
|
636
|
-
OrderStatus,
|
|
696
|
+
OrderStatus2 as OrderStatus,
|
|
637
697
|
PaymentStatus,
|
|
638
698
|
ProductStatus,
|
|
639
699
|
ProductType,
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/feeef/feeef.ts","../src/feeef/repositories/orders.ts","../src/feeef/validators/order.ts","../src/feeef/validators/auth.ts","../src/feeef/validators/helpers.ts","../src/core/entities/order.ts","../src/feeef/repositories/repository.ts","../src/feeef/repositories/products.ts","../src/feeef/repositories/stores.ts","../src/feeef/validators/user_stores.ts","../src/feeef/repositories/users.ts","../src/feeef/validators/users.ts","../src/core/entities/store.ts","../src/core/entities/product.ts","../src/core/entities/shipping_method.ts","../src/core/embadded/contact.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\n// import { buildMemoryStorage, buildWebStorage, setupCache } from 'axios-cache-interceptor'\nimport { OrderRepository } from './repositories/orders.js'\nimport { ProductRepository } from './repositories/products.js'\nimport { StoreRepository } from './repositories/stores.js'\nimport { UserRepository } from './repositories/users.js'\n\n/**\n * Configuration options for the FeeeF module.\n */\nexport interface FeeeFConfig {\n /**\n * The API key to be used for authentication.\n */\n apiKey: string\n\n /**\n * An optional Axios instance to be used for making HTTP requests.\n */\n client?: AxiosInstance\n\n /**\n * Specifies whether caching should be enabled or disabled.\n * If set to a number, it represents the maximum number of seconds to cache the responses.\n * If set to `false`, caching will be disabled (5s).\n * cannot be less than 5 seconds\n */\n cache?: false | number\n\n /**\n * The base URL for the API.\n */\n baseURL?: string\n}\n\n/**\n * Represents the FeeeF class.\n */\nexport class FeeeF {\n /**\n * The API key used for authentication.\n */\n apiKey: string\n\n /**\n * The Axios instance used for making HTTP requests.\n */\n client: AxiosInstance\n\n /**\n * The repository for managing stores.\n */\n stores: StoreRepository\n\n /**\n * The repository for managing products.\n */\n products: ProductRepository\n\n /**\n * The repository for managing users.\n */\n users: UserRepository\n\n /**\n * The repository for managing orders.\n */\n orders: OrderRepository\n\n /**\n * Constructs a new instance of the FeeeF class.\n * @param {FeeeFConfig} config - The configuration object.\n * @param {string} config.apiKey - The API key used for authentication.\n * @param {AxiosInstance} config.client - The Axios instance used for making HTTP requests.\n * @param {boolean | number} config.cache - The caching configuration. Set to `false` to disable caching, or provide a number to set the cache TTL in milliseconds.\n */\n //\n constructor({ apiKey, client, cache, baseURL = 'http://localhost:3333/api/v1' }: FeeeFConfig) {\n console.log(cache)\n this.apiKey = apiKey\n // get th \"cache\" search param\n // const urlParams = new URLSearchParams(window.location.search)\n // const cacheParam = urlParams.get('cache')\n // if is 0 or false, disable cache\n // if (cacheParam == '0') {\n this.client = client || axios\n // } else {\n // this.client = setupCache(client || axios, {\n // ttl: cache === false ? 5 : Math.max(cache!, 5) || 1 * 60 * 1000, // 1 minute by default\n // // for persistent cache use buildWebStorage\n // storage: buildWebStorage(localStorage, 'ff:'),\n // })\n // }\n // set base url\n this.client.defaults.baseURL = baseURL\n this.stores = new StoreRepository(this.client)\n this.products = new ProductRepository(this.client)\n this.users = new UserRepository(this.client)\n this.orders = new OrderRepository(this.client)\n }\n}\n","import vine from '@vinejs/vine'\nimport { InferInput } from '@vinejs/vine/types'\nimport { AxiosInstance } from 'axios'\nimport { CreateOrderSchema, SendOrderSchema } from '../validators/order.js'\nimport { ModelRepository } from './repository.js'\nimport { OrderEntity } from '../../core/entities/order.js'\n/**\n * Represents the options for tracking an order.\n */\nexport interface OrderModelTrackOptions {\n id: string\n params?: Record<string, any>\n}\n/**\n * Represents a repository for managing orders.\n */\nexport class OrderRepository extends ModelRepository<\n OrderEntity,\n InferInput<typeof CreateOrderSchema>,\n InferInput<typeof CreateOrderSchema>\n> {\n /**\n * Constructs a new OrderRepository instance.\n * @param client - The AxiosInstance used for making HTTP requests.\n */\n constructor(client: AxiosInstance) {\n super('orders', client)\n }\n\n /**\n * Sends an order from an anonymous user.\n * @param data - The data representing the order to be sent.\n * @returns A Promise that resolves to the sent OrderEntity.\n */\n async send(data: InferInput<typeof SendOrderSchema>): Promise<OrderEntity> {\n const validator = vine.compile(SendOrderSchema)\n const output = await validator.validate(data)\n const res = await this.client.post(`/${this.resource}/send`, output)\n\n // Return the sent OrderEntity\n return res.data\n }\n\n /**\n * track the order by the order id\n * it will return the order status and history\n * @param options - The options for finding the model.\n * @returns A promise that resolves to the found model.\n */\n async track(options: OrderModelTrackOptions): Promise<OrderEntity> {\n const { id, params } = options\n const res = await this.client.get(`/${this.resource}/${id}`, {\n params: {\n ...params,\n },\n })\n return res.data\n }\n}\n","// import { OrderStatus } from '#core/core'\nimport vine from '@vinejs/vine'\nimport { PhoneShema } from './auth.js'\nimport { OrderStatus } from '../../core/entities/order.js'\n\nexport const OrderItemSchema = vine.object({\n productId: vine.string(),\n // productId: vine.string().exists(async (db, value, field) => {\n // const product = await db.from('products').where('id', value).first()\n // return !!product\n // }),\n productName: vine.string().optional(),\n variant: vine.any().optional(),\n quantity: vine.number(),\n price: vine.number().optional(),\n})\n\nexport const GuestOrderItemSchema = vine.object({\n productId: vine.string(),\n variantPath: vine.string().optional(),\n quantity: vine.number(),\n})\n\nexport const SendOrderSchema = vine.object({\n id: vine.string().optional(),\n customerName: vine.string().optional(),\n customerPhone: vine.string(),\n // customerIp: vine.string().optional(),\n shippingAddress: vine.string().optional(),\n shippingCity: vine.string().optional(),\n shippingState: vine.string().optional(),\n shippingMethodId: vine.string().optional(),\n paymentMethodId: vine.string().optional(),\n items: vine.array(GuestOrderItemSchema).minLength(1),\n // subtotal: vine.number().optional(),\n // shippingPrice: vine.number().optional(),\n // total: vine.number().optional(),\n // discount: vine.number().optional(),\n coupon: vine.string().optional(),\n status: vine.enum(['pending', 'draft']),\n // TODO: validate storeId is exists and not blocked\n storeId: vine.string(),\n metadata: vine.any().optional(),\n})\n\n/// store owner section\n// CreateOrderSchema\nexport const CreateOrderSchema = vine.object({\n id: vine.string().optional(),\n customerName: vine.string().optional(),\n customerPhone: PhoneShema,\n customerIp: vine.string().optional(),\n shippingAddress: vine.string().optional(),\n shippingCity: vine.string().optional(),\n shippingState: vine.string().optional(),\n shippingMethodId: vine.string().optional(),\n paymentMethodId: vine.string().optional(),\n items: vine.array(OrderItemSchema).minLength(1),\n subtotal: vine.number().optional(),\n shippingPrice: vine.number().optional(),\n total: vine.number().optional(),\n discount: vine.number().optional(),\n coupon: vine.string().optional(),\n status: vine.enum(Object.values(OrderStatus)).optional(),\n storeId: vine.string(),\n metadata: vine.any().optional(),\n})\n\n// UpdateOrderSchema\nexport const UpdateOrderSchema = vine.object({\n id: vine.string().optional(),\n customerName: vine.string().optional(),\n customerPhone: PhoneShema.optional(),\n customerIp: vine.string().optional(),\n shippingAddress: vine.string().optional(),\n shippingCity: vine.string().optional(),\n shippingState: vine.string().optional(),\n shippingMethodId: vine.string().optional(),\n paymentMethodId: vine.string().optional(),\n items: vine.array(OrderItemSchema).minLength(1).optional(),\n subtotal: vine.number().optional(),\n shippingPrice: vine.number().optional(),\n total: vine.number().optional(),\n discount: vine.number().optional(),\n coupon: vine.string().optional(),\n status: vine.enum(Object.values(OrderStatus)).optional(),\n storeId: vine.string(),\n metadata: vine.any().optional(),\n})\n","import vine from '@vinejs/vine'\nimport { ImageFileSchema } from './helpers.js'\n\nexport const PhoneShema = vine.string().regex(/^0(5|6|7)\\d{8}$|^0(2)\\d{7}$/)\n\nexport const SignupSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32),\n email: vine.string(),\n // .unique(async (db, value, field) => {\n // const user = await db.from('users').where('email', value).first()\n // return !user\n // })\n phone: PhoneShema\n // .unique(async (db, value, field) => {\n // const user = await db.from('users').where('phone', value).first()\n // return !user\n // })\n .optional(),\n photoFile: ImageFileSchema.optional(),\n photoUrl: vine.string().optional(),\n password: vine.string().minLength(8).maxLength(32),\n})\n\nexport const SigninSchema = vine.object({\n email: vine.string().email(),\n password: vine.string().minLength(8).maxLength(32),\n})\n\nexport const AuthUpdateUserSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32).optional(),\n email: vine\n .string()\n // .unique(async (db, value, field) => {\n // const user = await db.from('users').where('email', value).first()\n // return !user\n // })\n .optional(),\n phone: PhoneShema.optional(),\n // for upload file\n photoFile: vine\n // .file({\n // size: '1mb',\n // extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],\n // })\n .any(),\n photoUrl: vine.string().optional(),\n oldPassword: vine.string().minLength(8).maxLength(32).optional(),\n newPassword: vine.string().minLength(8).maxLength(32).notSameAs('oldPassword').optional(),\n})\n","import vine from '@vinejs/vine'\n\nexport const AvatarFileSchema = vine.any()\n// .file({\n// size: '1mb',\n// extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],\n// })\n\nexport const ImageFileSchema = vine.any()\n// .file({\n// size: '1mb',\n// extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],\n// })\n\nexport const DomainSchema = vine.object({\n name: vine.string().minLength(3).maxLength(32),\n verifiedAt: vine.date().optional(),\n metadata: vine.object({}).optional(),\n})\n\n// decoration\nexport const StoreDecorationSchema = vine.object({\n primary: vine.number().min(0x0).max(0xffffffff),\n onPrimary: vine.number().min(0x0).max(0xffffffff),\n showStoreLogoInHeader: vine.boolean().optional(),\n logoFullHeight: vine.boolean().optional(),\n showStoreNameInHeader: vine.boolean().optional(),\n metadata: vine.any().optional(),\n})\n\n// export const EmbaddedImageSchema = vine.object({\n// url: vine.string().url(),\n// alt: vine.string().optional(),\n// width: vine.number().optional(),\n// height: vine.number().optional(),\n// })\n\nexport const EmbaddedCategorySchema = vine.object({\n name: vine.string().minLength(2).maxLength(32),\n description: vine.string().minLength(2).maxLength(255).optional(),\n photoUrl: vine.string().optional(),\n ondarkPhotoUrl: vine.string().optional(),\n photoFile: AvatarFileSchema.optional(),\n ondarkPhotoFile: AvatarFileSchema.optional(),\n metadata: vine.object({}).optional(),\n})\n\nexport const EmbaddedAddressSchema = vine.object({\n country: vine.string().minLength(2).maxLength(32).optional(),\n state: vine.string().minLength(2).maxLength(32).optional(),\n city: vine.string().minLength(2).maxLength(32).optional(),\n street: vine.string().minLength(2).maxLength(32).optional(),\n zip: vine.string().minLength(2).maxLength(32).optional(),\n metadata: vine.object({}).optional().optional(),\n})\n\nexport const EmbaddedContactSchema = vine.object({\n type: vine.string().minLength(2).maxLength(32),\n value: vine.string().minLength(2).maxLength(255),\n metadata: vine.object({}).optional(),\n})\n\n// StoreBunner\nexport const StoreBunner = vine.object({\n url: vine.string().url().optional(),\n title: vine.string(),\n enabled: vine.boolean().optional(),\n metadata: vine.object({}).optional(),\n})\n","export enum OrderStatus {\n draft = 'draft',\n pending = 'pending',\n review = 'review',\n accepted = 'accepted',\n processing = 'processing',\n completed = 'completed',\n cancelled = 'cancelled',\n}\n\n// PaymentStatus\nexport enum PaymentStatus {\n unpaid = 'unpaid',\n paid = 'paid',\n received = 'received',\n}\nexport enum DeliveryStatus {\n pending = 'pending',\n delivering = 'delivering',\n delivered = 'delivered',\n returned = 'returned',\n}\n\nexport interface OrderEntity {\n id: string\n customerName?: string | null\n customerPhone: string\n customerIp?: string | null\n shippingAddress?: string | null\n shippingCity?: string | null\n shippingState?: string | null\n shippingMethodId?: string | null\n paymentMethodId?: string | null\n items: OrderItem[]\n subtotal: number\n shippingPrice: number\n total: number\n discount: number\n coupon?: string | null\n storeId: string\n metadata: any\n status: OrderStatus\n paymentStatus: PaymentStatus\n deliveryStatus: DeliveryStatus\n createdAt: any\n updatedAt: any\n}\nexport interface OrderItem {\n productId: string\n productName: string\n productPhotoUrl?: string | null\n variantPath?: string\n quantity: number\n price: number\n}\n\n// order track entity\nexport interface OrderTrackEntity {\n id: string\n customerName?: string | null\n customerPhone: string\n customerIp?: string | null\n shippingAddress?: string | null\n shippingCity?: string | null\n shippingState?: string | null\n shippingMethodId?: string | null\n paymentMethodId?: string | null\n items: OrderItem[]\n subtotal: number\n shippingPrice: number\n total: number\n discount: number\n coupon?: string | null\n storeId: string\n metadata: any\n status: OrderStatus\n paymentStatus: PaymentStatus\n deliveryStatus: DeliveryStatus\n createdAt: any\n updatedAt: any\n}\n","import { AxiosInstance } from 'axios'\n\n/**\n * Represents a generic model repository.\n * @template T - The type of the model.\n * @template C - The type of the create options.\n * @template U - The type of the update options.\n */\nexport abstract class ModelRepository<T, C, U> {\n resource: string\n // client\n client: AxiosInstance\n\n /**\n * Constructs a new instance of the ModelRepository class.\n * @param resource - The resource name.\n * @param client - The Axios instance used for making HTTP requests.\n */\n constructor(resource: string, client: AxiosInstance) {\n this.resource = resource\n this.client = client\n }\n\n /**\n * Finds a model by its ID or other criteria.\n * @param options - The options for finding the model.\n * @returns A promise that resolves to the found model.\n */\n async find(options: ModelFindOptions): Promise<T> {\n const { id, by, params } = options\n const res = await this.client.get(`/${this.resource}/${id}`, {\n params: {\n by: by || 'id',\n ...params,\n },\n })\n return res.data\n }\n\n /**\n * Lists models with optional pagination and filtering.\n * @param options - The options for listing the models.\n * @returns A promise that resolves to a list of models.\n */\n async list(options?: ModelListOptions): Promise<ListResponse<T>> {\n const { page, offset, limit, params } = options || {}\n const res = await this.client.get(`/${this.resource}`, {\n params: { page, offset, limit, ...params },\n })\n // if res.data is an array then create ListResponse\n if (Array.isArray(res.data)) {\n return {\n data: res.data,\n }\n } else {\n return {\n data: res.data.data,\n total: res.data.meta.total,\n page: res.data.meta.currentPage,\n limit: res.data.meta.perPage,\n }\n }\n }\n\n /**\n * Creates a new model.\n * @param options - The options for creating the model.\n * @returns A promise that resolves to the created model.\n */\n async create(options: ModelCreateOptions<C>): Promise<T> {\n const { data, params } = options\n const res = await this.client.post(`/${this.resource}`, data, { params })\n return res.data\n }\n\n /**\n * Updates an existing model.\n * @param options - The options for updating the model.\n * @returns A promise that resolves to the updated model.\n */\n async update(options: ModelUpdateOptions<U>): Promise<T> {\n const { id, data, params } = options\n const res = await this.client.put(`/${this.resource}/${id}`, data, {\n params,\n })\n return res.data\n }\n\n /**\n * Deletes a model by its ID or other criteria.\n * @param options - The options for deleting the model.\n * @returns A promise that resolves when the model is deleted.\n */\n async delete(options: ModelFindOptions): Promise<void> {\n const { id, by, params } = options\n await this.client.delete(`/${this.resource}/${id}`, {\n params: {\n by: by || 'id',\n ...params,\n },\n })\n }\n}\n\n/**\n * Represents a list response containing an array of data of type T.\n */\nexport interface ListResponse<T> {\n data: T[]\n total?: number\n page?: number\n limit?: number\n}\n\n/**\n * Represents the options for making a request.\n */\ninterface RequestOptions {\n params?: Record<string, any>\n}\n\nexport interface ModelFindOptions extends RequestOptions {\n /**\n * The ID of the model to find or the value to find by.\n */\n id: string\n /**\n * The field to find by.\n * @default \"id\" - The ID field.\n */\n by?: string\n}\n\n/**\n * Options for listing models.\n */\nexport interface ModelListOptions extends RequestOptions {\n /**\n * The page number to retrieve.\n */\n page?: number\n\n /**\n * The offset from the beginning of the list.\n */\n offset?: number\n\n /**\n * The maximum number of models to retrieve per page.\n */\n limit?: number\n}\n\n/**\n * Represents the options for creating a model.\n * @template T - The type of data being created.\n */\nexport interface ModelCreateOptions<T> extends RequestOptions {\n data: T\n}\n\n/**\n * Represents the options for updating a model.\n * @template T - The type of the data being updated.\n */\nexport interface ModelUpdateOptions<T> extends RequestOptions {\n /**\n * The ID of the model to update.\n */\n id: string\n /**\n * The data to update the model with.\n */\n data: T\n}\n","import { InferInput } from '@vinejs/vine/types'\nimport { AxiosInstance } from 'axios'\nimport { CreateProductSchema, UpdateProductSchema } from '../validators/product.js'\nimport { ModelRepository } from './repository.js'\nimport { ProductEntity } from '../../core/entities/product.js'\n\n/**\n * Represents a repository for managing products.\n */\nexport class ProductRepository extends ModelRepository<\n ProductEntity,\n InferInput<typeof CreateProductSchema>,\n InferInput<typeof UpdateProductSchema>\n> {\n /**\n * Creates a new instance of the ProductRepository class.\n * @param client - The AxiosInstance used for making HTTP requests.\n */\n constructor(client: AxiosInstance) {\n super('products', client)\n }\n}\n","import vine from '@vinejs/vine'\nimport { InferInput } from '@vinejs/vine/types'\nimport { AxiosInstance } from 'axios'\nimport { CreateUserStoreSchema, UpdateUserStoreSchema } from '../validators/user_stores.js'\nimport { ModelRepository, ModelCreateOptions } from './repository.js'\nimport { StoreEntity } from '../../core/entities/store.js'\n\n/**\n * Repository for managing Store entities.\n */\nexport class StoreRepository extends ModelRepository<\n StoreEntity,\n InferInput<typeof CreateUserStoreSchema>,\n InferInput<typeof UpdateUserStoreSchema>\n> {\n /**\n * Constructs a new StoreRepository instance.\n * @param client The AxiosInstance used for making HTTP requests.\n */\n constructor(client: AxiosInstance) {\n super('stores', client)\n }\n\n /**\n * Creates a new Store entity.\n * @param options The options for creating the Store entity.\n * @returns A Promise that resolves to the created Store entity.\n */\n async create(\n options: ModelCreateOptions<InferInput<typeof CreateUserStoreSchema>>\n ): Promise<StoreEntity> {\n const validator = vine.compile(CreateUserStoreSchema)\n const output = await validator.validate(options.data)\n return super.create({ ...options, data: output })\n }\n}\n","import vine from '@vinejs/vine'\nimport {\n AvatarFileSchema,\n EmbaddedContactSchema,\n DomainSchema,\n EmbaddedAddressSchema,\n EmbaddedCategorySchema,\n StoreBunner,\n StoreDecorationSchema,\n} from './helpers.js'\n// \"defaultShippingRates.1\"\nexport const DefaultShippingRatesSchema = vine.array(\n vine.array(vine.number().min(0).max(100000).nullable()).nullable()\n)\n\nexport const CreateUserStoreSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32),\n slug: vine\n .string()\n .regex(/^[a-z0-9-]+$/)\n .minLength(2)\n .maxLength(32),\n // .unique(async (db, value, field) => {\n // const store = await db.from('stores').where('slug', value).first()\n // return !store\n // })\n domain: vine\n .object({\n name: vine.string().minLength(2).maxLength(32),\n })\n .optional(),\n decoration: StoreDecorationSchema.optional(),\n\n banner: StoreBunner.optional(),\n logoUrl: vine.string().optional(),\n ondarkLogoUrl: vine.string().optional(),\n logoFile: AvatarFileSchema.optional(),\n ondarkLogoFile: AvatarFileSchema.optional(),\n categories: vine.array(EmbaddedCategorySchema).optional(),\n title: vine.string().minLength(2).maxLength(255).optional(),\n description: vine.string().minLength(2).maxLength(255).optional(),\n addresses: vine.array(EmbaddedAddressSchema).optional(),\n metadata: vine.object({}).optional(),\n contacts: vine\n .array(\n vine.object({\n type: vine.string().minLength(2).maxLength(32),\n value: vine.string().minLength(2).maxLength(255),\n metadata: vine.object({}).optional(),\n })\n )\n .optional(),\n defaultShippingRates: DefaultShippingRatesSchema.optional(),\n integrations: vine.array(vine.any()).optional(),\n})\n\n// UpdateStoreSchema\nexport const UpdateUserStoreSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32).optional(),\n slug: vine\n .string()\n .regex(/^[a-z0-9-]+$/)\n .minLength(2)\n .maxLength(32)\n // .unique(async (db, value, field) => {\n // const store = await db.from('stores').where('slug', value).first()\n // return !store\n // })\n .optional(),\n domain: DomainSchema.optional(),\n decoration: StoreDecorationSchema.optional(),\n banner: StoreBunner.optional(),\n logoUrl: vine.string().nullable().optional(),\n ondarkLogoUrl: vine.string().nullable().optional(),\n logoFile: AvatarFileSchema.optional(),\n ondarkLogoFile: AvatarFileSchema.optional(),\n categories: vine.array(EmbaddedCategorySchema).optional(),\n title: vine.string().minLength(2).maxLength(255).optional(),\n description: vine.string().minLength(2).maxLength(255).optional(),\n addresses: vine.array(EmbaddedAddressSchema).optional(),\n metadata: vine.object({}).optional(),\n contacts: vine.array(EmbaddedContactSchema).optional(),\n defaultShippingRates: DefaultShippingRatesSchema.optional(),\n integrations: vine.array(vine.any()).optional(),\n})\n","import vine from '@vinejs/vine'\nimport { InferInput } from '@vinejs/vine/types'\nimport { AxiosInstance } from 'axios'\nimport { SigninSchema, AuthUpdateUserSchema } from '../validators/auth.js'\nimport { CreateUserSchema, UpdateUserSchema } from '../validators/users.js'\nimport { ModelRepository } from './repository.js'\nimport { AuthToken, UserEntity } from '../../core/entities/user.js'\n\n/**\n * Represents the response returned by the authentication process.\n */\nexport interface AuthResponse {\n token: AuthToken\n user: UserEntity\n}\n\n/**\n * Represents a repository for managing user data.\n * Extends the ModelRepository class.\n */\nexport class UserRepository extends ModelRepository<\n UserEntity,\n InferInput<typeof CreateUserSchema>,\n InferInput<typeof UpdateUserSchema>\n> {\n /**\n * Represents the authentication response.\n */\n auth: AuthResponse | null = null\n\n /**\n * Constructs a new UserRepository instance.\n * @param client - The AxiosInstance used for making HTTP requests.\n */\n constructor(client: AxiosInstance) {\n super('users', client)\n }\n\n /**\n * Signs in a user with the provided credentials.\n * @param credentials - The user credentials.\n * @returns A promise that resolves to the authentication response.\n */\n async signin(credentials: InferInput<typeof SigninSchema>): Promise<AuthResponse> {\n // validate the input\n const validator = vine.compile(SigninSchema)\n const output = await validator.validate(credentials)\n const res = await this.client.post(`/${this.resource}/auth/signin`, output)\n this.auth = res.data\n return res.data\n }\n\n /**\n * Signs up a new user with the provided credentials.\n * @param credentials - The user credentials.\n * @returns A promise that resolves to the authentication response.\n */\n async signup(credentials: InferInput<typeof CreateUserSchema>): Promise<AuthResponse> {\n // validate the input\n const validator = vine.compile(CreateUserSchema)\n const output = await validator.validate(credentials)\n const res = await this.client.post(`/${this.resource}/auth/signup`, output)\n this.auth = res.data\n return res.data\n }\n\n /**\n * Signs out the currently authenticated user.\n * @returns A promise that resolves when the user is signed out.\n */\n async signout(): Promise<void> {\n this.auth = null\n }\n\n /**\n * Updates the authenticated user's data.\n * @param data - The updated user data.\n * @returns A promise that resolves to the updated user entity.\n */\n async updateMe(data: InferInput<typeof AuthUpdateUserSchema>): Promise<UserEntity> {\n const validator = vine.compile(AuthUpdateUserSchema)\n const output = await validator.validate(data)\n const res = await this.client.put(`/${this.resource}/auth`, output)\n return res.data\n }\n}\n","import vine from '@vinejs/vine'\n\n// User Schemas\n//CreateUserSchema\nexport const CreateUserSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32),\n email: vine.string(),\n // .unique(async (db, value, field) => {\n // const user = await db.from('users').where('email', value).first()\n // return !user\n // }),\n phone: vine\n .string()\n .regex(/^0(5|6|7)\\d{8}$|^0(2)\\d{7}$/)\n // .unique(async (db, value, field) => {\n // const user = await db.from('users').where('phone', value).first()\n // return !user\n // })\n .optional(),\n password: vine.string().minLength(8).maxLength(32),\n // for upload file\n photoFile: vine.any(),\n // .file({\n // size: '1mb',\n // extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],\n // })\n // .optional(),\n photoUrl: vine.string().optional(),\n // metadata (any object)\n metadata: vine.object({}).optional(),\n // dates\n emailVerifiedAt: vine.date().optional(),\n phoneVerifiedAt: vine.date().optional(),\n verifiedAt: vine.date().optional(),\n blockedAt: vine.date().optional(),\n})\n\n//UpdateUserSchema\nexport const UpdateUserSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32).optional(),\n email: vine\n .string()\n // .unique(async (db, value, field) => {\n // const user = await db.from('users').where('email', value).first()\n // return !user\n // })\n .optional(),\n phone: vine\n .string()\n // must start with 0 then if secend is (5|6|7) then 8 digits and if secend is (2) then 7 digits\n .regex(/^0(5|6|7)\\d{8}$|^0(2)\\d{7}$/)\n .optional(),\n password: vine.string().minLength(8).maxLength(32).confirmed().optional(),\n // for upload file\n photoFile: vine\n // .file({\n // size: '1mb',\n // extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],\n // })\n .any(),\n photoUrl: vine.string().optional(),\n // metadata (any object)\n metadata: vine.object({}).optional(),\n // dates\n emailVerifiedAt: vine.date().optional(),\n phoneVerifiedAt: vine.date().optional(),\n verifiedAt: vine.string().optional(),\n blockedAt: vine.date().optional(),\n})\n","import { EmbaddedAddress } from '../embadded/address.js'\nimport { EmbaddedCategory } from '../embadded/category.js'\nimport { EmbaddedContact } from '../embadded/contact.js'\n// import { OrderEntity } from \"./order.js\";\n// import { ShippingMethodEntity } from \"./shipping_method.js\";\nimport { UserEntity } from './user.js'\nimport { DateTime } from 'luxon'\n\nexport interface StoreEntity {\n id: string\n slug: string\n banner: StoreBanner | null\n action: StoreAction | null\n domain: StoreDomain | null\n decoration: StoreDecoration | null\n name: string\n logoUrl: string | null\n ondarkLogoUrl: string | null\n userId: string\n categories: EmbaddedCategory[]\n title: string | null\n description: string | null\n addresses: EmbaddedAddress[]\n metadata: Record<string, any>\n contacts: EmbaddedContact[]\n integrations: StoreIntegrations\n verifiedAt: any | null\n blockedAt: any | null\n createdAt: any\n updatedAt: any\n // products: ProductEntity[];\n user?: UserEntity\n // orders: OrderEntity[];\n // shippingMethods: ShippingMethodEntity[];\n defaultShippingRates: (number | null)[][] | null\n\n // subscription\n subscription?: any\n due?: number\n\n // StoreConfigs\n configs?: StoreConfigs\n\n // metaPixelIds\n metaPixelIds?: string[]\n}\n\nexport interface StoreConfigs {\n currencies: StoreCurrencyConfig[]\n defaultCurrency: number\n}\n\nexport interface StoreCurrencyConfig {\n code: string\n symbol: string\n precision: number\n rate: number\n}\n\nexport interface StoreDomain {\n name: string\n verifiedAt: any | null\n metadata: Record<string, any>\n}\nexport interface StoreBanner {\n title: string\n url?: string | null\n enabled: boolean\n metadata: Record<string, any>\n}\n\nexport interface StoreDecoration {\n primary: number\n onPrimary?: number\n showStoreLogoInHeader?: boolean\n logoFullHeight?: boolean\n showStoreNameInHeader?: boolean\n metadata?: Record<string, any>\n}\n\nexport interface StoreAction {\n label: string\n url: string\n type: StoreActionType\n}\n\nexport enum StoreActionType {\n link = 'link',\n whatsapp = 'whatsapp',\n telegram = 'telegram',\n phone = 'phone',\n}\nexport interface MetaPixel {\n id: string\n key?: string\n}\nexport interface MetaPixelIntegration {\n id: string\n pixels: MetaPixel[]\n active: boolean\n metadata: Record<string, any>\n}\n\nexport interface StoreIntegrations {\n [key: string]: any\n metadata?: Record<string, any>\n\n // @Default('default') String id,\n // @Default([]) List<MetaPixel> pixels,\n // @Default(true) bool active,\n // @Default({}) Map<String, dynamic> metadata,\n metaPixel?: MetaPixelIntegration\n googleAnalytics?: any\n googleSheet?: any\n sms?: any\n telegram?: any\n yalidine?: any\n maystroDelivery?: any\n echotrak?: any\n procolis?: any\n noest?: any\n}\n\nexport enum StoreSubscriptionStatus {\n active = 'active',\n inactive = 'inactive',\n}\n\nexport enum StoreSubscriptionType {\n free = 'free',\n quota = 'quota',\n percentage = 'percentage',\n}\n\nexport interface StoreSubscription {\n type: StoreSubscriptionType\n status: StoreSubscriptionStatus\n startedAt: DateTime\n expiresAt: DateTime | null\n metadata: Record<string, any>\n}\n\nexport interface StoreFreeSubscription extends StoreSubscription {\n type: StoreSubscriptionType.free\n}\n\nexport interface StoreQuotaSubscription extends StoreSubscription {\n type: StoreSubscriptionType.quota\n quota: number\n}\n// another way is by taking percentage of the sales\nexport interface StorePercentageSubscription extends StoreSubscription {\n type: StoreSubscriptionType.percentage\n percentage: number\n}\n","import { EmbaddedCategory } from '../embadded/category.js'\nimport { ShippingMethodEntity } from './shipping_method.js'\nimport { StoreEntity } from './store.js'\n\nexport interface ProductEntity {\n id: string\n\n slug: string\n\n decoration: ProductDecoration | null\n\n name: string | null\n\n photoUrl: string | null\n\n media: string[]\n\n storeId: string\n\n shippingMethodId?: string | null\n\n category: EmbaddedCategory\n\n title: string | null\n\n description: string | null\n\n body: string | null\n\n // sku\n sku: string | null\n\n price: number\n\n cost: number | null\n\n discount: number | null\n\n stock: number\n\n sold: number\n\n views: number\n\n likes: number\n\n dislikes: number\n\n variant?: ProductVariant | null\n\n metadata: Record<string, any>\n\n status: ProductStatus\n\n type: ProductType\n\n verifiedAt: any | null\n\n blockedAt: any | null\n\n createdAt: any\n\n updatedAt: any\n\n // relations\n store?: StoreEntity\n shippingMethod?: ShippingMethodEntity\n}\n\nexport enum ProductStatus {\n draft = 'draft',\n published = 'published',\n archived = 'archived',\n deleted = 'deleted',\n}\n\nexport interface ProductDecoration {\n metadata: Record<string, any>\n}\n\nexport interface ProductVariant {\n name: string\n options: ProductVariantOption[]\n}\n\nexport interface ProductVariantOption {\n name: string\n sku?: string | null\n price?: number | null\n discount?: number | null\n stock?: number | null\n sold?: number | null\n type?: VariantOptionType\n child?: ProductVariant | null\n mediaIndex?: number | null\n hint?: string | null\n value?: any\n}\n\nexport enum VariantOptionType {\n color = 'color',\n image = 'image',\n text = 'text',\n}\n\nexport enum ProductType {\n physical = 'physical',\n digital = 'digital',\n service = 'service',\n}\n","import { OrderEntity } from './order.js'\n\nexport interface ShippingMethodEntity {\n id: string\n name: string\n description: string | null\n logoUrl: string | null\n ondarkLogoUrl: string | null\n price: number\n forks: number\n sourceId: string\n storeId: string\n rates: (number | null)[][] | null\n status: ShippingMethodStatus\n policy: ShippingMethodPolicy\n verifiedAt: any\n createdAt: any\n updatedAt: any\n orders: OrderEntity[]\n source: ShippingMethodEntity | null\n}\n\nexport enum ShippingMethodStatus {\n draft = 'draft',\n published = 'published',\n archived = 'archived',\n}\n\nexport enum ShippingMethodPolicy {\n private = 'private',\n public = 'public',\n}\n","export enum EmbaddedContactType {\n phone = 'phone',\n email = 'email',\n facebook = 'facebook',\n twitter = 'twitter',\n instagram = 'instagram',\n linkedin = 'linkedin',\n website = 'website',\n whatsapp = 'whatsapp',\n telegram = 'telegram',\n signal = 'signal',\n viber = 'viber',\n skype = 'skype',\n zoom = 'zoom',\n other = 'other',\n}\n\n// EmbaddedContactType is not enum but can only be: \"phone\" | \"email\" | \"facebook\" | \"twitter\" | \"instagram\" | \"linkedin\" | \"website\" | \"whatsapp\" | \"telegram\" | \"signal\" | \"viber\" | \"skype\" | \"zoom\" | \"other\n\nexport interface EmbaddedContact {\n type: EmbaddedContactType\n value: string\n name?: string\n metadata?: Record<string, any>\n}\n"],"mappings":"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","names":["vine","vine","vine","vine","OrderStatus","PaymentStatus","DeliveryStatus","vine","vine","vine","vine","vine","vine","vine","vine","vine","StoreActionType","StoreSubscriptionStatus","StoreSubscriptionType","ProductStatus","VariantOptionType","ProductType","ShippingMethodStatus","ShippingMethodPolicy","EmbaddedContactType"]}
|
|
1
|
+
{"version":3,"sources":["../src/feeef/feeef.ts","../src/feeef/repositories/orders.ts","../src/feeef/validators/order.ts","../src/feeef/validators/auth.ts","../src/feeef/validators/helpers.ts","../src/feeef/repositories/repository.ts","../src/feeef/repositories/products.ts","../src/feeef/repositories/stores.ts","../src/feeef/validators/user_stores.ts","../src/feeef/repositories/users.ts","../src/feeef/validators/users.ts","../src/core/entities/order.ts","../src/core/entities/store.ts","../src/core/entities/product.ts","../src/core/entities/shipping_method.ts","../src/core/embadded/contact.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\n// import { buildMemoryStorage, buildWebStorage, setupCache } from 'axios-cache-interceptor'\nimport { OrderRepository } from './repositories/orders.js'\nimport { ProductRepository } from './repositories/products.js'\nimport { StoreRepository } from './repositories/stores.js'\nimport { UserRepository } from './repositories/users.js'\n\n/**\n * Configuration options for the FeeeF module.\n */\nexport interface FeeeFConfig {\n /**\n * The API key to be used for authentication.\n */\n apiKey: string\n\n /**\n * An optional Axios instance to be used for making HTTP requests.\n */\n client?: AxiosInstance\n\n /**\n * Specifies whether caching should be enabled or disabled.\n * If set to a number, it represents the maximum number of seconds to cache the responses.\n * If set to `false`, caching will be disabled (5s).\n * cannot be less than 5 seconds\n */\n cache?: false | number\n\n /**\n * The base URL for the API.\n */\n baseURL?: string\n}\n\n/**\n * Represents the FeeeF class.\n */\nexport class FeeeF {\n /**\n * The API key used for authentication.\n */\n apiKey: string\n\n /**\n * The Axios instance used for making HTTP requests.\n */\n client: AxiosInstance\n\n /**\n * The repository for managing stores.\n */\n stores: StoreRepository\n\n /**\n * The repository for managing products.\n */\n products: ProductRepository\n\n /**\n * The repository for managing users.\n */\n users: UserRepository\n\n /**\n * The repository for managing orders.\n */\n orders: OrderRepository\n\n /**\n * Constructs a new instance of the FeeeF class.\n * @param {FeeeFConfig} config - The configuration object.\n * @param {string} config.apiKey - The API key used for authentication.\n * @param {AxiosInstance} config.client - The Axios instance used for making HTTP requests.\n * @param {boolean | number} config.cache - The caching configuration. Set to `false` to disable caching, or provide a number to set the cache TTL in milliseconds.\n */\n //\n constructor({ apiKey, client, cache, baseURL = 'http://localhost:3333/api/v1' }: FeeeFConfig) {\n console.log(cache)\n this.apiKey = apiKey\n // get th \"cache\" search param\n // const urlParams = new URLSearchParams(window.location.search)\n // const cacheParam = urlParams.get('cache')\n // if is 0 or false, disable cache\n // if (cacheParam == '0') {\n this.client = client || axios\n // } else {\n // this.client = setupCache(client || axios, {\n // ttl: cache === false ? 5 : Math.max(cache!, 5) || 1 * 60 * 1000, // 1 minute by default\n // // for persistent cache use buildWebStorage\n // storage: buildWebStorage(localStorage, 'ff:'),\n // })\n // }\n // set base url\n this.client.defaults.baseURL = baseURL\n this.stores = new StoreRepository(this.client)\n this.products = new ProductRepository(this.client)\n this.users = new UserRepository(this.client)\n this.orders = new OrderRepository(this.client)\n }\n}\n","import vine from '@vinejs/vine'\nimport { InferInput } from '@vinejs/vine/types'\nimport { AxiosInstance } from 'axios'\nimport { CreateOrderSchema, SendOrderSchema } from '../validators/order.js'\nimport { ModelRepository } from './repository.js'\nimport { OrderEntity } from '../../core/entities/order.js'\n/**\n * Represents the options for tracking an order.\n */\nexport interface OrderModelTrackOptions {\n id: string\n params?: Record<string, any>\n}\n/**\n * Represents a repository for managing orders.\n */\nexport class OrderRepository extends ModelRepository<\n OrderEntity,\n InferInput<typeof CreateOrderSchema>,\n InferInput<typeof CreateOrderSchema>\n> {\n /**\n * Constructs a new OrderRepository instance.\n * @param client - The AxiosInstance used for making HTTP requests.\n */\n constructor(client: AxiosInstance) {\n super('orders', client)\n }\n\n /**\n * Sends an order from an anonymous user.\n * @param data - The data representing the order to be sent.\n * @returns A Promise that resolves to the sent OrderEntity.\n */\n async send(data: InferInput<typeof SendOrderSchema>): Promise<OrderEntity> {\n const validator = vine.compile(SendOrderSchema)\n const output = await validator.validate(data)\n const res = await this.client.post(`/${this.resource}/send`, output)\n\n // Return the sent OrderEntity\n return res.data\n }\n\n /**\n * track the order by the order id\n * it will return the order status and history\n * @param options - The options for finding the model.\n * @returns A promise that resolves to the found model.\n */\n async track(options: OrderModelTrackOptions): Promise<OrderEntity> {\n const { id, params } = options\n const res = await this.client.get(`/${this.resource}/${id}`, {\n params: {\n ...params,\n },\n })\n return res.data\n }\n}\n","import vine from '@vinejs/vine'\nimport { PhoneShema } from './auth.js'\nimport { OrderStatus } from 'feeef'\nimport { CustomOrderTagSchema } from './helpers.js'\n\nexport const OrderItemSchema = vine.object({\n productId: vine.string(),\n // productId: vine.string().exists(async (db, value, field) => {\n // const product = await db.from('products').where('id', value).first()\n // return !!product\n // }),\n productName: vine.string().optional(),\n productPhotoUrl: vine.string().optional(),\n variantPath: vine.any().optional(),\n quantity: vine.number(),\n price: vine.number().optional(),\n})\n\nexport const GuestOrderItemSchema = vine.object({\n productId: vine.string(),\n variantPath: vine.string().optional(),\n quantity: vine.number(),\n})\n\nexport const SendOrderSchema = vine.object({\n id: vine.string().optional(),\n customerName: vine.string().optional(),\n customerNote: vine.string().optional(),\n customerPhone: vine.string(),\n // customerIp: vine.string().optional(),\n shippingAddress: vine.string().optional(),\n shippingCity: vine.string().optional(),\n shippingState: vine.string().optional(),\n shippingType: vine.enum(['home', 'pickup', 'store']),\n shippingMethodId: vine.string().optional(),\n paymentMethodId: vine.string().optional(),\n items: vine.array(GuestOrderItemSchema).minLength(1),\n // subtotal: vine.number().optional(),\n // shippingPrice: vine.number().optional(),\n // total: vine.number().optional(),\n // discount: vine.number().optional(),\n coupon: vine.string().optional(),\n status: vine.enum(['pending', 'draft']),\n // TODO: validate storeId is exists and not blocked\n storeId: vine.string(),\n metadata: vine.any().optional(),\n})\n\n/// store owner section\n// CreateOrderSchema\nexport const CreateOrderSchema = vine.object({\n id: vine.string().optional(),\n customerName: vine.string().optional(),\n customerNote: vine.string().optional(),\n customerPhone: PhoneShema,\n customerIp: vine.string().optional(),\n shippingAddress: vine.string().optional(),\n shippingCity: vine.string().optional(),\n shippingState: vine.string().optional(),\n shippingType: vine.enum(['home', 'pickup', 'store']),\n shippingMethodId: vine.string().optional(),\n paymentMethodId: vine.string().optional(),\n items: vine.array(OrderItemSchema).minLength(1),\n subtotal: vine.number().optional(),\n shippingPrice: vine.number().optional(),\n // total: vine.number().optional(),\n manualTotal: vine.number().optional().nullable(),\n calculatedTotal: vine.number().optional(),\n discount: vine.number().optional(),\n coupon: vine.string().optional(),\n status: vine.enum(Object.values(OrderStatus)),\n storeId: vine.string(),\n metadata: vine\n .object({\n customOrderTagHistories: vine\n .array(\n vine.object({\n tag: CustomOrderTagSchema,\n note: vine.string().optional(),\n createdAt: vine.date(),\n })\n )\n .optional(),\n })\n .optional(),\n})\n\n// UpdateOrderSchema\nexport const UpdateOrderSchema = vine.object({\n id: vine.string().optional(),\n customerName: vine.string().optional(),\n customerNote: vine.string().nullable().optional(),\n customerPhone: PhoneShema.optional(),\n customerIp: vine.string().optional(),\n shippingAddress: vine.string().optional(),\n shippingCity: vine.string().optional(),\n shippingState: vine.string().optional(),\n shippingType: vine.enum(['home', 'pickup', 'store']).optional(),\n shippingMethodId: vine.string().optional(),\n paymentMethodId: vine.string().optional(),\n items: vine.array(OrderItemSchema).minLength(1).optional(),\n subtotal: vine.number().optional(),\n shippingPrice: vine.number().optional(),\n // total: vine.number().optional(),\n manualTotal: vine.number().optional().nullable(),\n // calculatedTotal: vine.number().optional(),\n discount: vine.number().optional(),\n coupon: vine.string().optional(),\n status: vine.enum(Object.values(OrderStatus)).optional(),\n storeId: vine.string(),\n metadata: vine.any().optional(),\n})\n","import vine from '@vinejs/vine'\nimport { ImageFileSchema } from './helpers.js'\n\nexport const PhoneShema = vine.string().regex(/^0(5|6|7)\\d{8}$|^0(2)\\d{7}$/)\n\nexport const SignupSchema = vine.object({\n // referral is user id, nust be exists\n referral: vine.string().optional().nullable(),\n // .exists(async (db, value, field) => {\n // const user = await db.from('users').where('id', value).first()\n // return !!user\n // })\n name: vine.string().minLength(2).maxLength(32),\n email: vine.string(),\n phone: PhoneShema.optional(),\n photoFile: ImageFileSchema.optional(),\n photoUrl: vine.string().optional(),\n password: vine.string().minLength(8).maxLength(32),\n fcmToken: vine.string().optional().nullable(),\n})\n\nexport const SigninSchema = vine.object({\n email: vine.string().email(),\n password: vine.string().minLength(8).maxLength(32),\n fcmToken: vine.string().optional().nullable(),\n})\n\n// ResetPasswordSchema\nexport const ResetPasswordSchema = vine.object({\n email: vine.string().email(),\n})\n\n// ResetPasswordWithTokenSchema\nexport const ResetPasswordWithTokenSchema = vine.object({\n uid: vine.string(),\n token: vine.string(),\n})\n\n// SigninWithTokenSchema\nexport const SigninWithTokenSchema = vine.object({\n token: vine.string(),\n})\n\nexport const AuthUpdateUserSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32).optional(),\n email: vine\n .string()\n // .unique(async (db, value, field) => {\n // const user = await db.from('users').where('email', value).first()\n // return !user\n // })\n .optional(),\n phone: PhoneShema.optional(),\n // for upload file\n photoFile: vine\n .any()\n // .file({\n // size: '1mb',\n // extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],\n // })\n .optional(),\n photoUrl: vine.string().optional(),\n oldPassword: vine.string().minLength(8).maxLength(32).optional(),\n newPassword: vine.string().minLength(8).maxLength(32).notSameAs('oldPassword').optional(),\n})\n","import vine from '@vinejs/vine'\n\nexport const AvatarFileSchema = vine.any()\n// .file({\n// size: '1mb',\n// extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],\n// })\n\nexport const ImageFileSchema = vine.any()\n// file({\n// size: '1mb',\n// extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],\n// })\n\nexport const DomainSchema = vine.object({\n name: vine.string().minLength(3).maxLength(32),\n verifiedAt: vine.date().optional(),\n metadata: vine.object({}).optional(),\n})\n\n// decoration\nexport const StoreDecorationSchema = vine.object({\n primary: vine.number().min(0x0).max(0xffffffff),\n onPrimary: vine.number().min(0x0).max(0xffffffff),\n showStoreLogoInHeader: vine.boolean().optional(),\n logoFullHeight: vine.boolean().optional(),\n showStoreNameInHeader: vine.boolean().optional(),\n metadata: vine.any().optional(),\n})\n\nexport const CustomOrderTagSchema = vine.object({\n name: vine.string().minLength(1).maxLength(20),\n color: vine.number().min(0x0).max(0xffffffff),\n})\n\n// export const EmbaddedImageSchema = vine.object({\n// url: vine.string().url(),\n// alt: vine.string().optional(),\n// width: vine.number().optional(),\n// height: vine.number().optional(),\n// })\n\nexport const EmbaddedCategorySchema = vine.object({\n name: vine.string().minLength(2).maxLength(32),\n description: vine.string().minLength(2).maxLength(255).optional(),\n photoUrl: vine.string().optional(),\n ondarkPhotoUrl: vine.string().optional(),\n photoFile: AvatarFileSchema.optional(),\n ondarkPhotoFile: AvatarFileSchema.optional(),\n metadata: vine.object({}).optional(),\n})\n\nexport const EmbaddedAddressSchema = vine.object({\n country: vine.string().minLength(2).maxLength(32).optional(),\n state: vine.string().minLength(2).maxLength(32).optional(),\n city: vine.string().minLength(2).maxLength(32).optional(),\n street: vine.string().minLength(2).maxLength(32).optional(),\n zip: vine.string().minLength(2).maxLength(32).optional(),\n metadata: vine.object({}).optional().optional(),\n})\n\nexport const EmbaddedContactSchema = vine.object({\n type: vine.string().minLength(2).maxLength(32),\n value: vine.string().minLength(2).maxLength(255),\n name: vine.string().minLength(2).maxLength(32).optional(),\n metadata: vine.object({}).optional(),\n})\n\n// StoreBanner\nexport const StoreBannerSchema = vine.object({\n url: vine.string().url().optional(),\n title: vine.string(),\n enabled: vine.boolean().optional(),\n metadata: vine.object({}).optional(),\n})\n","import { AxiosInstance } from 'axios'\n\n/**\n * Represents a generic model repository.\n * @template T - The type of the model.\n * @template C - The type of the create options.\n * @template U - The type of the update options.\n */\nexport abstract class ModelRepository<T, C, U> {\n resource: string\n // client\n client: AxiosInstance\n\n /**\n * Constructs a new instance of the ModelRepository class.\n * @param resource - The resource name.\n * @param client - The Axios instance used for making HTTP requests.\n */\n constructor(resource: string, client: AxiosInstance) {\n this.resource = resource\n this.client = client\n }\n\n /**\n * Finds a model by its ID or other criteria.\n * @param options - The options for finding the model.\n * @returns A promise that resolves to the found model.\n */\n async find(options: ModelFindOptions): Promise<T> {\n const { id, by, params } = options\n const res = await this.client.get(`/${this.resource}/${id}`, {\n params: {\n by: by || 'id',\n ...params,\n },\n })\n return res.data\n }\n\n /**\n * Lists models with optional pagination and filtering.\n * @param options - The options for listing the models.\n * @returns A promise that resolves to a list of models.\n */\n async list(options?: ModelListOptions): Promise<ListResponse<T>> {\n const { page, offset, limit, params } = options || {}\n const res = await this.client.get(`/${this.resource}`, {\n params: { page, offset, limit, ...params },\n })\n // if res.data is an array then create ListResponse\n if (Array.isArray(res.data)) {\n return {\n data: res.data,\n }\n } else {\n return {\n data: res.data.data,\n total: res.data.meta.total,\n page: res.data.meta.currentPage,\n limit: res.data.meta.perPage,\n }\n }\n }\n\n /**\n * Creates a new model.\n * @param options - The options for creating the model.\n * @returns A promise that resolves to the created model.\n */\n async create(options: ModelCreateOptions<C>): Promise<T> {\n const { data, params } = options\n const res = await this.client.post(`/${this.resource}`, data, { params })\n return res.data\n }\n\n /**\n * Updates an existing model.\n * @param options - The options for updating the model.\n * @returns A promise that resolves to the updated model.\n */\n async update(options: ModelUpdateOptions<U>): Promise<T> {\n const { id, data, params } = options\n const res = await this.client.put(`/${this.resource}/${id}`, data, {\n params,\n })\n return res.data\n }\n\n /**\n * Deletes a model by its ID or other criteria.\n * @param options - The options for deleting the model.\n * @returns A promise that resolves when the model is deleted.\n */\n async delete(options: ModelFindOptions): Promise<void> {\n const { id, by, params } = options\n await this.client.delete(`/${this.resource}/${id}`, {\n params: {\n by: by || 'id',\n ...params,\n },\n })\n }\n}\n\n/**\n * Represents a list response containing an array of data of type T.\n */\nexport interface ListResponse<T> {\n data: T[]\n total?: number\n page?: number\n limit?: number\n}\n\n/**\n * Represents the options for making a request.\n */\ninterface RequestOptions {\n params?: Record<string, any>\n}\n\nexport interface ModelFindOptions extends RequestOptions {\n /**\n * The ID of the model to find or the value to find by.\n */\n id: string\n /**\n * The field to find by.\n * @default \"id\" - The ID field.\n */\n by?: string\n}\n\n/**\n * Options for listing models.\n */\nexport interface ModelListOptions extends RequestOptions {\n /**\n * The page number to retrieve.\n */\n page?: number\n\n /**\n * The offset from the beginning of the list.\n */\n offset?: number\n\n /**\n * The maximum number of models to retrieve per page.\n */\n limit?: number\n}\n\n/**\n * Represents the options for creating a model.\n * @template T - The type of data being created.\n */\nexport interface ModelCreateOptions<T> extends RequestOptions {\n data: T\n}\n\n/**\n * Represents the options for updating a model.\n * @template T - The type of the data being updated.\n */\nexport interface ModelUpdateOptions<T> extends RequestOptions {\n /**\n * The ID of the model to update.\n */\n id: string\n /**\n * The data to update the model with.\n */\n data: T\n}\n","import { InferInput } from '@vinejs/vine/types'\nimport { AxiosInstance } from 'axios'\nimport { CreateProductSchema, UpdateProductSchema } from '../validators/product.js'\nimport { ModelRepository } from './repository.js'\nimport { ProductEntity } from '../../core/entities/product.js'\n\n/**\n * Represents a repository for managing products.\n */\nexport class ProductRepository extends ModelRepository<\n ProductEntity,\n InferInput<typeof CreateProductSchema>,\n InferInput<typeof UpdateProductSchema>\n> {\n /**\n * Creates a new instance of the ProductRepository class.\n * @param client - The AxiosInstance used for making HTTP requests.\n */\n constructor(client: AxiosInstance) {\n super('products', client)\n }\n}\n","import vine from '@vinejs/vine'\nimport { InferInput } from '@vinejs/vine/types'\nimport { AxiosInstance } from 'axios'\nimport { CreateUserStoreSchema, UpdateUserStoreSchema } from '../validators/user_stores.js'\nimport { ModelRepository, ModelCreateOptions } from './repository.js'\nimport { StoreEntity } from '../../core/entities/store.js'\n\n/**\n * Repository for managing Store entities.\n */\nexport class StoreRepository extends ModelRepository<\n StoreEntity,\n InferInput<typeof CreateUserStoreSchema>,\n InferInput<typeof UpdateUserStoreSchema>\n> {\n /**\n * Constructs a new StoreRepository instance.\n * @param client The AxiosInstance used for making HTTP requests.\n */\n constructor(client: AxiosInstance) {\n super('stores', client)\n }\n\n /**\n * Creates a new Store entity.\n * @param options The options for creating the Store entity.\n * @returns A Promise that resolves to the created Store entity.\n */\n async create(\n options: ModelCreateOptions<InferInput<typeof CreateUserStoreSchema>>\n ): Promise<StoreEntity> {\n const validator = vine.compile(CreateUserStoreSchema)\n const output = await validator.validate(options.data)\n return super.create({ ...options, data: output })\n }\n}\n","import vine from '@vinejs/vine'\nimport {\n AvatarFileSchema,\n CustomOrderTagSchema,\n DomainSchema,\n EmbaddedAddressSchema,\n EmbaddedCategorySchema,\n EmbaddedContactSchema,\n StoreBannerSchema,\n StoreDecorationSchema,\n} from './helpers.js'\n// \"defaultShippingRates.1\"\nexport const DefaultShippingRatesSchema = vine.array(\n vine.array(vine.number().min(0).max(100000).nullable()).nullable()\n)\n\nexport const StoreIntegrationsSchema = vine.object({\n metadata: vine.object({}).optional().nullable(),\n metaPixel: vine.any().optional().nullable(),\n googleAnalytics: vine.any().optional().nullable(),\n googleSheet: vine.any().optional().nullable(),\n sms: vine.any().optional().nullable(),\n telegram: vine.any().optional().nullable(),\n yalidine: vine.any().optional().nullable(),\n maystroDelivery: vine.any().optional().nullable(),\n ecotrack: vine.any().optional().nullable(),\n echotrak: vine.any().optional().nullable(), // deprecated\n procolis: vine.any().optional().nullable(),\n\n // [key: string]: any\n // metadata?: Record<string, any>\n // metaPixel?: any\n // googleAnalytics?: any\n // googleSheet?: any\n // sms?: any\n // telegram?: any\n // yalidine?: any\n // maystroDelivery?: any\n // ecotrack?: any\n})\n\nexport const CreateUserStoreSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32),\n slug: vine\n .string()\n .regex(/^[a-z0-9-]+$/)\n .minLength(2)\n .maxLength(32),\n // .unique(async (db, value, field) => {\n // const store = await db.from('stores').where('slug', value).first()\n // return !store\n // }),\n domain: vine\n .object({\n name: vine.string().minLength(2).maxLength(32),\n })\n .optional(),\n decoration: StoreDecorationSchema.optional(),\n banner: StoreBannerSchema.optional(),\n logoUrl: vine.string().optional(),\n ondarkLogoUrl: vine.string().optional(),\n logoFile: AvatarFileSchema.optional(),\n ondarkLogoFile: AvatarFileSchema.optional(),\n categories: vine.array(EmbaddedCategorySchema).optional(),\n title: vine.string().minLength(2).maxLength(255).optional(),\n description: vine.string().minLength(2).maxLength(255).optional(),\n addresses: vine.array(EmbaddedAddressSchema).optional(),\n metadata: vine.object({} as any).optional(),\n contacts: vine\n .array(\n vine.object({\n type: vine.string().minLength(2).maxLength(32),\n value: vine.string().minLength(2).maxLength(255),\n metadata: vine.object({}).optional(),\n })\n )\n .optional(),\n defaultShippingRates: DefaultShippingRatesSchema.optional(),\n integrations: StoreIntegrationsSchema.optional(),\n})\n\n// UpdateStoreSchema\nexport const UpdateUserStoreSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32).optional(),\n slug: vine\n .string()\n .regex(/^[a-z0-9-]+$/)\n .minLength(2)\n .maxLength(32)\n // .unique(async (db, value, field) => {\n // const store = await db.from('stores').where('slug', value).first()\n // return !store\n // })\n .optional(),\n domain: DomainSchema.optional(),\n decoration: StoreDecorationSchema.optional(),\n banner: StoreBannerSchema.optional(),\n logoUrl: vine.string().nullable().optional(),\n ondarkLogoUrl: vine.string().nullable().optional(),\n logoFile: AvatarFileSchema.optional(),\n ondarkLogoFile: AvatarFileSchema.optional(),\n categories: vine.array(EmbaddedCategorySchema).optional(),\n title: vine.string().minLength(2).maxLength(255).optional(),\n description: vine.string().minLength(2).maxLength(255).optional(),\n addresses: vine.array(EmbaddedAddressSchema).optional(),\n metadata: vine\n .object({\n customOrderTags: vine.array(CustomOrderTagSchema).optional(),\n })\n .optional(),\n contacts: vine.array(EmbaddedContactSchema).optional(),\n defaultShippingRates: DefaultShippingRatesSchema.optional(),\n integrations: StoreIntegrationsSchema.optional(),\n})\n","import vine from '@vinejs/vine'\nimport { InferInput } from '@vinejs/vine/types'\nimport { AxiosInstance } from 'axios'\nimport { SigninSchema, AuthUpdateUserSchema } from '../validators/auth.js'\nimport { CreateUserSchema, UpdateUserSchema } from '../validators/users.js'\nimport { ModelRepository } from './repository.js'\nimport { AuthToken, UserEntity } from '../../core/entities/user.js'\n\n/**\n * Represents the response returned by the authentication process.\n */\nexport interface AuthResponse {\n token: AuthToken\n user: UserEntity\n}\n\n/**\n * Represents a repository for managing user data.\n * Extends the ModelRepository class.\n */\nexport class UserRepository extends ModelRepository<\n UserEntity,\n InferInput<typeof CreateUserSchema>,\n InferInput<typeof UpdateUserSchema>\n> {\n /**\n * Represents the authentication response.\n */\n auth: AuthResponse | null = null\n\n /**\n * Constructs a new UserRepository instance.\n * @param client - The AxiosInstance used for making HTTP requests.\n */\n constructor(client: AxiosInstance) {\n super('users', client)\n }\n\n /**\n * Signs in a user with the provided credentials.\n * @param credentials - The user credentials.\n * @returns A promise that resolves to the authentication response.\n */\n async signin(credentials: InferInput<typeof SigninSchema>): Promise<AuthResponse> {\n // validate the input\n const validator = vine.compile(SigninSchema)\n const output = await validator.validate(credentials)\n const res = await this.client.post(`/${this.resource}/auth/signin`, output)\n this.auth = res.data\n return res.data\n }\n\n /**\n * Signs up a new user with the provided credentials.\n * @param credentials - The user credentials.\n * @returns A promise that resolves to the authentication response.\n */\n async signup(credentials: InferInput<typeof CreateUserSchema>): Promise<AuthResponse> {\n // validate the input\n const validator = vine.compile(CreateUserSchema)\n const output = await validator.validate(credentials)\n const res = await this.client.post(`/${this.resource}/auth/signup`, output)\n this.auth = res.data\n return res.data\n }\n\n /**\n * Signs out the currently authenticated user.\n * @returns A promise that resolves when the user is signed out.\n */\n async signout(): Promise<void> {\n this.auth = null\n }\n\n /**\n * Updates the authenticated user's data.\n * @param data - The updated user data.\n * @returns A promise that resolves to the updated user entity.\n */\n async updateMe(data: InferInput<typeof AuthUpdateUserSchema>): Promise<UserEntity> {\n const validator = vine.compile(AuthUpdateUserSchema)\n const output = await validator.validate(data)\n const res = await this.client.put(`/${this.resource}/auth`, output)\n return res.data\n }\n}\n","import vine from '@vinejs/vine'\n\n// User Schemas\n//CreateUserSchema\nexport const CreateUserSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32),\n email: vine.string(),\n // .unique(async (db, value, field) => {\n // const user = await db.from('users').where('email', value).first()\n // return !user\n // }),\n phone: vine\n .string()\n .regex(/^0(5|6|7)\\d{8}$|^0(2)\\d{7}$/)\n // .unique(async (db, value, field) => {\n // const user = await db.from('users').where('phone', value).first()\n // return !user\n // })\n .optional(),\n password: vine.string().minLength(8).maxLength(32),\n // for upload file\n photoFile: vine\n .any()\n // .file({\n // size: '1mb',\n // extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],\n // })\n .optional(),\n photoUrl: vine.string().optional(),\n // metadata (any object)\n metadata: vine.object({}).optional(),\n // dates\n emailVerifiedAt: vine.date().optional(),\n phoneVerifiedAt: vine.date().optional(),\n verifiedAt: vine.date().optional(),\n blockedAt: vine.date().optional(),\n})\n\n//UpdateUserSchema\nexport const UpdateUserSchema = vine.object({\n name: vine.string().minLength(2).maxLength(32).optional(),\n email: vine\n .string()\n // .unique(async (db, value, field) => {\n // const user = await db.from('users').where('email', value).first()\n // return !user\n // })\n .optional(),\n phone: vine\n .string()\n // .regex(/^\\d{10}$/)\n // must start with 0 then if secend is (5|6|7) then 8 digits and if secend is (2) then 7 digits\n .regex(/^0(5|6|7)\\d{8}$|^0(2)\\d{7}$/)\n .optional(),\n password: vine.string().minLength(8).maxLength(32).confirmed().optional(),\n // for upload file\n photoFile: vine\n .any()\n // .file({\n // size: '1mb',\n // extnames: ['jpg', 'jpeg', 'png', 'gif', 'webp'],\n // })\n .optional(),\n photoUrl: vine.string().optional(),\n // metadata (any object)\n metadata: vine.object({}).optional(),\n // dates\n emailVerifiedAt: vine.date().optional(),\n phoneVerifiedAt: vine.date().optional(),\n verifiedAt: vine.string().optional(),\n blockedAt: vine.date().optional(),\n})\n","export enum OrderStatus {\n draft = 'draft',\n pending = 'pending',\n review = 'review',\n accepted = 'accepted',\n processing = 'processing',\n completed = 'completed',\n cancelled = 'cancelled',\n}\n\n// PaymentStatus\nexport enum PaymentStatus {\n unpaid = 'unpaid',\n paid = 'paid',\n received = 'received',\n}\nexport enum DeliveryStatus {\n pending = 'pending',\n delivering = 'delivering',\n delivered = 'delivered',\n returned = 'returned',\n}\n\nexport interface OrderEntity {\n id: string\n customerName?: string | null\n customerPhone: string\n customerIp?: string | null\n shippingAddress?: string | null\n shippingCity?: string | null\n shippingState?: string | null\n shippingMethodId?: string | null\n paymentMethodId?: string | null\n items: OrderItem[]\n subtotal: number\n shippingPrice: number\n total: number\n discount: number\n coupon?: string | null\n storeId: string\n metadata: any\n status: OrderStatus\n paymentStatus: PaymentStatus\n deliveryStatus: DeliveryStatus\n createdAt: any\n updatedAt: any\n}\nexport interface OrderItem {\n productId: string\n productName: string\n productPhotoUrl?: string | null\n variantPath?: string\n quantity: number\n price: number\n}\n\n// order track entity\nexport interface OrderTrackEntity {\n id: string\n customerName?: string | null\n customerPhone: string\n customerIp?: string | null\n shippingAddress?: string | null\n shippingCity?: string | null\n shippingState?: string | null\n shippingMethodId?: string | null\n paymentMethodId?: string | null\n items: OrderItem[]\n subtotal: number\n shippingPrice: number\n total: number\n discount: number\n coupon?: string | null\n storeId: string\n metadata: any\n status: OrderStatus\n paymentStatus: PaymentStatus\n deliveryStatus: DeliveryStatus\n createdAt: any\n updatedAt: any\n}\n","import { EmbaddedAddress } from '../embadded/address.js'\nimport { EmbaddedCategory } from '../embadded/category.js'\nimport { EmbaddedContact } from '../embadded/contact.js'\n// import { OrderEntity } from \"./order.js\";\n// import { ShippingMethodEntity } from \"./shipping_method.js\";\nimport { UserEntity } from './user.js'\nimport { DateTime } from 'luxon'\n\nexport interface StoreEntity {\n id: string\n slug: string\n banner: StoreBanner | null\n action: StoreAction | null\n domain: StoreDomain | null\n decoration: StoreDecoration | null\n name: string\n logoUrl: string | null\n ondarkLogoUrl: string | null\n userId: string\n categories: EmbaddedCategory[]\n title: string | null\n description: string | null\n addresses: EmbaddedAddress[]\n address: EmbaddedAddress | null\n metadata: Record<string, any>\n contacts: EmbaddedContact[]\n integrations: StoreIntegrations\n verifiedAt: any | null\n blockedAt: any | null\n createdAt: any\n updatedAt: any\n // products: ProductEntity[];\n user?: UserEntity\n // orders: OrderEntity[];\n // shippingMethods: ShippingMethodEntity[];\n defaultShippingRates: (number | null)[][] | null\n\n // subscription\n subscription?: any\n due?: number\n\n // StoreConfigs\n configs?: StoreConfigs\n\n // metaPixelIds\n metaPixelIds?: string[]\n}\n\nexport interface StoreConfigs {\n currencies: StoreCurrencyConfig[]\n defaultCurrency: number\n}\n\nexport interface StoreCurrencyConfig {\n code: string\n symbol: string\n precision: number\n rate: number\n}\n\nexport interface StoreDomain {\n name: string\n verifiedAt: any | null\n metadata: Record<string, any>\n}\nexport interface StoreBanner {\n title: string\n url?: string | null\n enabled: boolean\n metadata: Record<string, any>\n}\n\nexport interface StoreDecoration {\n primary: number\n onPrimary?: number\n showStoreLogoInHeader?: boolean\n logoFullHeight?: boolean\n showStoreNameInHeader?: boolean\n metadata?: Record<string, any>\n}\n\nexport interface StoreAction {\n label: string\n url: string\n type: StoreActionType\n}\n\nexport enum StoreActionType {\n link = 'link',\n whatsapp = 'whatsapp',\n telegram = 'telegram',\n phone = 'phone',\n}\nexport interface MetaPixel {\n id: string\n key?: string\n}\nexport interface MetaPixelIntegration {\n id: string\n pixels: MetaPixel[]\n active: boolean\n metadata: Record<string, any>\n}\n\nexport interface StoreIntegrations {\n [key: string]: any\n metadata?: Record<string, any>\n\n // @Default('default') String id,\n // @Default([]) List<MetaPixel> pixels,\n // @Default(true) bool active,\n // @Default({}) Map<String, dynamic> metadata,\n metaPixel?: MetaPixelIntegration\n googleAnalytics?: any\n googleSheet?: any\n sms?: any\n telegram?: any\n yalidine?: any\n maystroDelivery?: any\n echotrak?: any\n procolis?: any\n noest?: any\n}\n\nexport enum StoreSubscriptionStatus {\n active = 'active',\n inactive = 'inactive',\n}\n\nexport enum StoreSubscriptionType {\n free = 'free',\n quota = 'quota',\n percentage = 'percentage',\n}\n\nexport interface StoreSubscription {\n type: StoreSubscriptionType\n status: StoreSubscriptionStatus\n startedAt: DateTime\n expiresAt: DateTime | null\n metadata: Record<string, any>\n}\n\nexport interface StoreFreeSubscription extends StoreSubscription {\n type: StoreSubscriptionType.free\n}\n\nexport interface StoreQuotaSubscription extends StoreSubscription {\n type: StoreSubscriptionType.quota\n quota: number\n}\n// another way is by taking percentage of the sales\nexport interface StorePercentageSubscription extends StoreSubscription {\n type: StoreSubscriptionType.percentage\n percentage: number\n}\n","import { EmbaddedCategory } from '../embadded/category.js'\nimport { ShippingMethodEntity } from './shipping_method.js'\nimport { StoreEntity } from './store.js'\n\nexport interface ProductEntity {\n id: string\n\n slug: string\n\n decoration: ProductDecoration | null\n\n name: string | null\n\n photoUrl: string | null\n\n media: string[]\n\n storeId: string\n\n shippingMethodId?: string | null\n\n category: EmbaddedCategory\n\n title: string | null\n\n description: string | null\n\n body: string | null\n\n // sku\n sku: string | null\n\n price: number\n\n cost: number | null\n\n discount: number | null\n\n stock: number\n\n sold: number\n\n views: number\n\n likes: number\n\n dislikes: number\n\n variant?: ProductVariant | null\n\n metadata: Record<string, any>\n\n status: ProductStatus\n\n type: ProductType\n\n verifiedAt: any | null\n\n blockedAt: any | null\n\n createdAt: any\n\n updatedAt: any\n\n // relations\n store?: StoreEntity\n shippingMethod?: ShippingMethodEntity\n}\n\nexport enum ProductStatus {\n draft = 'draft',\n published = 'published',\n archived = 'archived',\n deleted = 'deleted',\n}\n\nexport interface ProductDecoration {\n metadata: Record<string, any>\n}\n\nexport interface ProductVariant {\n name: string\n options: ProductVariantOption[]\n}\n\nexport interface ProductVariantOption {\n name: string\n sku?: string | null\n price?: number | null\n discount?: number | null\n stock?: number | null\n sold?: number | null\n type?: VariantOptionType\n child?: ProductVariant | null\n mediaIndex?: number | null\n hint?: string | null\n value?: any\n}\n\nexport enum VariantOptionType {\n color = 'color',\n image = 'image',\n text = 'text',\n}\n\nexport enum ProductType {\n physical = 'physical',\n digital = 'digital',\n service = 'service',\n}\n","import { OrderEntity } from './order.js'\n\nexport interface ShippingMethodEntity {\n id: string\n name: string\n description: string | null\n logoUrl: string | null\n ondarkLogoUrl: string | null\n price: number\n forks: number\n sourceId: string\n storeId: string\n rates: (number | null)[][] | null\n status: ShippingMethodStatus\n policy: ShippingMethodPolicy\n verifiedAt: any\n createdAt: any\n updatedAt: any\n orders: OrderEntity[]\n source: ShippingMethodEntity | null\n}\n\nexport enum ShippingMethodStatus {\n draft = 'draft',\n published = 'published',\n archived = 'archived',\n}\n\nexport enum ShippingMethodPolicy {\n private = 'private',\n public = 'public',\n}\n","export enum EmbaddedContactType {\n phone = 'phone',\n email = 'email',\n facebook = 'facebook',\n twitter = 'twitter',\n instagram = 'instagram',\n linkedin = 'linkedin',\n website = 'website',\n whatsapp = 'whatsapp',\n telegram = 'telegram',\n signal = 'signal',\n viber = 'viber',\n skype = 'skype',\n zoom = 'zoom',\n other = 'other',\n}\n\n// EmbaddedContactType is not enum but can only be: \"phone\" | \"email\" | \"facebook\" | \"twitter\" | \"instagram\" | \"linkedin\" | \"website\" | \"whatsapp\" | \"telegram\" | \"signal\" | \"viber\" | \"skype\" | \"zoom\" | \"other\n\nexport interface EmbaddedContact {\n type: EmbaddedContactType\n value: string\n name?: string\n metadata?: Record<string, any>\n}\n"],"mappings":"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","names":["vine","vine","vine","vine","vine","vine","vine","vine","vine","vine","vine","vine","vine","OrderStatus","PaymentStatus","DeliveryStatus","StoreActionType","StoreSubscriptionStatus","StoreSubscriptionType","ProductStatus","VariantOptionType","ProductType","ShippingMethodStatus","ShippingMethodPolicy","EmbaddedContactType"]}
|