feeef 0.6.0 → 0.6.3

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 CHANGED
@@ -112,6 +112,16 @@ var ModelRepository = class {
112
112
  };
113
113
 
114
114
  // src/feeef/repositories/orders.ts
115
+ var DeliveryServiceFilter = /* @__PURE__ */ ((DeliveryServiceFilter2) => {
116
+ DeliveryServiceFilter2["yalidine"] = "yalidine";
117
+ DeliveryServiceFilter2["ecotrack"] = "ecotrack";
118
+ DeliveryServiceFilter2["procolis"] = "procolis";
119
+ DeliveryServiceFilter2["noest"] = "noest";
120
+ DeliveryServiceFilter2["zimou"] = "zimou";
121
+ DeliveryServiceFilter2["maystro"] = "maystro";
122
+ DeliveryServiceFilter2["ecomanager"] = "ecomanager";
123
+ return DeliveryServiceFilter2;
124
+ })(DeliveryServiceFilter || {});
115
125
  var OrderRepository = class extends ModelRepository {
116
126
  /**
117
127
  * Constructs a new OrderRepository instance.
@@ -120,44 +130,104 @@ var OrderRepository = class extends ModelRepository {
120
130
  constructor(client) {
121
131
  super("orders", client);
122
132
  }
133
+ /**
134
+ * Lists orders with optional filtering.
135
+ * @param options - The options for listing orders.
136
+ * @returns A Promise that resolves to a list of Order entities.
137
+ */
138
+ async list(options) {
139
+ const params = { ...options?.params };
140
+ if (options) {
141
+ if (options.page) params.page = options.page;
142
+ if (options.offset) params.offset = options.offset;
143
+ if (options.limit) params.limit = options.limit;
144
+ if (options.storeId) params.store_id = options.storeId;
145
+ if (options.status) {
146
+ params.status = Array.isArray(options.status) ? options.status : [options.status];
147
+ }
148
+ if (options.deliveryStatus) params.deliveryStatus = options.deliveryStatus;
149
+ if (options.paymentStatus) params.paymentStatus = options.paymentStatus;
150
+ if (options.customStatus) params.customStatus = options.customStatus;
151
+ if (options.source) params.source = options.source;
152
+ if (options.tags) params.tags = options.tags;
153
+ if (options.createdBefore) {
154
+ params.created_before = options.createdBefore instanceof Date ? options.createdBefore.toISOString() : options.createdBefore;
155
+ }
156
+ if (options.createdAfter) {
157
+ params.created_after = options.createdAfter instanceof Date ? options.createdAfter.toISOString() : options.createdAfter;
158
+ }
159
+ if (options.q) params.q = options.q;
160
+ if (options.confirmer) params.confirmer = options.confirmer;
161
+ if (options.products) params.products = options.products;
162
+ if (options.shippingState) params.shippingState = options.shippingState;
163
+ if (options.shippingCity) params.shippingCity = options.shippingCity;
164
+ if (options.deliveryService) params.deliveryService = options.deliveryService;
165
+ }
166
+ return super.list({ params });
167
+ }
123
168
  /**
124
169
  * Sends an order from an anonymous user.
125
170
  * @param data - The data representing the order to be sent.
126
171
  * @returns A Promise that resolves to the sent OrderEntity.
127
172
  */
128
173
  async send(data) {
129
- const output = data;
130
- const res = await this.client.post(`/${this.resource}/send`, output);
174
+ const res = await this.client.post(`/${this.resource}/send`, data);
131
175
  return res.data;
132
176
  }
133
177
  /**
134
- * track the order by the order id
135
- * it will return the order status and history
136
- * @param options - The options for finding the model.
137
- * @returns A promise that resolves to the found model.
178
+ * Tracks the order by the order ID.
179
+ * Returns the order status and history.
180
+ * @param options - The options for tracking the order.
181
+ * @returns A promise that resolves to the order track entity.
138
182
  */
139
183
  async track(options) {
140
184
  const { id, params } = options;
141
185
  const res = await this.client.get(`/${this.resource}/${id}/track`, {
142
- params: {
143
- ...params
144
- }
186
+ params
145
187
  });
146
188
  return res.data;
147
189
  }
148
190
  /**
149
- * Assigns a single order to a member (as confirmer)
150
- * @param data - The data containing orderId, memberId, and storeId
151
- * @returns A Promise that resolves to the updated OrderEntity
191
+ * Calculates order pricing based on items, shipping details, etc.
192
+ * @param options - The calculation options.
193
+ * @returns A Promise that resolves to the calculated pricing.
194
+ */
195
+ async calculate(options) {
196
+ const res = await this.client.post(`/${this.resource}/calculate`, {
197
+ storeId: options.storeId,
198
+ items: options.items.map((item) => ({
199
+ productId: item.productId,
200
+ quantity: item.quantity,
201
+ variantPath: item.variantPath,
202
+ offerCode: item.offerCode,
203
+ addons: item.addons,
204
+ price: item.price,
205
+ discount: item.discount
206
+ })),
207
+ shippingState: options.shippingState,
208
+ shippingCountry: options.shippingCountry,
209
+ shippingType: options.shippingType,
210
+ shippingAddress: options.shippingAddress
211
+ });
212
+ return {
213
+ subtotal: res.data.pricing.subtotal,
214
+ shippingPrice: res.data.pricing.shippingPrice,
215
+ calculatedTotal: res.data.pricing.calculatedTotal
216
+ };
217
+ }
218
+ /**
219
+ * Assigns a single order to a member (as confirmer).
220
+ * @param data - The data containing orderId, memberId, and storeId.
221
+ * @returns A Promise that resolves to the updated OrderEntity.
152
222
  */
153
223
  async assign(data) {
154
224
  const res = await this.client.post(`/${this.resource}/assign`, data);
155
225
  return res.data;
156
226
  }
157
227
  /**
158
- * Assigns multiple orders to a member (as confirmer)
159
- * @param data - The data containing orderIds, memberId, and storeId
160
- * @returns A Promise that resolves to a success message
228
+ * Assigns multiple orders to a member (as confirmer).
229
+ * @param data - The data containing orderIds, memberId, and storeId.
230
+ * @returns A Promise that resolves to a success message.
161
231
  */
162
232
  async assignMany(data) {
163
233
  const res = await this.client.post(`/${this.resource}/assignMany`, data);
@@ -175,8 +245,43 @@ var ProductRepository = class extends ModelRepository {
175
245
  super("products", client);
176
246
  }
177
247
  /**
178
- * Retrieves a random products from the repository.
179
- * @param limit - The number of random products to retrieve. Default is 1.
248
+ * Lists products with optional filtering.
249
+ * @param options - The options for listing products.
250
+ * @returns A Promise that resolves to a list of Product entities.
251
+ */
252
+ async list(options) {
253
+ const {
254
+ storeId,
255
+ categoryId,
256
+ status,
257
+ q,
258
+ minPrice,
259
+ maxPrice,
260
+ inStock,
261
+ sortBy,
262
+ sortOrder,
263
+ ...listOptions
264
+ } = options || {};
265
+ const params = {
266
+ ...listOptions.params
267
+ };
268
+ if (storeId) params.store_id = storeId;
269
+ if (categoryId) params.category_id = categoryId;
270
+ if (status) params.status = Array.isArray(status) ? status : [status];
271
+ if (q) params.q = q;
272
+ if (minPrice !== void 0) params.min_price = minPrice;
273
+ if (maxPrice !== void 0) params.max_price = maxPrice;
274
+ if (inStock !== void 0) params.in_stock = inStock;
275
+ if (sortBy) params.sort_by = sortBy;
276
+ if (sortOrder) params.sort_order = sortOrder;
277
+ return super.list({
278
+ ...listOptions,
279
+ params
280
+ });
281
+ }
282
+ /**
283
+ * Retrieves random products from the repository.
284
+ * @param limit - The number of random products to retrieve. Default is 12.
180
285
  * @returns A promise that resolves to an array of random ProductEntity objects.
181
286
  */
182
287
  async random(limit = 12) {
@@ -185,6 +290,32 @@ var ProductRepository = class extends ModelRepository {
185
290
  });
186
291
  return response.data;
187
292
  }
293
+ /**
294
+ * Gets the sells chart for a product (last 7 days).
295
+ * @param productId - The product ID.
296
+ * @param storeId - The store ID.
297
+ * @returns A Promise that resolves to a map of date to number of sells.
298
+ */
299
+ async sells(productId, storeId) {
300
+ const res = await this.client.get(`/stores/${storeId}/${this.resource}/${productId}/sells`);
301
+ const sellsData = /* @__PURE__ */ new Map();
302
+ if (res.data) {
303
+ for (const [key, value] of Object.entries(res.data)) {
304
+ sellsData.set(new Date(key), Number(value) || 0);
305
+ }
306
+ }
307
+ return sellsData;
308
+ }
309
+ /**
310
+ * Gets the analytics/report for a product.
311
+ * @param productId - The product ID.
312
+ * @param storeId - The store ID.
313
+ * @returns A Promise that resolves to the product report.
314
+ */
315
+ async report(productId, storeId) {
316
+ const res = await this.client.get(`/stores/${storeId}/${this.resource}/${productId}/report`);
317
+ return res.data;
318
+ }
188
319
  };
