@shophost/rest-api 2.0.51 → 2.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/package.json +1 -1
  2. package/schema.prisma +4 -0
  3. package/src/bootstrap.js +1 -1
  4. package/src/bootstrap.js.map +1 -1
  5. package/src/{app-services.d.ts → container.d.ts} +7 -5
  6. package/src/container.js +1 -0
  7. package/src/container.js.map +1 -0
  8. package/src/core/db/__generated__/client/internal/class.js +33 -29
  9. package/src/core/db/__generated__/client/internal/class.js.map +1 -1
  10. package/src/core/db/__generated__/client/internal/prismaNamespace.d.ts +4 -0
  11. package/src/core/db/__generated__/client/internal/prismaNamespace.js +1 -1
  12. package/src/core/db/__generated__/client/internal/prismaNamespace.js.map +1 -1
  13. package/src/core/db/__generated__/client/internal/prismaNamespaceBrowser.d.ts +4 -0
  14. package/src/core/db/__generated__/client/internal/prismaNamespaceBrowser.js +1 -1
  15. package/src/core/db/__generated__/client/internal/prismaNamespaceBrowser.js.map +1 -1
  16. package/src/core/db/__generated__/client/models/Order.d.ts +178 -1
  17. package/src/core/db/__generated__/client/models/Product.d.ts +75 -1
  18. package/src/core/utils/zod.util.js +1 -1
  19. package/src/core/utils/zod.util.js.map +1 -1
  20. package/src/features/cart/cart.route.d.ts +29 -0
  21. package/src/features/cart/cart.route.js +1 -1
  22. package/src/features/cart/cart.route.js.map +1 -1
  23. package/src/features/cart/cart.schema.d.ts +399 -0
  24. package/src/features/cart/cart.schema.js +1 -1
  25. package/src/features/cart/cart.schema.js.map +1 -1
  26. package/src/features/cart/cart.service.d.ts +30 -3
  27. package/src/features/cart/cart.service.js +1 -1
  28. package/src/features/cart/cart.service.js.map +1 -1
  29. package/src/features/inventory/inventory.service.d.ts +24 -0
  30. package/src/features/inventory/inventory.service.js +1 -0
  31. package/src/features/inventory/inventory.service.js.map +1 -0
  32. package/src/features/order/order.handler.js +1 -1
  33. package/src/features/order/order.handler.js.map +1 -1
  34. package/src/features/order/order.route.d.ts +314 -0
  35. package/src/features/order/order.route.js +1 -1
  36. package/src/features/order/order.route.js.map +1 -1
  37. package/src/features/order/order.schema.d.ts +33 -0
  38. package/src/features/order/order.schema.js +1 -1
  39. package/src/features/order/order.schema.js.map +1 -1
  40. package/src/features/order/order.service.d.ts +55 -1
  41. package/src/features/order/order.service.js +1 -1
  42. package/src/features/order/order.service.js.map +1 -1
  43. package/src/features/payment/payment.service.d.ts +4 -1
  44. package/src/features/payment/payment.service.js +1 -1
  45. package/src/features/payment/payment.service.js.map +1 -1
  46. package/src/features/payment/stripe.service.d.ts +2 -2
  47. package/src/features/payment/stripe.service.js +1 -1
  48. package/src/features/payment/stripe.service.js.map +1 -1
  49. package/src/features/product/product.route.d.ts +10 -0
  50. package/src/features/product/product.schema.d.ts +4 -0
  51. package/src/features/product/product.schema.js +1 -1
  52. package/src/features/product/product.schema.js.map +1 -1
  53. package/src/features/product/product.service.d.ts +8 -0
  54. package/src/features/product/product.service.js +1 -1
  55. package/src/features/product/product.service.js.map +1 -1
  56. package/src/schemas/number.schema.d.ts +1 -0
  57. package/src/schemas/number.schema.js +1 -1
  58. package/src/schemas/number.schema.js.map +1 -1
  59. package/src/app-services.js +0 -1
  60. package/src/app-services.js.map +0 -1
@@ -10,6 +10,7 @@ export declare const CartProductsMappingSchema: z.ZodRecord<z.ZodString, z.ZodOb
10
10
  sku: z.ZodOptional<z.ZodString>;
11
11
  basePrice: z.ZodCoercedNumber<unknown>;
12
12
  discountedBasePrice: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodNull]>>, z.ZodTransform<string | number | null, string | number | null | undefined>>, z.ZodNullable<z.ZodNumber>>;
13
+ availableQuantity: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodNull]>>, z.ZodTransform<string | number | null, string | number | null | undefined>>, z.ZodNullable<z.ZodNumber>>;
13
14
  images: z.ZodOptional<z.ZodArray<z.ZodObject<{
14
15
  id: z.ZodString;
15
16
  url: z.ZodString;
@@ -175,6 +176,404 @@ export declare const CartSchema: z.ZodObject<{
175
176
  }, z.core.$strip>>;
176
177
  shippingMethodId: z.ZodOptional<z.ZodString>;
177
178
  }, z.core.$strip>;
