@porulle/core 0.1.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/auth/middleware.d.ts.map +1 -1
  2. package/dist/auth/middleware.js +17 -1
  3. package/dist/config/define-config.d.ts.map +1 -1
  4. package/dist/config/define-config.js +6 -0
  5. package/dist/config/types.d.ts +12 -0
  6. package/dist/config/types.d.ts.map +1 -1
  7. package/dist/hooks/checkout.d.ts +3 -3
  8. package/dist/hooks/checkout.js +4 -4
  9. package/dist/index.d.ts +9 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +6 -1
  12. package/dist/interfaces/rest/audit-middleware.d.ts +46 -0
  13. package/dist/interfaces/rest/audit-middleware.d.ts.map +1 -0
  14. package/dist/interfaces/rest/audit-middleware.js +82 -0
  15. package/dist/interfaces/rest/parse-json.d.ts +39 -0
  16. package/dist/interfaces/rest/parse-json.d.ts.map +1 -0
  17. package/dist/interfaces/rest/parse-json.js +45 -0
  18. package/dist/interfaces/rest/routes/catalog.d.ts.map +1 -1
  19. package/dist/interfaces/rest/routes/catalog.js +17 -2
  20. package/dist/interfaces/rest/routes/customers.d.ts.map +1 -1
  21. package/dist/interfaces/rest/routes/customers.js +59 -4
  22. package/dist/interfaces/rest/routes/inventory.d.ts.map +1 -1
  23. package/dist/interfaces/rest/routes/inventory.js +4 -2
  24. package/dist/interfaces/rest/routes/media.d.ts.map +1 -1
  25. package/dist/interfaces/rest/routes/media.js +6 -0
  26. package/dist/interfaces/rest/routes/orders.d.ts.map +1 -1
  27. package/dist/interfaces/rest/routes/orders.js +23 -1
  28. package/dist/interfaces/rest/routes/promotions.d.ts.map +1 -1
  29. package/dist/interfaces/rest/routes/promotions.js +21 -1
  30. package/dist/interfaces/rest/schemas/carts.d.ts +175 -0
  31. package/dist/interfaces/rest/schemas/carts.d.ts.map +1 -1
  32. package/dist/interfaces/rest/schemas/catalog.d.ts +1410 -0
  33. package/dist/interfaces/rest/schemas/catalog.d.ts.map +1 -1
  34. package/dist/interfaces/rest/schemas/catalog.js +28 -1
  35. package/dist/interfaces/rest/schemas/checkout.d.ts +35 -0
  36. package/dist/interfaces/rest/schemas/checkout.d.ts.map +1 -1
  37. package/dist/interfaces/rest/schemas/customer-portal.d.ts +280 -0
  38. package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +1 -1
  39. package/dist/interfaces/rest/schemas/customers.d.ts +863 -0
  40. package/dist/interfaces/rest/schemas/customers.d.ts.map +1 -1
  41. package/dist/interfaces/rest/schemas/customers.js +88 -0
  42. package/dist/interfaces/rest/schemas/inventory.d.ts +182 -1
  43. package/dist/interfaces/rest/schemas/inventory.d.ts.map +1 -1
  44. package/dist/interfaces/rest/schemas/media.d.ts +105 -0
  45. package/dist/interfaces/rest/schemas/media.d.ts.map +1 -1
  46. package/dist/interfaces/rest/schemas/orders.d.ts +136 -0
  47. package/dist/interfaces/rest/schemas/orders.d.ts.map +1 -1
  48. package/dist/interfaces/rest/schemas/orders.js +20 -0
  49. package/dist/interfaces/rest/schemas/pricing.d.ts +70 -0
  50. package/dist/interfaces/rest/schemas/pricing.d.ts.map +1 -1
  51. package/dist/interfaces/rest/schemas/promotions.d.ts +298 -0
  52. package/dist/interfaces/rest/schemas/promotions.d.ts.map +1 -1
  53. package/dist/interfaces/rest/schemas/promotions.js +25 -1
  54. package/dist/interfaces/rest/schemas/shared.d.ts +47 -0
  55. package/dist/interfaces/rest/schemas/shared.d.ts.map +1 -1
  56. package/dist/interfaces/rest/schemas/shared.js +8 -0
  57. package/dist/interfaces/rest/schemas/webhooks.d.ts +70 -0
  58. package/dist/interfaces/rest/schemas/webhooks.d.ts.map +1 -1
  59. package/dist/kernel/database/adapter.d.ts +6 -0
  60. package/dist/kernel/database/adapter.d.ts.map +1 -1
  61. package/dist/kernel/database/adapter.js +62 -1
  62. package/dist/kernel/database/migrate.d.ts +22 -2
  63. package/dist/kernel/database/migrate.d.ts.map +1 -1
  64. package/dist/kernel/database/migrate.js +42 -2
  65. package/dist/modules/analytics/hooks.d.ts +5 -5
  66. package/dist/modules/analytics/hooks.js +5 -5
  67. package/dist/modules/analytics/repository/index.d.ts.map +1 -1
  68. package/dist/modules/catalog/category-service.d.ts +6 -1
  69. package/dist/modules/catalog/category-service.d.ts.map +1 -1
  70. package/dist/modules/catalog/category-service.js +35 -5
  71. package/dist/modules/catalog/schema.d.ts +17 -0
  72. package/dist/modules/catalog/schema.d.ts.map +1 -1
  73. package/dist/modules/catalog/schema.js +2 -0
  74. package/dist/modules/catalog/service.d.ts +11 -2
  75. package/dist/modules/catalog/service.d.ts.map +1 -1
  76. package/dist/modules/catalog/service.js +8 -2
  77. package/dist/modules/customers/repository/index.d.ts +8 -1
  78. package/dist/modules/customers/repository/index.d.ts.map +1 -1
  79. package/dist/modules/customers/repository/index.js +42 -2
  80. package/dist/modules/customers/schema.d.ts +162 -0
  81. package/dist/modules/customers/schema.d.ts.map +1 -1
  82. package/dist/modules/customers/schema.js +18 -0
  83. package/dist/modules/customers/service.d.ts +32 -2
  84. package/dist/modules/customers/service.d.ts.map +1 -1
  85. package/dist/modules/customers/service.js +119 -3
  86. package/dist/modules/inventory/schemas.d.ts +7 -1
  87. package/dist/modules/inventory/schemas.d.ts.map +1 -1
  88. package/dist/modules/inventory/schemas.js +6 -1
  89. package/dist/modules/inventory/service.d.ts +18 -0
  90. package/dist/modules/inventory/service.d.ts.map +1 -1
  91. package/dist/modules/inventory/service.js +58 -21
  92. package/dist/modules/media/noop-adapter.d.ts +11 -0
  93. package/dist/modules/media/noop-adapter.d.ts.map +1 -0
  94. package/dist/modules/media/noop-adapter.js +31 -0
  95. package/dist/modules/orders/repository/index.d.ts +19 -0
  96. package/dist/modules/orders/repository/index.d.ts.map +1 -1
  97. package/dist/modules/orders/repository/index.js +42 -1
  98. package/dist/modules/orders/service.d.ts +31 -0
  99. package/dist/modules/orders/service.d.ts.map +1 -1
  100. package/dist/modules/orders/service.js +52 -2
  101. package/dist/modules/payments/repository/index.d.ts.map +1 -1
  102. package/dist/modules/promotions/schemas.d.ts +46 -0
  103. package/dist/modules/promotions/schemas.d.ts.map +1 -1
  104. package/dist/modules/promotions/schemas.js +19 -8
  105. package/dist/modules/promotions/service.d.ts +8 -2
  106. package/dist/modules/promotions/service.d.ts.map +1 -1
  107. package/dist/modules/promotions/service.js +74 -9
  108. package/dist/modules/search/repository/index.d.ts.map +1 -1
  109. package/dist/modules/shipping/repository/index.d.ts.map +1 -1
  110. package/dist/modules/tax/repository/index.d.ts.map +1 -1
  111. package/dist/runtime/client-ip.d.ts +31 -0
  112. package/dist/runtime/client-ip.d.ts.map +1 -0
  113. package/dist/runtime/client-ip.js +31 -0
  114. package/dist/runtime/server.d.ts +4 -0
  115. package/dist/runtime/server.d.ts.map +1 -1
  116. package/dist/runtime/server.js +35 -19
  117. package/dist/test-utils/create-plugin-test-app.d.ts.map +1 -1
  118. package/dist/test-utils/create-plugin-test-app.js +4 -1
  119. package/dist/test-utils/test-actors.d.ts +3 -2
  120. package/dist/test-utils/test-actors.d.ts.map +1 -1
  121. package/dist/test-utils/test-actors.js +3 -2
  122. package/package.json +4 -4
  123. package/src/auth/middleware.ts +18 -1
  124. package/src/config/define-config.ts +7 -0
  125. package/src/config/types.ts +12 -0
  126. package/src/hooks/checkout.ts +4 -4
  127. package/src/index.ts +18 -1
  128. package/src/interfaces/rest/audit-middleware.ts +110 -0
  129. package/src/interfaces/rest/parse-json.ts +81 -0
  130. package/src/interfaces/rest/routes/catalog.ts +21 -1
  131. package/src/interfaces/rest/routes/customers.ts +64 -3
  132. package/src/interfaces/rest/routes/inventory.ts +4 -2
  133. package/src/interfaces/rest/routes/media.ts +7 -0
  134. package/src/interfaces/rest/routes/orders.ts +21 -1
  135. package/src/interfaces/rest/routes/promotions.ts +22 -1
  136. package/src/interfaces/rest/schemas/catalog.ts +30 -1
  137. package/src/interfaces/rest/schemas/customers.ts +99 -0
  138. package/src/interfaces/rest/schemas/orders.ts +21 -0
  139. package/src/interfaces/rest/schemas/promotions.ts +32 -1
  140. package/src/interfaces/rest/schemas/shared.ts +9 -0
  141. package/src/kernel/database/adapter.ts +64 -1
  142. package/src/kernel/database/migrate.ts +50 -2
  143. package/src/modules/analytics/hooks.ts +5 -5
  144. package/src/modules/analytics/repository/index.ts +0 -1
  145. package/src/modules/catalog/category-service.ts +26 -5
  146. package/src/modules/catalog/schema.ts +2 -0
  147. package/src/modules/catalog/service.ts +25 -3
  148. package/src/modules/customers/repository/index.ts +55 -1
  149. package/src/modules/customers/schema.ts +19 -0
  150. package/src/modules/customers/service.ts +137 -2
  151. package/src/modules/inventory/schemas.ts +6 -1
  152. package/src/modules/inventory/service.ts +84 -29
  153. package/src/modules/media/noop-adapter.ts +36 -0
  154. package/src/modules/orders/repository/index.ts +63 -1
  155. package/src/modules/orders/service.ts +86 -3
  156. package/src/modules/payments/repository/index.ts +0 -1
  157. package/src/modules/promotions/schemas.ts +21 -4
  158. package/src/modules/promotions/service.ts +90 -18
  159. package/src/modules/search/repository/index.ts +0 -1
  160. package/src/modules/shipping/repository/index.ts +0 -1
  161. package/src/modules/tax/repository/index.ts +0 -1
  162. package/src/runtime/client-ip.ts +49 -0
  163. package/src/runtime/server.ts +39 -18
  164. package/src/test-utils/create-plugin-test-app.ts +3 -1
  165. package/src/test-utils/test-actors.ts +3 -2
