@hartl-services/medusa-base 0.4.0 → 1.0.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 (235) hide show
  1. package/.medusa/server/src/admin/index.js +1517 -87
  2. package/.medusa/server/src/admin/index.mjs +1518 -88
  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 +24 -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 +142 -0
  37. package/.medusa/server/src/documents/templates/format.js +31 -0
  38. package/.medusa/server/src/documents/templates/html-factory.js +40 -0
  39. package/.medusa/server/src/documents/templates/html-utils.js +13 -0
  40. package/.medusa/server/src/documents/templates/layout.js +97 -0
  41. package/.medusa/server/src/documents/templates/packing-list.js +50 -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/html-to-pdf.js +61 -0
  50. package/.medusa/server/src/documents/utils/private-file-storage.js +64 -0
  51. package/.medusa/server/src/documents/utils/resolve-services.js +7 -0
  52. package/.medusa/server/src/email/application/handle-invite-event.js +312 -0
  53. package/.medusa/server/src/email/application/handle-password-reset-event.js +354 -0
  54. package/.medusa/server/src/email/config/index.js +84 -0
  55. package/.medusa/server/src/email/config/notification-module.js +20 -0
  56. package/.medusa/server/src/email/domain/business-keys.js +50 -0
  57. package/.medusa/server/src/email/domain/documents-fact-fingerprint.js +7 -0
  58. package/.medusa/server/src/email/domain/event-schemas.js +36 -0
  59. package/.medusa/server/src/email/domain/failure-classification.js +53 -0
  60. package/.medusa/server/src/email/plugin-features.js +31 -0
  61. package/.medusa/server/src/email/rendering/default-templates.js +91 -0
  62. package/.medusa/server/src/email/rendering/render-email.js +37 -0
  63. package/.medusa/server/src/email/rendering/resolve-shop-configuration.js +48 -0
  64. package/.medusa/server/src/email/types/email-kinds.js +18 -0
  65. package/.medusa/server/src/email/types/index.js +21 -0
  66. package/.medusa/server/src/email/types/shop-configuration.js +3 -0
  67. package/.medusa/server/src/email/types/smtp-configuration.js +3 -0
  68. package/.medusa/server/src/email/types/template-data.js +79 -0
  69. package/.medusa/server/src/files/config/index.js +256 -0
  70. package/.medusa/server/src/files/gateway/index.js +115 -0
  71. package/.medusa/server/src/files/types/index.js +6 -0
  72. package/.medusa/server/src/files/types/public.js +6 -0
  73. package/.medusa/server/src/jobs/document-fact-publication-reconciliation.js +18 -0
  74. package/.medusa/server/src/jobs/document-resolution-reconciliation.js +20 -0
  75. package/.medusa/server/src/jobs/packing-list-reconciliation.js +49 -0
  76. package/.medusa/server/src/jobs/reconcile-email-attempts.js +63 -0
  77. package/.medusa/server/src/jobs/reconcile-pending-email-messages.js +41 -0
  78. package/.medusa/server/src/jobs/retry-email-messages.js +27 -0
  79. package/.medusa/server/src/migration-scripts/dismiss-orphaned-cart-promotion-links.js +26 -0
  80. package/.medusa/server/src/modules/documents/domain/cancellation-snapshot.js +97 -0
  81. package/.medusa/server/src/modules/documents/domain/document-number.js +36 -0
  82. package/.medusa/server/src/modules/documents/domain/document-resolution.js +24 -0
  83. package/.medusa/server/src/modules/documents/domain/issuance-rules.js +37 -0
  84. package/.medusa/server/src/modules/documents/domain/merchant.js +86 -0
  85. package/.medusa/server/src/modules/documents/domain/options.js +40 -0
  86. package/.medusa/server/src/modules/documents/domain/packing-list.js +90 -0
  87. package/.medusa/server/src/modules/documents/domain/snapshot-normalization.js +17 -0
  88. package/.medusa/server/src/modules/documents/domain/tax-breakdown.js +66 -0
  89. package/.medusa/server/src/modules/documents/index.js +15 -0
  90. package/.medusa/server/src/modules/documents/loaders/assert-private-file-storage.js +20 -0
  91. package/.medusa/server/src/modules/documents/migrations/Migration20260827061749.js +75 -0
  92. package/.medusa/server/src/modules/documents/migrations/Migration20260830111207.js +28 -0
  93. package/.medusa/server/src/modules/documents/models/document-artifact.js +25 -0
  94. package/.medusa/server/src/modules/documents/models/document-number-sequence.js +29 -0
  95. package/.medusa/server/src/modules/documents/models/document.js +82 -0
  96. package/.medusa/server/src/modules/documents/models/order-cancellation-resolution.js +51 -0
  97. package/.medusa/server/src/modules/documents/models/packing-list-revision.js +36 -0
  98. package/.medusa/server/src/modules/documents/models/packing-list.js +27 -0
  99. package/.medusa/server/src/modules/documents/models/refund-document-resolution.js +66 -0
  100. package/.medusa/server/src/modules/documents/models/shipment-invoice-assignment.js +51 -0
  101. package/.medusa/server/src/modules/documents/models/shipment-invoice-coordinator.js +44 -0
  102. package/.medusa/server/src/modules/documents/service.js +1701 -0
  103. package/.medusa/server/src/modules/email/domain/attachment.js +25 -0
  104. package/.medusa/server/src/modules/email/domain/message-state.js +69 -0
  105. package/.medusa/server/src/modules/email/index.js +13 -0
  106. package/.medusa/server/src/modules/email/migrations/Migration20260826173422.js +32 -0
  107. package/.medusa/server/src/modules/email/migrations/Migration20260827172945.js +16 -0
  108. package/.medusa/server/src/modules/email/migrations/Migration20260827194804.js +22 -0
  109. package/.medusa/server/src/modules/email/migrations/Migration20260906195205.js +16 -0
  110. package/.medusa/server/src/modules/email/models/email-attempt.js +56 -0
  111. package/.medusa/server/src/modules/email/models/email-message.js +71 -0
  112. package/.medusa/server/src/modules/email/models/email-terms-version.js +37 -0
  113. package/.medusa/server/src/modules/email/service.js +1285 -0
  114. package/.medusa/server/src/providers/s3-cache/cache/atomic-write.js +25 -0
  115. package/.medusa/server/src/providers/s3-cache/cache/cache-manager.js +115 -0
  116. package/.medusa/server/src/providers/s3-cache/cache/keyed-lock.js +28 -0
  117. package/.medusa/server/src/providers/s3-cache/index.js +8 -0
  118. package/.medusa/server/src/providers/s3-cache/object-key.js +53 -0
  119. package/.medusa/server/src/providers/s3-cache/s3-cache-file.js +229 -0
  120. package/.medusa/server/src/providers/s3-cache/s3-object-store.js +86 -0
  121. package/.medusa/server/src/providers/smtp/index.js +8 -0
  122. package/.medusa/server/src/providers/smtp/service.js +236 -0
  123. package/.medusa/server/src/providers/smtp/types.js +11 -0
  124. package/.medusa/server/src/public/config.js +186 -0
  125. package/.medusa/server/src/public/gateway.js +19 -0
  126. package/.medusa/server/src/public/instrumentation.js +56 -0
  127. package/.medusa/server/src/public/shop-config.js +12 -0
  128. package/.medusa/server/src/public/shop-types.js +24 -0
  129. package/.medusa/server/src/shop-config/build-food-shop-config.js +248 -0
  130. package/.medusa/server/src/shop-config/options.js +71 -0
  131. package/.medusa/server/src/subscribers/affiliate-consignment-reminder-due.js +26 -0
  132. package/.medusa/server/src/subscribers/documents-order-canceled.js +24 -0
  133. package/.medusa/server/src/subscribers/documents-order-cancellation-ready.js +26 -0
  134. package/.medusa/server/src/subscribers/documents-refund-ready.js +24 -0
  135. package/.medusa/server/src/subscribers/documents-shipment-created.js +36 -0
  136. package/.medusa/server/src/subscribers/documents-shipment-invoice-assignment-decided.js +26 -0
  137. package/.medusa/server/src/subscribers/email-order-canceled.js +28 -0
  138. package/.medusa/server/src/subscribers/email-shipment-created.js +32 -0
  139. package/.medusa/server/src/subscribers/order-placed.js +27 -0
  140. package/.medusa/server/src/subscribers/packing-list-allocation-revised.js +32 -0
  141. package/.medusa/server/src/subscribers/packing-list-fulfillment-canceled.js +54 -0
  142. package/.medusa/server/src/subscribers/packing-list-fulfillment-created.js +31 -0
  143. package/.medusa/server/src/subscribers/password-reset.js +23 -0
  144. package/.medusa/server/src/subscribers/payment-refunded.js +38 -0
  145. package/.medusa/server/src/subscribers/return-received.js +27 -0
  146. package/.medusa/server/src/subscribers/return-requested.js +27 -0
  147. package/.medusa/server/src/subscribers/user-invite.js +23 -0
  148. package/.medusa/server/src/utils/cart-promotion-links.js +101 -0
  149. package/.medusa/server/src/workflows/documents/issue-cancellation-after-refund.js +246 -0
  150. package/.medusa/server/src/workflows/documents/issue-document.js +163 -0
  151. package/.medusa/server/src/workflows/documents/issue-invoice-after-shipment.js +521 -0
  152. package/.medusa/server/src/workflows/documents/issue-packing-list.js +384 -0
  153. package/.medusa/server/src/workflows/documents/publish-document-facts.js +53 -0
  154. package/.medusa/server/src/workflows/documents/reconcile-document-resolutions.js +48 -0
  155. package/.medusa/server/src/workflows/documents/reconcile-order-cancellation.js +92 -0
  156. package/.medusa/server/src/workflows/documents/regenerate-issued-document.js +61 -0
  157. package/.medusa/server/src/workflows/email/dispatch-email-message.js +299 -0
  158. package/.medusa/server/src/workflows/email/documents-required-facts.js +30 -0
  159. package/.medusa/server/src/workflows/email/prepare-affiliate-reminder-email.js +58 -0
  160. package/.medusa/server/src/workflows/email/prepare-order-canceled-email.js +64 -0
  161. package/.medusa/server/src/workflows/email/prepare-order-received-email.js +56 -0
  162. package/.medusa/server/src/workflows/email/prepare-refund-email.js +47 -0
  163. package/.medusa/server/src/workflows/email/prepare-return-email.js +75 -0
  164. package/.medusa/server/src/workflows/email/prepare-shipment-email.js +82 -0
  165. package/.medusa/server/src/workflows/email/retry-email-messages.js +31 -0
  166. package/.medusa/server/src/workflows/hooks/dismiss-deleted-promotion-cart-links.js +23 -0
  167. package/README.md +1619 -7
  168. package/dist/documents/config/index.d.ts +11 -0
  169. package/dist/documents/config/index.js +17 -0
  170. package/dist/documents/templates/financial-document.d.ts +3 -0
  171. package/dist/documents/templates/financial-document.js +141 -0
  172. package/dist/documents/templates/format.d.ts +16 -0
  173. package/dist/documents/templates/format.js +30 -0
  174. package/dist/documents/templates/html-factory.d.ts +11 -0
  175. package/dist/documents/templates/html-factory.js +39 -0
  176. package/dist/documents/templates/html-utils.d.ts +2 -0
  177. package/dist/documents/templates/html-utils.js +12 -0
  178. package/dist/documents/templates/layout.d.ts +17 -0
  179. package/dist/documents/templates/layout.js +96 -0
  180. package/dist/documents/templates/packing-list.d.ts +3 -0
  181. package/dist/documents/templates/packing-list.js +49 -0
  182. package/dist/documents/types/admin-api.d.ts +1 -0
  183. package/dist/documents/types/admin-api.js +2 -0
  184. package/dist/documents/types/document-summary.d.ts +1 -0
  185. package/dist/documents/types/document-summary.js +2 -0
  186. package/dist/documents/types/documents.d.ts +174 -0
  187. package/dist/documents/types/documents.js +2 -0
  188. package/dist/documents/types/html-factory.d.ts +7 -0
  189. package/dist/documents/types/html-factory.js +5 -0
  190. package/dist/documents/types/index.d.ts +5 -0
  191. package/dist/documents/types/index.js +21 -0
  192. package/dist/documents/types/store-api.d.ts +1 -0
  193. package/dist/documents/types/store-api.js +2 -0
  194. package/dist/email/config/index.d.ts +17 -0
  195. package/dist/email/config/index.js +83 -0
  196. package/dist/email/config/notification-module.d.ts +22 -0
  197. package/dist/email/config/notification-module.js +19 -0
  198. package/dist/email/types/email-kinds.d.ts +15 -0
  199. package/dist/email/types/email-kinds.js +17 -0
  200. package/dist/email/types/index.d.ts +4 -0
  201. package/dist/email/types/index.js +20 -0
  202. package/dist/email/types/shop-configuration.d.ts +43 -0
  203. package/dist/email/types/shop-configuration.js +2 -0
  204. package/dist/email/types/smtp-configuration.d.ts +9 -0
  205. package/dist/email/types/smtp-configuration.js +2 -0
  206. package/dist/email/types/template-data.d.ts +100 -0
  207. package/dist/email/types/template-data.js +78 -0
  208. package/dist/files/config/index.d.ts +32 -0
  209. package/dist/files/config/index.js +255 -0
  210. package/dist/files/gateway/index.d.ts +30 -0
  211. package/dist/files/gateway/index.js +114 -0
  212. package/dist/files/types/index.d.ts +2 -0
  213. package/dist/files/types/index.js +5 -0
  214. package/dist/files/types/public.d.ts +90 -0
  215. package/dist/files/types/public.js +5 -0
  216. package/dist/modules/documents/domain/merchant.d.ts +22 -0
  217. package/dist/modules/documents/domain/merchant.js +85 -0
  218. package/dist/modules/documents/domain/options.d.ts +34 -0
  219. package/dist/modules/documents/domain/options.js +39 -0
  220. package/dist/public/config.d.ts +59 -0
  221. package/dist/public/config.js +185 -0
  222. package/dist/public/gateway.d.ts +2 -0
  223. package/dist/public/gateway.js +18 -0
  224. package/dist/public/instrumentation.d.ts +12 -0
  225. package/dist/public/instrumentation.js +55 -0
  226. package/dist/public/shop-config.d.ts +8 -0
  227. package/dist/public/shop-config.js +11 -0
  228. package/dist/public/shop-types.d.ts +7 -0
  229. package/dist/public/shop-types.js +23 -0
  230. package/dist/public/types.d.ts +17 -1
  231. package/dist/shop-config/build-food-shop-config.d.ts +44 -0
  232. package/dist/shop-config/build-food-shop-config.js +247 -0
  233. package/dist/shop-config/options.d.ts +41 -0
  234. package/dist/shop-config/options.js +70 -0
  235. package/package.json +48 -5
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderFinancialDocument = void 0;
4
+ const format_1 = require("./format");
5
+ const html_utils_1 = require("./html-utils");
6
+ const labelsByKind = {
7
+ cancellation: {
8
+ date: "Stornodatum",
9
+ recipient: "Stornorechnung an",
10
+ title: "Stornorechnung",
11
+ },
12
+ credit_note: {
13
+ date: "Gutschriftsdatum",
14
+ recipient: "Gutschrift an",
15
+ title: "Gutschrift",
16
+ },
17
+ invoice: {
18
+ date: "Rechnungsdatum",
19
+ recipient: "Rechnung an",
20
+ title: "Rechnung",
21
+ },
22
+ };
23
+ const renderAddress = (input) => {
24
+ const address = input.order.billing_address;
25
+ if (!address) {
26
+ return (0, html_utils_1.escapeHtml)(input.order.email);
27
+ }
28
+ return [
29
+ [address.company, address.first_name, address.last_name]
30
+ .filter((part) => Boolean(part))
31
+ .join(" "),
32
+ address.address_1,
33
+ address.address_2,
34
+ [address.postal_code, address.city]
35
+ .filter((part) => Boolean(part))
36
+ .join(" "),
37
+ address.country_code?.toUpperCase(),
38
+ ]
39
+ .filter((part) => Boolean(part))
40
+ .map(html_utils_1.escapeHtml)
41
+ .join("<br />");
42
+ };
43
+ const renderLines = (input, timeZone) => input.lines
44
+ .map((line) => {
45
+ const batchDetails = line.batch_allocations
46
+ .map((allocation) => `<div class="batch">Charge: ${(0, html_utils_1.escapeHtml)(allocation.lot_number)} · MHD: ${(0, html_utils_1.escapeHtml)((0, format_1.formatDate)(allocation.expiry_date, { timeZone }))} · ${(0, html_utils_1.escapeHtml)(allocation.quantity)}</div>`)
47
+ .join("");
48
+ return `<tr>
49
+ <td>
50
+ <strong>${(0, html_utils_1.escapeHtml)(line.title)}</strong>
51
+ ${line.sku ? `<div class="sku">SKU: ${(0, html_utils_1.escapeHtml)(line.sku)}</div>` : ""}
52
+ ${batchDetails}
53
+ </td>
54
+ <td class="number">${(0, html_utils_1.escapeHtml)(line.quantity)}</td>
55
+ <td class="number">${(0, html_utils_1.escapeHtml)((0, format_1.formatMoney)({ amount: line.unit_price.amount, currencyCode: line.unit_price.currency_code }))}</td>
56
+ <td class="number">${(0, html_utils_1.escapeHtml)((0, format_1.formatMoney)({ amount: line.total.amount, currencyCode: line.total.currency_code }))}</td>
57
+ </tr>`;
58
+ })
59
+ .join("");
60
+ const renderTaxCompliance = (input) => {
61
+ const evidence = input.order.tax_compliance;
62
+ if (!evidence ||
63
+ evidence.exemption_wording !==
64
+ "steuerfreie_innergemeinschaftliche_lieferung") {
65
+ return "";
66
+ }
67
+ return `<section class="tax-compliance">
68
+ <h2>Steuerliche Angaben</h2>
69
+ <strong>${(0, html_utils_1.escapeHtml)(evidence.customer_company_name)}</strong><br />
70
+ UID des Kunden: ${(0, html_utils_1.escapeHtml)(evidence.customer_vat_number)}<br />
71
+ Steuerfreie innergemeinschaftliche Lieferung
72
+ </section>`;
73
+ };
74
+ const renderDiscountTotal = (input) => {
75
+ const { amount, currency_code: currencyCode } = input.totals.discount_total;
76
+ const displayAmount = input.document.kind === "invoice" && Number(amount) > 0
77
+ ? `-${amount}`
78
+ : amount;
79
+ return (0, html_utils_1.escapeHtml)((0, format_1.formatMoney)({ amount: displayAmount, currencyCode }));
80
+ };
81
+ const formatTaxRate = (rate) => new Intl.NumberFormat(format_1.DEFAULT_FORMAT_LOCALE, {
82
+ maximumFractionDigits: 2,
83
+ style: "percent",
84
+ }).format(rate / 100);
85
+ const renderTaxRows = (input) => {
86
+ const { tax_breakdown: breakdown, tax_total: taxTotal } = input.totals;
87
+ const rows = breakdown.length > 0
88
+ ? breakdown.map((entry) => ({
89
+ label: `${entry.name} ${formatTaxRate(entry.rate)}`,
90
+ money: entry.tax_total,
91
+ }))
92
+ : [{ label: "Umsatzsteuer", money: taxTotal }];
93
+ return rows
94
+ .map(({ label, money }) => `<tr><td>${(0, html_utils_1.escapeHtml)(label)}</td><td class="number">${(0, html_utils_1.escapeHtml)((0, format_1.formatMoney)({ amount: money.amount, currencyCode: money.currency_code }))}</td></tr>`)
95
+ .join("");
96
+ };
97
+ const renderFinancialDocument = (input, layout, timeZone) => {
98
+ const labels = labelsByKind[input.document.kind];
99
+ const metadata = [
100
+ {
101
+ label: labels.date,
102
+ value: (0, format_1.formatDate)(input.document.issued_at, { timeZone }),
103
+ },
104
+ {
105
+ label: "Bestellung",
106
+ value: (0, html_utils_1.formatOrderReference)(input.order.display_id),
107
+ },
108
+ ];
109
+ if (input.document.kind !== "invoice") {
110
+ metadata.push({
111
+ label: "Ursprungsrechnung",
112
+ value: input.document.source_document_number ?? "-",
113
+ });
114
+ }
115
+ const body = `<section class="recipient">
116
+ <h2>${labels.recipient}</h2>
117
+ ${renderAddress(input)}
118
+ </section>
119
+ ${renderTaxCompliance(input)}
120
+ <table>
121
+ <thead><tr><th>Artikel</th><th class="number">Menge</th><th class="number">Einzelpreis</th><th class="number">Summe</th></tr></thead>
122
+ <tbody>${renderLines(input, timeZone)}</tbody>
123
+ </table>
124
+ <table class="totals">
125
+ <tbody>
126
+ <tr><td>Zwischensumme</td><td class="number">${(0, html_utils_1.escapeHtml)((0, format_1.formatMoney)({ amount: input.totals.subtotal.amount, currencyCode: input.totals.subtotal.currency_code }))}</td></tr>
127
+ <tr><td>Versand</td><td class="number">${(0, html_utils_1.escapeHtml)((0, format_1.formatMoney)({ amount: input.totals.shipping_total.amount, currencyCode: input.totals.shipping_total.currency_code }))}</td></tr>
128
+ <tr><td>Rabatt</td><td class="number">${renderDiscountTotal(input)}</td></tr>
129
+ ${renderTaxRows(input)}
130
+ <tr><td>Gesamt</td><td class="number">${(0, html_utils_1.escapeHtml)((0, format_1.formatMoney)({ amount: input.totals.total.amount, currencyCode: input.totals.total.currency_code }))}</td></tr>
131
+ </tbody>
132
+ </table>`;
133
+ return layout({
134
+ body,
135
+ documentTitle: labels.title,
136
+ metadata,
137
+ number: input.document.number,
138
+ pageTitle: labels.title,
139
+ });
140
+ };
141
+ exports.renderFinancialDocument = renderFinancialDocument;
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLWRvY3VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90ZW1wbGF0ZXMvZmluYW5jaWFsLWRvY3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHFDQUF5RTtBQUN6RSw2Q0FBK0Q7QUFTL0QsTUFBTSxZQUFZLEdBQUc7SUFDbkIsWUFBWSxFQUFFO1FBQ1osSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLG1CQUFtQjtRQUM5QixLQUFLLEVBQUUsZ0JBQWdCO0tBQ3hCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixTQUFTLEVBQUUsZUFBZTtRQUMxQixLQUFLLEVBQUUsWUFBWTtLQUNwQjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsS0FBSyxFQUFFLFVBQVU7S0FDbEI7Q0FJRixDQUFBO0FBRUQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUE0QixFQUFVLEVBQUU7SUFDN0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUE7SUFDM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsT0FBTyxJQUFBLHVCQUFVLEVBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsT0FBTztRQUNMLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7YUFDckQsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFrQixFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9DLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDWixPQUFPLENBQUMsU0FBUztRQUNqQixPQUFPLENBQUMsU0FBUztRQUNqQixDQUFDLE9BQU8s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
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatDate = exports.formatMoney = exports.DEFAULT_FORMAT_LOCALE = void 0;
4
+ exports.DEFAULT_FORMAT_LOCALE = "de-AT";
5
+ const formatMoney = ({ amount, currencyCode }, { locale = exports.DEFAULT_FORMAT_LOCALE } = {}) => {
6
+ const numericAmount = Number(amount);
7
+ const normalizedCurrencyCode = currencyCode.toUpperCase();
8
+ const fallback = `${String(amount)} ${normalizedCurrencyCode}`;
9
+ if (!Number.isFinite(numericAmount)) {
10
+ return fallback;
11
+ }
12
+ try {
13
+ return new Intl.NumberFormat(locale, {
14
+ currency: normalizedCurrencyCode,
15
+ style: "currency",
16
+ }).format(numericAmount);
17
+ }
18
+ catch {
19
+ return fallback;
20
+ }
21
+ };
22
+ exports.formatMoney = formatMoney;
23
+ const formatDate = (value, { locale = exports.DEFAULT_FORMAT_LOCALE, options, timeZone }) => {
24
+ const date = value instanceof Date ? value : new Date(value);
25
+ if (Number.isNaN(date.getTime())) {
26
+ return String(value);
27
+ }
28
+ return new Intl.DateTimeFormat(locale, { timeZone, ...options }).format(date);
29
+ };
30
+ exports.formatDate = formatDate;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90ZW1wbGF0ZXMvZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEscUJBQXFCLEdBQUcsT0FBTyxDQUFBO0FBV3JDLE1BQU0sV0FBVyxHQUFHLENBQ3pCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBb0IsRUFDMUMsRUFBRSxNQUFNLEdBQUcsNkJBQXFCLEtBQXlCLEVBQUUsRUFDbkQsRUFBRTtJQUNWLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNwQyxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUN6RCxNQUFNLFFBQVEsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFBO0lBRTlELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDcEMsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUNuQyxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLEtBQUssRUFBRSxVQUFVO1NBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7QUFDSCxDQUFDLENBQUE7QUFwQlksUUFBQSxXQUFXLGVBb0J2QjtBQVNNLE1BQU0sVUFBVSxHQUFHLENBQ3hCLEtBQW9CLEVBQ3BCLEVBQUUsTUFBTSxHQUFHLDZCQUFxQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQXFCLEVBQ2hFLEVBQUU7SUFDVixNQUFNLElBQUksR0FBRyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRTVELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3RCLENBQUM7SUFFRCxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMvRSxDQUFDLENBQUE7QUFYWSxRQUFBLFVBQVUsY0FXdEIifQ==
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /* eslint-disable @medusajs/use-medusa-error-not-generic-error -- Invalid render inputs are programmer errors, not HTTP responses. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createDefaultDocumentHtmlFactory = void 0;
5
+ const layout_1 = require("./layout");
6
+ const financial_document_1 = require("./financial-document");
7
+ const packing_list_1 = require("./packing-list");
8
+ /**
9
+ * The plugin's default document markup (German, locale de-AT). The legal
10
+ * sender comes with every render input (`input.merchant`, the base plugin's
11
+ * shop master data). `timeZone` is the IANA time zone in which printed dates
12
+ * are shown; the plugin passes its resolved `numbering.timeZone` so the date
13
+ * on a document matches the period its number was allocated in.
14
+ */
15
+ const createDefaultDocumentHtmlFactory = ({ timeZone, }) => {
16
+ return (input) => {
17
+ const kind = input.document.kind;
18
+ switch (kind) {
19
+ case "invoice":
20
+ case "cancellation":
21
+ case "credit_note":
22
+ if ("totals" in input) {
23
+ return (0, financial_document_1.renderFinancialDocument)(input, (0, layout_1.createDocumentLayout)(input.merchant, true), timeZone);
24
+ }
25
+ break;
26
+ case "packing_list":
27
+ if ("fulfillment" in input) {
28
+ return (0, packing_list_1.renderPackingList)(input, (0, layout_1.createDocumentLayout)(input.merchant, false), timeZone);
29
+ }
30
+ break;
31
+ default: {
32
+ const unsupportedKind = kind;
33
+ throw new TypeError(`Unsupported document kind: ${unsupportedKind}`);
34
+ }
35
+ }
36
+ throw new TypeError(`Invalid input for document kind: ${kind}`);
37
+ };
38
+ };
39
+ exports.createDefaultDocumentHtmlFactory = createDefaultDocumentHtmlFactory;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90ZW1wbGF0ZXMvaHRtbC1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxSUFBcUk7OztBQUlySSxxQ0FBK0M7QUFDL0MsNkRBQThEO0FBQzlELGlEQUFrRDtBQUVsRDs7Ozs7O0dBTUc7QUFDSSxNQUFNLGdDQUFnQyxHQUFHLENBQUMsRUFDL0MsUUFBUSxHQUdULEVBQXVCLEVBQUU7SUFDeEIsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2YsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUE7UUFFaEMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxjQUFjLENBQUM7WUFDcEIsS0FBSyxhQUFhO2dCQUNoQixJQUFJLFFBQVEsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDdEIsT0FBTyxJQUFBLDRDQUF1QixFQUM1QixLQUFLLEVBQ0wsSUFBQSw2QkFBb0IsRUFBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUMxQyxRQUFRLENBQ1QsQ0FBQTtnQkFDSCxDQUFDO2dCQUNELE1BQUs7WUFDUCxLQUFLLGNBQWM7Z0JBQ2pCLElBQUksYUFBYSxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUMzQixPQUFPLElBQUEsZ0NBQWlCLEVBQ3RCLEtBQUssRUFDTCxJQUFBLDZCQUFvQixFQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQzNDLFFBQVEsQ0FDVCxDQUFBO2dCQUNILENBQUM7Z0JBQ0QsTUFBSztZQUNQLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsTUFBTSxlQUFlLEdBQVUsSUFBSSxDQUFBO2dCQUNuQyxNQUFNLElBQUksU0FBUyxDQUFDLDhCQUE4QixlQUFlLEVBQUUsQ0FBQyxDQUFBO1lBQ3RFLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxJQUFJLFNBQVMsQ0FBQyxvQ0FBb0MsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNqRSxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFyQ1ksUUFBQSxnQ0FBZ0Msb0NBcUM1QyJ9
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatOrderReference = exports.escapeHtml = void 0;
4
+ const escapeHtml = (value) => String(value ?? "")
5
+ .replaceAll("&", "&amp;")
6
+ .replaceAll("<", "&lt;")
7
+ .replaceAll(">", "&gt;")
8
+ .replaceAll('"', "&quot;")
9
+ .replaceAll("'", "&#039;");
10
+ exports.escapeHtml = escapeHtml;
11
+ const formatOrderReference = (displayId) => displayId === null ? "-" : `#${displayId}`;
12
+ exports.formatOrderReference = formatOrderReference;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kb2N1bWVudHMvdGVtcGxhdGVzL2h0bWwtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQU8sTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUF5QyxFQUFVLEVBQUUsQ0FDOUUsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7S0FDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7S0FDeEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7S0FDdkIsVUFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7S0FDdkIsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7S0FDekIsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQTtBQU5qQixRQUFBLFVBQVUsY0FNTztBQUV2QixNQUFNLG9CQUFvQixHQUFHLENBQUMsU0FBd0IsRUFBVSxFQUFFLENBQ3ZFLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQTtBQUQvQixRQUFBLG9CQUFvQix3QkFDVyJ9
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDocumentLayout = void 0;
4
+ const html_utils_1 = require("./html-utils");
5
+ const formatCountryName = (countryCode) => new Intl.DisplayNames("de", { type: "region" }).of(countryCode.toUpperCase()) ?? countryCode.toUpperCase();
6
+ const renderMerchantAddress = (merchant) => [
7
+ merchant.address_line1,
8
+ merchant.address_line2,
9
+ [merchant.postal_code, merchant.city].join(" "),
10
+ formatCountryName(merchant.country_code),
11
+ ]
12
+ .filter((part) => Boolean(part))
13
+ .map(html_utils_1.escapeHtml)
14
+ .join("<br />");
15
+ /** Legal footer: name, UID, company register, contact and bank details that are set. */
16
+ const renderMerchantFooter = (merchant, includeLegalDetails) => {
17
+ if (!includeLegalDetails) {
18
+ return (0, html_utils_1.escapeHtml)(merchant.legal_name);
19
+ }
20
+ const register = [
21
+ merchant.company_register_number
22
+ ? `Firmenbuchnummer: ${merchant.company_register_number}`
23
+ : null,
24
+ merchant.company_register_court
25
+ ? `Firmenbuchgericht: ${merchant.company_register_court}`
26
+ : null,
27
+ ];
28
+ const lines = [
29
+ [
30
+ merchant.legal_name,
31
+ merchant.vat_number ? `UID: ${merchant.vat_number}` : null,
32
+ ...register,
33
+ ],
34
+ [merchant.email, merchant.phone, merchant.website],
35
+ [
36
+ merchant.iban ? `IBAN: ${merchant.iban}` : null,
37
+ merchant.bic ? `BIC: ${merchant.bic}` : null,
38
+ ],
39
+ ];
40
+ return lines
41
+ .map((parts) => parts
42
+ .filter((part) => Boolean(part))
43
+ .map(html_utils_1.escapeHtml)
44
+ .join(" · "))
45
+ .filter(Boolean)
46
+ .join("<br />");
47
+ };
48
+ const renderMetadata = (metadata) => metadata
49
+ .map(({ label, value }) => `<div><strong>${(0, html_utils_1.escapeHtml)(label)}:</strong> ${(0, html_utils_1.escapeHtml)(value)}</div>`)
50
+ .join("");
51
+ /**
52
+ * `includeLegalDetails` adds UID, company register, contact and bank details
53
+ * to the footer (financial documents); packing lists show only the name.
54
+ */
55
+ const createDocumentLayout = (merchant, includeLegalDetails) => ({ body, documentTitle, metadata, number, pageTitle }) => `<!doctype html>
56
+ <html lang="de">
57
+ <head>
58
+ <meta charset="utf-8" />
59
+ <title>${(0, html_utils_1.escapeHtml)(pageTitle)} ${(0, html_utils_1.escapeHtml)(number)}</title>
60
+ <style>
61
+ @page { margin: 18mm; }
62
+ body { color: #1f2937; font-family: Arial, sans-serif; font-size: 11px; line-height: 1.45; }
63
+ h1 { font-size: 24px; margin: 0 0 6px; }
64
+ h2 { break-after: avoid; font-size: 12px; margin: 22px 0 6px; page-break-after: avoid; text-transform: uppercase; }
65
+ .header { border-bottom: 2px solid #111827; display: flex; gap: 32px; justify-content: space-between; padding-bottom: 16px; }
66
+ .document-metadata { display: flex; flex-wrap: wrap; gap: 6px 28px; margin: 18px 0 22px; }
67
+ .document-metadata div { min-width: 180px; }
68
+ .muted, .sku, .batch { color: #6b7280; }
69
+ .batch, .packing-batch { font-size: 10px; margin-top: 2px; }
70
+ .packing-batch { display: flex; gap: 12px; justify-content: space-between; }
71
+ table { border-collapse: collapse; page-break-inside: auto; width: 100%; }
72
+ thead { display: table-header-group; }
73
+ tfoot { display: table-footer-group; }
74
+ tbody { page-break-inside: auto; }
75
+ tr { break-inside: avoid; page-break-inside: avoid; }
76
+ th { background: #f3f4f6; font-size: 10px; text-align: left; text-transform: uppercase; }
77
+ th, td { border-bottom: 1px solid #d1d5db; padding: 8px 6px; vertical-align: top; }
78
+ .number { text-align: right; white-space: nowrap; }
79
+ .recipient, .tax-compliance, .totals { break-inside: avoid; page-break-inside: avoid; }
80
+ .totals { margin-left: auto; margin-top: 16px; width: 260px; }
81
+ .totals td { border: 0; padding: 3px 0; }
82
+ .totals tr:last-child td { border-top: 2px solid #111827; font-size: 14px; font-weight: 700; padding-top: 7px; }
83
+ footer { border-top: 1px solid #d1d5db; break-inside: avoid; color: #6b7280; font-size: 9px; margin-top: 28px; page-break-inside: avoid; padding-top: 10px; }
84
+ </style>
85
+ </head>
86
+ <body>
87
+ <section class="header">
88
+ <div><h1>${(0, html_utils_1.escapeHtml)(documentTitle)}</h1><div class="muted">${(0, html_utils_1.escapeHtml)(number)}</div></div>
89
+ <div><strong>${(0, html_utils_1.escapeHtml)(merchant.legal_name)}</strong><br />${renderMerchantAddress(merchant)}</div>
90
+ </section>
91
+ <section class="document-metadata">${renderMetadata(metadata)}</section>
92
+ ${body}
93
+ <footer>${renderMerchantFooter(merchant, includeLegalDetails)}</footer>
94
+ </body>
95
+ </html>`;
96
+ exports.createDocumentLayout = createDocumentLayout;
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90ZW1wbGF0ZXMvbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLDZDQUF5QztBQWV6QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsV0FBbUIsRUFBVSxFQUFFLENBQ3hELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ2hELFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FDMUIsSUFBSSxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUE7QUFFaEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFFBQTBCLEVBQVUsRUFBRSxDQUNuRTtJQUNFLFFBQVEsQ0FBQyxhQUFhO0lBQ3RCLFFBQVEsQ0FBQyxhQUFhO0lBQ3RCLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0NBQ3pDO0tBQ0UsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFrQixFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQy9DLEdBQUcsQ0FBQyx1QkFBVSxDQUFDO0tBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBRW5CLHdGQUF3RjtBQUN4RixNQUFNLG9CQUFvQixHQUFHLENBQzNCLFFBQTBCLEVBQzFCLG1CQUE0QixFQUNwQixFQUFFO0lBQ1YsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekIsT0FBTyxJQUFBLHVCQUFVLEVBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRztRQUNmLFFBQVEsQ0FBQyx1QkFBdUI7WUFDOUIsQ0FBQyxDQUFDLHFCQUFx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
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderPackingList = void 0;
4
+ const format_1 = require("./format");
5
+ const html_utils_1 = require("./html-utils");
6
+ const renderBatchAllocations = (line, timeZone) => {
7
+ if (line.batch_allocations.length === 0) {
8
+ return '<span class="muted">-</span>';
9
+ }
10
+ return line.batch_allocations
11
+ .map((allocation) => `<div class="packing-batch">
12
+ <strong>${(0, html_utils_1.escapeHtml)(allocation.lot_number)}</strong>
13
+ <span>MHD: ${(0, format_1.formatDate)(allocation.expiry_date, { timeZone })}</span>
14
+ <span>Menge: ${(0, html_utils_1.escapeHtml)(allocation.quantity)}</span>
15
+ </div>`)
16
+ .join("");
17
+ };
18
+ const renderLines = (input, timeZone) => input.lines
19
+ .map((line) => `<tr>
20
+ <td>
21
+ <strong>${(0, html_utils_1.escapeHtml)(line.title)}</strong>
22
+ ${line.sku ? `<div class="sku">SKU: ${(0, html_utils_1.escapeHtml)(line.sku)}</div>` : ""}
23
+ </td>
24
+ <td>${renderBatchAllocations(line, timeZone)}</td>
25
+ <td class="number">${(0, html_utils_1.escapeHtml)(line.quantity)}</td>
26
+ </tr>`)
27
+ .join("");
28
+ const renderPackingList = (input, layout, timeZone) => layout({
29
+ body: `<table>
30
+ <thead><tr><th>Bezeichnung</th><th>Charge</th><th class="number">Benötigte Menge</th></tr></thead>
31
+ <tbody>${renderLines(input, timeZone)}</tbody>
32
+ </table>`,
33
+ documentTitle: "Packliste",
34
+ metadata: [
35
+ {
36
+ label: "Bestellung",
37
+ value: (0, html_utils_1.formatOrderReference)(input.order.display_id),
38
+ },
39
+ { label: "Fulfillment", value: input.fulfillment.id },
40
+ {
41
+ label: "Erstellungsdatum",
42
+ value: (0, format_1.formatDate)(input.document.generated_at, { timeZone }),
43
+ },
44
+ { label: "Lagerplatz", value: input.fulfillment.location_name },
45
+ ],
46
+ number: input.document.number,
47
+ pageTitle: "Packliste",
48
+ });
49
+ exports.renderPackingList = renderPackingList;
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2luZy1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90ZW1wbGF0ZXMvcGFja2luZy1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHFDQUFxQztBQUNyQyw2Q0FBK0Q7QUFHL0QsTUFBTSxzQkFBc0IsR0FBRyxDQUM3QixJQUErQyxFQUMvQyxRQUFnQixFQUNSLEVBQUU7SUFDVixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDeEMsT0FBTyw4QkFBOEIsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCO1NBQzFCLEdBQUcsQ0FDRixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7a0JBQ0osSUFBQSx1QkFBVSxFQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7cUJBQzlCLElBQUEsbUJBQVUsRUFBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUM7dUJBQzlDLElBQUEsdUJBQVUsRUFBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2FBQ3pDLENBQ1I7U0FDQSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDYixDQUFDLENBQUE7QUFFRCxNQUFNLFdBQVcsR0FBRyxDQUNsQixLQUErQixFQUMvQixRQUFnQixFQUNSLEVBQUUsQ0FDVixLQUFLLENBQUMsS0FBSztLQUNSLEdBQUcsQ0FDRixDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7O29CQUVJLElBQUEsdUJBQVUsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixJQUFBLHVCQUFVLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7O2NBRW5FLHNCQUFzQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7NkJBQ3ZCLElBQUEsdUJBQVUsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzFDLENBQ1A7S0FDQSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7QUFFTixNQUFNLGlCQUFpQixHQUFHLENBQy9CLEtBQStCLEVBQy9CLE1BQXNCLEVBQ3RCLFFBQWdCLEVBQ1IsRUFBRSxDQUNWLE1BQU0sQ0FBQztJQUNMLElBQUksRUFBRTs7ZUFFSyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQzthQUM5QjtJQUNULGFBQWEsRUFBRSxXQUFXO0lBQzFCLFFBQVEsRUFBRTtRQUNSO1lBQ0UsS0FBSyxFQUFFLFlBQVk7WUFDbkIsS0FBSyxFQUFFLElBQUEsaUNBQW9CLEVBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7U0FDcEQ7UUFDRCxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFO1FBQ3JEO1lBQ0UsS0FBSyxFQUFFLGtCQUFrQjtZQUN6QixLQUFLLEVBQUUsSUFBQSxtQkFBVSxFQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUM7U0FDN0Q7UUFDRCxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO0tBQ2hFO0lBQ0QsTUFBTSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUM3QixTQUFTLEVBQUUsV0FBVztDQUN2QixDQUFDLENBQUE7QUF6QlMsUUFBQSxpQkFBaUIscUJBeUIxQiJ9
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90eXBlcy9hZG1pbi1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtc3VtbWFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kb2N1bWVudHMvdHlwZXMvZG9jdW1lbnQtc3VtbWFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90eXBlcy9kb2N1bWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineDocumentHtmlFactory = void 0;
4
+ const defineDocumentHtmlFactory = (factory) => factory;
5
+ exports.defineDocumentHtmlFactory = defineDocumentHtmlFactory;
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90eXBlcy9odG1sLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBVU8sTUFBTSx5QkFBeUIsR0FBRyxDQUN2QyxPQUE0QixFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUE7QUFGcEIsUUFBQSx5QkFBeUIsNkJBRUwifQ==
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./admin-api"), exports);
18
+ __exportStar(require("./documents"), exports);
19
+ __exportStar(require("./document-summary"), exports);
20
+ __exportStar(require("./html-factory"), exports);
21
+ __exportStar(require("./store-api"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZG9jdW1lbnRzL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBMkI7QUFDM0IsOENBQTJCO0FBQzNCLHFEQUFrQztBQUNsQyxpREFBOEI7QUFDOUIsOENBQTJCIn0=
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RvY3VtZW50cy90eXBlcy9zdG9yZS1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveDocumentMerchant = void 0;
4
+ const public_1 = require("../../public");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const merchant_1 = require("../../modules/documents/domain/merchant");
7
+ /**
8
+ * The shop's sender facts for one render: shop master data of the base
9
+ * plugin (stored in the Admin) > the plugin's `merchant` option. Fails with
10
+ * `UNEXPECTED_STATE` naming the missing fields, so the document is marked
11
+ * failed and issued again once the data is complete. Read failures propagate.
12
+ */
13
+ const resolveDocumentMerchant = async (container, fallback) => {
14
+ const { values } = await (0, public_1.getShopMasterData)(container, fallback);
15
+ const resolution = (0, merchant_1.toDocumentMerchant)(values);
16
+ if (!resolution.merchant) {
17
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Shop-Stammdaten unvollständig: ${resolution.missing.join(", ")}. Bitte unter Einstellungen → Hartl Services Plugins → Shop-Stammdaten ergänzen.`);
18
+ }
19
+ return resolution.merchant;
20
+ };
21
+ exports.resolveDocumentMerchant = resolveDocumentMerchant;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtbWVyY2hhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZG9jdW1lbnRzL3V0aWxzL2RvY3VtZW50LW1lcmNoYW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFnRDtBQUVoRCxxREFBdUQ7QUFFdkQsc0VBR2dEO0FBR2hEOzs7OztHQUtHO0FBQ0ksTUFBTSx1QkFBdUIsR0FBRyxLQUFLLEVBQzFDLFNBQTBCLEVBQzFCLFFBQWdDLEVBQ0wsRUFBRTtJQUM3QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLDBCQUFpQixFQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUMvRCxNQUFNLFVBQVUsR0FBRyxJQUFBLDZCQUFrQixFQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUNsQyxrQ0FBa0MsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtGQUFrRixDQUNsSixDQUFBO0lBQ0gsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQTtBQUM1QixDQUFDLENBQUE7QUFiWSxRQUFBLHVCQUF1QiwyQkFhbkMifQ==
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderHtmlToPdf = void 0;
4
+ const node_child_process_1 = require("node:child_process");
5
+ const promises_1 = require("node:fs/promises");
6
+ const node_os_1 = require("node:os");
7
+ const node_path_1 = require("node:path");
8
+ const node_url_1 = require("node:url");
9
+ const node_util_1 = require("node:util");
10
+ const utils_1 = require("@medusajs/framework/utils");
11
+ const execFile = (0, node_util_1.promisify)(node_child_process_1.execFile);
12
+ /**
13
+ * Fixed internal renderer: projects control only HTML/CSS through the factory.
14
+ * The deployment must provide the configured Chromium executable; no provider
15
+ * or renderer adapter is part of the public plugin surface.
16
+ */
17
+ const renderHtmlToPdf = async (input) => {
18
+ if (process.getuid?.() === 0) {
19
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Document PDF rendering must run as a non-root user so Chromium's sandbox remains enabled.");
20
+ }
21
+ const directory = await (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "medusa-documents-"));
22
+ const htmlPath = (0, node_path_1.join)(directory, "document.html");
23
+ const pdfPath = (0, node_path_1.join)(directory, "document.pdf");
24
+ const profilePath = (0, node_path_1.join)(directory, "chrome-profile");
25
+ const chromeEnvironment = {
26
+ ...process.env,
27
+ DBUS_SESSION_BUS_ADDRESS: `unix:path=${(0, node_path_1.join)(directory, "no-session-bus")}`,
28
+ };
29
+ delete chromeEnvironment.GNOME_KEYRING_CONTROL;
30
+ const chromiumArguments = [
31
+ "--headless=new",
32
+ "--disable-gpu",
33
+ "--no-first-run",
34
+ "--password-store=basic",
35
+ `--user-data-dir=${profilePath}`,
36
+ "--no-pdf-header-footer",
37
+ `--print-to-pdf=${pdfPath}`,
38
+ (0, node_url_1.pathToFileURL)(htmlPath).href,
39
+ ];
40
+ try {
41
+ await (0, promises_1.writeFile)(htmlPath, input.html, "utf8");
42
+ await execFile(input.executablePath, chromiumArguments, {
43
+ timeout: 60_000,
44
+ maxBuffer: 1024 * 1024,
45
+ env: chromeEnvironment,
46
+ });
47
+ const pdf = await (0, promises_1.readFile)(pdfPath);
48
+ if (!pdf.length) {
49
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Chromium created an empty PDF.");
50
+ }
51
+ return pdf;
52
+ }
53
+ catch (error) {
54
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Could not render document PDF with '${input.executablePath}': ${error instanceof Error ? error.message : String(error)}`);
55
+ }
56
+ finally {
57
+ await (0, promises_1.rm)(directory, { recursive: true, force: true });
58
+ }
59
+ };
60
+ exports.renderHtmlToPdf = renderHtmlToPdf;
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC10by1wZGYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZG9jdW1lbnRzL3V0aWxzL2h0bWwtdG8tcGRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUE2RDtBQUM3RCwrQ0FBb0U7QUFDcEUscUNBQWlDO0FBQ2pDLHlDQUFpQztBQUNqQyx1Q0FBeUM7QUFDekMseUNBQXNDO0FBRXRDLHFEQUF3RDtBQUV4RCxNQUFNLFFBQVEsR0FBRyxJQUFBLHFCQUFTLEVBQUMsNkJBQVcsQ0FBQyxDQUFDO0FBRXhDOzs7O0dBSUc7QUFDSSxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQUUsS0FHckMsRUFBbUIsRUFBRTtJQUNwQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsMkZBQTJGLENBQzVGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFBLGtCQUFPLEVBQUMsSUFBQSxnQkFBSSxFQUFDLElBQUEsZ0JBQU0sR0FBRSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUNyRSxNQUFNLFFBQVEsR0FBRyxJQUFBLGdCQUFJLEVBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUEsZ0JBQUksRUFBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDaEQsTUFBTSxXQUFXLEdBQUcsSUFBQSxnQkFBSSxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RELE1BQU0saUJBQWlCLEdBQXNCO1FBQzNDLEdBQUcsT0FBTyxDQUFDLEdBQUc7UUFDZCx3QkFBd0IsRUFBRSxhQUFhLElBQUEsZ0JBQUksRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtLQUMzRSxDQUFDO0lBQ0YsT0FBTyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQztJQUMvQyxNQUFNLGlCQUFpQixHQUFHO1FBQ3hCLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLHdCQUF3QjtRQUN4QixtQkFBbUIsV0FBVyxFQUFFO1FBQ2hDLHdCQUF3QjtRQUN4QixrQkFBa0IsT0FBTyxFQUFFO1FBQzNCLElBQUEsd0JBQWEsRUFBQyxRQUFRLENBQUMsQ0FBQyxJQUFJO0tBQzdCLENBQUM7SUFFRixJQUFJLENBQUM7UUFDSCxNQUFNLElBQUEsb0JBQVMsRUFBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5QyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFFO1lBQ3RELE9BQU8sRUFBRSxNQUFNO1lBQ2YsU0FBUyxFQUFFLElBQUksR0FBRyxJQUFJO1lBQ3RCLEdBQUcsRUFBRSxpQkFBaUI7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFBLG1CQUFRLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLGdDQUFnQyxDQUNqQyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLHVDQUF1QyxLQUFLLENBQUMsY0FBYyxNQUN6RCxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUN2RCxFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxJQUFBLGFBQUUsRUFBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7QUFDSCxDQUFDLENBQUM7QUExRFcsUUFBQSxlQUFlLG1CQTBEMUIifQ==
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.assertPrivateFileStorage = exports.findPubliclyServedPrivateFileStorage = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const utils_1 = require("@medusajs/framework/utils");
9
+ const LOCAL_FILE_PROVIDERS = new Set([
10
+ "@medusajs/medusa/file-local",
11
+ "@medusajs/file-local",
12
+ ]);
13
+ const isInside = (directory, parent) => {
14
+ const relative = node_path_1.default.relative(parent, directory);
15
+ return (relative === "" ||
16
+ (!relative.startsWith("..") && !node_path_1.default.isAbsolute(relative)));
17
+ };
18
+ /**
19
+ * Medusa serves `<cwd>/static` publicly under `/static`, and its local File
20
+ * provider stores private files there unless `private_upload_dir` points
21
+ * elsewhere. Documents stores invoices as private files, so that combination
22
+ * would publish every PDF under a guessable name. Returns the reason when the
23
+ * configuration does that, otherwise null. A missing File Module counts as
24
+ * Medusa's default: the local provider without options.
25
+ */
26
+ const findPubliclyServedPrivateFileStorage = (configModule, cwd) => {
27
+ const fileModule = configModule.modules?.[utils_1.Modules.FILE];
28
+ const providers = fileModule === undefined
29
+ ? [{ resolve: "@medusajs/medusa/file-local" }]
30
+ : typeof fileModule === "object" && fileModule !== null
31
+ ? (fileModule.options
32
+ ?.providers ?? [])
33
+ : [];
34
+ const staticDirectory = node_path_1.default.resolve(cwd, "static");
35
+ for (const provider of providers) {
36
+ if (typeof provider.resolve !== "string" ||
37
+ !LOCAL_FILE_PROVIDERS.has(provider.resolve)) {
38
+ continue;
39
+ }
40
+ const configured = provider.options?.private_upload_dir;
41
+ const privateDirectory = typeof configured === "string" && configured.trim()
42
+ ? node_path_1.default.resolve(cwd, configured)
43
+ : staticDirectory;
44
+ if (isInside(privateDirectory, staticDirectory)) {
45
+ return `Documents stores invoices as private files, but Medusa's local File provider would write them to ${privateDirectory}, which Medusa serves publicly under /static. Set the provider's private_upload_dir to a directory outside ${staticDirectory}, or use private object storage such as the S3 file storage of @hartl-services/medusa-base.`;
46
+ }
47
+ }
48
+ return null;
49
+ };
50
+ exports.findPubliclyServedPrivateFileStorage = findPubliclyServedPrivateFileStorage;
51
+ /**
52
+ * Refuses to write a document file while the File Module would serve it
53
+ * publicly. Called right before every document PDF is stored; the module
54
+ * loader only warns, so the base plugin still boots with Medusa's default
55
+ * file storage and documents fail closed at issuance instead.
56
+ */
57
+ const assertPrivateFileStorage = (container) => {
58
+ const problem = (0, exports.findPubliclyServedPrivateFileStorage)(container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE), process.cwd());
59
+ if (problem) {
60
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, problem);
61
+ }
62
+ };
63
+ exports.assertPrivateFileStorage = assertPrivateFileStorage;
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1maWxlLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZG9jdW1lbnRzL3V0aWxzL3ByaXZhdGUtZmlsZS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUE0QjtBQUc1QixxREFJa0M7QUFFbEMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyw2QkFBNkI7SUFDN0Isc0JBQXNCO0NBQ3ZCLENBQUMsQ0FBQTtBQVdGLE1BQU0sUUFBUSxHQUFHLENBQUMsU0FBaUIsRUFBRSxNQUFjLEVBQVcsRUFBRTtJQUM5RCxNQUFNLFFBQVEsR0FBRyxtQkFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDakQsT0FBTyxDQUNMLFFBQVEsS0FBSyxFQUFFO1FBQ2YsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUMzRCxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBRUQ7Ozs7Ozs7R0FPRztBQUNJLE1BQU0sb0NBQW9DLEdBQUcsQ0FDbEQsWUFBK0IsRUFDL0IsR0FBVyxFQUNJLEVBQUU7SUFDakIsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLGVBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN2RCxNQUFNLFNBQVMsR0FDYixVQUFVLEtBQUssU0FBUztRQUN0QixDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksVUFBVSxLQUFLLElBQUk7WUFDckQsQ0FBQyxDQUFDLENBQUcsVUFBb0QsQ0FBQyxPQUFPO2dCQUM3RCxFQUFFLFNBQWdELElBQUksRUFBRSxDQUFDO1lBQzdELENBQUMsQ0FBQyxFQUFFLENBQUE7SUFFVixNQUFNLGVBQWUsR0FBRyxtQkFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDbkQsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNqQyxJQUNFLE9BQU8sUUFBUSxDQUFDLE9BQU8sS0FBSyxRQUFRO1lBQ3BDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDM0MsQ0FBQztZQUNELFNBQVE7UUFDVixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQTtRQUN2RCxNQUFNLGdCQUFnQixHQUNwQixPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksVUFBVSxDQUFDLElBQUksRUFBRTtZQUNqRCxDQUFDLENBQUMsbUJBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQztZQUMvQixDQUFDLENBQUMsZUFBZSxDQUFBO1FBQ3JCLElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDaEQsT0FBTyxvR0FBb0csZ0JBQWdCLDhHQUE4RyxlQUFlLDZGQUE2RixDQUFBO1FBQ3ZWLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUE7QUFqQ1ksUUFBQSxvQ0FBb0Msd0NBaUNoRDtBQUVEOzs7OztHQUtHO0FBQ0ksTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFNBQTBCLEVBQVEsRUFBRTtJQUMzRSxNQUFNLE9BQU8sR0FBRyxJQUFBLDRDQUFvQyxFQUNsRCxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLGFBQWEsQ0FBQyxFQUMxRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQ2QsQ0FBQTtJQUNELElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksbUJBQVcsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDL0QsQ0FBQztBQUNILENBQUMsQ0FBQTtBQVJZLFFBQUEsd0JBQXdCLDRCQVFwQyJ9
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveDocumentsService = void 0;
4
+ const documents_1 = require("../../modules/documents");
5
+ const resolveDocumentsService = (container) => container.resolve(documents_1.DOCUMENTS_MODULE);
6
+ exports.resolveDocumentsService = resolveDocumentsService;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kb2N1bWVudHMvdXRpbHMvcmVzb2x2ZS1zZXJ2aWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx1REFBMEQ7QUFHbkQsTUFBTSx1QkFBdUIsR0FBRyxDQUNyQyxTQUEwQixFQUNGLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUE7QUFGbkQsUUFBQSx1QkFBdUIsMkJBRTRCIn0=