179
+ export declare const CartAdjustmentReasonSchema: z.ZodEnum<{
180
+ invalid_product: "invalid_product";
181
+ out_of_stock: "out_of_stock";
182
+ insufficient_stock: "insufficient_stock";
183
+ }>;
184
+ export declare const CartAdjustmentSchema: z.ZodObject<{
185
+ productId: z.ZodString;
186
+ modifierGroups: z.ZodOptional<z.ZodArray<z.ZodObject<{
187
+ id: z.ZodString;
188
+ modifiers: z.ZodArray<z.ZodObject<{
189
+ id: z.ZodString;
190
+ quantity: z.ZodDefault<z.ZodNumber>;
191
+ }, z.core.$strip>>;
192
+ }, z.core.$strip>>>;
193
+ reason: z.ZodEnum<{
194
+ invalid_product: "invalid_product";
195
+ out_of_stock: "out_of_stock";
196
+ insufficient_stock: "insufficient_stock";
197
+ }>;
198
+ requestedQuantity: z.ZodNumber;
199
+ resolvedQuantity: z.ZodNumber;
200
+ }, z.core.$strip>;
201
+ export declare const CartDataSchema: z.ZodObject<{
202
+ invalidProductIds: z.ZodArray<z.ZodString>;
203
+ normalizedItems: z.ZodArray<z.ZodObject<{
204
+ productId: z.ZodString;
205
+ quantity: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
206
+ modifierGroups: z.ZodArray<z.ZodObject<{
207
+ id: z.ZodString;
208
+ modifiers: z.ZodArray<z.ZodObject<{
209
+ id: z.ZodString;
210
+ quantity: z.ZodDefault<z.ZodNumber>;
211
+ }, z.core.$strip>>;
212
+ }, z.core.$strip>>;
213
+ }, z.core.$strip>>;
214
+ adjustments: z.ZodArray<z.ZodObject<{
215
+ productId: z.ZodString;
216
+ modifierGroups: z.ZodOptional<z.ZodArray<z.ZodObject<{
217
+ id: z.ZodString;
218
+ modifiers: z.ZodArray<z.ZodObject<{
219
+ id: z.ZodString;
220
+ quantity: z.ZodDefault<z.ZodNumber>;
221
+ }, z.core.$strip>>;
222
+ }, z.core.$strip>>>;
223
+ reason: z.ZodEnum<{
224
+ invalid_product: "invalid_product";
225
+ out_of_stock: "out_of_stock";
226
+ insufficient_stock: "insufficient_stock";
227
+ }>;
228
+ requestedQuantity: z.ZodNumber;
229
+ resolvedQuantity: z.ZodNumber;
230
+ }, z.core.$strip>>;
231
+ products: z.ZodRecord<z.ZodString, z.ZodObject<{
232
+ description: z.ZodDefault<z.ZodNullable<z.ZodString>>;
233
+ title: z.ZodDefault<z.ZodString>;
234
+ currency: z.ZodString;
235
+ id: z.ZodString;
236
+ createdAt: z.ZodDate;
237
+ slug: z.ZodOptional<z.ZodString>;
238
+ publishedAt: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
239
+ sku: z.ZodOptional<z.ZodString>;
240
+ basePrice: z.ZodCoercedNumber<unknown>;
241
+ discountedBasePrice: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodNull]>>, z.ZodTransform<string | number | null, string | number | null | undefined>>, z.ZodNullable<z.ZodNumber>>;
242
+ availableQuantity: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodNull]>>, z.ZodTransform<string | number | null, string | number | null | undefined>>, z.ZodNullable<z.ZodNumber>>;
243
+ images: z.ZodOptional<z.ZodArray<z.ZodObject<{
244
+ id: z.ZodString;
245
+ url: z.ZodString;
246
+ mimeType: z.ZodString;
247
+ size: z.ZodNumber;
248
+ filename: z.ZodString;
249
+ }, z.core.$strip>>>;
250
+ modifierGroups: z.ZodArray<z.ZodObject<{
251
+ title: z.ZodNullable<z.ZodDefault<z.ZodString>>;
252
+ id: z.ZodString;
253
+ defaultLocale: z.ZodOptional<z.ZodEnum<{
254
+ id: "id";
255
+ af: "af";
256
+ sq: "sq";
257
+ ar_dz: "ar_dz";
258
+ ar_bh: "ar_bh";
259
+ ar_eg: "ar_eg";
260
+ ar_iq: "ar_iq";
261
+ ar_jo: "ar_jo";
262
+ ar_kw: "ar_kw";
263
+ ar_lb: "ar_lb";
264
+ ar_ly: "ar_ly";
265
+ ar_ma: "ar_ma";
266
+ ar_om: "ar_om";
267
+ ar_qa: "ar_qa";
268
+ ar_sa: "ar_sa";
269
+ ar_sy: "ar_sy";
270
+ ar_tn: "ar_tn";
271
+ ar_ae: "ar_ae";
272
+ ar_ye: "ar_ye";
273
+ eu: "eu";
274
+ be: "be";
275
+ bg: "bg";
276
+ ca: "ca";
277
+ zh_hk: "zh_hk";
278
+ zh_cn: "zh_cn";
279
+ zh_sg: "zh_sg";
280
+ zh_tw: "zh_tw";
281
+ hr: "hr";
282
+ cs: "cs";
283
+ da: "da";
284
+ nl_be: "nl_be";
285
+ nl: "nl";
286
+ en: "en";
287
+ en_au: "en_au";
288
+ en_bz: "en_bz";
289
+ en_ca: "en_ca";
290
+ en_ie: "en_ie";
291
+ en_jm: "en_jm";
292
+ en_nz: "en_nz";
293
+ en_za: "en_za";
294
+ en_tt: "en_tt";
295
+ en_gb: "en_gb";
296
+ en_us: "en_us";
297
+ et: "et";
298
+ fo: "fo";
299
+ fa: "fa";
300
+ fi: "fi";
301
+ fr_be: "fr_be";
302
+ fr_ca: "fr_ca";
303
+ fr_lu: "fr_lu";
304
+ fr: "fr";
305
+ fr_ch: "fr_ch";
306
+ gd: "gd";
307
+ de_at: "de_at";
308
+ de_li: "de_li";
309
+ de_lu: "de_lu";
310
+ de: "de";
311
+ de_ch: "de_ch";
312
+ el: "el";
313
+ he: "he";
314
+ hi: "hi";
315
+ hu: "hu";
316
+ is: "is";
317
+ ga: "ga";
318
+ it: "it";
319
+ it_ch: "it_ch";
320
+ ja: "ja";
321
+ ko: "ko";
322
+ ku: "ku";
323
+ lv: "lv";
324
+ lt: "lt";
325
+ mk: "mk";
326
+ ml: "ml";
327
+ ms: "ms";
328
+ mt: "mt";
329
+ no: "no";
330
+ nb: "nb";
331
+ nn: "nn";
332
+ pl: "pl";
333
+ pt_br: "pt_br";
334
+ pt: "pt";
335
+ pa: "pa";
336
+ rm: "rm";
337
+ ro: "ro";
338
+ ro_md: "ro_md";
339
+ ru: "ru";
340
+ ru_md: "ru_md";
341
+ sr: "sr";
342
+ sk: "sk";
343
+ sl: "sl";
344
+ sb: "sb";
345
+ es_ar: "es_ar";
346
+ es_bo: "es_bo";
347
+ es_cl: "es_cl";
348
+ es_co: "es_co";
349
+ es_cr: "es_cr";
350
+ es_do: "es_do";
351
+ es_ec: "es_ec";
352
+ es_sv: "es_sv";
353
+ es_gt: "es_gt";
354
+ es_hn: "es_hn";
355
+ es_mx: "es_mx";
356
+ es: "es";
357
+ sv: "sv";
358
+ sv_fi: "sv_fi";
359
+ th: "th";
360
+ tr: "tr";
361
+ uk: "uk";
362
+ ur: "ur";
363
+ vi: "vi";
364
+ cy: "cy";
365
+ ji: "ji";
366
+ zu: "zu";
367
+ }>>;
368
+ selectMin: z.ZodCoercedNumber<unknown>;
369
+ selectMax: z.ZodCoercedNumber<unknown>;
370
+ modifiers: z.ZodOptional<z.ZodArray<z.ZodObject<{
371
+ id: z.ZodOptional<z.ZodString>;
372
+ title: z.ZodString;
373
+ sku: z.ZodOptional<z.ZodCoercedString<unknown>>;
374
+ price: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
375
+ }, z.core.$strip>>>;
376
+ }, z.core.$strip>>;
377
+ categories: z.ZodDefault<z.ZodArray<z.ZodObject<{
378
+ id: z.ZodString;
379
+ }, z.core.$strip>>>;
380
+ manufacturerId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
381
+ metadata: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
382
+ }, z.core.$strip>>;
383
+ shipping: z.ZodOptional<z.ZodNumber>;
384
+ subtotal: z.ZodNumber;
385
+ total: z.ZodNumber;
386
+ }, z.core.$strip>;
387
+ export declare const CartConflictSchema: z.ZodObject<{
388
+ invalidProductIds: z.ZodArray<z.ZodString>;
389
+ normalizedItems: z.ZodArray<z.ZodObject<{
390
+ productId: z.ZodString;
391
+ quantity: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
392
+ modifierGroups: z.ZodArray<z.ZodObject<{
393
+ id: z.ZodString;
394
+ modifiers: z.ZodArray<z.ZodObject<{
395
+ id: z.ZodString;
396
+ quantity: z.ZodDefault<z.ZodNumber>;
397
+ }, z.core.$strip>>;
398
+ }, z.core.$strip>>;
399
+ }, z.core.$strip>>;
400
+ adjustments: z.ZodArray<z.ZodObject<{
401
+ productId: z.ZodString;
402
+ modifierGroups: z.ZodOptional<z.ZodArray<z.ZodObject<{
403
+ id: z.ZodString;
404
+ modifiers: z.ZodArray<z.ZodObject<{
405
+ id: z.ZodString;
406
+ quantity: z.ZodDefault<z.ZodNumber>;
407
+ }, z.core.$strip>>;
408
+ }, z.core.$strip>>>;
409
+ reason: z.ZodEnum<{
410
+ invalid_product: "invalid_product";
411
+ out_of_stock: "out_of_stock";
412
+ insufficient_stock: "insufficient_stock";
413
+ }>;
414
+ requestedQuantity: z.ZodNumber;
415
+ resolvedQuantity: z.ZodNumber;
416
+ }, z.core.$strip>>;
417
+ products: z.ZodRecord<z.ZodString, z.ZodObject<{
418
+ description: z.ZodDefault<z.ZodNullable<z.ZodString>>;
419
+ title: z.ZodDefault<z.ZodString>;
420
+ currency: z.ZodString;
421
+ id: z.ZodString;
422
+ createdAt: z.ZodDate;
423
+ slug: z.ZodOptional<z.ZodString>;
424
+ publishedAt: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
425
+ sku: z.ZodOptional<z.ZodString>;
426
+ basePrice: z.ZodCoercedNumber<unknown>;
427
+ discountedBasePrice: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodNull]>>, z.ZodTransform<string | number | null, string | number | null | undefined>>, z.ZodNullable<z.ZodNumber>>;
428
+ availableQuantity: z.ZodPipe<z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodNull]>>, z.ZodTransform<string | number | null, string | number | null | undefined>>, z.ZodNullable<z.ZodNumber>>;
429
+ images: z.ZodOptional<z.ZodArray<z.ZodObject<{
430
+ id: z.ZodString;
431
+ url: z.ZodString;
432
+ mimeType: z.ZodString;
433
+ size: z.ZodNumber;
434
+ filename: z.ZodString;
435
+ }, z.core.$strip>>>;
436
+ modifierGroups: z.ZodArray<z.ZodObject<{
437
+ title: z.ZodNullable<z.ZodDefault<z.ZodString>>;
438
+ id: z.ZodString;
439
+ defaultLocale: z.ZodOptional<z.ZodEnum<{
440
+ id: "id";
441
+ af: "af";
442
+ sq: "sq";
443
+ ar_dz: "ar_dz";
444
+ ar_bh: "ar_bh";
445
+ ar_eg: "ar_eg";
446
+ ar_iq: "ar_iq";
447
+ ar_jo: "ar_jo";
448
+ ar_kw: "ar_kw";
449
+ ar_lb: "ar_lb";
450
+ ar_ly: "ar_ly";
451
+ ar_ma: "ar_ma";
452
+ ar_om: "ar_om";
453
+ ar_qa: "ar_qa";
454
+ ar_sa: "ar_sa";
455
+ ar_sy: "ar_sy";
456
+ ar_tn: "ar_tn";
457
+ ar_ae: "ar_ae";
458
+ ar_ye: "ar_ye";
459
+ eu: "eu";
460
+ be: "be";
461
+ bg: "bg";
462
+ ca: "ca";
463
+ zh_hk: "zh_hk";
464
+ zh_cn: "zh_cn";
465
+ zh_sg: "zh_sg";
466
+ zh_tw: "zh_tw";
467
+ hr: "hr";
468
+ cs: "cs";
469
+ da: "da";
470
+ nl_be: "nl_be";
471
+ nl: "nl";
472
+ en: "en";
473
+ en_au: "en_au";
474
+ en_bz: "en_bz";
475
+ en_ca: "en_ca";
476
+ en_ie: "en_ie";
477
+ en_jm: "en_jm";
478
+ en_nz: "en_nz";
479
+ en_za: "en_za";
480
+ en_tt: "en_tt";
481
+ en_gb: "en_gb";
482
+ en_us: "en_us";
483
+ et: "et";
484
+ fo: "fo";
485
+ fa: "fa";
486
+ fi: "fi";
487
+ fr_be: "fr_be";
488
+ fr_ca: "fr_ca";
489
+ fr_lu: "fr_lu";
490
+ fr: "fr";
491
+ fr_ch: "fr_ch";
492
+ gd: "gd";
493
+ de_at: "de_at";
494
+ de_li: "de_li";
495
+ de_lu: "de_lu";
496
+ de: "de";
497
+ de_ch: "de_ch";
498
+ el: "el";
499
+ he: "he";
500
+ hi: "hi";
501
+ hu: "hu";
502
+ is: "is";
503
+ ga: "ga";
504
+ it: "it";
505
+ it_ch: "it_ch";
506
+ ja: "ja";
507
+ ko: "ko";
508
+ ku: "ku";
509
+ lv: "lv";
510
+ lt: "lt";
511
+ mk: "mk";
512
+ ml: "ml";
513
+ ms: "ms";
514
+ mt: "mt";
515
+ no: "no";
516
+ nb: "nb";
517
+ nn: "nn";
518
+ pl: "pl";
519
+ pt_br: "pt_br";
520
+ pt: "pt";
521
+ pa: "pa";
522
+ rm: "rm";
523
+ ro: "ro";
524
+ ro_md: "ro_md";
525
+ ru: "ru";
526
+ ru_md: "ru_md";
527
+ sr: "sr";
528
+ sk: "sk";
529
+ sl: "sl";
530
+ sb: "sb";
531
+ es_ar: "es_ar";
532
+ es_bo: "es_bo";
533
+ es_cl: "es_cl";
534
+ es_co: "es_co";
535
+ es_cr: "es_cr";
536
+ es_do: "es_do";
537
+ es_ec: "es_ec";
538
+ es_sv: "es_sv";
539
+ es_gt: "es_gt";
540
+ es_hn: "es_hn";
541
+ es_mx: "es_mx";
542
+ es: "es";
543
+ sv: "sv";
544
+ sv_fi: "sv_fi";
545
+ th: "th";
546
+ tr: "tr";
547
+ uk: "uk";
548
+ ur: "ur";
549
+ vi: "vi";
550
+ cy: "cy";
551
+ ji: "ji";
552
+ zu: "zu";
553
+ }>>;
554
+ selectMin: z.ZodCoercedNumber<unknown>;
555
+ selectMax: z.ZodCoercedNumber<unknown>;
556
+ modifiers: z.ZodOptional<z.ZodArray<z.ZodObject<{
557
+ id: z.ZodOptional<z.ZodString>;
558
+ title: z.ZodString;
559
+ sku: z.ZodOptional<z.ZodCoercedString<unknown>>;
560
+ price: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
561
+ }, z.core.$strip>>>;
562
+ }, z.core.$strip>>;
563
+ categories: z.ZodDefault<z.ZodArray<z.ZodObject<{
564
+ id: z.ZodString;
565
+ }, z.core.$strip>>>;
566
+ manufacturerId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
567
+ metadata: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
568
+ }, z.core.$strip>>;
569
+ shipping: z.ZodOptional<z.ZodNumber>;
570
+ subtotal: z.ZodNumber;
571
+ total: z.ZodNumber;
572
+ message: z.ZodString;
573
+ }, z.core.$strip>;
178
574
  export type CartProducts = z.infer<typeof CartProductsMappingSchema>;