@@ -1,6 +1,36 @@
1
1
  import { z } from "@hono/zod-openapi";
2
2
  import { CreatePromotionBodySchema } from "../../../modules/promotions/schemas.js";
3
3
  export { CreatePromotionBodySchema };
4
+ export declare const UpdatePromotionBodySchema: z.ZodObject<{
5
+ name: z.ZodOptional<z.ZodString>;
6
+ type: z.ZodOptional<z.ZodEnum<{
7
+ percentage_off_order: "percentage_off_order";
8
+ fixed_off_order: "fixed_off_order";
9
+ percentage_off_item: "percentage_off_item";
10
+ fixed_off_item: "fixed_off_item";
11
+ free_shipping: "free_shipping";
12
+ buy_x_get_y: "buy_x_get_y";
13
+ }>>;
14
+ value: z.ZodOptional<z.ZodNumber>;
15
+ code: z.ZodOptional<z.ZodOptional<z.ZodString>>;
16
+ buyQuantity: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
17
+ getQuantity: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
18
+ isAutomatic: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
19
+ isActive: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
20
+ priority: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
21
+ conditions: z.ZodOptional<z.ZodOptional<z.ZodObject<{
22
+ minimumOrderValue: z.ZodOptional<z.ZodNumber>;
23
+ minimumQuantity: z.ZodOptional<z.ZodNumber>;
24
+ entityTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
25
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
26
+ customerGroups: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
+ }, z.core.$strip>>>;
28
+ usageLimitTotal: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
29
+ usageLimitPerCustomer: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
30
+ validFrom: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
31
+ validUntil: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
32
+ metadata: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
33
+ }, z.core.$strip>;
4
34
  export declare const ValidatePromotionBodySchema: z.ZodObject<{
5
35
  code: z.ZodString;
6
36
  currency: z.ZodString;
@@ -101,6 +131,13 @@ export declare const createPromotionRoute: {
101
131
  error: z.ZodObject<{
102
132
  code: z.ZodString;
103
133
  message: z.ZodString;
134
+ details: z.ZodOptional<z.ZodObject<{
135
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
136
+ path: z.ZodString;
137
+ message: z.ZodString;
138
+ code: z.ZodString;
139
+ }, z.core.$strip>>>;
140
+ }, z.core.$strip>>;
104
141
  }, z.core.$strip>;
105
142
  }, z.core.$strip>;