189
320
 
190
321
  // src/feeef/repositories/stores.ts
@@ -197,13 +328,122 @@ var StoreRepository = class extends ModelRepository {
197
328
  super("stores", client);
198
329
  }
199
330
  /**
200
- * Creates a new Store entity.
201
- * @param options The options for creating the Store entity.
202
- * @returns A Promise that resolves to the created Store entity.
331
+ * Lists stores with optional filtering.
332
+ * @param options - The options for listing stores.
333
+ * @returns A Promise that resolves to a list of Store entities.
334
+ */
335
+ async list(options) {
336
+ const { userId, ...listOptions } = options || {};
337
+ return super.list({
338
+ ...listOptions,
339
+ params: {
340
+ ...listOptions.params,
341
+ ...userId && { user_id: userId }
342
+ }
343
+ });
344
+ }
345
+ /**
346
+ * Gets the summary for a store.
347
+ * @param options - The summary options including store ID and date range.
348
+ * @returns A Promise that resolves to the store summary.
349
+ */
350
+ async summary(options) {
351
+ const { id, from, to } = options;
352
+ const params = {};
353
+ if (from) params.from = from instanceof Date ? from.toISOString() : from;
354
+ if (to) params.to = to instanceof Date ? to.toISOString() : to;
355
+ const res = await this.client.get(`/${this.resource}/${id}/summary`, { params });
356
+ return res.data;
357
+ }
358
+ /**
359
+ * Gets the orders chart data for a store.
360
+ * @param id - The store ID.
361
+ * @returns A Promise that resolves to a map of date to order count.
362
+ */
363
+ async chart(id) {
364
+ const res = await this.client.get(`/${this.resource}/${id}/chart`);
365
+ const chartData = /* @__PURE__ */ new Map();
366
+ if (res.data.orders) {
367
+ for (const [key, value] of Object.entries(res.data.orders)) {
368
+ chartData.set(new Date(key), Number(value));
369
+ }
370
+ }
371
+ return chartData;
372
+ }
373
+ /**
374
+ * Adds a member to the store.
375
+ * @param storeId - The store ID.
376
+ * @param data - The member data.
377
+ * @returns A Promise that resolves to the added member.
378
+ */
379
+ async addMember(storeId, data) {
380
+ const res = await this.client.post(`/${this.resource}/${storeId}/members`, {
381
+ email: data.email,
382
+ role: data.role,
383
+ name: data.name,
384
+ metadata: data.metadata
385
+ });
386
+ return res.data;
387
+ }
388
+ /**
389
+ * Edits a store member.
390
+ * @param storeId - The store ID.
391
+ * @param memberId - The member ID.
392
+ * @param data - The update data.
393
+ * @returns A Promise that resolves to the updated member.
394
+ */
395
+ async editMember(storeId, memberId, data) {
396
+ const res = await this.client.put(`/${this.resource}/${storeId}/members/${memberId}`, {
397
+ role: data.role,
398
+ name: data.name,
399
+ metadata: data.metadata
400
+ });
401
+ return res.data;
402
+ }
403
+ /**
404
+ * Removes a member from the store.
405
+ * @param storeId - The store ID.
406
+ * @param memberId - The member ID.
407
+ * @returns A Promise that resolves when the member is removed.
408
+ */
409
+ async removeMember(storeId, memberId) {
410
+ await this.client.delete(`/${this.resource}/${storeId}/members/${memberId}`);
411
+ }
412
+ /**
413
+ * Upgrades or renews a store's subscription plan.
414
+ * @param id - The store ID.
415
+ * @param plan - The plan type to upgrade to.
416
+ * @param months - The number of months (1-12).
417
+ * @returns A Promise that resolves when the upgrade is complete.
418
+ */
419
+ async upgrade(id, plan, months) {
420
+ await this.client.post(`/${this.resource}/${id}/subscription/upgrade`, {
421
+ plan,
422
+ months
423
+ });
424
+ }
425
+ /**
426
+ * Purchases additional points for a store's subscription.
427
+ * @param id - The store ID.
428
+ * @param points - The number of points to purchase.
429
+ * @returns A Promise that resolves when the charge is complete.
203
430
  */
204
- async create(options) {
205
- const output = options.data;
206
- return super.create({ ...options, data: output });
431
+ async charge(id, points) {
432
+ await this.client.post(`/${this.resource}/${id}/subscription/charge`, {
433
+ points
434
+ });
435
+ }
436
+ /**
437
+ * Pays store due amount.
438
+ * @param storeId - The store ID.
439
+ * @param amount - The amount of due to pay (in points).
440
+ * @returns A Promise that resolves to the payment result.
441
+ */
442
+ async payDue(storeId, amount) {
443
+ const res = await this.client.post(`/${this.resource}/${storeId}/subscription/payDue`, {
444
+ amount
445
+ });
446
+ return res.data;
207
447
  }
208
448
  };
209
449
 