179
575
  export type CartItem = z.infer<typeof CartItemSchema>;
180
576
  export type Cart = z.infer<typeof CartSchema>;
577
+ export type CartAdjustmentReason = z.infer<typeof CartAdjustmentReasonSchema>;
578
+ export type CartAdjustment = z.infer<typeof CartAdjustmentSchema>;
579
+ export type CartData = z.infer<typeof CartDataSchema>;
@@ -1 +1 @@
1
- import{z as e}from"@hono/zod-openapi";import{LocalizedProductSchema as t}from"../product/product.schema";export const CartProductsMappingSchema=e.record(e.string().openapi({example:"clf9876543210abcdef",description:"ID of the product in the cart"}),t),CartItemSchema=e.object({productId:e.string().cuid().openapi({example:"clf9876543210abcdef",description:"ID of the product in the cart"}),quantity:e.number().default(1).optional().openapi({example:2,description:"Quantity of this item in the cart"}),modifierGroups:e.array(e.object({id:e.string().cuid().openapi({example:"clg1234567890abcdef",description:"ID of the modifier group"}),modifiers:e.array(e.object({id:e.string().cuid().openapi({example:"clh9876543210abcdef",description:"ID of the selected modifier"}),quantity:e.number().default(1).openapi({example:1,description:"Quantity of this modifier"})}))}))}).openapi("CartItem"),CartSchema=e.object({items:e.array(CartItemSchema),shippingMethodId:e.string().cuid().optional()});
1
+ import{z as t}from"@hono/zod-openapi";import{LocalizedProductSchema as e}from"../product/product.schema";export const CartProductsMappingSchema=t.record(t.string().openapi({example:"clf9876543210abcdef",description:"ID of the product in the cart"}),e),CartItemSchema=t.object({productId:t.string().cuid().openapi({example:"clf9876543210abcdef",description:"ID of the product in the cart"}),quantity:t.number().default(1).optional().openapi({example:2,description:"Quantity of this item in the cart"}),modifierGroups:t.array(t.object({id:t.string().cuid().openapi({example:"clg1234567890abcdef",description:"ID of the modifier group"}),modifiers:t.array(t.object({id:t.string().cuid().openapi({example:"clh9876543210abcdef",description:"ID of the selected modifier"}),quantity:t.number().default(1).openapi({example:1,description:"Quantity of this modifier"})}))}))}).openapi("CartItem"),CartSchema=t.object({items:t.array(CartItemSchema),shippingMethodId:t.string().cuid().optional()}),CartAdjustmentReasonSchema=t.enum(["invalid_product","out_of_stock","insufficient_stock"]).openapi("CartAdjustmentReason"),CartAdjustmentSchema=t.object({productId:t.string().cuid().openapi({example:"clf9876543210abcdef",description:"ID of the affected product"}),modifierGroups:CartItemSchema.shape.modifierGroups.optional(),reason:CartAdjustmentReasonSchema,requestedQuantity:t.number().int().min(0).openapi({example:3,description:"Quantity requested by the customer"}),resolvedQuantity:t.number().int().min(0).openapi({example:1,description:"Quantity accepted after stock normalization"})}).openapi("CartAdjustment"),CartDataSchema=t.object({invalidProductIds:t.array(t.string()),normalizedItems:t.array(CartItemSchema),adjustments:t.array(CartAdjustmentSchema),products:CartProductsMappingSchema,shipping:t.number().optional(),subtotal:t.number(),total:t.number()}),CartConflictSchema=CartDataSchema.extend({message:t.string()}).openapi("CartConflict");
@@ -1 +1 @@
1
- {"version":3,"file":"cart.schema.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/cart/cart.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAC/C,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,OAAO,EAAE,qBAAqB;IAC9B,WAAW,EAAE,+BAA+B;CAC7C,CAAC,EACF,sBAAsB,CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;QACnC,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,+BAA+B;KAC7C,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;QACjD,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,mCAAmC;KACjD,CAAC;IACF,cAAc,EAAE,CAAC,CAAC,KAAK,CACrB,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;YAC5B,OAAO,EAAE,qBAAqB;YAC9B,WAAW,EAAE,0BAA0B;SACxC,CAAC;QACF,SAAS,EAAE,CAAC,CAAC,KAAK,CAChB,CAAC,CAAC,MAAM,CAAC;YACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;gBAC5B,OAAO,EAAE,qBAAqB;gBAC9B,WAAW,EAAE,6BAA6B;aAC3C,CAAC;YACF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACtC,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,2BAA2B;aACzC,CAAC;SACH,CAAC,CACH;KACF,CAAC,CACH;CACF,CAAC;KACD,OAAO,CAAC,UAAU,CAAC,CAAC;AAEvB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IAC9B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC"}
1
+ {"version":3,"file":"cart.schema.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/cart/cart.schema.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { z } from "@hono/zod-openapi";
2
2
  import { PrismaClientType } from "../../core/lib/prisma";
3
3
  import { CartSchema } from "../../schemas";
4
+ import { InventoryService } from "../inventory/inventory.service";
4
5
  declare class CartService {
5
6
  private readonly prisma;
6
- constructor(prisma: PrismaClientType);
7
+ private readonly inventoryService;
8
+ constructor(prisma: PrismaClientType, inventoryService: InventoryService);
7
9
  /**
8
10
  * Calculate price breakdown for cart items
9
11
  */
@@ -16,6 +18,30 @@ declare class CartService {
16
18
  locale?: string;
17
19
  }): Promise<{
18
20
  invalidProductIds: string[];
21
+ normalizedItems: {
22
+ productId: string;
23
+ modifierGroups: {
24
+ id: string;
25
+ modifiers: {
26
+ id: string;
27
+ quantity: number;
28
+ }[];
29
+ }[];
30
+ quantity?: number | undefined;
31
+ }[];
32
+ adjustments: {
33
+ productId: string;
34
+ reason: "invalid_product" | "out_of_stock" | "insufficient_stock";
35
+ requestedQuantity: number;
36
+ resolvedQuantity: number;
37
+ modifierGroups?: {
38
+ id: string;
39
+ modifiers: {
40
+ id: string;
41
+ quantity: number;
42
+ }[];
43
+ }[] | undefined;
44
+ }[];
19
45
  products: Record<string, {
20
46
  description: string | null;
21
47
  title: string;
@@ -24,6 +50,7 @@ declare class CartService {
24
50
  createdAt: Date;
25
51
  basePrice: number;
26
52
  discountedBasePrice: number | null;
53
+ availableQuantity: number | null;
27
54
  modifierGroups: {
28
55
  title: string | null;
29
56
  id: string;
@@ -53,9 +80,9 @@ declare class CartService {
53
80
  manufacturerId?: string | null | undefined;
54
81
  metadata?: Record<string, string> | null | undefined;
55
82
  }>;
56
- total: number;
57
83
  subtotal: number;
58
- shipping: number | undefined;
84
+ total: number;
85
+ shipping?: number | undefined;
59
86
  }>;
60
87
  }
61
88
  export { CartService };
@@ -1 +1 @@
1
- import{__awaiter as m}from"tslib";import{flattenTranslationData as g}from"../../core/utils/zod.util";import{LocalizedProductSchema as w}from"../../schemas";class I{constructor(o){this.prisma=o}calculatePriceBreakdown(o,e,c){return m(this,void 0,void 0,function*(){var r,d;const i=c?yield this.prisma.shippingMethod.findUnique({where:{id:c},include:{shippingZones:!0}}):null,u=o.reduce((n,a)=>{var l,p;const h=e.find(f=>f.id===a.productId);if(!h)return n;const v=(p=(l=h.discountedBasePrice)!==null&&l!==void 0?l:h.basePrice)!==null&&p!==void 0?p:0;return n+v*(a.quantity||1)},0),s=(r=i?.shippingZones[0])===null||r===void 0?void 0:r.price;return{total:u+(s??0),subtotal:u,shipping:(d=i?.shippingZones[0])===null||d===void 0?void 0:d.price}})}getCartData(o,e,c){return m(this,void 0,void 0,function*(){const{locale:r}=c,d=new Set(e.items.map(t=>t.productId)),i=yield this.prisma.product.findMany({where:{id:{in:Array.from(d)},organizationId:o,deletedAt:null,publishedAt:{not:null}},include:{translations:!0,images:!0,categories:{include:{translations:{where:{locale:r}}}},modifierGroups:{include:{translations:{where:{locale:r}},modifiers:!0}}}}),u=e.items.filter(t=>!i.find(a=>a.id===t.productId)).map(t=>t.productId),s=yield this.calculatePriceBreakdown(e.items,i,e.shippingMethodId);return Object.assign(Object.assign({},s),{invalidProductIds:u,products:i.reduce((t,n)=>(t[n.id]=w.parse(g(n)),t),{})})})}}export{I as CartService};
1
+ import{__awaiter as v}from"tslib";import{flattenTranslationData as g}from"../../core/utils/zod.util";import{CartDataSchema as w,LocalizedProductSchema as y}from"../../schemas";class I{constructor(o,e){this.prisma=o,this.inventoryService=e}calculatePriceBreakdown(o,e,l){return v(this,void 0,void 0,function*(){var r,a;const i=l?yield this.prisma.shippingMethod.findUnique({where:{id:l},include:{shippingZones:!0}}):null,n=o.reduce((d,m)=>{var c,u;const p=e.find(f=>f.id===m.productId);if(!p)return d;const h=(u=(c=p.discountedBasePrice)!==null&&c!==void 0?c:p.basePrice)!==null&&u!==void 0?u:0;return d+h*(m.quantity||1)},0),s=(r=i?.shippingZones[0])===null||r===void 0?void 0:r.price;return{total:n+(s??0),subtotal:n,shipping:(a=i?.shippingZones[0])===null||a===void 0?void 0:a.price}})}getCartData(o,e,l){return v(this,void 0,void 0,function*(){const{locale:r}=l,a=new Set(e.items.map(t=>t.productId)),i=yield this.prisma.product.findMany({where:{id:{in:Array.from(a)},organizationId:o,deletedAt:null,publishedAt:{not:null}},include:{translations:!0,images:!0,categories:{include:{translations:{where:{locale:r}}}},modifierGroups:{include:{translations:{where:{locale:r}},modifiers:!0}}}}),n=this.inventoryService.normalizeCartItems(e.items,i.map(t=>({id:t.id,availableQuantity:t.availableQuantity}))),s=yield this.calculatePriceBreakdown(n.normalizedItems,i,e.shippingMethodId);return w.parse(Object.assign(Object.assign({},s),{adjustments:n.adjustments,invalidProductIds:n.invalidProductIds,normalizedItems:n.normalizedItems,products:i.reduce((t,d)=>(t[d.id]=y.parse(g(d)),t),{})}))})}}export{I as CartService};
@@ -1 +1 @@
1
- {"version":3,"file":"cart.service.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/cart/cart.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cart.service.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/cart/cart.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { PrismaClientType } from "../../core/lib/prisma";
2
+ import { CartAdjustment, CartItem } from "../cart/cart.schema";
3
+ import { InventoryConflictItem } from "../order/order.schema";
4
+ type InventoryProduct = {
5
+ availableQuantity: number | null;
6
+ id: string;
7
+ };
8
+ declare class InventoryService {
9
+ private readonly prisma;
10
+ constructor(prisma: PrismaClientType);
11
+ normalizeCartItems(items: CartItem[], products: InventoryProduct[]): {
12
+ adjustments: CartAdjustment[];
13
+ invalidProductIds: string[];
14
+ normalizedItems: CartItem[];
15
+ };
16
+ hasCartConflict(items: CartItem[], normalizedItems: CartItem[]): boolean;
17
+ private aggregateOrderItems;
18
+ private buildConflictItems;
19
+ processPaidOrderInventory(orderId: string): Promise<{
20
+ conflictItems?: InventoryConflictItem[];
21
+ status: "already_processed" | "conflict" | "deducted";
22
+ }>;
23
+ }
24
+ export { InventoryService };
@@ -0,0 +1 @@
1
+ import{__awaiter as v}from"tslib";import{Prisma as m}from"../../core/db";import{CartItemSchema as g}from"../cart/cart.schema";class I extends Error{}class w{constructor(r){this.prisma=r}normalizeCartItems(r,d){var o,t,i;const n=new Map(d.map(e=>[e.id,e])),a=new Set,s=[],l=[],f=new Map;for(const e of r){const u=n.get(e.productId),c=e.quantity||1;if(!u){a.add(e.productId),l.push({productId:e.productId,modifierGroups:e.modifierGroups,reason:"invalid_product",requestedQuantity:c,resolvedQuantity:0});continue}if(u.availableQuantity===null||u.availableQuantity===void 0){s.push(Object.assign(Object.assign({},e),{modifierGroups:(o=e.modifierGroups)!==null&&o!==void 0?o:[],quantity:c}));continue}const p=(t=f.get(u.id))!==null&&t!==void 0?t:u.availableQuantity,y=Math.min(c,p);if(f.set(u.id,Math.max(p-y,0)),y<=0){l.push({productId:e.productId,modifierGroups:e.modifierGroups,reason:"out_of_stock",requestedQuantity:c,resolvedQuantity:0});continue}y!==c&&l.push({productId:e.productId,modifierGroups:e.modifierGroups,reason:"insufficient_stock",requestedQuantity:c,resolvedQuantity:y}),s.push(Object.assign(Object.assign({},e),{modifierGroups:(i=e.modifierGroups)!==null&&i!==void 0?i:[],quantity:y}))}return{adjustments:l,invalidProductIds:Array.from(a),normalizedItems:s}}hasCartConflict(r,d){return JSON.stringify(r)!==JSON.stringify(d)}aggregateOrderItems(r){var d;const o=new Map;for(const t of r){const i=g.safeParse(t.rawData);if(!i.success)throw new Error("Order item raw data is invalid");const n=i.data,a=o.get(n.productId),s=((d=t.translations[0])===null||d===void 0?void 0:d.title)||"Product";if(a){a.requestedQuantity+=n.quantity||1;continue}o.set(n.productId,{productId:n.productId,requestedQuantity:n.quantity||1,title:s})}return o}buildConflictItems(r,d){const o=new Map(d.map(t=>[t.id,t]));return Array.from(r.values()).flatMap(t=>{var i;const n=o.get(t.productId),a=Math.max((i=n?.availableQuantity)!==null&&i!==void 0?i:0,0);return a>=t.requestedQuantity?[]:[{productId:t.productId,title:t.title,requestedQuantity:t.requestedQuantity,availableQuantity:a}]})}processPaidOrderInventory(r){return v(this,void 0,void 0,function*(){var d;const o=yield this.prisma.order.findUnique({where:{id:r},include:{items:{include:{translations:!0}}}});if(!o)throw new Error("Order not found");if(o.inventoryDeductedAt)return{status:"already_processed"};if(o.inventoryConflictAt)return{conflictItems:(d=o.inventoryConflictItems)!==null&&d!==void 0?d:[],status:"conflict"};const t=this.aggregateOrderItems(o.items);if(t.size===0)return yield this.prisma.order.update({where:{id:r},data:{inventoryConflictAt:null,inventoryConflictItems:m.DbNull,inventoryDeductedAt:new Date}}),{status:"deducted"};try{return yield this.prisma.$transaction(i=>v(this,void 0,void 0,function*(){var n,a;const s=yield i.order.findUnique({where:{id:r},select:{id:!0,inventoryConflictAt:!0,inventoryConflictItems:!0,inventoryDeductedAt:!0,organizationId:!0}});if(!s)throw new Error("Order not found");if(s.inventoryDeductedAt)return{status:"already_processed"};if(s.inventoryConflictAt)return{conflictItems:(n=s.inventoryConflictItems)!==null&&n!==void 0?n:[],status:"conflict"};const f=(yield i.product.findMany({where:{id:{in:Array.from(t.keys())},organizationId:s.organizationId},select:{availableQuantity:!0,id:!0}})).filter(u=>u.availableQuantity!==null),e=this.buildConflictItems(t,f);if(e.length>0)return yield i.order.update({where:{id:r},data:{inventoryConflictAt:new Date,inventoryConflictItems:e}}),{conflictItems:e,status:"conflict"};for(const u of f){const c=(a=t.get(u.id))===null||a===void 0?void 0:a.requestedQuantity;if(!c)continue;if((yield i.product.updateMany({where:{id:u.id,organizationId:s.organizationId,availableQuantity:{gte:c}},data:{availableQuantity:{decrement:c}}})).count!==1)throw new I}return yield i.order.update({where:{id:r},data:{inventoryConflictAt:null,inventoryConflictItems:m.DbNull,inventoryDeductedAt:new Date}}),{status:"deducted"}}))}catch(i){if(!(i instanceof I))throw i;const n=yield this.prisma.product.findMany({where:{id:{in:Array.from(t.keys())},organizationId:o.organizationId},select:{availableQuantity:!0,id:!0}}),a=this.buildConflictItems(t,n);return yield this.prisma.order.update({where:{id:r},data:{inventoryConflictAt:new Date,inventoryConflictItems:a}}),{conflictItems:a,status:"conflict"}}})}}export{w as InventoryService};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory.service.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/inventory/inventory.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{__awaiter as i}from"tslib";import{createApiRouter as l}from"../../core/hono/hono";import{orderRoute as s}from"./order.route";export const registerOrderHandlers=n=>{const a=l();return a.openapi(s.createOrder,r=>i(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param"),o=r.req.valid("json"),d=yield e.getCurrentUser(),{order:u,redirectUrl:p}=yield n.createOrder(t.organizationId,d,o);return r.json({order:u,redirectUrl:p},201)})),a.openapi(s.getMyOrders,r=>i(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param"),o=r.req.valid("query"),d=yield e.getCurrentUser(),u=yield n.getMyOrders(d.id,t.organizationId,o);return r.json(u,200)})),a.openapi(s.getOrder,r=>i(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param"),o=yield e.getCurrentUser(),d=yield n.getOrder(o,t.organizationId,t.id);return r.json(d,200)})),a.openapi(s.getOrders,r=>i(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param"),o=r.req.valid("query");yield e.isGranted("read");const d=yield n.getOrders(t.organizationId,o);return r.json(d,200)})),a.openapi(s.updateStatus,r=>i(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param");yield e.isGranted("update");const o=yield n.updateStatus(t.organizationId,t.id,t.operation);return r.json(o,200)})),a.openapi(s.deleteOrder,r=>i(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param"),o=yield e.isGranted("delete");return yield n.deleteOrder(t.organizationId,t.id,o.id),r.body(null,204)})),a};
1
+ import{__awaiter as s}from"tslib";import{createApiRouter as l}from"../../core/hono/hono";import{orderRoute as u}from"./order.route";import{OrderInventoryConflictError as v}from"./order.service";export const registerOrderHandlers=i=>{const n=l();return n.openapi(u.createOrder,r=>s(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param"),o=r.req.valid("json"),a=yield e.getCurrentUser();try{const{order:d,redirectUrl:p}=yield i.createOrder(t.organizationId,a,o);return r.json({order:d,redirectUrl:p},201)}catch(d){if(d instanceof v)return r.json(d.payload,409);throw d}})),n.openapi(u.getMyOrders,r=>s(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param"),o=r.req.valid("query"),a=yield e.getCurrentUser(),d=yield i.getMyOrders(a.id,t.organizationId,o);return r.json(d,200)})),n.openapi(u.getOrder,r=>s(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param"),o=yield e.getCurrentUser(),a=yield i.getOrder(o,t.organizationId,t.id);return r.json(a,200)})),n.openapi(u.getOrders,r=>s(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param"),o=r.req.valid("query");yield e.isGranted("read");const a=yield i.getOrders(t.organizationId,o);return r.json(a,200)})),n.openapi(u.updateStatus,r=>s(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param");yield e.isGranted("update");const o=yield i.updateStatus(t.organizationId,t.id,t.operation);return r.json(o,200)})),n.openapi(u.deleteOrder,r=>s(void 0,void 0,void 0,function*(){const e=r.get("auth"),t=r.req.valid("param"),o=yield e.isGranted("delete");return yield i.deleteOrder(t.organizationId,t.id,o.id),r.body(null,204)})),n};
@@ -1 +1 @@
1
- {"version":3,"file":"order.handler.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/order/order.handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"order.handler.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/order/order.handler.ts"],"names":[],"mappings":"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"}