106
143
  };
@@ -114,6 +151,13 @@ export declare const createPromotionRoute: {
114
151
  error: z.ZodObject<{
115
152
  code: z.ZodString;
116
153
  message: z.ZodString;
154
+ details: z.ZodOptional<z.ZodObject<{
155
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
156
+ path: z.ZodString;
157
+ message: z.ZodString;
158
+ code: z.ZodString;
159
+ }, z.core.$strip>>>;
160
+ }, z.core.$strip>>;
117
161
  }, z.core.$strip>;
118
162
  }, z.core.$strip>;
119
163
  };
@@ -127,6 +171,13 @@ export declare const createPromotionRoute: {
127
171
  error: z.ZodObject<{
128
172
  code: z.ZodString;
129
173
  message: z.ZodString;
174
+ details: z.ZodOptional<z.ZodObject<{
175
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
176
+ path: z.ZodString;
177
+ message: z.ZodString;
178
+ code: z.ZodString;
179
+ }, z.core.$strip>>>;
180
+ }, z.core.$strip>>;
130
181
  }, z.core.$strip>;
131
182
  }, z.core.$strip>;
132
183
  };
@@ -140,6 +191,13 @@ export declare const createPromotionRoute: {
140
191
  error: z.ZodObject<{
141
192
  code: z.ZodString;
142
193
  message: z.ZodString;
194
+ details: z.ZodOptional<z.ZodObject<{
195
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
196
+ path: z.ZodString;
197
+ message: z.ZodString;
198
+ code: z.ZodString;
199
+ }, z.core.$strip>>>;
200
+ }, z.core.$strip>>;
143
201
  }, z.core.$strip>;
