@hartl-services/medusa-base 0.4.0 → 1.1.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 (258) hide show
  1. package/.medusa/server/src/admin/index.js +1657 -111
  2. package/.medusa/server/src/admin/index.mjs +1647 -101
  3. package/.medusa/server/src/api/admin/email/messages/[id]/resends/route.js +24 -0
  4. package/.medusa/server/src/api/admin/email/messages/[id]/route.js +12 -0
  5. package/.medusa/server/src/api/admin/email/messages/route.js +12 -0
  6. package/.medusa/server/src/api/admin/email/terms-versions/[id]/download/route.js +16 -0
  7. package/.medusa/server/src/api/admin/email/terms-versions/route.js +47 -0
  8. package/.medusa/server/src/api/admin/orders/[id]/documents/[document_id]/download/route.js +21 -0
  9. package/.medusa/server/src/api/admin/orders/[id]/documents/[document_id]/regenerate/route.js +38 -0
  10. package/.medusa/server/src/api/admin/orders/[id]/documents/regenerate/route.js +32 -0
  11. package/.medusa/server/src/api/admin/orders/[id]/documents/route.js +36 -0
  12. package/.medusa/server/src/api/admin/orders/[id]/packing-lists/[fulfillment_id]/download/route.js +24 -0
  13. package/.medusa/server/src/api/admin/orders/[id]/packing-lists/[fulfillment_id]/retry/route.js +44 -0
  14. package/.medusa/server/src/api/admin/orders/[id]/packing-lists/route.js +82 -0
  15. package/.medusa/server/src/api/document-download-response.js +16 -0
  16. package/.medusa/server/src/api/document-response.js +23 -0
  17. package/.medusa/server/src/api/files/[asset]/route.js +24 -0
  18. package/.medusa/server/src/api/files/file-response.js +43 -0
  19. package/.medusa/server/src/api/files/gateway-options.js +31 -0
  20. package/.medusa/server/src/api/files/private/[token]/route.js +29 -0
  21. package/.medusa/server/src/api/files/upload/[token]/route.js +66 -0
  22. package/.medusa/server/src/api/middlewares.js +168 -1
  23. package/.medusa/server/src/api/packing-list-response.js +22 -0
  24. package/.medusa/server/src/api/route.js +27 -0
  25. package/.medusa/server/src/api/store/documents/[id]/download/route.js +21 -0
  26. package/.medusa/server/src/api/store/documents/[id]/route.js +15 -0
  27. package/.medusa/server/src/api/store/documents/route.js +11 -0
  28. package/.medusa/server/src/api/terms-download-response.js +12 -0
  29. package/.medusa/server/src/documents/config/index.js +18 -0
  30. package/.medusa/server/src/documents/paths/documents.js +6 -0
  31. package/.medusa/server/src/documents/paths/index.js +18 -0
  32. package/.medusa/server/src/documents/plugin-features.js +38 -0
  33. package/.medusa/server/src/documents/schemas/documents.js +18 -0
  34. package/.medusa/server/src/documents/schemas/index.js +18 -0
  35. package/.medusa/server/src/documents/scripts/verify-documents-file-storage.js +55 -0
  36. package/.medusa/server/src/documents/templates/financial-document.js +160 -0
  37. package/.medusa/server/src/documents/templates/format.js +73 -0
  38. package/.medusa/server/src/documents/templates/html-factory.js +42 -0
  39. package/.medusa/server/src/documents/templates/html-utils.js +23 -0
  40. package/.medusa/server/src/documents/templates/layout.js +142 -0
  41. package/.medusa/server/src/documents/templates/packing-list.js +52 -0
  42. package/.medusa/server/src/documents/types/admin-api.js +3 -0
  43. package/.medusa/server/src/documents/types/document-summary.js +3 -0
  44. package/.medusa/server/src/documents/types/documents.js +3 -0
  45. package/.medusa/server/src/documents/types/html-factory.js +6 -0
  46. package/.medusa/server/src/documents/types/index.js +22 -0
  47. package/.medusa/server/src/documents/types/store-api.js +3 -0
  48. package/.medusa/server/src/documents/utils/document-merchant.js +22 -0
  49. package/.medusa/server/src/documents/utils/document-render-settings.js +59 -0
  50. package/.medusa/server/src/documents/utils/html-to-pdf.js +61 -0
  51. package/.medusa/server/src/documents/utils/private-file-storage.js +64 -0
  52. package/.medusa/server/src/documents/utils/resolve-services.js +7 -0
  53. package/.medusa/server/src/email/application/handle-invite-event.js +318 -0
  54. package/.medusa/server/src/email/application/handle-password-reset-event.js +366 -0
  55. package/.medusa/server/src/email/config/index.js +84 -0
  56. package/.medusa/server/src/email/config/notification-module.js +20 -0
  57. package/.medusa/server/src/email/domain/business-keys.js +50 -0
  58. package/.medusa/server/src/email/domain/documents-fact-fingerprint.js +7 -0
  59. package/.medusa/server/src/email/domain/event-schemas.js +36 -0
  60. package/.medusa/server/src/email/domain/failure-classification.js +53 -0
  61. package/.medusa/server/src/email/domain/order-summary.js +103 -0
  62. package/.medusa/server/src/email/domain/refund-summary.js +43 -0
  63. package/.medusa/server/src/email/domain/return-summary.js +118 -0
  64. package/.medusa/server/src/email/domain/shipment-summary.js +74 -0
  65. package/.medusa/server/src/email/plugin-features.js +39 -0
  66. package/.medusa/server/src/email/rendering/default-templates.js +719 -0
  67. package/.medusa/server/src/email/rendering/load-email-shop-details.js +36 -0
  68. package/.medusa/server/src/email/rendering/render-email.js +50 -0
  69. package/.medusa/server/src/email/rendering/resolve-shop-configuration.js +67 -0
  70. package/.medusa/server/src/email/types/email-kinds.js +18 -0
  71. package/.medusa/server/src/email/types/index.js +21 -0
  72. package/.medusa/server/src/email/types/shop-configuration.js +3 -0
  73. package/.medusa/server/src/email/types/smtp-configuration.js +3 -0
  74. package/.medusa/server/src/email/types/template-data.js +232 -0
  75. package/.medusa/server/src/files/config/index.js +256 -0
  76. package/.medusa/server/src/files/gateway/index.js +115 -0
  77. package/.medusa/server/src/files/types/index.js +6 -0
  78. package/.medusa/server/src/files/types/public.js +6 -0
  79. package/.medusa/server/src/jobs/document-fact-publication-reconciliation.js +18 -0
  80. package/.medusa/server/src/jobs/document-resolution-reconciliation.js +20 -0
  81. package/.medusa/server/src/jobs/packing-list-reconciliation.js +49 -0
  82. package/.medusa/server/src/jobs/reconcile-email-attempts.js +63 -0
  83. package/.medusa/server/src/jobs/reconcile-pending-email-messages.js +41 -0
  84. package/.medusa/server/src/jobs/retry-email-messages.js +27 -0
  85. package/.medusa/server/src/migration-scripts/dismiss-orphaned-cart-promotion-links.js +26 -0
  86. package/.medusa/server/src/modules/documents/domain/cancellation-snapshot.js +97 -0
  87. package/.medusa/server/src/modules/documents/domain/document-number.js +36 -0
  88. package/.medusa/server/src/modules/documents/domain/document-resolution.js +24 -0
  89. package/.medusa/server/src/modules/documents/domain/issuance-rules.js +37 -0
  90. package/.medusa/server/src/modules/documents/domain/merchant.js +86 -0
  91. package/.medusa/server/src/modules/documents/domain/options.js +40 -0
  92. package/.medusa/server/src/modules/documents/domain/packing-list.js +90 -0
  93. package/.medusa/server/src/modules/documents/domain/snapshot-normalization.js +17 -0
  94. package/.medusa/server/src/modules/documents/domain/tax-breakdown.js +66 -0
  95. package/.medusa/server/src/modules/documents/index.js +15 -0
  96. package/.medusa/server/src/modules/documents/loaders/assert-private-file-storage.js +20 -0
  97. package/.medusa/server/src/modules/documents/migrations/Migration20260827061749.js +75 -0
  98. package/.medusa/server/src/modules/documents/migrations/Migration20260830111207.js +28 -0
  99. package/.medusa/server/src/modules/documents/models/document-artifact.js +25 -0
  100. package/.medusa/server/src/modules/documents/models/document-number-sequence.js +29 -0
  101. package/.medusa/server/src/modules/documents/models/document.js +82 -0
  102. package/.medusa/server/src/modules/documents/models/order-cancellation-resolution.js +51 -0
  103. package/.medusa/server/src/modules/documents/models/packing-list-revision.js +36 -0
  104. package/.medusa/server/src/modules/documents/models/packing-list.js +27 -0
  105. package/.medusa/server/src/modules/documents/models/refund-document-resolution.js +66 -0
  106. package/.medusa/server/src/modules/documents/models/shipment-invoice-assignment.js +51 -0
  107. package/.medusa/server/src/modules/documents/models/shipment-invoice-coordinator.js +44 -0
  108. package/.medusa/server/src/modules/documents/service.js +1701 -0
  109. package/.medusa/server/src/modules/email/domain/attachment.js +25 -0
  110. package/.medusa/server/src/modules/email/domain/message-state.js +69 -0
  111. package/.medusa/server/src/modules/email/index.js +13 -0
  112. package/.medusa/server/src/modules/email/migrations/Migration20260826173422.js +32 -0
  113. package/.medusa/server/src/modules/email/migrations/Migration20260827172945.js +16 -0
  114. package/.medusa/server/src/modules/email/migrations/Migration20260827194804.js +22 -0
  115. package/.medusa/server/src/modules/email/migrations/Migration20260906195205.js +16 -0
  116. package/.medusa/server/src/modules/email/models/email-attempt.js +56 -0
  117. package/.medusa/server/src/modules/email/models/email-message.js +71 -0
  118. package/.medusa/server/src/modules/email/models/email-terms-version.js +37 -0
  119. package/.medusa/server/src/modules/email/service.js +1285 -0
  120. package/.medusa/server/src/modules/plugin-features/domain/plugin-settings.js +4 -3
  121. package/.medusa/server/src/providers/s3-cache/cache/atomic-write.js +25 -0
  122. package/.medusa/server/src/providers/s3-cache/cache/cache-manager.js +115 -0
  123. package/.medusa/server/src/providers/s3-cache/cache/keyed-lock.js +28 -0
  124. package/.medusa/server/src/providers/s3-cache/index.js +8 -0
  125. package/.medusa/server/src/providers/s3-cache/object-key.js +53 -0
  126. package/.medusa/server/src/providers/s3-cache/s3-cache-file.js +229 -0
  127. package/.medusa/server/src/providers/s3-cache/s3-object-store.js +86 -0
  128. package/.medusa/server/src/providers/smtp/index.js +8 -0
  129. package/.medusa/server/src/providers/smtp/service.js +236 -0
  130. package/.medusa/server/src/providers/smtp/types.js +11 -0
  131. package/.medusa/server/src/public/config.js +186 -0
  132. package/.medusa/server/src/public/descriptor.js +3 -1
  133. package/.medusa/server/src/public/gateway.js +19 -0
  134. package/.medusa/server/src/public/instrumentation.js +56 -0
  135. package/.medusa/server/src/public/shop-config.js +12 -0
  136. package/.medusa/server/src/public/shop-master-data.js +2 -2
  137. package/.medusa/server/src/public/shop-types.js +24 -0
  138. package/.medusa/server/src/shop-config/build-food-shop-config.js +252 -0
  139. package/.medusa/server/src/shop-config/options.js +75 -0
  140. package/.medusa/server/src/subscribers/affiliate-consignment-reminder-due.js +26 -0
  141. package/.medusa/server/src/subscribers/documents-order-canceled.js +24 -0
  142. package/.medusa/server/src/subscribers/documents-order-cancellation-ready.js +26 -0
  143. package/.medusa/server/src/subscribers/documents-refund-ready.js +24 -0
  144. package/.medusa/server/src/subscribers/documents-shipment-created.js +36 -0
  145. package/.medusa/server/src/subscribers/documents-shipment-invoice-assignment-decided.js +26 -0
  146. package/.medusa/server/src/subscribers/email-order-canceled.js +28 -0
  147. package/.medusa/server/src/subscribers/email-shipment-created.js +32 -0
  148. package/.medusa/server/src/subscribers/order-placed.js +27 -0
  149. package/.medusa/server/src/subscribers/packing-list-allocation-revised.js +32 -0
  150. package/.medusa/server/src/subscribers/packing-list-fulfillment-canceled.js +54 -0
  151. package/.medusa/server/src/subscribers/packing-list-fulfillment-created.js +31 -0
  152. package/.medusa/server/src/subscribers/password-reset.js +23 -0
  153. package/.medusa/server/src/subscribers/payment-refunded.js +38 -0
  154. package/.medusa/server/src/subscribers/return-received.js +27 -0
  155. package/.medusa/server/src/subscribers/return-requested.js +27 -0
  156. package/.medusa/server/src/subscribers/user-invite.js +23 -0
  157. package/.medusa/server/src/utils/cart-promotion-links.js +101 -0
  158. package/.medusa/server/src/workflows/documents/issue-cancellation-after-refund.js +246 -0
  159. package/.medusa/server/src/workflows/documents/issue-document.js +165 -0
  160. package/.medusa/server/src/workflows/documents/issue-invoice-after-shipment.js +521 -0
  161. package/.medusa/server/src/workflows/documents/issue-packing-list.js +390 -0
  162. package/.medusa/server/src/workflows/documents/publish-document-facts.js +53 -0
  163. package/.medusa/server/src/workflows/documents/reconcile-document-resolutions.js +48 -0
  164. package/.medusa/server/src/workflows/documents/reconcile-order-cancellation.js +92 -0
  165. package/.medusa/server/src/workflows/documents/regenerate-issued-document.js +61 -0
  166. package/.medusa/server/src/workflows/email/dispatch-email-message.js +301 -0
  167. package/.medusa/server/src/workflows/email/documents-required-facts.js +30 -0
  168. package/.medusa/server/src/workflows/email/prepare-affiliate-reminder-email.js +58 -0
  169. package/.medusa/server/src/workflows/email/prepare-order-canceled-email.js +102 -0
  170. package/.medusa/server/src/workflows/email/prepare-order-received-email.js +82 -0
  171. package/.medusa/server/src/workflows/email/prepare-refund-email.js +71 -0
  172. package/.medusa/server/src/workflows/email/prepare-return-email.js +136 -0
  173. package/.medusa/server/src/workflows/email/prepare-shipment-email.js +115 -0
  174. package/.medusa/server/src/workflows/email/retry-email-messages.js +31 -0
  175. package/.medusa/server/src/workflows/hooks/dismiss-deleted-promotion-cart-links.js +23 -0
  176. package/README.md +1777 -8
  177. package/dist/admin-components/features/plugin-features/components/ImageSettingInput.d.ts +15 -0
  178. package/dist/admin-components/features/plugin-features/components/ImageSettingInput.js +42 -0
  179. package/dist/admin-components/features/plugin-features/components/PluginSettingsForm.js +4 -2
  180. package/dist/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.d.ts +1 -1
  181. package/dist/admin-components/features/plugin-features/hooks/usePluginFeatures.d.ts +4 -4
  182. package/dist/admin-components/features/plugin-features/hooks/usePluginSettingsForm.d.ts +1 -1
  183. package/dist/admin-components/features/plugin-features/lib/image-upload.d.ts +6 -0
  184. package/dist/admin-components/features/plugin-features/lib/image-upload.js +17 -0
  185. package/dist/admin-components/features/plugin-features/lib/plugin-features-admin-client.d.ts +4 -4
  186. package/dist/admin-components/i18n/texts.d.ts +6 -0
  187. package/dist/admin-components/i18n/texts.js +6 -0
  188. package/dist/documents/config/index.d.ts +11 -0
  189. package/dist/documents/config/index.js +17 -0
  190. package/dist/documents/templates/financial-document.d.ts +3 -0
  191. package/dist/documents/templates/financial-document.js +159 -0
  192. package/dist/documents/templates/format.d.ts +30 -0
  193. package/dist/documents/templates/format.js +72 -0
  194. package/dist/documents/templates/html-factory.d.ts +15 -0
  195. package/dist/documents/templates/html-factory.js +41 -0
  196. package/dist/documents/templates/html-utils.d.ts +8 -0
  197. package/dist/documents/templates/html-utils.js +22 -0
  198. package/dist/documents/templates/layout.d.ts +35 -0
  199. package/dist/documents/templates/layout.js +141 -0
  200. package/dist/documents/templates/packing-list.d.ts +3 -0
  201. package/dist/documents/templates/packing-list.js +51 -0
  202. package/dist/documents/types/admin-api.d.ts +1 -0
  203. package/dist/documents/types/admin-api.js +2 -0
  204. package/dist/documents/types/document-summary.d.ts +1 -0
  205. package/dist/documents/types/document-summary.js +2 -0
  206. package/dist/documents/types/documents.d.ts +191 -0
  207. package/dist/documents/types/documents.js +2 -0
  208. package/dist/documents/types/html-factory.d.ts +8 -0
  209. package/dist/documents/types/html-factory.js +5 -0
  210. package/dist/documents/types/index.d.ts +5 -0
  211. package/dist/documents/types/index.js +21 -0
  212. package/dist/documents/types/store-api.d.ts +1 -0
  213. package/dist/documents/types/store-api.js +2 -0
  214. package/dist/email/config/index.d.ts +17 -0
  215. package/dist/email/config/index.js +83 -0
  216. package/dist/email/config/notification-module.d.ts +22 -0
  217. package/dist/email/config/notification-module.js +19 -0
  218. package/dist/email/types/email-kinds.d.ts +15 -0
  219. package/dist/email/types/email-kinds.js +17 -0
  220. package/dist/email/types/index.d.ts +4 -0
  221. package/dist/email/types/index.js +20 -0
  222. package/dist/email/types/shop-configuration.d.ts +68 -0
  223. package/dist/email/types/shop-configuration.js +2 -0
  224. package/dist/email/types/smtp-configuration.d.ts +9 -0
  225. package/dist/email/types/smtp-configuration.js +2 -0
  226. package/dist/email/types/template-data.d.ts +609 -0
  227. package/dist/email/types/template-data.js +231 -0
  228. package/dist/files/config/index.d.ts +32 -0
  229. package/dist/files/config/index.js +255 -0
  230. package/dist/files/gateway/index.d.ts +30 -0
  231. package/dist/files/gateway/index.js +114 -0
  232. package/dist/files/types/index.d.ts +2 -0
  233. package/dist/files/types/index.js +5 -0
  234. package/dist/files/types/public.d.ts +90 -0
  235. package/dist/files/types/public.js +5 -0
  236. package/dist/modules/documents/domain/merchant.d.ts +22 -0
  237. package/dist/modules/documents/domain/merchant.js +85 -0
  238. package/dist/modules/documents/domain/options.d.ts +34 -0
  239. package/dist/modules/documents/domain/options.js +39 -0
  240. package/dist/public/config.d.ts +59 -0
  241. package/dist/public/config.js +185 -0
  242. package/dist/public/descriptor.js +2 -0
  243. package/dist/public/gateway.d.ts +2 -0
  244. package/dist/public/gateway.js +18 -0
  245. package/dist/public/instrumentation.d.ts +12 -0
  246. package/dist/public/instrumentation.js +55 -0
  247. package/dist/public/shop-config.d.ts +8 -0
  248. package/dist/public/shop-config.js +11 -0
  249. package/dist/public/shop-master-data.d.ts +1 -1
  250. package/dist/public/shop-master-data.js +1 -1
  251. package/dist/public/shop-types.d.ts +7 -0
  252. package/dist/public/shop-types.js +23 -0
  253. package/dist/public/types.d.ts +19 -2
  254. package/dist/shop-config/build-food-shop-config.d.ts +44 -0
  255. package/dist/shop-config/build-food-shop-config.js +251 -0
  256. package/dist/shop-config/options.d.ts +48 -0
  257. package/dist/shop-config/options.js +74 -0
  258. package/package.json +48 -5
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emailAttemptNotificationKey = exports.nextAutomaticRetryAt = exports.canAutomaticallyRetry = exports.classifyNotificationFailure = exports.MAX_AUTOMATIC_EMAIL_ATTEMPTS = void 0;
4
+ const types_1 = require("../../providers/smtp/types");
5
+ exports.MAX_AUTOMATIC_EMAIL_ATTEMPTS = 3;
6
+ const RETRY_DELAYS_MS = [60_000, 5 * 60_000];
7
+ const bySentinel = new Map([
8
+ [
9
+ types_1.SMTP_FAILURE_SENTINELS.connectionFailed,
10
+ { code: "connection_failed", outcome: "retryable" },
11
+ ],
12
+ [
13
+ types_1.SMTP_FAILURE_SENTINELS.invalidContent,
14
+ { code: "invalid_content", outcome: "failed" },
15
+ ],
16
+ [
17
+ types_1.SMTP_FAILURE_SENTINELS.outcomeUnknown,
18
+ { code: "outcome_unknown", outcome: "unknown" },
19
+ ],
20
+ [
21
+ types_1.SMTP_FAILURE_SENTINELS.permanentRejection,
22
+ { code: "permanent_rejection", outcome: "failed" },
23
+ ],
24
+ [
25
+ types_1.SMTP_FAILURE_SENTINELS.transientRejection,
26
+ { code: "temporary_rejection", outcome: "retryable" },
27
+ ],
28
+ ]);
29
+ const classifyNotificationFailure = (error) => {
30
+ if (!(error instanceof Error)) {
31
+ return { code: "outcome_unknown", outcome: "unknown" };
32
+ }
33
+ const match = error.message.match(/^Failed to send notification with id [A-Za-z0-9_-]+:\r?\n([^\r\n]+)$/);
34
+ return ((match?.[1] ? bySentinel.get(match[1]) : undefined) ?? {
35
+ code: "outcome_unknown",
36
+ outcome: "unknown",
37
+ });
38
+ };
39
+ exports.classifyNotificationFailure = classifyNotificationFailure;
40
+ const canAutomaticallyRetry = (attemptNumber) => Number.isInteger(attemptNumber) &&
41
+ attemptNumber > 0 &&
42
+ attemptNumber < exports.MAX_AUTOMATIC_EMAIL_ATTEMPTS;
43
+ exports.canAutomaticallyRetry = canAutomaticallyRetry;
44
+ const nextAutomaticRetryAt = (now, attemptNumber) => {
45
+ if (!(0, exports.canAutomaticallyRetry)(attemptNumber)) {
46
+ throw new TypeError("The email attempt has no remaining automatic retry.");
47
+ }
48
+ return new Date(now.getTime() + RETRY_DELAYS_MS[attemptNumber - 1]);
49
+ };
50
+ exports.nextAutomaticRetryAt = nextAutomaticRetryAt;
51
+ const emailAttemptNotificationKey = (attemptId) => `email-attempt:${attemptId}`;
52
+ exports.emailAttemptNotificationKey = emailAttemptNotificationKey;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbHVyZS1jbGFzc2lmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vZmFpbHVyZS1jbGFzc2lmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBb0U7QUFFdkQsUUFBQSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFFOUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBVSxDQUFDO0FBYXRELE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUErQjtJQUN2RDtRQUNFLDhCQUFzQixDQUFDLGdCQUFnQjtRQUN2QyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO0tBQ3BEO0lBQ0Q7UUFDRSw4QkFBc0IsQ0FBQyxjQUFjO1FBQ3JDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7S0FDL0M7SUFDRDtRQUNFLDhCQUFzQixDQUFDLGNBQWM7UUFDckMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtLQUNoRDtJQUNEO1FBQ0UsOEJBQXNCLENBQUMsa0JBQWtCO1FBQ3pDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7S0FDbkQ7SUFDRDtRQUNFLDhCQUFzQixDQUFDLGtCQUFrQjtRQUN6QyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO0tBQ3REO0NBQ0YsQ0FBQyxDQUFDO0FBRUksTUFBTSwyQkFBMkIsR0FBRyxDQUN6QyxLQUFjLEVBQ1EsRUFBRTtJQUN4QixJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQy9CLHNFQUFzRSxDQUN2RSxDQUFDO0lBQ0YsT0FBTyxDQUNMLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJO1FBQ3JELElBQUksRUFBRSxpQkFBaUI7UUFDdkIsT0FBTyxFQUFFLFNBQVM7S0FDbkIsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBZlcsUUFBQSwyQkFBMkIsK0JBZXRDO0FBRUssTUFBTSxxQkFBcUIsR0FBRyxDQUFDLGFBQXFCLEVBQVcsRUFBRSxDQUN0RSxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztJQUMvQixhQUFhLEdBQUcsQ0FBQztJQUNqQixhQUFhLEdBQUcsb0NBQTRCLENBQUM7QUFIbEMsUUFBQSxxQkFBcUIseUJBR2E7QUFFeEMsTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxHQUFTLEVBQ1QsYUFBcUIsRUFDZixFQUFFO0lBQ1IsSUFBSSxDQUFDLElBQUEsNkJBQXFCLEVBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxNQUFNLElBQUksU0FBUyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLGVBQWUsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFSVyxRQUFBLG9CQUFvQix3QkFRL0I7QUFFSyxNQUFNLDJCQUEyQixHQUFHLENBQUMsU0FBaUIsRUFBVSxFQUFFLENBQ3ZFLGlCQUFpQixTQUFTLEVBQUUsQ0FBQztBQURsQixRQUFBLDJCQUEyQiwrQkFDVCJ9
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toOrderSummary = exports.toIsoDateTime = exports.toOrderSummaryAddress = exports.ORDER_SUMMARY_FIELDS = void 0;
4
+ const types_1 = require("../types");
5
+ /** Order fields `toOrderSummary` reads; load them with `getOrderDetailWorkflow`. */
6
+ exports.ORDER_SUMMARY_FIELDS = [
7
+ "display_id",
8
+ "email",
9
+ "created_at",
10
+ "currency_code",
11
+ "items.title",
12
+ "items.variant_title",
13
+ "items.quantity",
14
+ "items.original_total",
15
+ "shipping_methods.name",
16
+ "original_item_total",
17
+ "original_shipping_total",
18
+ "discount_total",
19
+ "tax_total",
20
+ "total",
21
+ "billing_address.*",
22
+ "shipping_address.*",
23
+ ];
24
+ const asRecord = (value) => value && typeof value === "object" ? value : null;
25
+ const asText = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
26
+ /** Medusa returns amounts as numbers, numeric strings or `{ value }` BigNumbers. */
27
+ const asAmount = (value) => {
28
+ const raw = asRecord(value)?.value ?? value;
29
+ if (typeof raw === "number" && Number.isFinite(raw)) {
30
+ return String(raw);
31
+ }
32
+ if (typeof raw === "string" && raw.trim()) {
33
+ return raw.trim();
34
+ }
35
+ return "0";
36
+ };
37
+ const asNumber = (value) => {
38
+ const raw = asRecord(value)?.value ?? value;
39
+ return typeof raw === "string" && raw.trim() ? Number(raw) : raw;
40
+ };
41
+ const toOrderSummaryAddress = (value) => {
42
+ const address = asRecord(value);
43
+ if (!address) {
44
+ return null;
45
+ }
46
+ return {
47
+ first_name: asText(address.first_name),
48
+ last_name: asText(address.last_name),
49
+ company: asText(address.company),
50
+ address_1: asText(address.address_1),
51
+ address_2: asText(address.address_2),
52
+ postal_code: asText(address.postal_code),
53
+ city: asText(address.city),
54
+ country_code: asText(address.country_code),
55
+ };
56
+ };
57
+ exports.toOrderSummaryAddress = toOrderSummaryAddress;
58
+ const asArray = (value) => Array.isArray(value) ? value : [];
59
+ const asIsoDate = (value) => {
60
+ const date = value instanceof Date
61
+ ? value
62
+ : typeof value === "string"
63
+ ? new Date(value)
64
+ : null;
65
+ return date && !Number.isNaN(date.getTime()) ? date.toISOString() : value;
66
+ };
67
+ /** An order timestamp as ISO 8601; `null` when missing or unreadable. */
68
+ const toIsoDateTime = (value) => {
69
+ const iso = asIsoDate(value);
70
+ return typeof iso === "string" && !Number.isNaN(Date.parse(iso)) ? iso : null;
71
+ };
72
+ exports.toIsoDateTime = toIsoDateTime;
73
+ /** Maps a Medusa order detail to the summary frozen into the order mails. */
74
+ const toOrderSummary = (rawOrder) => {
75
+ const order = asRecord(rawOrder) ?? {};
76
+ return types_1.OrderSummarySchema.parse({
77
+ display_id: asNumber(order.display_id) ?? null,
78
+ email: asText(order.email),
79
+ placed_at: asIsoDate(order.created_at),
80
+ currency_code: order.currency_code,
81
+ items: asArray(order.items).map((rawItem) => {
82
+ const item = asRecord(rawItem) ?? {};
83
+ return {
84
+ title: item.title,
85
+ variant_title: asText(item.variant_title),
86
+ quantity: asNumber(item.quantity),
87
+ original_total: asAmount(item.original_total),
88
+ };
89
+ }),
90
+ shipping_method_names: asArray(order.shipping_methods)
91
+ .map((method) => asText(asRecord(method)?.name))
92
+ .filter((name) => name !== null),
93
+ original_item_total: asAmount(order.original_item_total),
94
+ original_shipping_total: asAmount(order.original_shipping_total),
95
+ discount_total: asAmount(order.discount_total),
96
+ tax_total: asAmount(order.tax_total),
97
+ total: asAmount(order.total),
98
+ billing_address: (0, exports.toOrderSummaryAddress)(order.billing_address),
99
+ shipping_address: (0, exports.toOrderSummaryAddress)(order.shipping_address),
100
+ });
101
+ };
102
+ exports.toOrderSummary = toOrderSummary;
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItc3VtbWFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vb3JkZXItc3VtbWFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvQ0FJa0I7QUFFbEIsb0ZBQW9GO0FBQ3ZFLFFBQUEsb0JBQW9CLEdBQUc7SUFDbEMsWUFBWTtJQUNaLE9BQU87SUFDUCxZQUFZO0lBQ1osZUFBZTtJQUNmLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLHNCQUFzQjtJQUN0Qix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6QixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLE9BQU87SUFDUCxtQkFBbUI7SUFDbkIsb0JBQW9CO0NBQ1osQ0FBQztBQUlYLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFvQixFQUFFLENBQ3BELEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFFLEtBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUVuRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWMsRUFBaUIsRUFBRSxDQUMvQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUVsRSxvRkFBb0Y7QUFDcEYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQVUsRUFBRTtJQUMxQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQztJQUM1QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFD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
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toRefundSummary = exports.REFUND_PAYMENT_FIELDS = void 0;
4
+ const types_1 = require("../types");
5
+ const order_summary_1 = require("./order-summary");
6
+ /** Payment fields `toRefundSummary` reads; load them with Query. */
7
+ exports.REFUND_PAYMENT_FIELDS = [
8
+ "id",
9
+ "currency_code",
10
+ "refunds.id",
11
+ "refunds.amount",
12
+ "refunds.created_at",
13
+ "refunds.refund_reason.label",
14
+ ];
15
+ const asRecord = (value) => value && typeof value === "object" ? value : {};
16
+ const asText = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
17
+ const asNumber = (value) => {
18
+ const raw = asRecord(value).value ?? value;
19
+ return typeof raw === "string" && raw.trim() ? Number(raw) : raw;
20
+ };
21
+ /** Medusa returns amounts as numbers, numeric strings or `{ value }` BigNumbers. */
22
+ const asAmount = (value) => {
23
+ const raw = asRecord(value).value ?? value;
24
+ return typeof raw === "number" && Number.isFinite(raw) ? String(raw) : raw;
25
+ };
26
+ /**
27
+ * Maps one refund of a payment and its order to the snapshot frozen into the
28
+ * refund confirmation. Fails when the payment has no such refund.
29
+ */
30
+ const toRefundSummary = (rawOrder, rawPayment, refundId) => {
31
+ const payment = asRecord(rawPayment);
32
+ const refunds = Array.isArray(payment.refunds) ? payment.refunds : [];
33
+ const refund = asRecord(refunds.find((candidate) => asRecord(candidate).id === refundId));
34
+ return types_1.RefundSummarySchema.parse({
35
+ order_display_id: asNumber(asRecord(rawOrder).display_id) ?? null,
36
+ amount: asAmount(refund.amount),
37
+ currency_code: payment.currency_code,
38
+ refunded_at: (0, order_summary_1.toIsoDateTime)(refund.created_at),
39
+ reason: asText(asRecord(refund.refund_reason).label),
40
+ });
41
+ };
42
+ exports.toRefundSummary = toRefundSummary;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kLXN1bW1hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvZG9tYWluL3JlZnVuZC1zdW1tYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9DQUFtRTtBQUNuRSxtREFBZ0Q7QUFFaEQsb0VBQW9FO0FBQ3ZELFFBQUEscUJBQXFCLEdBQUc7SUFDbkMsSUFBSTtJQUNKLGVBQWU7SUFDZixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQiw2QkFBNkI7Q0FDckIsQ0FBQztBQUlYLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFhLEVBQUUsQ0FDN0MsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUUsS0FBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBRWpFLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBYyxFQUFpQixFQUFFLENBQy9DLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRWxFLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7SUFDM0MsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7SUFDM0MsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNuRSxDQUFDLENBQUM7QUFFRixvRkFBb0Y7QUFDcEYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRTtJQUMzQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztJQUMzQyxPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUM3RSxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSSxNQUFNLGVBQWUsR0FBRyxDQUM3QixRQUFpQixFQUNqQixVQUFtQixFQUNuQixRQUFnQixFQUNELEVBQUU7SUFDakIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUNqRSxDQUFDO0lBQ0YsT0FBTywyQkFBbUIsQ0FBQyxLQUFLLENBQUM7UUFDL0IsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJO1FBQ2pFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUMvQixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7UUFDcEMsV0FBVyxFQUFFLElBQUEsNkJBQWEsRUFBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQzdDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUM7S0FDckQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBakJXLFFBQUEsZUFBZSxtQkFpQjFCIn0=
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toReturnReceivedSummary = exports.toReturnSummary = exports.RETURN_LOCATION_FIELDS = exports.RETURN_RECEIVED_SUMMARY_FIELDS = exports.RETURN_SUMMARY_FIELDS = void 0;
4
+ const types_1 = require("../types");
5
+ const order_summary_1 = require("./order-summary");
6
+ /** Return fields `toReturnSummary` reads; load them with Query. */
7
+ exports.RETURN_SUMMARY_FIELDS = [
8
+ "id",
9
+ "display_id",
10
+ "location_id",
11
+ "order.display_id",
12
+ "items.quantity",
13
+ "items.item.title",
14
+ "items.item.variant_title",
15
+ "items.reason.label",
16
+ "shipping_methods.name",
17
+ ];
18
+ /** Return fields `toReturnReceivedSummary` reads; load them with Query. */
19
+ exports.RETURN_RECEIVED_SUMMARY_FIELDS = [
20
+ "id",
21
+ "display_id",
22
+ "received_at",
23
+ "order.display_id",
24
+ "items.received_quantity",
25
+ "items.damaged_quantity",
26
+ "items.item.title",
27
+ "items.item.variant_title",
28
+ ];
29
+ /** Stock location fields `toReturnSummary` reads; load them with Query. */
30
+ exports.RETURN_LOCATION_FIELDS = ["id", "address.*"];
31
+ const asRecord = (value) => value && typeof value === "object" ? value : {};
32
+ const asText = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
33
+ const asArray = (value) => Array.isArray(value) ? value : [];
34
+ const asNumber = (value) => {
35
+ const raw = asRecord(value).value ?? value;
36
+ return typeof raw === "string" && raw.trim() ? Number(raw) : raw;
37
+ };
38
+ /**
39
+ * Where the customer sends the parcel: the return's stock location, else
40
+ * the company address from the shop master data. Both are addressed to the
41
+ * company (`legal_name`) unless the location names its own company.
42
+ */
43
+ const returnAddress = (rawLocation, shop) => {
44
+ const company = asText(shop.legal_name);
45
+ const location = (0, order_summary_1.toOrderSummaryAddress)(asRecord(rawLocation).address);
46
+ if (location?.address_1) {
47
+ return { ...location, company: location.company ?? company };
48
+ }
49
+ const street = asText(shop.address_line1);
50
+ if (!street) {
51
+ return null;
52
+ }
53
+ return {
54
+ first_name: null,
55
+ last_name: null,
56
+ company,
57
+ address_1: street,
58
+ address_2: asText(shop.address_line2),
59
+ postal_code: asText(shop.postal_code),
60
+ city: asText(shop.city),
61
+ country_code: asText(shop.country_code),
62
+ };
63
+ };
64
+ /**
65
+ * Maps a requested return, its stock location and the shop master data to
66
+ * the snapshot frozen into the return confirmation. Items carry the order
67
+ * line's product and variant title.
68
+ */
69
+ const toReturnSummary = (rawReturn, rawLocation, shop) => {
70
+ const orderReturn = asRecord(rawReturn);
71
+ const order = asRecord(orderReturn.order);
72
+ return types_1.ReturnSummarySchema.parse({
73
+ display_id: asNumber(orderReturn.display_id) ?? null,
74
+ order_display_id: asNumber(order.display_id) ?? null,
75
+ shipping_method_name: asArray(orderReturn.shipping_methods)
76
+ .map((method) => asText(asRecord(method).name))
77
+ .find((name) => name !== null) ?? null,
78
+ items: asArray(orderReturn.items).map((rawItem) => {
79
+ const item = asRecord(rawItem);
80
+ const line = asRecord(item.item);
81
+ return {
82
+ title: asText(line.title),
83
+ variant_title: asText(line.variant_title),
84
+ quantity: asNumber(item.quantity),
85
+ reason: asText(asRecord(item.reason).label),
86
+ };
87
+ }),
88
+ return_address: returnAddress(rawLocation, shop),
89
+ });
90
+ };
91
+ exports.toReturnSummary = toReturnSummary;
92
+ /**
93
+ * Maps a completely received return to the snapshot frozen into the return
94
+ * receipt. Only items that arrived are listed; damaged units are part of the
95
+ * received quantity, as in Medusa.
96
+ */
97
+ const toReturnReceivedSummary = (rawReturn) => {
98
+ const orderReturn = asRecord(rawReturn);
99
+ return types_1.ReturnReceivedSummarySchema.parse({
100
+ display_id: asNumber(orderReturn.display_id) ?? null,
101
+ order_display_id: asNumber(asRecord(orderReturn.order).display_id) ?? null,
102
+ received_at: (0, order_summary_1.toIsoDateTime)(orderReturn.received_at),
103
+ items: asArray(orderReturn.items)
104
+ .map((rawItem) => {
105
+ const item = asRecord(rawItem);
106
+ const line = asRecord(item.item);
107
+ return {
108
+ title: asText(line.title),
109
+ variant_title: asText(line.variant_title),
110
+ quantity: asNumber(item.received_quantity),
111
+ damaged_quantity: asNumber(item.damaged_quantity) ?? 0,
112
+ };
113
+ })
114
+ .filter((item) => Number(item.quantity) > 0),
115
+ });
116
+ };
117
+ exports.toReturnReceivedSummary = toReturnReceivedSummary;
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJuLXN1bW1hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvZG9tYWluL3JldHVybi1zdW1tYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG9DQU1rQjtBQUNsQixtREFBdUU7QUFFdkUsbUVBQW1FO0FBQ3RELFFBQUEscUJBQXFCLEdBQUc7SUFDbkMsSUFBSTtJQUNKLFlBQVk7SUFDWixhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsMEJBQTBCO0lBQzFCLG9CQUFvQjtJQUNwQix1QkFBdUI7Q0FDZixDQUFDO0FBRVgsMkVBQTJFO0FBQzlELFFBQUEsOEJBQThCLEdBQUc7SUFDNUMsSUFBSTtJQUNKLFlBQVk7SUFDWixhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLHlCQUF5QjtJQUN6Qix3QkFBd0I7SUFDeEIsa0JBQWtCO0lBQ2xCLDBCQUEwQjtDQUNsQixDQUFDO0FBRVgsMkVBQTJFO0FBQzlELFFBQUEsc0JBQXNCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFJbkUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQWEsRUFBRSxDQUM3QyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSxLQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFakUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFjLEVBQWlCLEVBQUUsQ0FDL0MsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFbEUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFjLEVBQWEsRUFBRSxDQUM1QyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxL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
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toShipmentSummary = exports.SHIPMENT_ORDER_FIELDS = exports.SHIPMENT_FULFILLMENT_FIELDS = void 0;
4
+ const types_1 = require("../types");
5
+ const order_summary_1 = require("./order-summary");
6
+ /** Fulfillment fields `toShipmentSummary` reads; load them with Query. */
7
+ exports.SHIPMENT_FULFILLMENT_FIELDS = [
8
+ "id",
9
+ "labels.tracking_number",
10
+ "labels.tracking_url",
11
+ "items.line_item_id",
12
+ "items.quantity",
13
+ "items.title",
14
+ "shipping_option.name",
15
+ "delivery_address.*",
16
+ ];
17
+ /** Order fields `toShipmentSummary` reads; load them with `getOrderDetailWorkflow`. */
18
+ exports.SHIPMENT_ORDER_FIELDS = [
19
+ "display_id",
20
+ "items.id",
21
+ "items.title",
22
+ "items.variant_title",
23
+ "items.detail.quantity",
24
+ "items.detail.shipped_quantity",
25
+ ];
26
+ const asRecord = (value) => value && typeof value === "object" ? value : {};
27
+ const asText = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
28
+ const asArray = (value) => Array.isArray(value) ? value : [];
29
+ const asNumber = (value) => {
30
+ const raw = asRecord(value).value ?? value;
31
+ return typeof raw === "string" && raw.trim() ? Number(raw) : raw;
32
+ };
33
+ /** Some ordered quantity has not been shipped yet. */
34
+ const hasUnshippedItems = (items) => items.some((rawItem) => {
35
+ const detail = asRecord(asRecord(rawItem).detail);
36
+ const ordered = Number(asNumber(detail.quantity));
37
+ const shipped = Number(asNumber(detail.shipped_quantity) ?? 0);
38
+ return Number.isFinite(ordered) && Number.isFinite(shipped)
39
+ ? shipped < ordered
40
+ : false;
41
+ });
42
+ /**
43
+ * Maps a shipped fulfillment and its order to the snapshot frozen into the
44
+ * shipping confirmation. Items carry the order line's product and variant
45
+ * title; more is to follow while some ordered quantity is not shipped yet.
46
+ */
47
+ const toShipmentSummary = (rawOrder, rawFulfillment) => {
48
+ const order = asRecord(rawOrder);
49
+ const fulfillment = asRecord(rawFulfillment);
50
+ const orderItems = new Map(asArray(order.items).map((item) => [asRecord(item).id, asRecord(item)]));
51
+ return types_1.ShipmentSummarySchema.parse({
52
+ display_id: asNumber(order.display_id) ?? null,
53
+ shipping_method_name: asText(asRecord(fulfillment.shipping_option).name),
54
+ tracking: asArray(fulfillment.labels)
55
+ .map((label) => ({
56
+ number: asText(asRecord(label).tracking_number),
57
+ url: asText(asRecord(label).tracking_url),
58
+ }))
59
+ .filter((label) => label.number !== null || label.url !== null),
60
+ items: asArray(fulfillment.items).map((rawItem) => {
61
+ const item = asRecord(rawItem);
62
+ const line = orderItems.get(item.line_item_id);
63
+ return {
64
+ title: asText(line?.title) ?? item.title,
65
+ variant_title: line ? asText(line.variant_title) : null,
66
+ quantity: asNumber(item.quantity),
67
+ };
68
+ }),
69
+ delivery_address: (0, order_summary_1.toOrderSummaryAddress)(fulfillment.delivery_address),
70
+ more_to_follow: hasUnshippedItems(asArray(order.items)),
71
+ });
72
+ };
73
+ exports.toShipmentSummary = toShipmentSummary;
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQtc3VtbWFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vc2hpcG1lbnQtc3VtbWFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvQ0FBdUU7QUFDdkUsbURBQXdEO0FBRXhELDBFQUEwRTtBQUM3RCxRQUFBLDJCQUEyQixHQUFHO0lBQ3pDLElBQUk7SUFDSix3QkFBd0I7SUFDeEIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixvQkFBb0I7Q0FDWixDQUFDO0FBRVgsdUZBQXVGO0FBQzFFLFFBQUEscUJBQXFCLEdBQUc7SUFDbkMsWUFBWTtJQUNaLFVBQVU7SUFDVixhQUFhO0lBQ2IscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2QiwrQkFBK0I7Q0FDdkIsQ0FBQztBQUlYLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFhLEVBQUUsQ0FDN0MsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUUsS0FBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBRWpFLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBYyxFQUFpQixFQUFFLENBQy9DLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRWxFLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBYyxFQUFhLEVBQUUsQ0FDNUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFcEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRTtJQUMzQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztJQUMzQyxPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ25FLENBQUMsQ0FBQztBQUVGLHNEQUFzRDtBQUN0RCxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBZ0IsRUFBVyxFQUFFLENBQ3RELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUNyQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDekQsQ0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPO1FBQ25CLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDWixDQUFDLENBQUMsQ0FBQztBQUVMOzs7O0dBSUc7QUFDSSxNQUFNLGlCQUFpQixHQUFHLENBQy9CLFFBQWlCLEVBQ2pCLGNBQXVCLEVBQ04sRUFBRTtJQUNuQixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3hFLENBQUM7SUFDRixPQUFPLDZCQUFxQixDQUFDLEtBQUssQ0FBQztRQUNqQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJO1FBQzlDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN4RSxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7YUFDbEMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBQy9DLEdBQUcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUMxQyxDQUFDLENBQUM7YUFDRixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDO1FBQ2pFLEtBQUssRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2hELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxPQUFPO2dCQUNMLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO2dCQUN4QyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUN2RCxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDbEMsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLGdCQUFnQixFQUFFLElBQUEscUNBQXFCLEVBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDO1FBQ3JFLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3hELENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQTlCVyxRQUFBLGlCQUFpQixxQkE4QjVCIn0=
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emailPluginFeatures = void 0;
4
+ const public_1 = require("../public");
5
+ exports.emailPluginFeatures = (0, public_1.definePluginFeatures)({
6
+ plugin_key: "email",
7
+ label: "E-Mail",
8
+ description: "Transaktionale E-Mails und das E-Mail-Protokoll im Admin. Aus: Für neue Ereignisse wird keine Mail erzeugt (Ereignisse werden später nicht nachgeholt), das E-Mail-Protokoll und die AGB-Versionen im Admin sind nicht erreichbar und die Versand-, Wiederholungs- und Abgleichsjobs laufen nicht; bereits eingereihte Mails bleiben liegen, bis das Plugin wieder eingeschaltet wird. Checkout und Bestellungen laufen unverändert weiter.",
9
+ features: [
10
+ {
11
+ key: "order_mails",
12
+ label: "Bestell-Mails",
13
+ description: "Bestelleingang, Versand, Stornierung, Retoure und Erstattung (inklusive der Mails zu Belegen aus dem Dokumente-Plugin). Sind im Dokumente-Plugin die Rechnungen & Stornos aus, gehen Versand- und Storno-Mails ohne Beleg hinaus; Erstattungs-Mails entstehen nur aus einem Erstattungsbeleg und werden dann nicht verschickt. Aus: Für diese Ereignisse wird keine Mail erzeugt und später auch nicht nachgeholt.",
14
+ default_enabled: true,
15
+ },
16
+ {
17
+ key: "account_mails",
18
+ label: "Konto-Mails",
19
+ description: "Passwort-Zurücksetzen für Kunden und Einladungen neuer Admin-Benutzer. Aus: Für diese Ereignisse wird keine Mail erzeugt.",
20
+ default_enabled: true,
21
+ },
22
+ {
23
+ key: "affiliate_reminders",
24
+ label: "Affiliate-Erinnerungen",
25
+ description: "Erinnerungsmails an Affiliates zur fälligen Konsignationsmeldung. Aus: Für diese Ereignisse wird keine Mail erzeugt.",
26
+ default_enabled: true,
27
+ },
28
+ ],
29
+ settings: [
30
+ {
31
+ key: "logo",
32
+ label: "Logo",
33
+ description: "PNG oder JPG, erscheint oben in den E-Mails. Am besten mindestens 400 px breit, auf weißem oder transparentem Hintergrund. Ohne Logo steht dort der Shopname.",
34
+ type: "image",
35
+ },
36
+ ],
37
+ admin_page: "/settings/hartl-services/email",
38
+ });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWZlYXR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3BsdWdpbi1mZWF0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBaUQ7QUFFcEMsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDZCQUFvQixFQUFDO0lBQ3RELFVBQVUsRUFBRSxPQUFPO0lBQ25CLEtBQUssRUFBRSxRQUFRO0lBQ2YsV0FBVyxFQUNULDZhQUE2YTtJQUMvYSxRQUFRLEVBQUU7UUFDUjtZQUNFLEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFdBQVcsRUFDVCxvWkFBb1o7WUFDdFosZUFBZSxFQUFFLElBQUk7U0FDdEI7UUFDRDtZQUNFLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFDVCwySEFBMkg7WUFDN0gsZUFBZSxFQUFFLElBQUk7U0FDdEI7UUFDRDtZQUNFLEdBQUcsRUFBRSxxQkFBcUI7WUFDMUIsS0FBSyxFQUFFLHdCQUF3QjtZQUMvQixXQUFXLEVBQ1Qsc0hBQXNIO1lBQ3hILGVBQWUsRUFBRSxJQUFJO1NBQ3RCO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUjtZQUNFLEdBQUcsRUFBRSxNQUFNO1lBQ1gsS0FBSyxFQUFFLE1BQU07WUFDYixXQUFXLEVBQ1QsK0pBQStKO1lBQ2pLLElBQUksRUFBRSxPQUFPO1NBQ2Q7S0FDRjtJQUNELFVBQVUsRUFBRSxnQ0FBZ0M7Q0FDN0MsQ0FBQyxDQUFDIn0=