@@ -509,17 +749,41 @@ var DepositRepository = class extends ModelRepository {
509
749
  constructor(client) {
510
750
  super("deposits", client);
511
751
  }
512
- // The create method is inherited from ModelRepository and supports both:
513
- // 1. create(data, params?) - Pass data directly
514
- // 2. create({ data, params }) - Pass options object
515
752
  /**
516
- * Create a new deposit request
753
+ * Lists deposits with optional filtering.
754
+ * @param options - The options for listing deposits.
755
+ * @returns A Promise that resolves to a list of Deposit entities.
756
+ */
757
+ async list(options) {
758
+ const params = { ...options?.params };
759
+ if (options) {
760
+ if (options.page) params.page = options.page;
761
+ if (options.offset) params.offset = options.offset;
762
+ if (options.limit) params.limit = options.limit;
763
+ if (options.userId) params.user_id = options.userId;
764
+ if (options.status) {
765
+ params.status = Array.isArray(options.status) ? options.status : [options.status];
766
+ }
767
+ if (options.paymentMethod) params.payment_method = options.paymentMethod;
768
+ if (options.createdAfter) {
769
+ params.created_after = options.createdAfter instanceof Date ? options.createdAfter.toISOString() : options.createdAfter;
770
+ }
771
+ if (options.createdBefore) {
772
+ params.created_before = options.createdBefore instanceof Date ? options.createdBefore.toISOString() : options.createdBefore;
773
+ }
774
+ if (options.minAmount !== void 0) params.min_amount = options.minAmount;
775
+ if (options.maxAmount !== void 0) params.max_amount = options.maxAmount;
776
+ if (options.q) params.q = options.q;
777
+ }
778
+ return super.list({ params });
779
+ }
780
+ /**
781
+ * Create a new deposit request (for anonymous/guest users)
517
782
  * @param data - The deposit data
518
783
  * @returns Promise that resolves to the created deposit
519
784
  */
520
785
  async send(data) {
521
- const output = data;
522
- const res = await this.client.post(`/${this.resource}/send`, output);
786
+ const res = await this.client.post(`/${this.resource}/send`, data);
523
787
  return res.data;
524
788
  }
525
789
  /**
@@ -564,6 +828,51 @@ var DepositRepository = class extends ModelRepository {
564
828
  const res = await this.client.get(`/${this.resource}/paypal/order/${orderId}`);
565
829
  return res.data;
566
830
  }
831
+ /**
832
+ * Accept a pending deposit (admin only)
833
+ * @param depositId - The deposit ID to accept
834
+ * @param note - Optional note for the status change
835
+ * @returns Promise that resolves to the updated deposit
836
+ */
837
+ async accept(depositId, note) {
838
+ return this.update({
839
+ id: depositId,
840
+ data: {
841
+ status: "completed",
842
+ note
843
+ }
844
+ });
845
+ }
846
+ /**
847
+ * Reject a pending deposit (admin only)
848
+ * @param depositId - The deposit ID to reject
849
+ * @param note - Optional note for the rejection reason
850
+ * @returns Promise that resolves to the updated deposit
851
+ */
852
+ async reject(depositId, note) {
853
+ return this.update({
854
+ id: depositId,
855
+ data: {
856
+ status: "failed",
857
+ note
858
+ }
859
+ });
860
+ }
861
+ /**
862
+ * Cancel a pending deposit
863
+ * @param depositId - The deposit ID to cancel
864
+ * @param note - Optional note for the cancellation reason
865
+ * @returns Promise that resolves to the updated deposit
866
+ */
867
+ async cancel(depositId, note) {
868
+ return this.update({
869
+ id: depositId,
870
+ data: {
871
+ status: "cancelled",
872
+ note
873
+ }
874
+ });
875
+ }
567
876
  };
568
877
 
569
878
  // src/feeef/repositories/transfers.ts
@@ -575,9 +884,62 @@ var TransferRepository = class extends ModelRepository {
575
884
  constructor(client) {
576
885
  super("transfers", client);
577
886
  }
578
- // The create method is inherited from ModelRepository and supports both:
579
- // 1. create(data, params?) - Pass data directly
580
- // 2. create({ data, params }) - Pass options object
887
+ /**
888
+ * Lists transfers with optional filtering.
889
+ * @param options - The options for listing transfers.
890
+ * @returns A Promise that resolves to a list of Transfer entities.
891
+ */
892
+ async list(options) {
893
+ const params = { ...options?.params };
894
+ if (options) {
895
+ if (options.page) params.page = options.page;
896
+ if (options.offset) params.offset = options.offset;
897
+ if (options.limit) params.limit = options.limit;
898
+ if (options.debitAccountId) params.debit_account_id = options.debitAccountId;
899
+ if (options.creditAccountId) params.credit_account_id = options.creditAccountId;
900
+ if (options.accountId) params.account_id = options.accountId;
901
+ if (options.type) {
902
+ params.type = Array.isArray(options.type) ? options.type : [options.type];
903
+ }
904
+ if (options.referenceId) params.reference_id = options.referenceId;
905
+ if (options.createdAfter) {
906
+ params.created_after = options.createdAfter instanceof Date ? options.createdAfter.toISOString() : options.createdAfter;
907
+ }
908
+ if (options.createdBefore) {
909
+ params.created_before = options.createdBefore instanceof Date ? options.createdBefore.toISOString() : options.createdBefore;
910
+ }
911
+ if (options.minAmount !== void 0) params.min_amount = options.minAmount;
912
+ if (options.maxAmount !== void 0) params.max_amount = options.maxAmount;
913
+ }
914
+ return super.list({ params });
915
+ }
916
+ /**
917
+ * Lists transfers for a specific account (either as debit or credit).
918
+ * @param accountId - The account ID.
919
+ * @param options - Optional list options.
920
+ * @returns A Promise that resolves to a list of Transfer entities.
921
+ */
922
+ async listByAccount(accountId, options) {
923
+ return this.list({ ...options, accountId });
924
+ }
925
+ /**
926
+ * Lists transfers by type.
927
+ * @param type - The transfer type(s).
928
+ * @param options - Optional list options.
929
+ * @returns A Promise that resolves to a list of Transfer entities.
930
+ */
931
+ async listByType(type, options) {
932
+ return this.list({ ...options, type });
933
+ }
934
+ /**
935
+ * Lists transfers by reference ID.
936
+ * @param referenceId - The reference ID.
937
+ * @param options - Optional list options.
938
+ * @returns A Promise that resolves to a list of Transfer entities.
939
+ */
940
+ async listByReferenceId(referenceId, options) {
941
+ return this.list({ ...options, referenceId });
942
+ }
581
943
  };
582
944
 
583
945
  // src/feeef/repositories/categories.ts
@@ -589,6 +951,52 @@ var CategoryRepository = class extends ModelRepository {
589
951
  constructor(client) {
590
952
  super("categories", client);
591
953
  }
954
+ /**
955
+ * Lists categories with optional filtering.
956
+ * @param options - The options for listing categories.
957
+ * @returns A Promise that resolves to a list of Category entities.
958
+ */
959
+ async list(options) {
960
+ const { storeId, parentId, q, ...listOptions } = options || {};
961
+ const params = {
962
+ ...listOptions.params
963
+ };
964
+ if (storeId) params.store_id = storeId;
965
+ if (parentId !== void 0) params.parent_id = parentId;
966
+ if (q) params.q = q;
967
+ return super.list({
968
+ ...listOptions,
969
+ params
970
+ });
971
+ }
972
+ /**
973
+ * Lists categories for a specific store.
974
+ * @param storeId - The store ID.
975
+ * @param options - Optional list options.
976
+ * @returns A Promise that resolves to a list of Category entities.
977
+ */
978
+ async listByStore(storeId, options) {
979
+ return this.list({ ...options, storeId });
980
+ }
981
+ /**
982
+ * Lists root categories (no parent) for a store.
983
+ * @param storeId - The store ID.
984
+ * @param options - Optional list options.
985
+ * @returns A Promise that resolves to a list of root Category entities.
986
+ */
987
+ async listRootCategories(storeId, options) {
988
+ return this.list({ ...options, storeId, parentId: null });
989
+ }
990
+ /**
991
+ * Lists child categories for a parent category.
992
+ * @param storeId - The store ID.
993
+ * @param parentId - The parent category ID.
994
+ * @param options - Optional list options.
995
+ * @returns A Promise that resolves to a list of child Category entities.
996
+ */
997
+ async listChildren(storeId, parentId, options) {
998
+ return this.list({ ...options, storeId, parentId });
999
+ }
592
1000
  };