144
202
  }, z.core.$strip>;
145
203
  };
@@ -153,6 +211,13 @@ export declare const createPromotionRoute: {
153
211
  error: z.ZodObject<{
154
212
  code: z.ZodString;
155
213
  message: z.ZodString;
214
+ details: z.ZodOptional<z.ZodObject<{
215
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
216
+ path: z.ZodString;
217
+ message: z.ZodString;
218
+ code: z.ZodString;
219
+ }, z.core.$strip>>>;
220
+ }, z.core.$strip>>;
156
221
  }, z.core.$strip>;
157
222
  }, z.core.$strip>;
158
223
  };
@@ -209,6 +274,13 @@ export declare const validatePromotionRoute: {
209
274
  error: z.ZodObject<{
210
275
  code: z.ZodString;
211
276
  message: z.ZodString;
277
+ details: z.ZodOptional<z.ZodObject<{
278
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
279
+ path: z.ZodString;
280
+ message: z.ZodString;
281
+ code: z.ZodString;
282
+ }, z.core.$strip>>>;
283
+ }, z.core.$strip>>;
212
284
  }, z.core.$strip>;
213
285
  }, z.core.$strip>;
214
286
  };
@@ -222,6 +294,13 @@ export declare const validatePromotionRoute: {
222
294
  error: z.ZodObject<{
223
295
  code: z.ZodString;
224
296
  message: z.ZodString;
297
+ details: z.ZodOptional<z.ZodObject<{
298
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
299
+ path: z.ZodString;
300
+ message: z.ZodString;
301
+ code: z.ZodString;
302
+ }, z.core.$strip>>>;
303
+ }, z.core.$strip>>;
225
304
  }, z.core.$strip>;
226
305
  }, z.core.$strip>;
227
306
  };
@@ -235,6 +314,13 @@ export declare const validatePromotionRoute: {
235
314
  error: z.ZodObject<{
236
315
  code: z.ZodString;
237
316
  message: z.ZodString;
317
+ details: z.ZodOptional<z.ZodObject<{
318
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
319
+ path: z.ZodString;
320
+ message: z.ZodString;
321
+ code: z.ZodString;
322
+ }, z.core.$strip>>>;
323
+ }, z.core.$strip>>;
238
324
  }, z.core.$strip>;
239
325
  }, z.core.$strip>;
240
326
  };
