@endora-commerce/mod-returns 0.100.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 (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +60 -0
  3. package/dist/admin/api/returns-client.d.ts +69 -0
  4. package/dist/admin/api/returns-client.d.ts.map +1 -0
  5. package/dist/admin/api/returns-client.js +36 -0
  6. package/dist/admin/api/returns-client.js.map +1 -0
  7. package/dist/admin/index.d.ts +37 -0
  8. package/dist/admin/index.d.ts.map +1 -0
  9. package/dist/admin/index.js +57 -0
  10. package/dist/admin/index.js.map +1 -0
  11. package/dist/admin/pages/ReturnDeliveryMethodsPage.d.ts +5 -0
  12. package/dist/admin/pages/ReturnDeliveryMethodsPage.d.ts.map +1 -0
  13. package/dist/admin/pages/ReturnDeliveryMethodsPage.js +44 -0
  14. package/dist/admin/pages/ReturnDeliveryMethodsPage.js.map +1 -0
  15. package/dist/admin/pages/ReturnDetail.d.ts +5 -0
  16. package/dist/admin/pages/ReturnDetail.d.ts.map +1 -0
  17. package/dist/admin/pages/ReturnDetail.js +115 -0
  18. package/dist/admin/pages/ReturnDetail.js.map +1 -0
  19. package/dist/admin/pages/ReturnReasonsPage.d.ts +5 -0
  20. package/dist/admin/pages/ReturnReasonsPage.d.ts.map +1 -0
  21. package/dist/admin/pages/ReturnReasonsPage.js +44 -0
  22. package/dist/admin/pages/ReturnReasonsPage.js.map +1 -0
  23. package/dist/admin/pages/ReturnStatusesConfigPage.d.ts +5 -0
  24. package/dist/admin/pages/ReturnStatusesConfigPage.d.ts.map +1 -0
  25. package/dist/admin/pages/ReturnStatusesConfigPage.js +71 -0
  26. package/dist/admin/pages/ReturnStatusesConfigPage.js.map +1 -0
  27. package/dist/admin/pages/ReturnsList.d.ts +5 -0
  28. package/dist/admin/pages/ReturnsList.d.ts.map +1 -0
  29. package/dist/admin/pages/ReturnsList.js +189 -0
  30. package/dist/admin/pages/ReturnsList.js.map +1 -0
  31. package/dist/backend/domain/default-reasons.d.ts +14 -0
  32. package/dist/backend/domain/default-reasons.d.ts.map +1 -0
  33. package/dist/backend/domain/default-reasons.js +9 -0
  34. package/dist/backend/domain/default-reasons.js.map +1 -0
  35. package/dist/backend/domain/free-return-window.d.ts +2 -0
  36. package/dist/backend/domain/free-return-window.d.ts.map +1 -0
  37. package/dist/backend/domain/free-return-window.js +19 -0
  38. package/dist/backend/domain/free-return-window.js.map +1 -0
  39. package/dist/backend/domain/refund-math.d.ts +19 -0
  40. package/dist/backend/domain/refund-math.d.ts.map +1 -0
  41. package/dist/backend/domain/refund-math.js +27 -0
  42. package/dist/backend/domain/refund-math.js.map +1 -0
  43. package/dist/backend/domain/return-status-graph.d.ts +91 -0
  44. package/dist/backend/domain/return-status-graph.d.ts.map +1 -0
  45. package/dist/backend/domain/return-status-graph.js +143 -0
  46. package/dist/backend/domain/return-status-graph.js.map +1 -0
  47. package/dist/backend/email-templates/return-authorized.d.ts +11 -0
  48. package/dist/backend/email-templates/return-authorized.d.ts.map +1 -0
  49. package/dist/backend/email-templates/return-authorized.js +18 -0
  50. package/dist/backend/email-templates/return-authorized.js.map +1 -0
  51. package/dist/backend/email-templates/return-rejected.d.ts +11 -0
  52. package/dist/backend/email-templates/return-rejected.d.ts.map +1 -0
  53. package/dist/backend/email-templates/return-rejected.js +20 -0
  54. package/dist/backend/email-templates/return-rejected.js.map +1 -0
  55. package/dist/backend/email-templates/transactional-defaults.d.ts +11 -0
  56. package/dist/backend/email-templates/transactional-defaults.d.ts.map +1 -0
  57. package/dist/backend/email-templates/transactional-defaults.js +64 -0
  58. package/dist/backend/email-templates/transactional-defaults.js.map +1 -0
  59. package/dist/backend/entities/refund.entity.d.ts +41 -0
  60. package/dist/backend/entities/refund.entity.d.ts.map +1 -0
  61. package/dist/backend/entities/refund.entity.js +122 -0
  62. package/dist/backend/entities/refund.entity.js.map +1 -0
  63. package/dist/backend/entities/return-case-attachment.entity.d.ts +16 -0
  64. package/dist/backend/entities/return-case-attachment.entity.d.ts.map +1 -0
  65. package/dist/backend/entities/return-case-attachment.entity.js +53 -0
  66. package/dist/backend/entities/return-case-attachment.entity.js.map +1 -0
  67. package/dist/backend/entities/return-case-comment.entity.d.ts +20 -0
  68. package/dist/backend/entities/return-case-comment.entity.d.ts.map +1 -0
  69. package/dist/backend/entities/return-case-comment.entity.js +70 -0
  70. package/dist/backend/entities/return-case-comment.entity.js.map +1 -0
  71. package/dist/backend/entities/return-case-item.entity.d.ts +25 -0
  72. package/dist/backend/entities/return-case-item.entity.d.ts.map +1 -0
  73. package/dist/backend/entities/return-case-item.entity.js +87 -0
  74. package/dist/backend/entities/return-case-item.entity.js.map +1 -0
  75. package/dist/backend/entities/return-case.entity.d.ts +41 -0
  76. package/dist/backend/entities/return-case.entity.d.ts.map +1 -0
  77. package/dist/backend/entities/return-case.entity.js +155 -0
  78. package/dist/backend/entities/return-case.entity.js.map +1 -0
  79. package/dist/backend/entities/return-delivery-method.entity.d.ts +18 -0
  80. package/dist/backend/entities/return-delivery-method.entity.d.ts.map +1 -0
  81. package/dist/backend/entities/return-delivery-method.entity.js +63 -0
  82. package/dist/backend/entities/return-delivery-method.entity.js.map +1 -0
  83. package/dist/backend/entities/return-list-saved-view.entity.d.ts +24 -0
  84. package/dist/backend/entities/return-list-saved-view.entity.d.ts.map +1 -0
  85. package/dist/backend/entities/return-list-saved-view.entity.js +74 -0
  86. package/dist/backend/entities/return-list-saved-view.entity.js.map +1 -0
  87. package/dist/backend/entities/return-reason.entity.d.ts +21 -0
  88. package/dist/backend/entities/return-reason.entity.d.ts.map +1 -0
  89. package/dist/backend/entities/return-reason.entity.js +65 -0
  90. package/dist/backend/entities/return-reason.entity.js.map +1 -0
  91. package/dist/backend/entities/return-shipment.entity.d.ts +22 -0
  92. package/dist/backend/entities/return-shipment.entity.d.ts.map +1 -0
  93. package/dist/backend/entities/return-shipment.entity.js +71 -0
  94. package/dist/backend/entities/return-shipment.entity.js.map +1 -0
  95. package/dist/backend/entities/return-status-transition.entity.d.ts +17 -0
  96. package/dist/backend/entities/return-status-transition.entity.d.ts.map +1 -0
  97. package/dist/backend/entities/return-status-transition.entity.js +55 -0
  98. package/dist/backend/entities/return-status-transition.entity.js.map +1 -0
  99. package/dist/backend/entities/return-status.entity.d.ts +29 -0
  100. package/dist/backend/entities/return-status.entity.d.ts.map +1 -0
  101. package/dist/backend/entities/return-status.entity.js +90 -0
  102. package/dist/backend/entities/return-status.entity.js.map +1 -0
  103. package/dist/backend/events/return-status-events.d.ts +44 -0
  104. package/dist/backend/events/return-status-events.d.ts.map +1 -0
  105. package/dist/backend/events/return-status-events.js +50 -0
  106. package/dist/backend/events/return-status-events.js.map +1 -0
  107. package/dist/backend/index.d.ts +106 -0
  108. package/dist/backend/index.d.ts.map +1 -0
  109. package/dist/backend/index.js +116 -0
  110. package/dist/backend/index.js.map +1 -0
  111. package/dist/backend/plugin.d.ts +33 -0
  112. package/dist/backend/plugin.d.ts.map +1 -0
  113. package/dist/backend/plugin.js +124 -0
  114. package/dist/backend/plugin.js.map +1 -0
  115. package/dist/backend/routes.admin.d.ts +38 -0
  116. package/dist/backend/routes.admin.d.ts.map +1 -0
  117. package/dist/backend/routes.admin.js +181 -0
  118. package/dist/backend/routes.admin.js.map +1 -0
  119. package/dist/backend/routes.customer.d.ts +22 -0
  120. package/dist/backend/routes.customer.d.ts.map +1 -0
  121. package/dist/backend/routes.customer.js +56 -0
  122. package/dist/backend/routes.customer.js.map +1 -0
  123. package/dist/backend/services/notification-context.d.ts +47 -0
  124. package/dist/backend/services/notification-context.d.ts.map +1 -0
  125. package/dist/backend/services/notification-context.js +49 -0
  126. package/dist/backend/services/notification-context.js.map +1 -0
  127. package/dist/backend/services/return-attachment-service.d.ts +20 -0
  128. package/dist/backend/services/return-attachment-service.d.ts.map +1 -0
  129. package/dist/backend/services/return-attachment-service.js +48 -0
  130. package/dist/backend/services/return-attachment-service.js.map +1 -0
  131. package/dist/backend/services/return-authorization-service.d.ts +53 -0
  132. package/dist/backend/services/return-authorization-service.d.ts.map +1 -0
  133. package/dist/backend/services/return-authorization-service.js +72 -0
  134. package/dist/backend/services/return-authorization-service.js.map +1 -0
  135. package/dist/backend/services/return-case-service.d.ts +44 -0
  136. package/dist/backend/services/return-case-service.d.ts.map +1 -0
  137. package/dist/backend/services/return-case-service.js +260 -0
  138. package/dist/backend/services/return-case-service.js.map +1 -0
  139. package/dist/backend/services/return-comment-service.d.ts +43 -0
  140. package/dist/backend/services/return-comment-service.d.ts.map +1 -0
  141. package/dist/backend/services/return-comment-service.js +109 -0
  142. package/dist/backend/services/return-comment-service.js.map +1 -0
  143. package/dist/backend/services/return-delivery-method-service.d.ts +44 -0
  144. package/dist/backend/services/return-delivery-method-service.d.ts.map +1 -0
  145. package/dist/backend/services/return-delivery-method-service.js +114 -0
  146. package/dist/backend/services/return-delivery-method-service.js.map +1 -0
  147. package/dist/backend/services/return-email-notifier.d.ts +89 -0
  148. package/dist/backend/services/return-email-notifier.d.ts.map +1 -0
  149. package/dist/backend/services/return-email-notifier.js +128 -0
  150. package/dist/backend/services/return-email-notifier.js.map +1 -0
  151. package/dist/backend/services/return-export-service.d.ts +16 -0
  152. package/dist/backend/services/return-export-service.d.ts.map +1 -0
  153. package/dist/backend/services/return-export-service.js +29 -0
  154. package/dist/backend/services/return-export-service.js.map +1 -0
  155. package/dist/backend/services/return-list-service.d.ts +27 -0
  156. package/dist/backend/services/return-list-service.d.ts.map +1 -0
  157. package/dist/backend/services/return-list-service.js +114 -0
  158. package/dist/backend/services/return-list-service.js.map +1 -0
  159. package/dist/backend/services/return-list-view-service.d.ts +36 -0
  160. package/dist/backend/services/return-list-view-service.d.ts.map +1 -0
  161. package/dist/backend/services/return-list-view-service.js +82 -0
  162. package/dist/backend/services/return-list-view-service.js.map +1 -0
  163. package/dist/backend/services/return-reason-service.d.ts +33 -0
  164. package/dist/backend/services/return-reason-service.d.ts.map +1 -0
  165. package/dist/backend/services/return-reason-service.js +90 -0
  166. package/dist/backend/services/return-reason-service.js.map +1 -0
  167. package/dist/backend/services/return-settlement-service.d.ts +67 -0
  168. package/dist/backend/services/return-settlement-service.d.ts.map +1 -0
  169. package/dist/backend/services/return-settlement-service.js +295 -0
  170. package/dist/backend/services/return-settlement-service.js.map +1 -0
  171. package/dist/backend/services/return-shipment-service.d.ts +40 -0
  172. package/dist/backend/services/return-shipment-service.d.ts.map +1 -0
  173. package/dist/backend/services/return-shipment-service.js +113 -0
  174. package/dist/backend/services/return-shipment-service.js.map +1 -0
  175. package/dist/backend/services/return-status-graph-service.d.ts +59 -0
  176. package/dist/backend/services/return-status-graph-service.d.ts.map +1 -0
  177. package/dist/backend/services/return-status-graph-service.js +197 -0
  178. package/dist/backend/services/return-status-graph-service.js.map +1 -0
  179. package/dist/backend/services/return-transition-service.d.ts +48 -0
  180. package/dist/backend/services/return-transition-service.d.ts.map +1 -0
  181. package/dist/backend/services/return-transition-service.js +116 -0
  182. package/dist/backend/services/return-transition-service.js.map +1 -0
  183. package/dist/backend/services/returns-seeder.d.ts +18 -0
  184. package/dist/backend/services/returns-seeder.d.ts.map +1 -0
  185. package/dist/backend/services/returns-seeder.js +63 -0
  186. package/dist/backend/services/returns-seeder.js.map +1 -0
  187. package/dist/backend/services/rma-number-generator.d.ts +35 -0
  188. package/dist/backend/services/rma-number-generator.d.ts.map +1 -0
  189. package/dist/backend/services/rma-number-generator.js +45 -0
  190. package/dist/backend/services/rma-number-generator.js.map +1 -0
  191. package/dist/manifest.d.ts +182 -0
  192. package/dist/manifest.d.ts.map +1 -0
  193. package/dist/manifest.js +216 -0
  194. package/dist/manifest.js.map +1 -0
  195. package/dist/migrations/20260625T144227_returns_init.d.ts +15 -0
  196. package/dist/migrations/20260625T144227_returns_init.d.ts.map +1 -0
  197. package/dist/migrations/20260625T144227_returns_init.js +241 -0
  198. package/dist/migrations/20260625T144227_returns_init.js.map +1 -0
  199. package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.d.ts +25 -0
  200. package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.d.ts.map +1 -0
  201. package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.js +46 -0
  202. package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.js.map +1 -0
  203. package/dist/migrations/index.d.ts +28 -0
  204. package/dist/migrations/index.d.ts.map +1 -0
  205. package/dist/migrations/index.js +31 -0
  206. package/dist/migrations/index.js.map +1 -0
  207. package/docs/returns.md +103 -0
  208. package/i18n/en.json +28 -0
  209. package/i18n/pl.json +28 -0
  210. package/package.json +101 -0
  211. package/tailwind.css +14 -0
@@ -0,0 +1,65 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core';
11
+ import { GlobalEntity } from '@endora-commerce/platform/tenancy';
12
+ import { randomUUID } from 'crypto';
13
+ /**
14
+ * ReturnReason — feature 046 (US7, FR-030).
15
+ *
16
+ * A managed return/complaint reason presented on the storefront form. `appliesTo`
17
+ * restricts a reason to Returns, Complaints, or both; `isActive` + `weight`
18
+ * control visibility and order.
19
+ */
20
+ let ReturnReason = class ReturnReason {
21
+ [OptionalProps];
22
+ id = randomUUID();
23
+ /** Localized labels, e.g. { en: 'Damaged in transit', pl: 'Uszkodzone w transporcie' }. */
24
+ label;
25
+ /** `return` | `complaint` | `both`. */
26
+ appliesTo;
27
+ isActive = true;
28
+ weight = 100;
29
+ createdAt = new Date();
30
+ updatedAt = new Date();
31
+ };
32
+ __decorate([
33
+ PrimaryKey({ type: 'uuid' }),
34
+ __metadata("design:type", String)
35
+ ], ReturnReason.prototype, "id", void 0);
36
+ __decorate([
37
+ Property({ type: 'json' }),
38
+ __metadata("design:type", Object)
39
+ ], ReturnReason.prototype, "label", void 0);
40
+ __decorate([
41
+ Property({ type: 'string', length: 16 }),
42
+ __metadata("design:type", String)
43
+ ], ReturnReason.prototype, "appliesTo", void 0);
44
+ __decorate([
45
+ Property({ type: 'boolean' }),
46
+ __metadata("design:type", Boolean)
47
+ ], ReturnReason.prototype, "isActive", void 0);
48
+ __decorate([
49
+ Property({ type: 'integer' }),
50
+ __metadata("design:type", Number)
51
+ ], ReturnReason.prototype, "weight", void 0);
52
+ __decorate([
53
+ Property({ type: 'datetime', onCreate: () => new Date() }),
54
+ __metadata("design:type", Date)
55
+ ], ReturnReason.prototype, "createdAt", void 0);
56
+ __decorate([
57
+ Property({ type: 'datetime', onUpdate: () => new Date() }),
58
+ __metadata("design:type", Date)
59
+ ], ReturnReason.prototype, "updatedAt", void 0);
60
+ ReturnReason = __decorate([
61
+ GlobalEntity(),
62
+ Entity({ tableName: 'return_reasons' })
63
+ ], ReturnReason);
64
+ export { ReturnReason };
65
+ //# sourceMappingURL=return-reason.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-reason.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/return-reason.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;;GAMG;AAGI,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,CAAC,aAAa,CAAC,CAA4D;IAG3E,EAAE,GAAW,UAAU,EAAE,CAAC;IAE1B,2FAA2F;IAE3F,KAAK,CAA0B;IAE/B,uCAAuC;IAEvC,SAAS,CAAmC;IAG5C,QAAQ,GAAY,IAAI,CAAC;IAGzB,MAAM,GAAW,GAAG,CAAC;IAGrB,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AArBC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wCACH;AAI1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;2CACI;AAI/B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;+CACG;AAG5C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;8CACL;AAGzB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;4CACT;AAGrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;+CAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;+CAAc;AAxBlB,YAAY;IAFxB,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;GAC3B,YAAY,CAyBxB"}
@@ -0,0 +1,22 @@
1
+ import { OptionalProps } from '@mikro-orm/core';
2
+ /**
3
+ * ReturnShipment — feature 046 (US6, R8).
4
+ *
5
+ * Tracks the inbound return shipment (customer → shop) or a replacement
6
+ * shipment (shop → customer) against a case. Inbound shipments are not order
7
+ * shipments, so they live in this module-owned table rather than `shipments`.
8
+ */
9
+ export declare class ReturnShipment {
10
+ [OptionalProps]?: 'id' | 'deliveryMethodId' | 'externalReference' | 'status' | 'createdAt' | 'updatedAt';
11
+ id: string;
12
+ returnCaseId: string;
13
+ /** `inbound` (customer→shop) | `replacement` (shop→customer). */
14
+ direction: 'inbound' | 'replacement';
15
+ deliveryMethodId?: string | null;
16
+ externalReference?: string | null;
17
+ /** `pending` | `received` | `failed`. */
18
+ status: 'pending' | 'received' | 'failed';
19
+ createdAt: Date;
20
+ updatedAt: Date;
21
+ }
22
+ //# sourceMappingURL=return-shipment.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-shipment.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/return-shipment.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAIrF;;;;;;GAMG;AACH,qBAEa,cAAc;IACzB,CAAC,aAAa,CAAC,CAAC,EACZ,IAAI,GACJ,kBAAkB,GAClB,mBAAmB,GACnB,QAAQ,GACR,WAAW,GACX,WAAW,CAAC;IAGhB,EAAE,EAAE,MAAM,CAAgB;IAI1B,YAAY,EAAG,MAAM,CAAC;IAEtB,iEAAiE;IAEjE,SAAS,EAAG,SAAS,GAAG,aAAa,CAAC;IAGtC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC,yCAAyC;IAEzC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAa;IAGtD,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
@@ -0,0 +1,71 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, Index, OptionalProps, PrimaryKey, Property } from '@mikro-orm/core';
11
+ import { GlobalEntity } from '@endora-commerce/platform/tenancy';
12
+ import { randomUUID } from 'crypto';
13
+ /**
14
+ * ReturnShipment — feature 046 (US6, R8).
15
+ *
16
+ * Tracks the inbound return shipment (customer → shop) or a replacement
17
+ * shipment (shop → customer) against a case. Inbound shipments are not order
18
+ * shipments, so they live in this module-owned table rather than `shipments`.
19
+ */
20
+ let ReturnShipment = class ReturnShipment {
21
+ [OptionalProps];
22
+ id = randomUUID();
23
+ returnCaseId;
24
+ /** `inbound` (customer→shop) | `replacement` (shop→customer). */
25
+ direction;
26
+ deliveryMethodId;
27
+ externalReference;
28
+ /** `pending` | `received` | `failed`. */
29
+ status = 'pending';
30
+ createdAt = new Date();
31
+ updatedAt = new Date();
32
+ };
33
+ __decorate([
34
+ PrimaryKey({ type: 'uuid' }),
35
+ __metadata("design:type", String)
36
+ ], ReturnShipment.prototype, "id", void 0);
37
+ __decorate([
38
+ Property({ type: 'uuid' }),
39
+ Index(),
40
+ __metadata("design:type", String)
41
+ ], ReturnShipment.prototype, "returnCaseId", void 0);
42
+ __decorate([
43
+ Property({ type: 'string', length: 16 }),
44
+ __metadata("design:type", String)
45
+ ], ReturnShipment.prototype, "direction", void 0);
46
+ __decorate([
47
+ Property({ type: 'uuid', nullable: true }),
48
+ __metadata("design:type", Object)
49
+ ], ReturnShipment.prototype, "deliveryMethodId", void 0);
50
+ __decorate([
51
+ Property({ type: 'string', length: 128, nullable: true }),
52
+ __metadata("design:type", Object)
53
+ ], ReturnShipment.prototype, "externalReference", void 0);
54
+ __decorate([
55
+ Property({ type: 'string', length: 16 }),
56
+ __metadata("design:type", String)
57
+ ], ReturnShipment.prototype, "status", void 0);
58
+ __decorate([
59
+ Property({ type: 'datetime', onCreate: () => new Date() }),
60
+ __metadata("design:type", Date)
61
+ ], ReturnShipment.prototype, "createdAt", void 0);
62
+ __decorate([
63
+ Property({ type: 'datetime', onUpdate: () => new Date() }),
64
+ __metadata("design:type", Date)
65
+ ], ReturnShipment.prototype, "updatedAt", void 0);
66
+ ReturnShipment = __decorate([
67
+ GlobalEntity(),
68
+ Entity({ tableName: 'return_shipments' })
69
+ ], ReturnShipment);
70
+ export { ReturnShipment };
71
+ //# sourceMappingURL=return-shipment.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-shipment.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/return-shipment.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;;GAMG;AAGI,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,CAAC,aAAa,CAAC,CAMC;IAGhB,EAAE,GAAW,UAAU,EAAE,CAAC;IAI1B,YAAY,CAAU;IAEtB,iEAAiE;IAEjE,SAAS,CAA6B;IAGtC,gBAAgB,CAAiB;IAGjC,iBAAiB,CAAiB;IAElC,yCAAyC;IAEzC,MAAM,GAAsC,SAAS,CAAC;IAGtD,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AAzBC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;0CACH;AAI1B;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE;;oDACc;AAItB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;iDACH;AAGtC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wDACV;AAGjC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACxB;AAIlC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;8CACa;AAGtD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;iDAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;iDAAc;AAlClB,cAAc;IAF1B,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;GAC7B,cAAc,CAmC1B"}
@@ -0,0 +1,17 @@
1
+ import { OptionalProps } from '@mikro-orm/core';
2
+ /**
3
+ * ReturnStatusTransition — feature 046 (configurable RMA lifecycle, US3).
4
+ *
5
+ * A permitted directed edge `fromStatusCode → toStatusCode` in the lifecycle
6
+ * graph. Endpoints reference `return_statuses.code` by value (validated
7
+ * in-service, not a hard FK, so a status rename does not cascade).
8
+ */
9
+ export declare class ReturnStatusTransition {
10
+ [OptionalProps]?: 'id' | 'isSystem' | 'createdAt';
11
+ id: string;
12
+ fromStatusCode: string;
13
+ toStatusCode: string;
14
+ isSystem: boolean;
15
+ createdAt: Date;
16
+ }
17
+ //# sourceMappingURL=return-status-transition.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-status-transition.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/return-status-transition.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAgC,MAAM,iBAAiB,CAAC;AAI7F;;;;;;GAMG;AACH,qBAGa,sBAAsB;IACjC,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC;IAGlD,EAAE,EAAE,MAAM,CAAgB;IAI1B,cAAc,EAAG,MAAM,CAAC;IAGxB,YAAY,EAAG,MAAM,CAAC;IAGtB,QAAQ,EAAE,OAAO,CAAS;IAG1B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
@@ -0,0 +1,55 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, Index, OptionalProps, PrimaryKey, Property, Unique } from '@mikro-orm/core';
11
+ import { GlobalEntity } from '@endora-commerce/platform/tenancy';
12
+ import { randomUUID } from 'crypto';
13
+ /**
14
+ * ReturnStatusTransition — feature 046 (configurable RMA lifecycle, US3).
15
+ *
16
+ * A permitted directed edge `fromStatusCode → toStatusCode` in the lifecycle
17
+ * graph. Endpoints reference `return_statuses.code` by value (validated
18
+ * in-service, not a hard FK, so a status rename does not cascade).
19
+ */
20
+ let ReturnStatusTransition = class ReturnStatusTransition {
21
+ [OptionalProps];
22
+ id = randomUUID();
23
+ fromStatusCode;
24
+ toStatusCode;
25
+ isSystem = false;
26
+ createdAt = new Date();
27
+ };
28
+ __decorate([
29
+ PrimaryKey({ type: 'uuid' }),
30
+ __metadata("design:type", String)
31
+ ], ReturnStatusTransition.prototype, "id", void 0);
32
+ __decorate([
33
+ Property({ type: 'string', length: 64 }),
34
+ Index(),
35
+ __metadata("design:type", String)
36
+ ], ReturnStatusTransition.prototype, "fromStatusCode", void 0);
37
+ __decorate([
38
+ Property({ type: 'string', length: 64 }),
39
+ __metadata("design:type", String)
40
+ ], ReturnStatusTransition.prototype, "toStatusCode", void 0);
41
+ __decorate([
42
+ Property({ type: 'boolean' }),
43
+ __metadata("design:type", Boolean)
44
+ ], ReturnStatusTransition.prototype, "isSystem", void 0);
45
+ __decorate([
46
+ Property({ type: 'datetime', onCreate: () => new Date() }),
47
+ __metadata("design:type", Date)
48
+ ], ReturnStatusTransition.prototype, "createdAt", void 0);
49
+ ReturnStatusTransition = __decorate([
50
+ GlobalEntity(),
51
+ Entity({ tableName: 'return_status_transitions' }),
52
+ Unique({ properties: ['fromStatusCode', 'toStatusCode'] })
53
+ ], ReturnStatusTransition);
54
+ export { ReturnStatusTransition };
55
+ //# sourceMappingURL=return-status-transition.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-status-transition.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/return-status-transition.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;;GAMG;AAII,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,CAAC,aAAa,CAAC,CAAmC;IAGlD,EAAE,GAAW,UAAU,EAAE,CAAC;IAI1B,cAAc,CAAU;IAGxB,YAAY,CAAU;IAGtB,QAAQ,GAAY,KAAK,CAAC;IAG1B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AAdC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;kDACH;AAI1B;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxC,KAAK,EAAE;;8DACgB;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;4DACnB;AAGtB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;wDACJ;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;yDAAc;AAjBlB,sBAAsB;IAHlC,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAAC;IAClD,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAE,CAAC;GAC9C,sBAAsB,CAkBlC"}
@@ -0,0 +1,29 @@
1
+ import { OptionalProps } from '@mikro-orm/core';
2
+ /**
3
+ * ReturnStatus — feature 046 (configurable RMA lifecycle, US3).
4
+ *
5
+ * A named state in the admin-configurable return/complaint lifecycle. The set is
6
+ * seeded with the defaults (data-model.md) and editable at runtime. `code` is the
7
+ * stable machine identifier referenced by `return_cases.status_code`. Exactly one
8
+ * row carries `isInitial = true` (`new`); `isTerminal` rows have no outgoing
9
+ * transitions.
10
+ */
11
+ export declare class ReturnStatus {
12
+ [OptionalProps]?: 'id' | 'isInitial' | 'isTerminal' | 'isSystem' | 'weight' | 'color' | 'createdAt' | 'updatedAt';
13
+ id: string;
14
+ code: string;
15
+ /** Localized labels, e.g. { en: 'New', pl: 'Nowe' }. */
16
+ name: Record<string, string>;
17
+ /** Language-independent fallback when the active language is missing from `name`. */
18
+ defaultName: string;
19
+ isInitial: boolean;
20
+ isTerminal: boolean;
21
+ /** System statuses are protected from deletion. */
22
+ isSystem: boolean;
23
+ weight: number;
24
+ /** Badge colour as a `#rrggbb` hex value. */
25
+ color: string;
26
+ createdAt: Date;
27
+ updatedAt: Date;
28
+ }
29
+ //# sourceMappingURL=return-status.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-status.entity.d.ts","sourceRoot":"","sources":["../../../src/backend/entities/return-status.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAgC,MAAM,iBAAiB,CAAC;AAItF;;;;;;;;GAQG;AACH,qBAEa,YAAY;IACvB,CAAC,aAAa,CAAC,CAAC,EACZ,IAAI,GACJ,WAAW,GACX,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,OAAO,GACP,WAAW,GACX,WAAW,CAAC;IAGhB,EAAE,EAAE,MAAM,CAAgB;IAI1B,IAAI,EAAG,MAAM,CAAC;IAEd,wDAAwD;IAExD,IAAI,EAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,qFAAqF;IAErF,WAAW,EAAG,MAAM,CAAC;IAGrB,SAAS,EAAE,OAAO,CAAS;IAG3B,UAAU,EAAE,OAAO,CAAS;IAE5B,mDAAmD;IAEnD,QAAQ,EAAE,OAAO,CAAS;IAG1B,MAAM,EAAE,MAAM,CAAO;IAErB,6CAA6C;IAE7C,KAAK,EAAE,MAAM,CAAa;IAG1B,SAAS,EAAE,IAAI,CAAc;IAG7B,SAAS,EAAE,IAAI,CAAc;CAC9B"}
@@ -0,0 +1,90 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, OptionalProps, PrimaryKey, Property, Unique } from '@mikro-orm/core';
11
+ import { GlobalEntity } from '@endora-commerce/platform/tenancy';
12
+ import { randomUUID } from 'crypto';
13
+ /**
14
+ * ReturnStatus — feature 046 (configurable RMA lifecycle, US3).
15
+ *
16
+ * A named state in the admin-configurable return/complaint lifecycle. The set is
17
+ * seeded with the defaults (data-model.md) and editable at runtime. `code` is the
18
+ * stable machine identifier referenced by `return_cases.status_code`. Exactly one
19
+ * row carries `isInitial = true` (`new`); `isTerminal` rows have no outgoing
20
+ * transitions.
21
+ */
22
+ let ReturnStatus = class ReturnStatus {
23
+ [OptionalProps];
24
+ id = randomUUID();
25
+ code;
26
+ /** Localized labels, e.g. { en: 'New', pl: 'Nowe' }. */
27
+ name;
28
+ /** Language-independent fallback when the active language is missing from `name`. */
29
+ defaultName;
30
+ isInitial = false;
31
+ isTerminal = false;
32
+ /** System statuses are protected from deletion. */
33
+ isSystem = false;
34
+ weight = 100;
35
+ /** Badge colour as a `#rrggbb` hex value. */
36
+ color = '#64748b';
37
+ createdAt = new Date();
38
+ updatedAt = new Date();
39
+ };
40
+ __decorate([
41
+ PrimaryKey({ type: 'uuid' }),
42
+ __metadata("design:type", String)
43
+ ], ReturnStatus.prototype, "id", void 0);
44
+ __decorate([
45
+ Property({ type: 'string', length: 64 }),
46
+ Unique(),
47
+ __metadata("design:type", String)
48
+ ], ReturnStatus.prototype, "code", void 0);
49
+ __decorate([
50
+ Property({ type: 'json' }),
51
+ __metadata("design:type", Object)
52
+ ], ReturnStatus.prototype, "name", void 0);
53
+ __decorate([
54
+ Property({ type: 'string', length: 120 }),
55
+ __metadata("design:type", String)
56
+ ], ReturnStatus.prototype, "defaultName", void 0);
57
+ __decorate([
58
+ Property({ type: 'boolean' }),
59
+ __metadata("design:type", Boolean)
60
+ ], ReturnStatus.prototype, "isInitial", void 0);
61
+ __decorate([
62
+ Property({ type: 'boolean' }),
63
+ __metadata("design:type", Boolean)
64
+ ], ReturnStatus.prototype, "isTerminal", void 0);
65
+ __decorate([
66
+ Property({ type: 'boolean' }),
67
+ __metadata("design:type", Boolean)
68
+ ], ReturnStatus.prototype, "isSystem", void 0);
69
+ __decorate([
70
+ Property({ type: 'integer' }),
71
+ __metadata("design:type", Number)
72
+ ], ReturnStatus.prototype, "weight", void 0);
73
+ __decorate([
74
+ Property({ type: 'string', length: 16 }),
75
+ __metadata("design:type", String)
76
+ ], ReturnStatus.prototype, "color", void 0);
77
+ __decorate([
78
+ Property({ type: 'datetime', onCreate: () => new Date() }),
79
+ __metadata("design:type", Date)
80
+ ], ReturnStatus.prototype, "createdAt", void 0);
81
+ __decorate([
82
+ Property({ type: 'datetime', onUpdate: () => new Date() }),
83
+ __metadata("design:type", Date)
84
+ ], ReturnStatus.prototype, "updatedAt", void 0);
85
+ ReturnStatus = __decorate([
86
+ GlobalEntity(),
87
+ Entity({ tableName: 'return_statuses' })
88
+ ], ReturnStatus);
89
+ export { ReturnStatus };
90
+ //# sourceMappingURL=return-status.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-status.entity.js","sourceRoot":"","sources":["../../../src/backend/entities/return-status.entity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;;;;GAQG;AAGI,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,CAAC,aAAa,CAAC,CAQC;IAGhB,EAAE,GAAW,UAAU,EAAE,CAAC;IAI1B,IAAI,CAAU;IAEd,wDAAwD;IAExD,IAAI,CAA0B;IAE9B,qFAAqF;IAErF,WAAW,CAAU;IAGrB,SAAS,GAAY,KAAK,CAAC;IAG3B,UAAU,GAAY,KAAK,CAAC;IAE5B,mDAAmD;IAEnD,QAAQ,GAAY,KAAK,CAAC;IAG1B,MAAM,GAAW,GAAG,CAAC;IAErB,6CAA6C;IAE7C,KAAK,GAAW,SAAS,CAAC;IAG1B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;IAG7B,SAAS,GAAS,IAAI,IAAI,EAAE,CAAC;CAC9B,CAAA;AApCC;IADC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wCACH;AAI1B;IAFC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxC,MAAM,EAAE;;0CACK;AAId;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;0CACG;AAI9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;iDACrB;AAGrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;+CACH;AAG3B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;gDACF;AAI5B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;8CACJ;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;4CACT;AAIrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;2CACf;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;+CAAc;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;8BAChD,IAAI;+CAAc;AA/ClB,YAAY;IAFxB,YAAY,EAAE;IACd,MAAM,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;GAC5B,YAAY,CAgDxB"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Templated return-case status-change events (feature 046, US3).
3
+ *
4
+ * On every transition X → Y the returns module emits four templated events on
5
+ * the in-process EventBus. Because statuses are admin-configurable, the concrete
6
+ * names are produced by this single builder so the naming scheme lives in one
7
+ * place (mirrors `orders/events/order-status-events.ts`).
8
+ *
9
+ * return.status.from_<x>_to_<y>.before (before the write, may be vetoed)
10
+ * return.status.from_<x>.before (before the write, may be vetoed)
11
+ * return.status.from_<x>_to_<y>.after (after commit, fire-and-forget)
12
+ * return.status.to_<y>.after (after commit, fire-and-forget)
13
+ */
14
+ import type { EventBase, EventBus } from '@endora-commerce/platform/events';
15
+ export type ReturnStatusEventKind = 'fromToBefore' | 'fromBefore' | 'fromToAfter' | 'toAfter';
16
+ export interface ReturnStatusActor {
17
+ kind: 'admin' | 'customer' | 'system';
18
+ adminUserId?: string;
19
+ customerAccountId?: string;
20
+ source?: 'shipment' | 'settlement';
21
+ }
22
+ export interface ReturnStatusEvent extends EventBase {
23
+ returnCaseId: string;
24
+ orderId: string;
25
+ organizationId: string | null;
26
+ salesChannelId: string;
27
+ from: string;
28
+ to: string;
29
+ actor: ReturnStatusActor;
30
+ reason?: string | null;
31
+ }
32
+ /** Thrown by a before-guard to abort a transition. */
33
+ export declare class ReturnTransitionVetoError extends Error {
34
+ }
35
+ /** Build the concrete event name for one of the four templated kinds. */
36
+ export declare function returnStatusEventName(kind: ReturnStatusEventKind, p: {
37
+ from?: string;
38
+ to?: string;
39
+ }): string;
40
+ export declare function returnStatusBeforeEventNames(from: string, to: string): string[];
41
+ export declare function returnStatusAfterEventNames(from: string, to: string): string[];
42
+ /** Emit the two post-commit `.after` events for a transition X→Y. No-op when equal. */
43
+ export declare function emitReturnStatusAfter(events: EventBus, e: ReturnStatusEvent): void;
44
+ //# sourceMappingURL=return-status-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-status-events.d.ts","sourceRoot":"","sources":["../../../src/backend/events/return-status-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAE9F,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CACpC;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,sDAAsD;AACtD,qBAAa,yBAA0B,SAAQ,KAAK;CAAG;AAEvD,yEAAyE;AACzE,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,qBAAqB,EAC3B,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC,MAAM,CAWR;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAK/E;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAK9E;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAKlF"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Templated return-case status-change events (feature 046, US3).
3
+ *
4
+ * On every transition X → Y the returns module emits four templated events on
5
+ * the in-process EventBus. Because statuses are admin-configurable, the concrete
6
+ * names are produced by this single builder so the naming scheme lives in one
7
+ * place (mirrors `orders/events/order-status-events.ts`).
8
+ *
9
+ * return.status.from_<x>_to_<y>.before (before the write, may be vetoed)
10
+ * return.status.from_<x>.before (before the write, may be vetoed)
11
+ * return.status.from_<x>_to_<y>.after (after commit, fire-and-forget)
12
+ * return.status.to_<y>.after (after commit, fire-and-forget)
13
+ */
14
+ /** Thrown by a before-guard to abort a transition. */
15
+ export class ReturnTransitionVetoError extends Error {
16
+ }
17
+ /** Build the concrete event name for one of the four templated kinds. */
18
+ export function returnStatusEventName(kind, p) {
19
+ switch (kind) {
20
+ case 'fromToBefore':
21
+ return `return.status.from_${p.from}_to_${p.to}.before`;
22
+ case 'fromBefore':
23
+ return `return.status.from_${p.from}.before`;
24
+ case 'fromToAfter':
25
+ return `return.status.from_${p.from}_to_${p.to}.after`;
26
+ case 'toAfter':
27
+ return `return.status.to_${p.to}.after`;
28
+ }
29
+ }
30
+ export function returnStatusBeforeEventNames(from, to) {
31
+ return [
32
+ returnStatusEventName('fromToBefore', { from, to }),
33
+ returnStatusEventName('fromBefore', { from }),
34
+ ];
35
+ }
36
+ export function returnStatusAfterEventNames(from, to) {
37
+ return [
38
+ returnStatusEventName('fromToAfter', { from, to }),
39
+ returnStatusEventName('toAfter', { to }),
40
+ ];
41
+ }
42
+ /** Emit the two post-commit `.after` events for a transition X→Y. No-op when equal. */
43
+ export function emitReturnStatusAfter(events, e) {
44
+ if (e.from === e.to)
45
+ return;
46
+ for (const name of returnStatusAfterEventNames(e.from, e.to)) {
47
+ events.emit(name, e);
48
+ }
49
+ }
50
+ //# sourceMappingURL=return-status-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-status-events.js","sourceRoot":"","sources":["../../../src/backend/events/return-status-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAwBH,sDAAsD;AACtD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;CAAG;AAEvD,yEAAyE;AACzE,MAAM,UAAU,qBAAqB,CACnC,IAA2B,EAC3B,CAAiC;IAEjC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,OAAO,sBAAsB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC;QAC1D,KAAK,YAAY;YACf,OAAO,sBAAsB,CAAC,CAAC,IAAI,SAAS,CAAC;QAC/C,KAAK,aAAa;YAChB,OAAO,sBAAsB,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC;QACzD,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAY,EAAE,EAAU;IACnE,OAAO;QACL,qBAAqB,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACnD,qBAAqB,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAE,EAAU;IAClE,OAAO;QACL,qBAAqB,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAClD,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,qBAAqB,CAAC,MAAgB,EAAE,CAAoB;IAC1E,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;QAAE,OAAO;IAC5B,KAAK,MAAM,IAAI,IAAI,2BAA2B,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,106 @@
1
+ import type { EntityManager } from '@mikro-orm/postgresql';
2
+ import type { FastifyRequest } from 'fastify';
3
+ import type { TransactionalEmailSender } from '@endora-commerce/contracts';
4
+ import type { AuditPort } from '@endora-commerce/platform/kernel';
5
+ import type { EventBus } from '@endora-commerce/platform/events';
6
+ import type { ModuleContext } from '@endora-commerce/platform/kernel';
7
+ import type { RequireAdminFactory } from '@endora-commerce/platform/kernel';
8
+ import { returnsModule, type ReturnsModuleOptions } from './plugin.js';
9
+ import { Refund } from './entities/refund.entity.js';
10
+ import { ReturnCaseAttachment } from './entities/return-case-attachment.entity.js';
11
+ import { ReturnCaseComment } from './entities/return-case-comment.entity.js';
12
+ import { ReturnCaseItem } from './entities/return-case-item.entity.js';
13
+ import { ReturnCase } from './entities/return-case.entity.js';
14
+ import { ReturnDeliveryMethod } from './entities/return-delivery-method.entity.js';
15
+ import { ReturnListSavedView } from './entities/return-list-saved-view.entity.js';
16
+ import { ReturnReason } from './entities/return-reason.entity.js';
17
+ import { ReturnShipment } from './entities/return-shipment.entity.js';
18
+ import { ReturnStatusTransition } from './entities/return-status-transition.entity.js';
19
+ import { ReturnStatus } from './entities/return-status.entity.js';
20
+ /**
21
+ * `returns` — four settlement ports and a dead callback (feature 072, wave 2,
22
+ * T109).
23
+ *
24
+ * The settlement ports are the interesting part. Authorising a return can move
25
+ * money four ways — refund a payment, issue a corrective invoice, top up a
26
+ * credit limit, and read the order it came from — and each is a port its owning
27
+ * module publishes: `orderReturnContextPort`, `paymentRefundPort`,
28
+ * `correctiveInvoicePort` and `creditTopupPort`.
29
+ *
30
+ * **T118c retired the bridge that used to carry them.** They arrived as one
31
+ * `returnsBridge` object a composition root assembled, on the argument that a
32
+ * composition supplies all of them or none. That argument was about the days
33
+ * when the four were *adapters a root constructed*; since T143c each has been a
34
+ * forwarder onto its owner's port, and forwarding through a root left the edge
35
+ * undeclared — `payments`, `invoices` and `credit_limits` appeared in no
36
+ * manifest of this module's, so nothing could tell an operator what switching
37
+ * one of them off costs. This module resolves the four itself now and says so in
38
+ * its manifest. The bridge's other four members went the same way: the two actor
39
+ * resolvers are the platform's own contributions, and the address and the
40
+ * language are in `services/notification-context.ts`.
41
+ *
42
+ * **`exposeServices` is deleted rather than converted.** It was a callback for
43
+ * handing the transition services back to a composition — declared, called, and
44
+ * supplied by nobody. Its comment said "e.g. for settlement guards", which is a
45
+ * use that never arrived. A conversion is the right moment to notice that: the
46
+ * option survived because reading a factory's signature does not tell you
47
+ * whether anything passes a given argument, and the container makes that
48
+ * visible by refusing to register a name nothing provides.
49
+ *
50
+ * `auditLog` stops being optional. FR-041 requires status changes *and*
51
+ * settlement to be recorded, and settlement is where the money moved.
52
+ */
53
+ /**
54
+ * What this module reads out of the composition, now that `returnsBridge` is
55
+ * gone (`specs/110-instance-repository/` T118c).
56
+ *
57
+ * The bridge held eight members and none of them was a composition's answer to
58
+ * give. The four settlement adapters are the ports `orders`, `payments`,
59
+ * `invoices` and `credit_limits` publish, resolved below with `lazyPort`; the
60
+ * recipient's address is `customer_accounts`' published record; the channel's
61
+ * language is a read of the platform's own entity. What is left here is the pair
62
+ * only a composition can answer — *who is asking* — and both are names the
63
+ * platform contributes for every module that takes one (`compose-app.ts`, the
64
+ * actor-shaped nine of T118b), not a shape this module invents.
65
+ */
66
+ export interface ReturnsCradle {
67
+ readonly emFactory: () => EntityManager;
68
+ readonly eventBus: EventBus;
69
+ readonly auditLogService: AuditPort;
70
+ readonly requireAdmin: RequireAdminFactory;
71
+ readonly requireCustomer: (req: FastifyRequest, reply: unknown) => Promise<void>;
72
+ readonly settingsReadPort: ReturnsModuleOptions['settingsService'];
73
+ /**
74
+ * How this composition names the calling customer, for the customer-facing RMA
75
+ * routes. It asserts a customer session and nothing more — a return is
76
+ * submitted by an account with or without an Organization, which is why this is
77
+ * `customerAccountIdResolver` and not `customerContextResolver`.
78
+ */
79
+ readonly customerAccountIdResolver: ReturnsModuleOptions['resolveCustomerAccountId'];
80
+ /** How this composition names the acting admin; root-shaped, like the above. */
81
+ readonly adminContextResolver: (req: FastifyRequest) => {
82
+ adminUserId: string;
83
+ };
84
+ /**
85
+ * `transactional_emails`' late-bound sender, read per send. It answers
86
+ * `undefined` until that module announces it, which is later than this module
87
+ * composes — the reason it is an accessor rather than the sender itself.
88
+ */
89
+ readonly transactionalEmailSenderAccessor: () => TransactionalEmailSender | undefined;
90
+ /** The factory returns a bare plugin, not a `{ plugin, handle }` pair. */
91
+ readonly returns: ReturnType<typeof returnsModule>;
92
+ }
93
+ export declare function registerModule(ctx: ModuleContext): void;
94
+ /**
95
+ * The module's persisted entity classes, on the `./backend` subpath, as one
96
+ * array and **no named class export** (D-168).
97
+ *
98
+ * This is the shape the platform reads when the package is *installed*: the
99
+ * boot-time loader (`src/packages/package-runtime.ts`, `exported['entities']`)
100
+ * and the static declaration reader (`scripts/lib/package-declarations.ts`),
101
+ * which is the third source of `check:module-boundary`'s `table→owner` map and
102
+ * the package pass of `check-entity-tenant-classification`. A missing array is
103
+ * answered with `[]` — zero entities registered, no error anywhere.
104
+ */
105
+ export declare const entities: (typeof ReturnStatus | typeof ReturnStatusTransition | typeof ReturnCase | typeof ReturnCaseItem | typeof ReturnCaseComment | typeof ReturnCaseAttachment | typeof ReturnReason | typeof Refund | typeof ReturnDeliveryMethod | typeof ReturnShipment | typeof ReturnListSavedView)[];
106
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAQV,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAOvE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,aAAa,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IACnE;;;;;OAKG;IACH,QAAQ,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACrF,gFAAgF;IAChF,QAAQ,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF;;;;OAIG;IACH,QAAQ,CAAC,gCAAgC,EAAE,MAAM,wBAAwB,GAAG,SAAS,CAAC;IACtF,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;CACpD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAuFvD;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,uRAYpB,CAAC"}