593
1001
 
594
1002
  // src/feeef/repositories/countries.ts
@@ -863,25 +1271,198 @@ var ShippingPriceRepository = class extends ModelRepository {
863
1271
  super("shipping_prices", client);
864
1272
  }
865
1273
  /**
866
- * Creates a new ShippingPrice entity.
867
- * @param options The options for creating the ShippingPrice entity.
868
- * @returns A Promise that resolves to the created ShippingPrice entity.
1274
+ * Lists shipping prices with optional filtering.
1275
+ * @param options - The options for listing shipping prices.
1276
+ * @returns A Promise that resolves to a list of ShippingPrice entities.
869
1277
  */
870
- async create(options) {
871
- const output = options.data;
872
- return super.create({ ...options, data: output });
1278
+ async list(options) {
1279
+ const { storeId, status, ...listOptions } = options || {};
1280
+ const params = {
1281
+ ...listOptions.params
1282
+ };
1283
+ if (storeId) params.store_id = storeId;
1284
+ if (status) params.status = Array.isArray(status) ? status : [status];
1285
+ return super.list({
1286
+ ...listOptions,
1287
+ params
1288
+ });
873
1289
  }
874
1290
  /**
875
- * Finds a ShippingPrice by store ID.
1291
+ * Lists shipping prices for a specific store.
876
1292
  * @param storeId The store ID to search for.
877
1293
  * @returns A Promise that resolves to the ShippingPrice entities for the store.
878
1294
  */
879
1295
  async listByStore(storeId) {
880
- const response = await this.list({ params: { storeId } });
1296
+ const response = await this.list({ storeId });
881
1297
  return response.data;
882
1298
  }
883
1299
  };
884
1300
 
1301
+ // src/feeef/repositories/shipping_methods.ts
1302
+ var ShippingMethodRepository = class extends ModelRepository {
1303
+ /**
1304
+ * Constructs a new ShippingMethodRepository instance.
1305
+ * @param client The AxiosInstance used for making HTTP requests.
1306
+ */
1307
+ constructor(client) {
1308
+ super("shipping_methods", client);
1309
+ }
1310
+ /**
1311
+ * Lists shipping methods with optional filtering.
1312
+ * @param options - The options for listing shipping methods.
1313
+ * @returns A Promise that resolves to a list of ShippingMethod entities.
1314
+ */
1315
+ async list(options) {
1316
+ const { storeId, status, policy, ...listOptions } = options || {};
1317
+ const params = {
1318
+ ...listOptions.params
1319
+ };
1320
+ if (storeId) params.store_id = storeId;
1321
+ if (status) params.status = Array.isArray(status) ? status : [status];
1322
+ if (policy) params.policy = policy;
1323
+ return super.list({
1324
+ ...listOptions,
1325
+ params
1326
+ });
1327
+ }
1328
+ /**
1329
+ * Lists shipping methods for a specific store.
1330
+ * @param storeId - The store ID.
1331
+ * @param options - Optional list options.
1332
+ * @returns A Promise that resolves to a list of ShippingMethod entities.
1333
+ */
1334
+ async listByStore(storeId, options) {
1335
+ return this.list({ ...options, storeId });
1336
+ }
1337
+ };
1338
+
1339
+ // src/feeef/repositories/feedbacks.ts
1340
+ var FeedbackRepository = class extends ModelRepository {
1341
+ /**
1342
+ * Constructs a new FeedbackRepository instance.
1343
+ * @param client The AxiosInstance used for making HTTP requests.
1344
+ */
1345
+ constructor(client) {
1346
+ super("feedbacks", client);
1347
+ }
1348
+ /**
1349
+ * Lists feedbacks with optional filtering.
1350
+ * @param options - The options for listing feedbacks.
1351
+ * @returns A Promise that resolves to a list of Feedback entities.
1352
+ */
1353
+ async list(options) {
1354
+ const params = {};
1355
+ if (options) {
1356
+ if (options.page) params.page = options.page;
1357
+ if (options.offset) params.offset = options.offset;
1358
+ if (options.limit) params.limit = options.limit;
1359
+ if (options.status) params.status = options.status;
1360
+ if (options.priority) params.priority = options.priority;
1361
+ if (options.tags) params.tags = options.tags;
1362
+ if (options.q) params.q = options.q;
1363
+ if (options.createdAfter) {
1364
+ params.created_after = options.createdAfter instanceof Date ? options.createdAfter.toISOString() : options.createdAfter;
1365
+ }
1366
+ if (options.createdBefore) {
1367
+ params.created_before = options.createdBefore instanceof Date ? options.createdBefore.toISOString() : options.createdBefore;
1368
+ }
1369
+ if (options.updatedAfter) {
1370
+ params.updated_after = options.updatedAfter instanceof Date ? options.updatedAfter.toISOString() : options.updatedAfter;
1371
+ }
1372
+ if (options.updatedBefore) {
1373
+ params.updated_before = options.updatedBefore instanceof Date ? options.updatedBefore.toISOString() : options.updatedBefore;
1374
+ }
1375
+ if (options.resolvedAfter) {
1376
+ params.resolved_after = options.resolvedAfter instanceof Date ? options.resolvedAfter.toISOString() : options.resolvedAfter;
1377
+ }
1378
+ if (options.resolvedBefore) {
1379
+ params.resolved_before = options.resolvedBefore instanceof Date ? options.resolvedBefore.toISOString() : options.resolvedBefore;
1380
+ }
1381
+ if (options.resolved !== void 0) params.resolved = options.resolved;
1382
+ }
1383
+ return super.list({ params });
1384
+ }
1385
+ /**
1386
+ * Adds a comment to existing feedback.
1387
+ * @param id - The feedback ID.
1388
+ * @param comment - The comment to add.
1389
+ * @returns A Promise that resolves to the updated Feedback entity.
1390
+ */
1391
+ async addComment(id, comment) {
1392
+ const res = await this.client.post(`/${this.resource}/${id}/comments`, { comment });
1393
+ return res.data;
1394
+ }
1395
+ /**
1396
+ * Creates feedback with file attachments.
1397
+ * @param data - The feedback data.
1398
+ * @param files - Optional array of files to attach.
1399
+ * @param params - Optional query parameters.
1400
+ * @returns A Promise that resolves to the created Feedback entity.
1401
+ */
1402
+ async createWithFiles(data, files, params) {
1403
+ const formData = new FormData();
1404
+ formData.append("title", data.title);
1405
+ if (data.details) formData.append("details", data.details);
1406
+ if (data.priority) formData.append("priority", data.priority);
1407
+ if (data.appVersion) formData.append("appVersion", data.appVersion);
1408
+ if (data.tags) formData.append("tags", JSON.stringify(data.tags));
1409
+ if (data.attachments) formData.append("attachments", JSON.stringify(data.attachments));
1410
+ if (data.metadata) formData.append("metadata", JSON.stringify(data.metadata));
1411
+ if (files) {
1412
+ for (const file of files) {
1413
+ formData.append("files", file);
1414
+ }
1415
+ }
1416
+ if (params) {
1417
+ for (const [key, value] of Object.entries(params)) {
1418
+ formData.append(key, String(value));
1419
+ }
1420
+ }
1421
+ const res = await this.client.post(`/${this.resource}`, formData, {
1422
+ headers: {
1423
+ "Content-Type": "multipart/form-data"
1424
+ }
1425
+ });
1426
+ return res.data;
1427
+ }
1428
+ /**
1429
+ * Updates feedback with additional files.
1430
+ * @param id - The feedback ID.
1431
+ * @param data - The update data.
1432
+ * @param files - Optional array of files to attach.
1433
+ * @param params - Optional query parameters.
1434
+ * @returns A Promise that resolves to the updated Feedback entity.
1435
+ */
1436
+ async updateWithFiles(id, data, files, params) {
1437
+ const formData = new FormData();
1438
+ if (data.title) formData.append("title", data.title);
1439
+ if (data.details) formData.append("details", data.details);
1440
+ if (data.status) formData.append("status", data.status);
1441
+ if (data.priority) formData.append("priority", data.priority);
1442
+ if (data.appVersion) formData.append("appVersion", data.appVersion);
1443
+ if (data.tags) formData.append("tags", JSON.stringify(data.tags));
1444
+ if (data.attachments) formData.append("attachments", JSON.stringify(data.attachments));
1445
+ if (data.metadata) formData.append("metadata", JSON.stringify(data.metadata));
1446
+ if (data.comment) formData.append("comment", data.comment);
1447
+ if (files) {
1448
+ for (const file of files) {
1449
+ formData.append("files", file);
1450
+ }
1451
+ }
1452
+ if (params) {
1453
+ for (const [key, value] of Object.entries(params)) {
1454
+ formData.append(key, String(value));
1455
+ }
1456
+ }
1457
+ const res = await this.client.put(`/${this.resource}/${id}`, formData, {
1458
+ headers: {
1459
+ "Content-Type": "multipart/form-data"
1460
+ }
1461
+ });
1462
+ return res.data;
1463
+ }
1464
+ };
1465
+
885
1466
  // src/core/entities/order.ts