@@ -248,6 +334,13 @@ export declare const validatePromotionRoute: {
248
334
  error: z.ZodObject<{
249
335
  code: z.ZodString;
250
336
  message: z.ZodString;
337
+ details: z.ZodOptional<z.ZodObject<{
338
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
339
+ path: z.ZodString;
340
+ message: z.ZodString;
341
+ code: z.ZodString;
342
+ }, z.core.$strip>>>;
343
+ }, z.core.$strip>>;
251
344
  }, z.core.$strip>;
252
345
  }, z.core.$strip>;
253
346
  };
@@ -261,6 +354,13 @@ export declare const validatePromotionRoute: {
261
354
  error: z.ZodObject<{
262
355
  code: z.ZodString;
263
356
  message: z.ZodString;
357
+ details: z.ZodOptional<z.ZodObject<{
358
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
359
+ path: z.ZodString;
360
+ message: z.ZodString;
361
+ code: z.ZodString;
362
+ }, z.core.$strip>>>;
363
+ }, z.core.$strip>>;
264
364
  }, z.core.$strip>;
265
365
  }, z.core.$strip>;
266
366
  };
@@ -281,6 +381,169 @@ export declare const validatePromotionRoute: {
281
381
  } & {
282
382
  getRoutingPath(): "/validate";
283
383
  };
384
+ export declare const updatePromotionRoute: {
385
+ method: "patch";
386
+ path: "/{id}";
387
+ tags: string[];
388
+ summary: string;
389
+ description: string;
390
+ request: {
391
+ params: z.ZodObject<{
392
+ id: z.ZodUUID;
393
+ }, z.core.$strip>;
394
+ body: {
395
+ content: {
396
+ "application/json": {
397
+ schema: z.ZodObject<{
398
+ name: z.ZodOptional<z.ZodString>;
399
+ type: z.ZodOptional<z.ZodEnum<{
400
+ percentage_off_order: "percentage_off_order";
401
+ fixed_off_order: "fixed_off_order";
402
+ percentage_off_item: "percentage_off_item";
403
+ fixed_off_item: "fixed_off_item";
404
+ free_shipping: "free_shipping";
405
+ buy_x_get_y: "buy_x_get_y";
406
+ }>>;
407
+ value: z.ZodOptional<z.ZodNumber>;
408
+ code: z.ZodOptional<z.ZodOptional<z.ZodString>>;
409
+ buyQuantity: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
410
+ getQuantity: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
411
+ isAutomatic: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
412
+ isActive: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
413
+ priority: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
414
+ conditions: z.ZodOptional<z.ZodOptional<z.ZodObject<{
415
+ minimumOrderValue: z.ZodOptional<z.ZodNumber>;
416
+ minimumQuantity: z.ZodOptional<z.ZodNumber>;
417
+ entityTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
418
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
419
+ customerGroups: z.ZodOptional<z.ZodArray<z.ZodString>>;
420
+ }, z.core.$strip>>>;
421
+ usageLimitTotal: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
422
+ usageLimitPerCustomer: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
423
+ validFrom: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
424
+ validUntil: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
425
+ metadata: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
426
+ }, z.core.$strip>;
427
+ };
428
+ };
429
+ required: true;
430
+ };
431
+ };
432
+ responses: {
433
+ 400: {
434
+ readonly content: {
435
+ readonly "application/json": {
436
+ readonly schema: z.ZodObject<{
437
+ error: z.ZodObject<{
438
+ code: z.ZodString;
439
+ message: z.ZodString;
440
+ details: z.ZodOptional<z.ZodObject<{
441
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
442
+ path: z.ZodString;
443
+ message: z.ZodString;
444
+ code: z.ZodString;
445
+ }, z.core.$strip>>>;
446
+ }, z.core.$strip>>;
447
+ }, z.core.$strip>;
448
+ }, z.core.$strip>;
449
+ };
450
+ };
451
+ readonly description: "Business logic error.";
452
+ };
453
+ 401: {
454
+ readonly content: {
455
+ readonly "application/json": {
456
+ readonly schema: z.ZodObject<{
457
+ error: z.ZodObject<{
458
+ code: z.ZodString;
459
+ message: z.ZodString;
460
+ details: z.ZodOptional<z.ZodObject<{
461
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
462
+ path: z.ZodString;
463
+ message: z.ZodString;
464
+ code: z.ZodString;
465
+ }, z.core.$strip>>>;
466
+ }, z.core.$strip>>;
467
+ }, z.core.$strip>;
468
+ }, z.core.$strip>;
469
+ };
470
+ };
471
+ readonly description: "Authentication required.";
472
+ };
473
+ 403: {
474
+ readonly content: {
475
+ readonly "application/json": {
476
+ readonly schema: z.ZodObject<{
477
+ error: z.ZodObject<{
478
+ code: z.ZodString;
479
+ message: z.ZodString;
480
+ details: z.ZodOptional<z.ZodObject<{
481
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
482
+ path: z.ZodString;
483
+ message: z.ZodString;
484
+ code: z.ZodString;
485
+ }, z.core.$strip>>>;
486
+ }, z.core.$strip>>;
487
+ }, z.core.$strip>;
488
+ }, z.core.$strip>;
489
+ };
490
+ };
491
+ readonly description: "Insufficient permissions.";
492
+ };
493
+ 404: {
494
+ readonly content: {
495
+ readonly "application/json": {
496
+ readonly schema: z.ZodObject<{
497
+ error: z.ZodObject<{
498
+ code: z.ZodString;
499
+ message: z.ZodString;
500
+ details: z.ZodOptional<z.ZodObject<{
501
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
502
+ path: z.ZodString;
503
+ message: z.ZodString;
504
+ code: z.ZodString;
505
+ }, z.core.$strip>>>;
506
+ }, z.core.$strip>>;
507
+ }, z.core.$strip>;
508
+ }, z.core.$strip>;
509
+ };
510
+ };
511
+ readonly description: "Resource not found.";
512
+ };
513
+ 422: {
514
+ readonly content: {
515
+ readonly "application/json": {
516
+ readonly schema: z.ZodObject<{
517
+ error: z.ZodObject<{
518
+ code: z.ZodString;
519
+ message: z.ZodString;
520
+ details: z.ZodOptional<z.ZodObject<{
521
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
522
+ path: z.ZodString;
523
+ message: z.ZodString;
524
+ code: z.ZodString;
525
+ }, z.core.$strip>>>;
526
+ }, z.core.$strip>>;
527
+ }, z.core.$strip>;
528
+ }, z.core.$strip>;
529
+ };
530
+ };
531
+ readonly description: "Validation error.";
532
+ };
533
+ 200: {
534
+ content: {
535
+ "application/json": {
536
+ schema: z.ZodObject<{
537
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
538
+ }, z.core.$strip>;
539
+ };
540
+ };
541
+ description: string;
542
+ };
543
+ };
544
+ } & {
545
+ getRoutingPath(): "/:id";
546
+ };
284
547
  export declare const deactivatePromotionRoute: {
285
548
  method: "post";
286
549
  path: "/{id}/deactivate";
@@ -299,6 +562,13 @@ export declare const deactivatePromotionRoute: {
299
562
  error: z.ZodObject<{
300
563
  code: z.ZodString;
301
564
  message: z.ZodString;
565
+ details: z.ZodOptional<z.ZodObject<{
566
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
567
+ path: z.ZodString;
568
+ message: z.ZodString;
569
+ code: z.ZodString;
570
+ }, z.core.$strip>>>;
571
+ }, z.core.$strip>>;
302
572
  }, z.core.$strip>;
303
573
  }, z.core.$strip>;
304
574
  };
@@ -312,6 +582,13 @@ export declare const deactivatePromotionRoute: {
312
582
  error: z.ZodObject<{
313
583
  code: z.ZodString;
314
584
  message: z.ZodString;
585
+ details: z.ZodOptional<z.ZodObject<{
586
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
587
+ path: z.ZodString;
588
+ message: z.ZodString;
589
+ code: z.ZodString;
590
+ }, z.core.$strip>>>;
591
+ }, z.core.$strip>>;
315
592
  }, z.core.$strip>;
316
593
  }, z.core.$strip>;
317
594
  };
@@ -325,6 +602,13 @@ export declare const deactivatePromotionRoute: {
325
602
  error: z.ZodObject<{
326
603
  code: z.ZodString;
327
604
  message: z.ZodString;
605
+ details: z.ZodOptional<z.ZodObject<{
606
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
607
+ path: z.ZodString;
608
+ message: z.ZodString;
609
+ code: z.ZodString;
610
+ }, z.core.$strip>>>;
611
+ }, z.core.$strip>>;
328
612
  }, z.core.$strip>;
329
613
  }, z.core.$strip>;
330
614
  };
@@ -338,6 +622,13 @@ export declare const deactivatePromotionRoute: {
338
622
  error: z.ZodObject<{
339
623
  code: z.ZodString;
340
624
  message: z.ZodString;
625
+ details: z.ZodOptional<z.ZodObject<{
626
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
627
+ path: z.ZodString;
628
+ message: z.ZodString;
629
+ code: z.ZodString;
630
+ }, z.core.$strip>>>;
631
+ }, z.core.$strip>>;
341
632
  }, z.core.$strip>;