886
1467
  var OrderStatus = /* @__PURE__ */ ((OrderStatus2) => {
887
1468
  OrderStatus2["draft"] = "draft";
@@ -1821,6 +2402,512 @@ var ActionsService = class {
1821
2402
  }
1822
2403
  };
1823
2404
 
2405
+ // src/feeef/services/notifications.ts
2406
+ var NotificationsService = class {
2407
+ client;
2408
+ constructor(client) {
2409
+ this.client = client;
2410
+ }
2411
+ /**
2412
+ * Send notifications to filtered users
2413
+ * Admin only - uses filterator to filter users
2414
+ * @param options - Notification options including filterator
2415
+ * @returns Promise that resolves to send statistics
2416
+ */
2417
+ async send(options) {
2418
+ const payload = {
2419
+ title: options.title,
2420
+ body: options.body
2421
+ };
2422
+ if (options.data) {
2423
+ payload.data = options.data;
2424
+ }
2425
+ if (options.clickUrl) {
2426
+ payload.clickUrl = options.clickUrl;
2427
+ }
2428
+ if (options.sound) {
2429
+ payload.sound = options.sound;
2430
+ }
2431
+ if (options.filterator) {
2432
+ payload.filterator = typeof options.filterator === "string" ? options.filterator : JSON.stringify(options.filterator);
2433
+ }
2434
+ if (options.q) {
2435
+ payload.q = options.q;
2436
+ }
2437
+ if (options.page) {
2438
+ payload.page = options.page;
2439
+ }
2440
+ if (options.limit) {
2441
+ payload.limit = options.limit;
2442
+ }
2443
+ const res = await this.client.post("/notifications/send", payload);
2444
+ return res.data;
2445
+ }
2446
+ };
2447
+
2448
+ // src/feeef/services/storage.ts
2449
+ var StorageService = class {
2450
+ client;
2451
+ constructor(client) {
2452
+ this.client = client;
2453
+ }
2454
+ /**
2455
+ * Uploads a file
2456
+ * @param options - Upload options
2457
+ * @returns Promise resolving to the upload result
2458
+ */
2459
+ async upload(options) {
2460
+ const formData = new FormData();
2461
+ formData.append("file", options.file);
2462
+ if (options.folder) {
2463
+ formData.append("folder", options.folder);
2464
+ }
2465
+ const response = await this.client.post("/services/storage/upload", formData, {
2466
+ headers: {
2467
+ "Content-Type": "multipart/form-data"
2468
+ },
2469
+ onUploadProgress: options.onProgress ? (progressEvent) => {
2470
+ const total = progressEvent.total || 0;
2471
+ const loaded = progressEvent.loaded || 0;
2472
+ options.onProgress({
2473
+ loaded,
2474
+ total,
2475
+ percentage: total > 0 ? Math.round(loaded / total * 100) : 0
2476
+ });
2477
+ } : void 0,
2478
+ cancelToken: options.cancelToken
2479
+ });
2480
+ return {
2481
+ url: response.data.url
2482
+ };
2483
+ }
2484
+ /**
2485
+ * Uploads bytes directly
2486
+ * @param options - Upload options
2487
+ * @returns Promise resolving to the upload result
2488
+ */
2489
+ async uploadBytes(options) {
2490
+ const blob = new Blob([options.bytes]);
2491
+ const file = new File([blob], options.filename);
2492
+ return this.upload({
2493
+ file,
2494
+ folder: options.folder,
2495
+ onProgress: options.onProgress,
2496
+ cancelToken: options.cancelToken
2497
+ });
2498
+ }
2499
+ /**
2500
+ * Uploads a file for a store
2501
+ * @param file - The file to upload
2502
+ * @param storeId - The store ID
2503
+ * @param options - Additional options
2504
+ * @returns Promise resolving to the upload result
2505
+ */
2506
+ async uploadStoreFile(file, storeId, options) {
2507
+ const folder = options?.subfolder ? `stores/${storeId}/${options.subfolder}` : `stores/${storeId}`;
2508
+ return this.upload({
2509
+ file,
2510
+ folder,
2511
+ onProgress: options?.onProgress,
2512
+ cancelToken: options?.cancelToken
2513
+ });
2514
+ }
2515
+ /**
2516
+ * Uploads a product image
2517
+ * @param file - The file to upload
2518
+ * @param storeId - The store ID
2519
+ * @param productId - The product ID
2520
+ * @param options - Additional options
2521
+ * @returns Promise resolving to the upload result
2522
+ */
2523
+ async uploadProductImage(file, storeId, productId, options) {
2524
+ return this.uploadStoreFile(file, storeId, {
2525
+ subfolder: `products/${productId}`,
2526
+ onProgress: options?.onProgress,
2527
+ cancelToken: options?.cancelToken
2528
+ });
2529
+ }
2530
+ /**
2531
+ * Uploads a store logo
2532
+ * @param file - The file to upload
2533
+ * @param storeId - The store ID
2534
+ * @param options - Additional options
2535
+ * @returns Promise resolving to the upload result
2536
+ */
2537
+ async uploadStoreLogo(file, storeId, options) {
2538
+ return this.uploadStoreFile(file, storeId, {
2539
+ subfolder: "logo",
2540
+ onProgress: options?.onProgress,
2541
+ cancelToken: options?.cancelToken
2542
+ });
2543
+ }
2544
+ /**
2545
+ * Uploads a store icon
2546
+ * @param file - The file to upload
2547
+ * @param storeId - The store ID
2548
+ * @param options - Additional options
2549
+ * @returns Promise resolving to the upload result
2550
+ */
2551
+ async uploadStoreIcon(file, storeId, options) {
2552
+ return this.uploadStoreFile(file, storeId, {
2553
+ subfolder: "icon",
2554
+ onProgress: options?.onProgress,
2555
+ cancelToken: options?.cancelToken
2556
+ });
2557
+ }
2558
+ /**
2559
+ * Uploads a user avatar
2560
+ * @param file - The file to upload
2561
+ * @param userId - The user ID
2562
+ * @param options - Additional options
2563
+ * @returns Promise resolving to the upload result
2564
+ */
2565
+ async uploadUserAvatar(file, userId, options) {
2566
+ return this.upload({
2567
+ file,
2568
+ folder: `users/${userId}/avatar`,
2569
+ onProgress: options?.onProgress,
2570
+ cancelToken: options?.cancelToken
2571
+ });
2572
+ }
2573
+ /**
2574
+ * Uploads a feedback attachment
2575
+ * @param file - The file to upload
2576
+ * @param feedbackId - The feedback ID
2577
+ * @param options - Additional options
2578
+ * @returns Promise resolving to the upload result
2579
+ */
2580
+ async uploadFeedbackAttachment(file, feedbackId, options) {
2581
+ return this.upload({
2582
+ file,
2583
+ folder: `feedbacks/${feedbackId}`,
2584
+ onProgress: options?.onProgress,
2585
+ cancelToken: options?.cancelToken
2586
+ });
2587
+ }
2588
+ };
2589
+
2590
+ // src/feeef/services/integrations.ts
2591
+ var EcotrackDeliveryIntegrationApi = class {
2592
+ client;
2593
+ integration;
2594
+ storeId;
2595
+ constructor(client, integration, storeId) {
2596
+ this.client = client;
2597
+ this.integration = integration;
2598
+ this.storeId = storeId;
2599
+ }
2600
+ /**
2601
+ * Gets delivery fees from Ecotrack
2602
+ */
2603
+ async getDeliveryFees() {
2604
+ const res = await this.client.get(`/stores/${this.storeId}/integrations/ecotrack/fees`, {
2605
+ params: {
2606
+ baseUrl: this.integration.baseUrl,
2607
+ token: this.integration.token
2608
+ }
2609
+ });
2610
+ return res.data;
2611
+ }
2612
+ /**
2613
+ * Gets financial data from Ecotrack
2614
+ */
2615
+ async getFinancialData(options) {
2616
+ const res = await this.client.get(`/stores/${this.storeId}/integrations/ecotrack/finance`, {
2617
+ params: {
2618
+ api_token: this.integration.token,
2619
+ ...options
2620
+ }
2621
+ });
2622
+ return {
2623
+ success: res.data.success ?? false,
2624
+ amountsNotEncaissed: res.data.amounts_not_encaissed ?? 0,
2625
+ feesNotEncaissed: res.data.fees_not_encaissed ?? 0,
2626
+ notEncaissed: res.data.not_encaissed ?? 0,
2627
+ amountsEncaissed: res.data.amounts_encaissed ?? 0,
2628
+ feesEncaissed: res.data.fees_encaissed ?? 0,
2629
+ encaissed: res.data.encaissed ?? 0,
2630
+ amountsPaymentReady: res.data.amounts_payment_ready ?? 0,
2631
+ feesPaymentReady: res.data.fees_payment_ready ?? 0,
2632
+ paymentReady: res.data.payment_ready ?? 0
2633
+ };
2634
+ }
2635
+ /**
2636
+ * Gets statistics data from Ecotrack
2637
+ */
2638
+ async getStatistics() {
2639
+ const res = await this.client.get(`/stores/${this.storeId}/integrations/ecotrack/statistics`);
2640
+ return {
2641
+ topWilaya: (res.data.top_wilaya || []).map((w) => ({
2642
+ wilayaId: w.wilaya_id ?? 0,
2643
+ total: w.total ?? 0,
2644
+ retours: w.retours ?? 0,
2645
+ livred: w.livred ?? 0,
2646
+ wilayaName: w.wilaya_name ?? ""
2647
+ })),
2648
+ todayActivity: {
2649
+ expedie: res.data.today_act?.expedie ?? 0,
2650
+ delivered: res.data.today_act?.delivered ?? 0,
2651
+ returned: res.data.today_act?.returned ?? 0,
2652
+ suspended: res.data.today_act?.suspended ?? 0
2653
+ },
2654
+ globalStats: {
2655
+ enTraitement: res.data.global?.enTraitement ?? 0,
2656
+ livred: res.data.global?.livred ?? 0,
2657
+ retours: res.data.global?.retours ?? 0,
2658
+ total: res.data.global?.total ?? 0
2659
+ }
2660
+ };
2661
+ }
2662
+ /**
2663
+ * Gets the sync status for this store's Ecotrack integration
2664
+ */
2665
+ async getSyncStatus() {
2666
+ const res = await this.client.get(`/stores/${this.storeId}/integrations/ecotrack/sync/status`);
2667
+ return res.data;
2668
+ }
2669
+ /**
2670
+ * Triggers a sync of orders from Ecotrack
2671
+ */
2672
+ async triggerSync(options) {
2673
+ const res = await this.client.post(`/stores/${this.storeId}/integrations/ecotrack/sync`, {
2674
+ startDate: options?.startDate instanceof Date ? options.startDate.toISOString() : options?.startDate,
2675
+ endDate: options?.endDate instanceof Date ? options.endDate.toISOString() : options?.endDate
2676
+ });
2677
+ return res.data;
2678
+ }
2679
+ };
2680
+ var YalidineAgent = /* @__PURE__ */ ((YalidineAgent2) => {
2681
+ YalidineAgent2["yalidine"] = "yalidine";
2682
+ YalidineAgent2["guepex"] = "guepex";
2683
+ return YalidineAgent2;
2684
+ })(YalidineAgent || {});
2685
+ var YalidineDeliveryIntegrationApi = class {
2686
+ client;
2687
+ integration;
2688
+ storeId;
2689
+ constructor(client, integration, storeId) {
2690
+ this.client = client;
2691
+ this.integration = integration;
2692
+ this.storeId = storeId;
2693
+ }
2694
+ /**
2695
+ * Gets delivery fees from Yalidine
2696
+ */
2697
+ async getDeliveryFees() {
2698
+ const res = await this.client.get(`/stores/${this.storeId}/integrations/yalidine/fees`, {
2699
+ params: {
2700
+ id: this.integration.id,
2701
+ token: this.integration.token
2702
+ }
2703
+ });
2704
+ return res.data;
2705
+ }
2706
+ };
2707
+ var ProcolisDeliveryIntegrationApi = class {
2708
+ client;
2709
+ integration;
2710
+ storeId;
2711
+ constructor(client, integration, storeId) {
2712
+ this.client = client;
2713
+ this.integration = integration;
2714
+ this.storeId = storeId;
2715
+ }
2716
+ /**
2717
+ * Gets delivery fees from Procolis
2718
+ */
2719
+ async getDeliveryFees() {
2720
+ const res = await this.client.get(`/stores/${this.storeId}/integrations/procolis/fees`, {
2721
+ params: {
2722
+ key: this.integration.key,
2723
+ token: this.integration.token
2724
+ }
2725
+ });
2726
+ return res.data;
2727
+ }
2728
+ /**
2729
+ * Sends an order to Procolis
2730
+ */
2731
+ async send(orderId) {
2732
+ await this.client.post(`/stores/${this.storeId}/integrations/procolis/send`, {
2733
+ key: this.integration.key,
2734
+ token: this.integration.token,
2735
+ orderId
2736
+ });
2737
+ }
2738
+ };
2739
+ var NoestDeliveryIntegrationApi = class {
2740
+ client;
2741
+ integration;
2742
+ storeId;
2743
+ constructor(client, integration, storeId) {
2744
+ this.client = client;
2745
+ this.integration = integration;
2746
+ this.storeId = storeId;
2747
+ }
2748
+ /**
2749
+ * Gets delivery fees from Noest
2750
+ */
2751
+ async getDeliveryFees() {
2752
+ const res = await this.client.get(`/stores/${this.storeId}/integrations/noest/fees`, {
2753
+ params: {
2754
+ guid: this.integration.guid,
2755
+ token: this.integration.token
2756
+ }
2757
+ });
2758
+ return res.data;
2759
+ }
2760
+ /**
2761
+ * Sends an order to Noest
2762
+ */
2763
+ async send(orderId) {
2764
+ await this.client.post(`/stores/${this.storeId}/integrations/noest/send`, {
2765
+ guid: this.integration.guid,
2766
+ token: this.integration.token,
2767
+ orderId
2768
+ });
2769
+ }
2770
+ };
2771
+ var GoogleSheetIntegrationApi = class {
2772
+ client;
2773
+ integration;
2774
+ storeId;
2775
+ constructor(client, integration, storeId) {
2776
+ this.client = client;
2777
+ this.integration = integration;
2778
+ this.storeId = storeId;
2779
+ }
2780
+ /**
2781
+ * Appends a row to the Google Sheet
2782
+ */
2783
+ async appendRow(values) {
2784
+ await this.client.post(`/stores/${this.storeId}/integrations/google-sheets/append-row`, {
2785
+ id: this.integration.id,
2786
+ name: this.integration.name,
2787
+ row: values
2788
+ });
2789
+ }
2790
+ /**
2791
+ * Creates a new spreadsheet
2792
+ */
2793
+ async createSpreadsheet(name) {
2794
+ await this.client.post(
2795
+ `/stores/${this.storeId}/integrations/google-sheets/create-spreadsheet`,
2796
+ { name }
2797
+ );
2798
+ }
2799
+ };
2800
+ var ZimouDeliveryIntegrationApi = class {
2801
+ client;
2802
+ integration;
2803
+ storeId;
2804
+ constructor(client, integration, storeId) {
2805
+ this.client = client;
2806
+ this.integration = integration;
2807
+ this.storeId = storeId;
2808
+ }
2809
+ /**
2810
+ * Gets delivery fees from Zimou
2811
+ */
2812
+ async getDeliveryFees() {
2813
+ const res = await this.client.get(`/stores/${this.storeId}/integrations/zimou/fees`, {
2814
+ params: {
2815
+ apiKey: this.integration.apiKey
2816
+ }
2817
+ });
2818
+ return res.data;
2819
+ }
2820
+ /**
2821
+ * Sends an order to Zimou
2822
+ */
2823
+ async send(orderId) {
2824
+ await this.client.post(`/stores/${this.storeId}/integrations/zimou/send`, {
2825
+ apiKey: this.integration.apiKey,
2826
+ orderId
2827
+ });
2828
+ }
2829
+ };
2830
+ var EcomanagerDeliveryIntegrationApi = class {
2831
+ client;
2832
+ integration;
2833
+ storeId;
2834
+ constructor(client, integration, storeId) {
2835
+ this.client = client;
2836
+ this.integration = integration;
2837
+ this.storeId = storeId;
2838
+ }
2839
+ /**
2840
+ * Gets delivery fees from Ecomanager
2841
+ */
2842
+ async getDeliveryFees() {
2843
+ const res = await this.client.get(`/stores/${this.storeId}/integrations/ecomanager/fees`, {
2844
+ params: {
2845
+ baseUrl: this.integration.baseUrl,
2846
+ token: this.integration.token
2847
+ }
2848
+ });
2849
+ return res.data;
2850
+ }
2851
+ /**
2852
+ * Sends an order to Ecomanager
2853
+ */
2854
+ async send(orderId) {
2855
+ await this.client.post(`/stores/${this.storeId}/integrations/ecomanager/send`, {
2856
+ baseUrl: this.integration.baseUrl,
2857
+ token: this.integration.token,
2858
+ orderId
2859
+ });
2860
+ }
2861
+ };
2862
+ var IntegrationFactory = class {
2863
+ client;
2864
+ constructor(client) {
2865
+ this.client = client;
2866
+ }
2867
+ /**
2868
+ * Creates an Ecotrack integration API
2869
+ */
2870
+ ecotrack(integration, storeId) {
2871
+ return new EcotrackDeliveryIntegrationApi(this.client, integration, storeId);
2872
+ }
2873
+ /**
2874
+ * Creates a Yalidine integration API
2875
+ */
2876
+ yalidine(integration, storeId) {
2877
+ return new YalidineDeliveryIntegrationApi(this.client, integration, storeId);
2878
+ }
2879
+ /**
2880
+ * Creates a Procolis integration API
2881
+ */
2882
+ procolis(integration, storeId) {
2883
+ return new ProcolisDeliveryIntegrationApi(this.client, integration, storeId);
2884
+ }
2885
+ /**
2886
+ * Creates a Noest integration API
2887
+ */
2888
+ noest(integration, storeId) {
2889
+ return new NoestDeliveryIntegrationApi(this.client, integration, storeId);
2890
+ }
2891
+ /**
2892
+ * Creates a Google Sheets integration API
2893
+ */
2894
+ googleSheets(integration, storeId) {
2895
+ return new GoogleSheetIntegrationApi(this.client, integration, storeId);
2896
+ }
2897
+ /**
2898
+ * Creates a Zimou integration API
2899
+ */
2900
+ zimou(integration, storeId) {
2901
+ return new ZimouDeliveryIntegrationApi(this.client, integration, storeId);
2902
+ }
2903
+ /**
2904
+ * Creates an Ecomanager integration API
2905
+ */
2906
+ ecomanager(integration, storeId) {
2907
+ return new EcomanagerDeliveryIntegrationApi(this.client, integration, storeId);
2908
+ }
2909
+ };
2910
+
1824
2911
  // src/feeef/feeef.ts
1825
2912
  var FeeeF = class {
1826
2913
  /**
@@ -1879,6 +2966,14 @@ var FeeeF = class {
1879
2966
  * The repository for managing shipping prices.
1880
2967
  */
1881
2968
  shippingPrices;
2969
+ /**
2970
+ * The repository for managing shipping methods.
2971
+ */
2972
+ shippingMethods;
2973
+ /**
2974
+ * The repository for managing feedbacks.
2975
+ */
2976
+ feedbacks;
1882
2977
  /**
1883
2978
  * The cart service for managing the cart.
1884
2979
  */
@@ -1887,6 +2982,18 @@ var FeeeF = class {
1887
2982
  * The actions service for performing various actions (file uploads, etc.)
1888
2983
  */
1889
2984
  actions;
2985
+ /**
2986
+ * The notifications service for sending push notifications
2987
+ */
2988
+ notifications;
2989
+ /**
2990
+ * The storage service for uploading files
2991
+ */
2992
+ storage;
2993
+ /**
2994
+ * The integration factory for creating integration API instances
2995
+ */
2996
+ integrations;
1890
2997
  /**
1891
2998
  * Constructs a new instance of the FeeeF class.
1892
2999
  * @param {FeeeFConfig} config - The configuration object.
@@ -1894,13 +3001,14 @@ var FeeeF = class {
1894
3001
  * @param {AxiosInstance} config.client - The Axios instance used for making HTTP requests.
1895
3002
  * @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.
1896
3003
  */
1897
- //
1898
3004
  constructor({ apiKey, client, cache, baseURL = "http://localhost:3333/api/v1" }) {
1899
3005
  console.log("feeef super cache", cache);
1900
3006
  this.apiKey = apiKey;
1901
3007
  this.client = client || axios;
1902
3008
  this.client.defaults.headers.common["Authorization"] = `Bearer ${this.apiKey}`;
1903
3009
  this.client.defaults.baseURL = baseURL;
3010
+ this.client.defaults.headers.common["Accept"] = "application/json";
3011
+ this.client.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";
1904
3012
  this.stores = new StoreRepository(this.client);
1905
3013
  this.products = new ProductRepository(this.client);
1906
3014
  this.users = new UserRepository(this.client);
@@ -1913,11 +3021,18 @@ var FeeeF = class {
1913
3021
  this.cities = new CityRepository(this.client);
1914
3022
  this.currencies = new CurrencyRepository(this.client);
1915
3023
  this.shippingPrices = new ShippingPriceRepository(this.client);
3024
+ this.shippingMethods = new ShippingMethodRepository(this.client);
3025
+ this.feedbacks = new FeedbackRepository(this.client);
1916
3026
  this.cart = new CartService();
1917
3027
  this.actions = new ActionsService(this.client);
3028
+ this.notifications = new NotificationsService(this.client);
3029
+ this.storage = new StorageService(this.client);
3030
+ this.integrations = new IntegrationFactory(this.client);
1918
3031
  }
1919
3032
  /**
1920
- * set header method to set custom headers for all requests
3033
+ * Sets a header for all requests
3034
+ * @param {string} key - The header key.
3035
+ * @param {string} value - The header value.
1921
3036
  */
1922
3037
  setHeader(key, value) {
1923
3038
  this.client.defaults.headers.common[key] = value;
@@ -2176,6 +3291,22 @@ var ProductType = /* @__PURE__ */ ((ProductType2) => {
2176
3291
  return ProductType2;
2177
3292
  })(ProductType || {});
2178
3293
 
3294
+ // src/core/entities/feedback.ts
3295
+ var FeedbackStatus = /* @__PURE__ */ ((FeedbackStatus2) => {
3296
+ FeedbackStatus2["open"] = "open";
3297
+ FeedbackStatus2["inProgress"] = "in_progress";
3298
+ FeedbackStatus2["resolved"] = "resolved";
3299
+ FeedbackStatus2["closed"] = "closed";
3300
+ return FeedbackStatus2;
3301
+ })(FeedbackStatus || {});
3302
+ var FeedbackPriority = /* @__PURE__ */ ((FeedbackPriority2) => {
3303
+ FeedbackPriority2["low"] = "low";
3304
+ FeedbackPriority2["medium"] = "medium";
3305
+ FeedbackPriority2["high"] = "high";
3306
+ FeedbackPriority2["critical"] = "critical";
3307
+ return FeedbackPriority2;
3308
+ })(FeedbackPriority || {});
3309
+
2179
3310
  // src/core/embadded/contact.ts
2180
3311
  var EmbaddedContactType = /* @__PURE__ */ ((EmbaddedContactType2) => {
2181
3312
  EmbaddedContactType2["phone"] = "phone";
@@ -2275,23 +3406,45 @@ function validatePhoneNumber(phone) {
2275
3406
  export {
2276
3407
  ActionsService,
2277
3408
  CartService,
3409
+ CategoryRepository,
3410
+ CityRepository,
3411
+ CountryRepository,
3412
+ CurrencyRepository,
3413
+ DeliveryServiceFilter,
2278
3414
  DeliveryStatus,
2279
3415
  DepositRepository,
3416
+ EcomanagerDeliveryIntegrationApi,
3417
+ EcotrackDeliveryIntegrationApi,
2280
3418
  EmbaddedContactType,
3419
+ FeedbackPriority,
3420
+ FeedbackRepository,
3421
+ FeedbackStatus,
2281
3422
  FeeeF,
3423
+ GoogleSheetIntegrationApi,
3424
+ IntegrationFactory,
2282
3425
  MetaPixelEvent,
3426
+ ModelRepository,
3427
+ NoestDeliveryIntegrationApi,
3428
+ NotificationsService,
3429
+ OrderRepository,
2283
3430
  OrderStatus,
2284
3431
  PaymentStatus,
3432
+ ProcolisDeliveryIntegrationApi,
3433
+ ProductRepository,
2285
3434
  ProductStatus,
2286
3435
  ProductType,
2287
3436
  ProductVariantView,
2288
3437
  ShippingMethodPolicy,
3438
+ ShippingMethodRepository,
2289
3439
  ShippingMethodStatus,
2290
3440
  ShippingPriceRepository,
2291
3441
  ShippingPriceStatus,
2292
3442
  ShippingType,
3443
+ StateRepository,
3444
+ StorageService,
2293
3445
  StoreActionType,
2294
3446
  StoreMemberRole,
3447
+ StoreRepository,
2295
3448
  StoreSubscriptionStatus,
2296
3449
  StoreSubscriptionType,
2297
3450
  TiktokPixelEvent,
@@ -2299,6 +3452,9 @@ export {
2299
3452
  UserRepository,
2300
3453
  VariantOptionType,
2301
3454
  WebhookEvent,
3455
+ YalidineAgent,
3456
+ YalidineDeliveryIntegrationApi,
3457
+ ZimouDeliveryIntegrationApi,
2302
3458
  convertDartColorToCssNumber,
2303
3459
  convertOrderEntityToOrderTrackEntity,
2304
3460
  cssColorToHslString,