342
633
  }, z.core.$strip>;
343
634
  };
@@ -351,6 +642,13 @@ export declare const deactivatePromotionRoute: {
351
642
  error: z.ZodObject<{
352
643
  code: z.ZodString;
353
644
  message: z.ZodString;
645
+ details: z.ZodOptional<z.ZodObject<{
646
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
647
+ path: z.ZodString;
648
+ message: z.ZodString;
649
+ code: z.ZodString;
650
+ }, z.core.$strip>>>;
651
+ }, z.core.$strip>>;
354
652
  }, z.core.$strip>;
355
653
  }, z.core.$strip>;
356
654
  };
@@ -1 +1 @@
1
- {"version":3,"file":"promotions.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/schemas/promotions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAe,MAAM,mBAAmB,CAAC;AAKnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAErC,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;iBAaF,CAAC;AAIvC,eAAO,MAAM,uBAAuB;;iBAEL,CAAC;AAUhC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiB9B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoB/B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBjC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAenC,CAAC"}
1
+ {"version":3,"file":"promotions.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/schemas/promotions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAe,MAAM,mBAAmB,CAAC;AAKnD,OAAO,EACL,yBAAyB,EAE1B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAErC,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAErC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;iBAaF,CAAC;AAIvC,eAAO,MAAM,uBAAuB;;iBAEL,CAAC;AAUhC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiB9B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoB/B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsB/B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAenC,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { z, createRoute } from "@hono/zod-openapi";
2
2
  import { errorResponses } from "./shared.js";
3
3
  // ─── Request Schemas ────────────────────────────────────────────────────────
4
- import { CreatePromotionBodySchema } from "../../../modules/promotions/schemas.js";
4
+ import { CreatePromotionBodySchema, UpdatePromotionBodySchema as UpdatePromotionBodySchemaBase, } from "../../../modules/promotions/schemas.js";
5
5
  export { CreatePromotionBodySchema };
6
+ export const UpdatePromotionBodySchema = UpdatePromotionBodySchemaBase.openapi("UpdatePromotionRequest");
6
7
  export const ValidatePromotionBodySchema = z.object({
7
8
  code: z.string().openapi({ example: "SUMMER10" }),
8
9
  currency: z.string().length(3).openapi({ example: "USD" }),
@@ -86,6 +87,29 @@ export const validatePromotionRoute = createRoute({
86
87
  ...errorResponses,
87
88
  },
88
89
  });
90
+ export const updatePromotionRoute = createRoute({
91
+ method: "patch",
92
+ path: "/{id}",
93
+ tags: ["Promotions"],
94
+ summary: "Edit a promotion",
95
+ description: "Update any subset of a promotion's fields (name, code, type, value, validity dates, scope, metadata, isActive). Validated the same way create is.",
96
+ request: {
97
+ params: PromotionIdParam,
98
+ body: {
99
+ content: {
100
+ "application/json": { schema: UpdatePromotionBodySchema },
101
+ },
102
+ required: true,
103
+ },
104
+ },
105
+ responses: {
106
+ 200: {
107
+ content: { "application/json": { schema: PromotionResponseSchema } },
108
+ description: "Promotion updated.",
109
+ },
110
+ ...errorResponses,
111
+ },
112
+ });
89
113
  export const deactivatePromotionRoute = createRoute({
90
114
  method: "post",
91
115
  path: "/{id}/deactivate",
@@ -1,8 +1,20 @@
1
1
  import { z } from "@hono/zod-openapi";
2
+ export declare const ValidationIssueSchema: z.ZodObject<{
3
+ path: z.ZodString;
4
+ message: z.ZodString;
5
+ code: z.ZodString;
6
+ }, z.core.$strip>;
2
7
  export declare const ErrorSchema: z.ZodObject<{
3
8
  error: z.ZodObject<{
4
9
  code: z.ZodString;
5
10
  message: z.ZodString;
11
+ details: z.ZodOptional<z.ZodObject<{
12
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
13
+ path: z.ZodString;
14
+ message: z.ZodString;
15
+ code: z.ZodString;
16
+ }, z.core.$strip>>>;
17
+ }, z.core.$strip>>;
6
18
  }, z.core.$strip>;
7
19
  }, z.core.$strip>;
8
20
  export declare const PaginationQuerySchema: z.ZodObject<{
@@ -33,6 +45,13 @@ export declare const errorResponses: {
33
45
  error: z.ZodObject<{
34
46
  code: z.ZodString;
35
47
  message: z.ZodString;
48
+ details: z.ZodOptional<z.ZodObject<{
49
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
50
+ path: z.ZodString;
51
+ message: z.ZodString;
52
+ code: z.ZodString;
53
+ }, z.core.$strip>>>;
54
+ }, z.core.$strip>>;
36
55
  }, z.core.$strip>;
37
56
  }, z.core.$strip>;
38
57
  };
@@ -46,6 +65,13 @@ export declare const errorResponses: {
46
65
  error: z.ZodObject<{
47
66
  code: z.ZodString;
48
67
  message: z.ZodString;
68
+ details: z.ZodOptional<z.ZodObject<{
69
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
70
+ path: z.ZodString;
71
+ message: z.ZodString;
72
+ code: z.ZodString;
73
+ }, z.core.$strip>>>;
74
+ }, z.core.$strip>>;
49
75
  }, z.core.$strip>;
50
76
  }, z.core.$strip>;
51
77
  };
@@ -59,6 +85,13 @@ export declare const errorResponses: {
59
85
  error: z.ZodObject<{
60
86
  code: z.ZodString;
61
87
  message: z.ZodString;
88
+ details: z.ZodOptional<z.ZodObject<{
89
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
90
+ path: z.ZodString;
91
+ message: z.ZodString;
92
+ code: z.ZodString;
93
+ }, z.core.$strip>>>;
94
+ }, z.core.$strip>>;
62
95
  }, z.core.$strip>;
63
96
  }, z.core.$strip>;
64
97
  };
@@ -72,6 +105,13 @@ export declare const errorResponses: {
72
105
  error: z.ZodObject<{
73
106
  code: z.ZodString;
74
107
  message: z.ZodString;
108
+ details: z.ZodOptional<z.ZodObject<{
109
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
110
+ path: z.ZodString;
111
+ message: z.ZodString;
112
+ code: z.ZodString;
113
+ }, z.core.$strip>>>;
114
+ }, z.core.$strip>>;
75
115
  }, z.core.$strip>;
76
116
  }, z.core.$strip>;
77
117
  };
@@ -85,6 +125,13 @@ export declare const errorResponses: {
85
125
  error: z.ZodObject<{
86
126
  code: z.ZodString;
87
127
  message: z.ZodString;
128
+ details: z.ZodOptional<z.ZodObject<{
129
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
130
+ path: z.ZodString;
131
+ message: z.ZodString;
132
+ code: z.ZodString;
133
+ }, z.core.$strip>>>;
134
+ }, z.core.$strip>>;
88
135
  }, z.core.$strip>;
89
136
  }, z.core.$strip>;
90
137
  };
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/schemas/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAItC,eAAO,MAAM,WAAW;;;;;iBAKL,CAAC;AAIpB,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;iBAIL,CAAC;AAI7B,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAIH,eAAO,MAAM,qBAAqB;;;;iBAEL,CAAC;AAE9B,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBjB,CAAC"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/schemas/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAItC,eAAO,MAAM,qBAAqB;;;;iBAIL,CAAC;AAE9B,eAAO,MAAM,WAAW;;;;;;;;;;;;iBAQL,CAAC;AAIpB,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;iBAIL,CAAC;AAI7B,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAIH,eAAO,MAAM,qBAAqB;;;;iBAEL,CAAC;AAE9B,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBjB,CAAC"}
@@ -1,9 +1,17 @@
1
1
  import { z } from "@hono/zod-openapi";
2
2
  // ─── Error Response ──────────────────────────────────────────────────────────
3
+ export const ValidationIssueSchema = z.object({
4
+ path: z.string().openapi({ example: "cartId" }),
5
+ message: z.string().openapi({ example: "Invalid uuid" }),
6
+ code: z.string().openapi({ example: "invalid_string" }),
7
+ }).openapi("ValidationIssue");
3
8
  export const ErrorSchema = z.object({
4
9
  error: z.object({
5
10
  code: z.string().openapi({ example: "VALIDATION_FAILED" }),
6
11
  message: z.string().openapi({ example: "cartId: Invalid uuid" }),
12
+ details: z.object({
13
+ issues: z.array(ValidationIssueSchema).optional(),
14
+ }).optional(),
7
15
  }),
8
16
  }).openapi("Error");
9
17
  // ─── Pagination ──────────────────────────────────────────────────────────────